แนะนำโปรแกรม 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 หวังว่าเพื่อนๆจะนำเอาวิธีการใช้งานไปใช้ซึ่งสามารถทำตามได้ไม่ยากเลย

วิธีแก้ปัญหา Ruby Error เกี่ยวกับ SSL certificate

สำหรับใครที่ใช้คำสั่ง bundle install ใน Ruby แล้วเจอ Error เกี่ยวกับ SSL certificate แบบนี้ จะแก้ยังไงดี มาอ่านบทความนี้แล้วทำตามได้เลยจ้า

ตัวอย่าง error ที่หลายๆคนจะเจอก็เป็นแบบนี้

C:\Bitnami\redmine\apps\redmine\htdocs\plugins>bundle install
Warning: this Gemfile contains multiple primary sources. Using `source` more than once without a block is a security risk, and may result in installing unexpected gems. To resolve this warning, use a block to indicate which gems should come from the secondary source. To upgrade this warning to an error, run `bundle config disable_multisource true`.
Fetching source index from https://rubygems.org/
Retrying source fetch due to error (2/3): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see bit.ly/ruby-ssl. To connect without using SSL, edit your Gemfile sources and change 'https' to 'http'.
Retrying source fetch due to error (3/3): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see bit.ly/ruby-ssl. To connect without using SSL, edit your Gemfile sources and change 'https' to 'http'.
Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most
likely your system doesn't have the CA certificates needed for verification. For
information about OpenSSL certificates, see bit.ly/ruby-ssl. To connect without
using SSL, edit your Gemfile sources and change 'https' to 'http'.

ทำไม เนื่องจากเจ้า Ruby ในส่วนของ net/http library นั้นไม่ได้ทำการตรวจสอบ SSL certificate ในระหว่าง TLS handshake

วิธีแก้ไข ก็คือเราจะทำการเอา certificate ที่ตรวจสอบแล้วจากเว็บของ curl มาใช้แทน

โดยก่อนอื่นให้ทำการติดตั้ง RailsInstaller สำหรับใครที่ติดตั้งแล้วก็ข้ามขั้นตอนนี้ไปได้เลย
http://railsinstaller.org/en

หลังจากติดตั้งเสร็จแล้ว เราก็มา Download เจ้า cacert.pem จาก curl website http://curl.haxx.se/ca/ แล้วเราก็เอาไฟล์ cacert.pem ไปวางไว้ที่ C:\RailsInstaller\cacert.pem

เสร็จแล้วก็เรียกคำสั่ง
set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

C:\Bitnami\redmine\apps\redmine\htdocs\plugins>set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

หลังจากนั้นลองใช้คำสั่ง bundle install ดู ก็จะไม่พบปัญหา Error อีกแล้วดังตัวอย่าง ด้านล่าง ก็เป็นอันจบพิธีสำหรับการแก้ไขปัญหา SSL certificate ของ ruby

ตัวอย่าง bundle install หลังจากลง certificate แล้ว ก็จะลงได้ปกติ

C:\Bitnami\redmine\apps\redmine\htdocs\plugins>bundle install
Warning: this Gemfile contains multiple primary sources. Using `source` more than once without a block is a security risk, and may result in installing unexpected gems. To resolve this warning, use a block to indicate which gems should come from the secondary source. To upgrade this warning to an error, run `bundle config disable_multisource true`.
Fetching gem metadata from https://rubygems.org/..............
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
Resolving dependencies.....
Using rake 10.4.2
...
Using thin 1.6.1
Using tzinfo-data 1.2015.1
Updating files in vendor/cache
  * liquid-2.6.3.gem
  * rubyzip-1.1.7.gem
  * redmine_crm-0.0.53.gem
Bundle complete! 32 Gemfile dependencies, 56 gems now installed.
Gems in the groups development, test and RAILS_ENV=production were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

ข้อมูลอ้างอิงจาก
https://gist.github.com/fnichol/867550

โปรแกรมนับจำนวนหรือเปรียบเทียบจำนวนบรรทัดของ Code

สำหรับใครที่กำลังหาโปรแกรมที่ใช้นับจำนวนบรรทัดของ Code, เปรียบเทียบจำนวน Code, นับบรรทัดว่าง Space หรือ Comment ต่างๆ ใน Project Source code ของเรา ทั้งหมดที่ว่ามานี้สามารถใช้โปรแกรมที่มีชื่อว่า Cloc ซึ่งโปรแกรมนี้สามารถใช้งานได้กับแทบจะทุกภาษาโปรแกรมมิ่ง ไม่ว่าจะเป็น C, C++, Php, Python, Java, Javascript, หรือแม้กระทั้ง Markdown เพื่อนๆสามารถเช็คภาษาและนามสกุลไฟล์ที่รองรับได้ที่นี้ https://github.com/AlDanial/cloc#recognized-languages- หรือจะใช้คำสั่ง cloc –show-lang ก็ได้เช่นกัน

มาดูวิธีใช้งาน (ตัวอย่างสำหรับ Windows) กันดีกว่า

ก่อนอื่นให้ดาวโหลด Cloc มาก่อน โดยสามารถ Download Release version ของ Cloc (โหลดเอาไฟล์ .exe สำหรับคนที่ใช้ Windows) ได้ที่ https://github.com/AlDanial/cloc/releases

เมื่อเราได้ Cloc มาแล้วให้ทำการวาง .exe ของโปรแกรมไว้แล้วทำการเรียกใช้งานโดยผ่านทาง Command line หรือ Power shell ของ windows

จากตัวอย่างเราจะทำการวาง Code ทั้งโปรเจคอยู่ที่ Folder EVM430_CT_1V_1C_50Hz_1 ตามที่อยู่ด้านล่างนี้ C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_1

เวลาเรียกใช้ก็สามารถพิมพ์ Command line ได้ว่า

.\cloc-1.82.exe C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_1

ทีเด็ดของโปรแกรม Cloc ก็คือสามารถ Export เป็น report Excel ไฟล์ได้เลย โดยใช้คำสั่งตามนี้
.\cloc-1.82.exe –by-file-by-lang –csv –report-file=test.csv C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_1

หรือจะเปรียบเทียบ Code ระหว่าง 2 โปรเจคว่ามีความแตกต่างกันยังไงบ้าง สมมติว่ามี โปรเจค EVM430_CT_1V_1C_50Hz_1 และ EVM430_CT_1V_1C_50Hz_2 ก็สามารถใช้คำสั่งได้ดังนี้

.\cloc-1.82.exe –by-file-by-lang –count-and-diff C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_1 C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_2

ส่วนการ Export เป็น Excel ทดลองแล้วไม่สำเร็จ ก็เลยต้องใช้อีกวีธีหนึ่งคือ ให้ print ออกมาที่ หน้า Console เป็น csv format แล้วก็ก๊อปปี้ไป save เป็น csv เอง โดยใช้คำสั่งดังนี้
.\cloc-1.82.exe –by-file-by-lang –csv –count-and-diff C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_1 C:\Users\Beer\Desktop\EVM430_CT_1V_1C_50Hz_2

Visual Studio แต่ละเวอร์ชั่นต่างกันอย่างไร

สำหรับใครที่กำลังงงและสงสัยกับ Visual Studio ของ Microsoft ว่าแต่ละเวอร์ชั่นนี้ต่างกันอย่างไรแล้วแบบไหนใช้งานได้ฟรีบ้าง บทความนี้มีคำตอบ เดียวจะมาอธิบายให้ฟัง

โดย Microsoft นั้นอนุญาติให้สามารถนำ Visual Studioเวอร์ชั่น Visual Studio Community มาใช้งานได้ฟรี สำหรับท่านที่มีคุณสมบัติตาม 5 ข้อนี้

1. คนที่ใช้งานเพื่อการศึกษา การสอน
2. นักพัฒนาทั่วไปที่ไม่ใช่บริษัท
3. นักพัฒนาที่พัฒนาโปรแกรม Opensource
4. เป็นบริษัทขนาดเล็กที่ไม่ได้มีรายได้ไม่เกิน 1 ล้านเหรียญสหรัฐ และ มี PC ไม่ถึง 250 เครื่อง
5. เป็นบริษัทขนาดเล็กที่มีการใช้งานพร้อมกันไม่เกิน 5 เครื่อง

นอกนั้นต้องเสียเงิน โดย มี 2 เวอร์ชั่น Visual Studio Professional และ Visual Studio Enterprise

สามารถดูตารางเปรียบเทียบฟังชั่นการทำงาน ของ Visual Studio Community, Visual Studio Professional และ Visual Studio Enterprise ต่างๆได้ตามด้านล่าง

Supported Features Visual Studio
Community

Visual Studio
Professional

Buy
Visual Studio
Enterprise

Buy
Supported Usage Scenarios Seventy-five percent feature support One hundred percent feature support One hundred percent feature support
Individual Developers Feature supported Feature supported
Classroom Learning Feature supported Feature supported Feature supported
Academic Research Feature supported Feature supported Feature supported
Contributing to Open Source Projects Feature supported Feature supported Feature supported
Non-enterprise organizations 1,
for up to 5 users
Feature supported Feature supported Feature supported
Enterprise Feature supported Feature supported
Integrated Development Environment Seventy-five percent feature support Seventy-five percent feature support One hundred percent feature support
Live Dependency Validation Feature supported
Architectural Layer Diagrams Feature supported
Architecture Validation Feature supported
Code Clone Feature supported
CodeLens Feature supported Feature supported Feature supported
Peek Definition Feature supported Feature supported Feature supported
Refactoring Feature supported Feature supported Feature supported
One-Click Web Deployment Feature supported Feature supported Feature supported
Model Resource Viewer Feature supported Feature supported Feature supported
Visualize solutions with Dependency Graphs and Code Maps Feature supported3 Feature supported3 Feature supported
Multi-Targeting Feature supported Feature supported Feature supported
Advanced Debugging and Diagnostics Fifty percent feature support Fifty percent feature support One hundred percent feature support
IntelliTrace Feature supported
Code Map Debugger Integration Feature supported
.NET Memory Dump Analysis Feature supported
Code Metrics Feature supported Feature supported Feature supported
Graphics Debugging Feature supported Feature supported Feature supported
Static Code Analysis Feature supported Feature supported Feature supported
Performance and Diagnostics Hub Feature supported Feature supported Feature supported4
Snapshot Debugger Feature supported
Time Travel Debugging (Preview) Feature supported
Testing Tools Twenty-five percent feature support Twenty-five percent feature support One hundred percent feature support
Live Unit Testing Feature supported
IntelliTest Feature supported
Microsoft Fakes (Unit Test Isolation) Feature supported
Code Coverage Feature supported
Unit Testing Feature supported Feature supported Feature supported
Cross-platform Development Fifty percent feature support Fifty percent feature support One hundred percent feature support
Embedded Assemblies Feature supported
Xamarin Inspector Feature supported
Xamarin Profiler Feature supported
Remoted iOS Simulator for Windows Feature supported Feature supported Feature supported
Share code between Android and iOS with Xamarin Feature supported Feature supported Feature supported
Native iOS and Android UI Designers Feature supported Feature supported Feature supported
Xamarin.Forms Feature supported Feature supported Feature supported
Collaboration Tools and Features One hundred percent feature support One hundred percent feature support One hundred percent feature support
PowerPoint Storyboarding Feature supported Feature supported Feature supported
Code Review Feature supported Feature supported Feature supported
Task Suspend/Resume Feature supported Feature supported Feature supported
Team Explorer (third-party development tools support) Feature supported Feature supported Feature supported
Visual Studio Live Share Feature supported Feature supported Feature supported
  1. สำหรับ บริษัท ที่มีจำนวน PC  มากกว่า 250 หรือ หรือมีรายได้มากกว่า 1 ล้านเหรียญสหรัฐ ต่อปี
  2. Windows Desktop, Universal Windows Apps, Web (ASP.NET), Office 365, Business Applications, Azure Stack, C++ Cross-Platform Library Development, Python, Node.js, .NET Core, Docker Tools
  3.  สามารถเปิด diagrams generated ใน Visual Studio editions เวอร์ชั่นอื่นในโหมดอ่านได้อย่างเดียว
  4. Includes Tier Interaction Profiling.

ข้อมูลอ้างอิงจาก https://visualstudio.microsoft.com/vs/compare/