วิธีใช้ Git เบื้องต้น

Git เป็นเครื่องมือควบคุมเวอร์ชั่นของไฟล์ (Source Control หรือ Version Control) ประเภทหนึ่ง ซึ่งได้รับความนิยมมากในวงการพัฒนาซอฟท์แวร์

วันนี้ผมจะสอนวิธี Setup และการใช้งาน Git เบื้องต้น

เริ่มจากบอกให้ Git รู้ก่อนว่าคุณชื่ออะไร อีเมลอะไร และตั้งค่าให้แสดงสีเพื่อให้ง่ายต่อการอ่าน

$ git config --global user.name "akkaradej"
$ git config --global user.email "email@example.com"
$ git config --global color.ui true

กำหนด Directory ที่ต้องการให้เป็นที่เก็บไฟล์ (Git Repository) โดยไปที่ Directory นั้น
และใช้คำสั่ง

$ git init

เมื่อมีการเพิ่มไฟล์ หรือ แก้ไขไฟล์ ภายใต้ Directory นี้ แล้วต้องการบันทึกการเปลี่ยนแปลง (Commit) อันดับแรกต้องบอกให้ Git รู้ก่อนว่าต้องการจะบันทึกไฟล์ไหน โดยใช้คำสั่ง

$ git add <file>

ถ้าต้องการเลือก Add ไฟล์ทั้งหมดภายใน Directory และ Sub-Directory ให้ใช้คำสั่ง

$ git add .

หรือ

$ git add --all

( –all จะรวมถึงไฟล์ที่ถูกลบด้วย )

อีกแบบที่ผมมักใช้เป็นประจำ คือการเลือก Add เฉพาะกลุ่มของ Code ที่เปลี่ยนแปลงในแต่ละไฟล์ โดยใช้คำสั่ง

$ git add -p

หลังจาก Add เสร็จแล้ว Git จะรู้ว่าเราต้องการบันทึกการเปลี่ยนแปลงของไฟล์ไหน และ ส่วนไหนของไฟล์บ้าง

ต่อไปลองเช็คสถานะไฟล์ โดยใช้คำสั่ง

$ git status

จะเห็นว่าไฟล์ที่ถูก Add แล้วจะเป็นสีเขียว ถ้ายังไม่ Add จะเป็นสีแดง
สถานะของแต่ละไฟล์ สามารถแบ่งย่อยได้ ดังนี้
– untracked new file = ไฟล์ใหม่ ยังไม่ถูก Track หรือ ไม่เคย Add เลย (??)
– new file = ไฟล์ใหม่ ที่ Add แล้ว (A)
– modified = ไฟล์เดิมมีการเปลี่ยนแปลง (M) หรือ มีการเปลี่ยนแปลงและ Add แล้ว (M)
– deleted = ไฟล์เดิมถูกลบ (D) หรือ ถูกลบและ Add แล้ว (D)

ถ้าต้องการเช็คสถานะไฟล์แบบย่อ ก็เพิ่ม -s ต่อท้าย

$ git status -s

แบบย่อนี้จะแสดงเป็นสัญลักษณ์ ?? , A , M , D ตามที่ยกตัวอย่างให้ดูด้านบน

เมื่อเช็คจนแน่ใจแล้วว่า Add ไฟล์ถูกต้อง เรามาเริ่มบันทึกเวอร์ชั่นโดยใช้คำสั่ง

$ git commit -m <"ข้อความ">
เช่น
$ git commit -m "change title of home page"

การใส่ข้อความแนบไปกับการบันทึก ช่วยให้เราหรือคนอื่นที่มาอ่านเข้าใจได้ว่าเป็น Commit เรื่องอะไร

หากต้องการลบไฟล์ สามารถทำได้ 2 วิธี

1. ลบไฟล์พร้อมกับ Add

$ git rm <file>

เมื่อเช็ค Status จะเป็น deleted (D) ที่ Add แล้ว

2. ลบจาก Directory แบบปกติก่อน

$ rm <file>

เมื่อเช็ค Status จะเห็นเป็น deleted (D) ที่ยังไม่ Add จากนั้นใช้คำสั่ง Add แบบนี้

$ git add --all <file>

เมื่อเช็ค Status อีกที คราวนี้จึงจะเห็นเป็น deleted (D) ที่ Add แล้ว

ไม่ว่าจะทำแบบวิธี 1 หรือ 2 ก็ต้อง Commit ด้วยถึงจะสมบูรณ์

เมื่อมีการ Commit เราก็อยากดูว่าเคย Commit อะไรบ้าง โดยใช้คำสั่ง

$ git log

จะเห็น Commit ID (เลขกับตัวอักษรยาวๆ) ชื่อเจ้าของ Commit วันเวลา และข้อความ แบบนี้

commit d071c863d32644b8aa33a03a3dd8e18364d59de7
Author: akkaradej <email@example.com>
Date: Thu May 29 14:58:31 2014 +0700

change title of home page

ถ้าต้องการจะ Reset กลับไปที่ Commit ที่ผ่านมา ให้ใช้คำสั่ง

$ git reset --hard <commit id>
เช่น
$ git reset --hard d071c863d32644b8aa33a03a3dd8e18364d59de7

 

Advertisements

IE 8 is BOOOOM! with overflow: scroll

I have to support IE 8 for some reason. My website can run perfectly on any browsers except IE 8. It cannot open the web page. I’m surprised, at least, it should display some part of the web or display incorrect style.

After debugging, I knew that it has some uncompatibility attribute in css file.
Finally, I found this statement is the problem

overflow: scroll;

IE 8 doesn’t know about this.
The solution is change it to

overflow: auto;

So, everything work fine!

Copy Formatting Code to MS Word with Line Numbers

I have to write a book that includes some code snippet from my project in Eclipse. So, I need to copy code from Eclipse to MS Word with the same color format and line numbers. I use Notepad++ to help. This is the way I do it.

Setup new color scheme for Notepad++

1. Find the color scheme for notepad++. In this case is Eclipse color scheme (right click and save link as.. , save as filename “Eclipse.xml” and type “All Files”)

2. Download and move it to Notpad++ themes folder.

3. Restart Notepad++.

4. Go to “Settings” > “Style Configurator”. Select new theme and “Save”.

Make shortcut key to copy all text format

1. Go to “Settings” > “Shortcut Mapper”, select tab “Plugin commands”

2. Find the name “Copy all formats to clipboard”

3. Modify the shortcut to “Ctrl + Shift + C”

4. “OK” and “close”, now I use “Ctrl + C” to copy raw text and “Ctrl + Shift + C” to copy formatted text.

Insert line numbers

1. Copy code from Eclipse and paste to Notepad++

2. “Select All” and click “Edit” > “Column Editor” or press “Alt + C”

3. Choose “Number to Insert”, fill “initial number” and “increse by”.

4. “OK”, now it ready to copy to MS Word.

Copy and paste code to MS Word

1. “Select All” and press “Ctrl + Shift + C”

2. In MS Word, Go to “Insert” > “Object” and choose object type to “OpenDocument Text”

3. It will open new page, paste the code to that and save

4. Done. I get my code from Eclipse to MS Word with color and line numbers and also separete it from the rest by use object to wrap the code.

Connecting Rails’s ActiveRecord to Azure SQL Database

Spec
1. Local development on Ubuntu
2. Rails 4
3. Azure sql server database

How To
1. Install freetds compiled with openssl

sudo wget ftp://ftp.astron.com/pub/freetds/stable/freetds-stable.tgz
sudo tar -xvf freetds-stable.tgz
cd freetds-stable
sudo apt-get install gcc libssl-dev
./configure --prefix=/usr/local --with-libiconv-prefix=DIR --with-openssl=DIR --with-tdsver=7.3
sudo make
sudo make install

After this you should be able to run:

tsql -C

And get:

Compile-time settings (established with the “configure” script)
Version: freetds v0.91
freetds.conf directory: /usr/local/etc
MS db-lib source compatibility: no
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 5.0
iODBC: no
unixodbc: no
SSPI “trusted” logins: no
Kerberos: no

2. Add these to Gemfile

gem 'tiny_tds'

gem 'activerecord-sqlserver-adapter', git: 'https://github.com/arthrex/activerecord-sqlserver-adapter.git'

3. Run bundle to install gems

bundle install

4. Edit database.yml

development:  

  adapter: sqlserver    
  mode: dblib    
  host: your_host.database.windows.net port: 1433 database: your_db_name username: your_username password: your_password timeout: 5000 azure: true

Error when running Rails with CoffeeScript – ExecJS::RuntimeError

Rails 3.1 comes with CoffeeScript. But it has weird error when I run first rails application. The error is ExecJS::RuntimeError and point to the code around importing CoffeeScript. After google this problem I found this solution that work for me.

Edit ExecJS’s runtimes.rb (should backup before edit)

Ruby\lib\ruby\gems\1.9.1\gems\execjs-1.4.0\lib\execjs\runtimes.rb

Find the line start with JScript = ExternalRuntime.new(
On the line :command => “cscript //E:jscript //Nologo //U”,
– remove //U
On the line :encoding => ‘UTF-16LE’ # CScript with //U returns UTF-16LE
– change ‘UTF-16LE’ to ‘UTF-8’

It should look like this.

JScript = ExternalRuntime.new(
    :name        => "JScript",
    :command     => "cscript //E:jscript //Nologo",
    :runner_path => ExecJS.root + "/support/jscript_runner.js",
    :encoding    => 'UTF-8' # CScript with //U returns UTF-16LE
)

Save it and restart rails server.

Ruby gem install mysql2 with pre-installed MySQL

I have pre-installed MySQL and I would like to use it with my rails. This is the solution.

1. Run gem install mysql2 with parameters
–with-mysql-lib=”MySQL Lib Path”
–with-mysql-include=”MySQL Include Path”
–with-mysql-dir=”MySQL Path”

In my case, I using wamp, it can differ so you should change to your path.

gem install mysql2 --platform=ruby -- '--with-mysql-lib="D:\wamp\bin\mysql\mysql5.5.24\lib" --with-mysql-include="D:\wamp\bin\mysql\mysql5.5.24\include" --with-mysql-dir="D:\wamp\bin\mysql\mysql5.5.24"'

2. Copy libmysql.dll in MySQL lib directory to Ruby bin directory.

That’s all.

Nokia s40 On-Device Debugging

This tutorial explains how to get started with debugging Nokia series 40 on real device. You can debug with your favorite IDEs, Eclipse, Netbeans, or Nokia IDE for Java ME. In this case I use Nokia IDE for Java ME v1 that is provided by Nokia.

1. Download on-device debugging tool for series 40
Update link: Download

2. Extract file to drive C. You will get C:\myplatform. (Must be drive C and folder named myplatform.)

3. Add debugger device
3.1 Open your IDE and go to Preferences > Java ME > Device Management.
3.2 Click Manual Install…

Nokia IDE - Install device debugging

3.3 Browse to C:\myplatform\bin, it will find debugger and will be shown at devices list, 3.4 click Finish.

4. Create debug configuration
4.1 At navigation bar go to Run > Debug Configurations.
4.2 New launch configuration and title the name.
4.3 On tab MIDlet, browse to JAD file of your application.

Nokia IDE - create debug config

4.4  On tab Emulation, specific SDK to series 40 on-device debugger.

Nokia IDE - select debug emulation

5. Add the debug client to your device.
5.1 Go to C:\myplatform\application
5.2 Install Debugger.jar to your device

6. Set up device connection
6.1 Go to C:\myplatform\bin
6.2 Run ConnectionManager.exe
6.3 Click Add device…
Nokia - Connection Manager
6.3.1 Option 1 connect via Bluetooth
Turn on Bluetooth both your computer and device.
On your device
– Choose connect by Bluetooth.
– The Bluetooth device address will be shown.
On your computer
– Click Next and then click search.
– You should see the device IDs that match with your device.
– Click Connect.

6.3.2 Option 2 connect via IP Connection
Connect your computer and device to network.
On your computer
– Click Next and then click Connect.
– Waiting for IP device to connect.
On your device
– Choose connect by IP Connection.
– Edit host address to your computer IP address, leave the port to 1976.
– Click Action Menu > Connect

7. Run debug with debug configuration that you created.

All done!! Have fun with debugging on s40.