เว็บไซต์ช่วยตรวจสอบ XML

ถ้าเราอยากจะตรวจสอบว่าไฟล์ xml (eXtensible Markup Language) หรือ Syntax ของภาษาว่าถูกต้องหรือไม่ เราสามารถใช้เว็บไซต์ที่สามารถตรวจสอบ XML ได้หรือที่เราเรียกกันว่า XML Validator โดยเว็บไฟไซต์ที่ว่าก็คือเว็บนี้ https://codebeautify.org/xmlvalidator

โดยเราสามารถนำเอา Code มาแปะแล้วให้เว็บช่วยตรวจสอบหรือจะใช้วิธีการอัพโหลดไฟล์เข้าไปโดยอัพโหลดจากเครื่องของเหล่าหรือจะวาง Link URL ก็ได้

โดยสมมติว่าถ้า XML ของเรามีส่วนผิด ตัวเว็บก็จะขึ้นฟ้องว่าผิดที่บรรทัดไหน เพราะอะไร ทำให้เราสามารถกลับไปแก้ไขหรือวิเคราะห์สาเหตุของไฟล์ XML ที่ผิดปกติได้อย่างง่ายดาย

ตัวอย่างไฟล์ XML ที่มีการพิมพ์จุดไว้ที่บรรทัดแรก

.<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <option name="DEFAULT_COMPILER" value="Javac" />
    <resourceExtensions />
    <wildcardResourcePatterns>
      <entry name="!?*.java" />
      <entry name="!?*.form" />
      <entry name="!?*.class" />
      <entry name="!?*.groovy" />
      <entry name="!?*.scala" />
      <entry name="!?*.flex" />
      <entry name="!?*.kt" />
      <entry name="!?*.clj" />
    </wildcardResourcePatterns>
    <annotationProcessing>
      <profile default="true" name="Default" enabled="false">
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>

เอาเข้าไปตรวจสอบ XML Validator ก็จะเห็นขึ้นคำเตือนที่บรรทัดที่ 1

วิธีการตรวจสอบเวอร์ชั่น Package ที่ติดตั้งใน Python

วิธีการตรวจสอบว่า Package Python ที่เราได้เคยติดตั้งลงไปแล้วนั้นเป็นเวอร์ชั่นอะไร โดยเราสามารถทำได้ง่ายๆโดย

ใช้คำสั่งว่า pip show xxx โดย xxx นั้นคือชื่อ package

ตัวอย่างการใช้คำสั่งในการตรวจสอบว่า pyserial package ที่เราเคยติดตั้งลงไปนั้นเป็นเวอร์ชั่นอะไรอยู่

จะเห็นว่าคำสั่ง pip show pyserial ได้แสดงข้อมูลของตัว pyserial Package ที่เราได้ติดตั้งลงไป ไม่ว่าจะเป็นเวอร์ชั่นที่ติดตั้ง, ชื่อของ Package, URL Package และตำแหน่งที่ติดตั้งลงไปในเครื่องทั้งหมด

วิธีติดตั้ง Selenium และการใช้งานกับ Python

บทความนี้จะมาสอนวิธีลง Selenium IDE ใช้งานกับ Google Chrome ร่วมกับ Python เบื้องต้น โดยติดตั้งลงบน Windows มาเริ่มกันที่ก่อนอื่นให้เราไปโหลด Extension ของ Google Chrome ที่ https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd?hl=en

มาทดลองการใช้งานกันหน่อย โดยไปที่ Extension เลือก Selenium IDE

เลือก Create a new project และตั้งชื่อ project

ใส่เว็บ Facebook ไปทดสอบหน่อย กด START RECORDING

จะมาที่หน้าเว็บที่เราจะทดสอบก็จะเห็น Selenium IDE is recording อยู่ด้านขวาล่างสีแดงๆ ให้เรากรอก Username password

ในหน้าต่าง Selenium เราก็จะเห็น Command ต่างๆที่เราทำการบันทึกเกิดขึ้นเป็น Command เมื่อเราบันทึกเสร็จแล้วให้เรากดปุ่ม Stop recording ขวามือบน เราสามารถทดสอบการทำงานตามที่เราบันทึกไปได้โดยกดปุ่ม Play Run all tests ด้านซ้ายมือเพื่อทดสอบดูได้

เราสามารถ Export ออกมาเป็น Code เพื่อนำมาเขียนเงื่อนไขต่างๆเพื่อประยุกต์การใช้งานได้โดยการคลิกขวาที่ Test แล้วเลือก Export

จะเห็นว่าสามารถเลือกภาษาที่เราใช้งานได้ไม่ว่าจะเป็น C#, Java, Javascript, Python, Ruby โดยในที่นี้จะเลือกเป็น Python แล้วกด Export

ก็จะได้ Code Python มาตามด้านล่างนี้

# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

class TestLogin():
  def setup_method(self, method):
    self.driver = webdriver.Chrome()
    self.vars = {}
  
  def teardown_method(self, method):
    self.driver.quit()
  
  def test_login(self):
    # Test name: login
    # Step # | name | target | value
    # 1 | open | https://www.facebook.com/ | 
    self.driver.get("https://www.facebook.com/")
    # 2 | setWindowSize | 974x1050 | 
    self.driver.set_window_size(974, 1050)
    # 3 | click | id=email | 
    self.driver.find_element(By.ID, "email").click()
    # 4 | click | id=email | 
    self.driver.find_element(By.ID, "email").click()
    # 5 | type | id=email | username
    self.driver.find_element(By.ID, "email").send_keys("username")
    # 6 | type | id=pass | pass
    self.driver.find_element(By.ID, "pass").send_keys("pass")
  

โดยก่อนใช้งาน Selenium กับ python เราจะต้องไปติดตั้ง pytest และ selenium โดยใช้คำสั่ง

pip install pytest
pip install selenium

แล้วก็ที่ขาดไม่ได้เลยก็คือ Chrome Driver
https://sites.google.com/a/chromium.org/chromedriver/home
เลือก ตัว Stable และเลือก Windows version

Unzip แล้วนำไปวางที่ Drive C:

ก่อนที่จะ run เราต้องแก้ไข code บรรทัดที่ 15 เป็น

self.driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe")

และเพิ่มบรรดทัดที่ 37 – 39

obj = TestLogin()
obj.setup_method(obj)
obj.test_login()

ก็จะกลายเป็นแบบนี้ save เป็นไฟล์ชื่อว่า test_login2.py

# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

class TestLogin():
  def setup_method(self, method):
    self.driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe")
    self.vars = {}
  
  def teardown_method(self, method):
    self.driver.quit()
  
  def test_login(self):
    # Test name: login
    # Step # | name | target | value
    # 1 | open | https://www.facebook.com/ | 
    self.driver.get("https://www.facebook.com/")
    # 2 | setWindowSize | 974x1050 | 
    self.driver.set_window_size(974, 1050)
    # 3 | click | id=email | 
    self.driver.find_element(By.ID, "email").click()
    # 4 | click | id=email | 
    self.driver.find_element(By.ID, "email").click()
    # 5 | type | id=email | username
    self.driver.find_element(By.ID, "email").send_keys("username")
    # 6 | type | id=pass | pass
    self.driver.find_element(By.ID, "pass").send_keys("pass")
  
obj = TestLogin()
obj.setup_method(obj)
obj.test_login()

แล้วเราลองนำ code นี้ไป run ดูใน command line

python test_login2.py

ก็จะเห็นว่าตัว Selenium จะทำการเปิด Chrome (จะเห็นว่ามีขึ้นว่า Chrome is being controlled by automated test software) แล้วทำงานตาม command ที่เราเขียนอัตโนมัติแล้วละ

แนะนำโปรแกรม Cppcheck

Cppcheck เป็นโปรแกรมที่เอาไว้ตรวจสอบวิเคราะห์การเขียนโปรแกรมภาษา C หรือ C++ (รวมไปถึง Embedded C/C++ ด้วย) ที่ไม่ถูกต้องหรืออาจมีโอกาสทำให้เกิด Bug หรือสามารถเรียกได้อีกแบบว่าเป็น C/C++ static code analysis tool ซึ่ง Cppcheck นั้นสามารถแสดงผลการตรวจเช็คโดยแจ้งเตือนได้หลายแบบหลายระดับตั้งแต่ระดับ Warning ไปจนถึง Critical ทำให้เราสามารถเขียน Code ภาษา C หรือ C++ ได้อย่างมีประสิทธิภาพลดความผิดพลาดลดโอกาสการเกิด Bug โดยบทความนี้จะมาแนะนำวิธีใช้งานเบื้องต้นและการนำไปใช้งาน

โดยเพื่อนๆสามารถ Download Cppcheck นำไปใช้งานได้ฟรีๆที่ http://cppcheck.sourceforge.net/

เลือกโหลดที่ Windows 64-bit Installer

 

การสร้างโปรเจคใน Cppcheck ครั้งแรก

หลังจากเราติดตั้งเสร็จแล้ว ให้เราเปิดโปรแกรมมาแล้วเลือกไปที่  File เลือก New Project File

 

เลือกที่ Save Project

 

ที่แถบ Paths and Defines ให้ กด Add ทั้งสอง ที่ Paths และ Include Paths ให้เลือกที่เก็บ Folder ของไฟล์โปรแกรมของเรา (.c, .h, .cpp)

 

ที่แถบ Addon ให้เราเลือก  Cert ด้วย โดยโปรแกรมจะทำการตรวจเช็คตามกฏต่างๆของ Cert coding standard (มาตรฐานการเขียน Code ภาษา C และ C++ สามารถดูเพิ่มเติมได้ที่ https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard และ https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682) แล้วก็กด OK

 

กด Yes ต่อ

Cppcheck จะทำการตรวจสอบ Code ของเราและแสดงผลการตรวจสอบ โดยแบ่งเป็น Errors, Warning, Styles warning, Portability waring, Performance warning และ Information message โดยสามารถเลือกเปิดปิดดูได้ที่ไอคอนด้านบนได้เลย

 

 

สามารถทดลองตรวจสอบ Code ของเรา โดยทดลองใช้งาน Demo ตรวจสอบผ่านเว็บได้่ที่

http://cppcheck.net/demo/

วิธีแก้ Codeblocks Complie ช้า

มีใครใช้โปรแกรม Codeblock แล้วเจอปัญหาว่าเวลา Compile แล้วใช้เวลานานมากๆกว่าจะ Compile เสร็จ (บางทีใช้เวลาเป็น 10 วิ) แล้วจะแก้ไขทำยังให้มันเร็วขึ้นดีนะ ในบทความนี้จะมามาบอกวิธีทำกัน

ตัวอย่างโปรแกรมที่ Compile ในรูปใช้เวลาถึง 6.2วินาที กว่าจะแสดงโปรแกรมที่เราเขียนขึ้นมา

จริงๆแล้วสาเหตุส่วนใหญ่ที่ทำให้ compile ช้ามากๆกว่าจะ run ได้นั้นก็อาจจะเป็นเพราะ โปรแกรม Antivirus นั้นทำการ scan ไวรัสโปรแกรมของเราทุกครั้งที่เราสร้างโปรแกรม ไฟล์ .exe ขึ้นมานั้นเอง
วิธีแก้ไขก็คือให้ไปปิด โปรแกรม Antivirus หรือจะกดให้โปรแกรมอยู่ใน mode silent ก็ได้ ยกตัวอย่างโปรแกรม Avast เราสามารถเพิ่มโปรแกรมที่ยกเว้นการ Scan ได้โดยเข้าไป Setting ได้ที่ Exclusions

หลังจากลองปิดโปรแกรม Antivirus ไป ก็จะเห็นว่า Compile ใช้เวลาเหลือ 0.04 วินาทีเท่านั้น

วิธีแปลง Shift js เป็น UTF-8 โดย ICONV


บทความนี้จะมาสอนวิธีการแปลง encode โดยใช้ ICONV ในตัวอย่างจะใช้การแปลง Encode ภาษาญี่ปุ่น Encode Shift js เป็น UTF-8 ซึ่งตัวอย่างนี้จะทำบน Windows โดยใช้ LibIconv for Windows

ก่อนอื่นให้เราไปโหลด LibIconv for Windows http://gnuwin32.sourceforge.net/packages/libiconv.htm

เลือก Download • Complete package, except sources
หรือกด Link นี้ http://gnuwin32.sourceforge.net/downlinks/libiconv.php

ทำการติดตั้งตามปกติเสร็จแล้วก็ Restart เครื่อง แล้วทดสอบว่า iconv ใช้งานได้ไหมโดยการเช็คจาก version

ถ้าใช้งานได้ก็ทำขั้นตอนถัดไปนั้นก็คือเริ่มทำการแปลงได้เลย

ตัวอย่างจะเป็นการแปลงไฟล์ test.txt ที่ encode Shift js ไป UTF-8 หลังแปลงแล้วเป็นไฟล์ test2.txt เราสามารถใช้คำสั่งว่า
iconv -f SHIFT_JIS -t UTF-8 test.txt > test2.txt

ซึ่ง สามารถเอาไปใช้กับนามสกุลอื่นก็ได้เช่นไฟล์ code ของเรา .h
iconv -f SHIFT_JIS -t UTF-8 typedef.h > typedef2.h

ตัวอย่างก่อนแปลงเปิดดูใน encode UTF-8 จะเห็นว่าตรง comment อ่านไม่ออกเลยขึ้นเป็นภาษาต่างด้าว

ถ้าเปิดดูใน encode Shift js ก็จะอ่านคันจิออก

หลังแปลงแล้วก็จะได้ไฟล์ typedef2.h เปิดดูใน UTF-8 ก็เห็นว่าอ่านได้แล้วตรงกับต้นฉบับใน Shift js เลย

แต่ข้อควรระวังก็คือใน UTF-8 อาจจะไม่มีคันจิบางตัวอักษร ทำให้อ่านไม่ออกได้เหมือนกัน ซึ่งเพื่อนๆสามารถประยุกต์ใช้งาน ICONV กับ Encode อื่นๆได้ในลักษณะเดียวกัน รวมไปถึงประยุกต์ใช้งานในการแปลง Encode หลายๆไฟล์หรือทั้ง Folder โดยนำ ICONV ไปใช้งานร่วมกับ Scrip ต่างๆได้ โดย Document ฉบับเต็ม และ encode อื่นๆที่ ICONV support สามารถเช็คได้ที่นี้ http://www.gnu.org/software/libiconv/

วิธีติดตั้ง Plugin ใน Redmine

บทความนี้จะมาสอนวิธีการการติดตั้ง Plugin ของ Redmine ซึ่งสามารถทำตามได้ไม่ยาก เพียงเข้าไปที่เว็บไซต์ของ Redmine Plugin ที่เป็นที่รวบรวม Plugin ไว้จำนวนมากที่ https://www.redmine.org/plugins หรือถ้าใครอยากเข้าไปดู Plugin ยอดนิยมก็สามารถเข้าไปได้ที่ https://www.redmine.org/plugins?page=1&sort=rating

สำหรับวิธีการติดตั้งนั้นปกติ Plugin แต่ละตัวก็จะขั้นตอนการติดตั้งบอกเรามาในไฟล์ Readme หรือบอกขั้นตอนไว้ที่หน้าเว็บของ Plugin นั้นๆ เราก็สามารถทำตามได้ไม่ยาก ตัวอย่างสำหรับการติดตั้งในบทความนี้เราจะมาทำการติดตั้ง Plugin Redmine Code Review

โดยก่อนอื่นให้เราไปดาวโหลด Plugin Redmine Code Review ได้ที่
https://www.redmine.org/plugins/redmine_code_review

แล้วนำไฟล์ plugin ที่ได้ unzip แล้วเอาไว้ที่ folder plugins (ในตัวอย่างนี้ใช้ Bitnami redmine เราจะเอาไปวางที่ Bitnami/redmine/apps/redmine/htdocs/plugins)
จากนั้นทำการใช้ command line ไปที่ folder plugin แล้วใช้คำสั่ง rake redmine:plugins:migrate RAILS_ENV=production

หลังจาก run คำสั่งเสร็จแล้ว ก็ทำการ Restart Redmine

จากนั้นถ้าเราเข้าไปที่ Redmine ที่ menu -> Administration -> Plugin

ก็จะเห็น Redmine code review plugin ที่เราพึงติดตั้งเข้าไปก็เป็นอันจบเรียบร้อย สำหรับวิธีการติดตั้ง Plugin ของ Redmine

รวบรวม Shortcut ปุ่มลัด ที่สำคัญใน Vs code

เพื่อนๆหลายๆคนคนหน้าจะทราบว่าการใช้ Keyboard Shortcut คีย์ลัดต่างๆ ใน VS code ทำให้เราทำงานได้ไวขึ้นมีประสิทธิภาพมากขึ้น แต่ว่าบางคนก็อาจะคิดว่ามันมี Shortcut เยอะมากๆจำได้ไม่หมดหรอก เพราะฉะนั้นบทความนี้จะมา Highlight Key ที่จำเป็นใช้งานกันบ่อยๆ ที่จำเป็นจะต้องจำให้ได้ (เป็นของ Windows นะ) มาดูกัน

ใครอยากโหลดไฟล์เดิมๆเอาไปปริ้นก็สามารถโหลดได้ที่นี้
Windows https://go.microsoft.com/fwlink/?linkid=832145
macOS https://go.microsoft.com/fwlink/?linkid=832143
Linux https://go.microsoft.com/fwlink/?linkid=832144

วิธีเปลี่ยน VS code ปุ่มลัด shortcut key ต่างๆ

ในบทความนี้ก็จะมาสอนวิธีการเปลี่ยนคีย์ลัดใน Vs code ซึ่งเพื่อนๆสามารถทำตามได้ไม่ยาก โดยเริ่มต้นให้เราไปที่ File เลือก Preferences แล้วก็สามารถเลือก เปลี่ยน Key ได้โดยเลือกที่ Keyboard Shortcuts

เมื่อเรามาที่หน้า Keyboard Shortcut แล้วก็จะมีหน้าตาดังภาพ เราสามารถเลือกเปลี่ยน key ได้ตามที่เราถนัด หากหาไม่เจอสามารถพิมพ์ลงไฟในช่องค้นหาเพื่อหาปุ่มที่เราต้องการจะเปลี่ยนได้

นอกจากนี้หากเราอยากเปลี่ยน key ลัดทั้ง Vs code ให้ไปเหมือนกับโปรแกรมอื่นๆเช่น Vim, Sublime Text หรือ Eclipse Keymap ก็สามารถทำได้เช่นกันโดยเข้าไปที่ File เลือก Preferences แล้วเลือก Keymaps เพื่อ Dowload Keymaps ตามที่เราต้องการ

และนี้ก็เป็นวิธีเปลี่ยน Keyboard shorcut และ Keymap ของ VS code หวังว่าเพื่อนๆจะนำเอาวิธีการใช้งานไปใช้ซึ่งสามารถทำตามได้ไม่ยากเลย