I'm a Ruby on Rails / jQuery web developer. Follow me at @sikachu

Operator Precedence ใน Ruby

Saturday, December 19th, 2009 Posted in Programming, Ruby | Comments

Operator Precedence หรือลำดับสำคัญของตัวดำเนินการนั้น ถือเป็นหลักสำคัญของโปรแกรมเมอร์ ที่จะทำให้สามารถทำการเขียนอัลกอริธึมเพื่อแก้ไขปัญหาต่างๆ ได้ ในทางคณิตศาสตร์นั้น มักมีคนสรุปมันออกมาง่ายๆ ว่า "วงเล็บมาก่อน คูณหารก่อนบวกลบ" ถ้าใครเคยเห็น code ภาษา Ruby นั้น คงจะเคยเห็นว่า Ruby นั้นมีทั้ง operator && และ || เหมือนกับในภาษา C แล้วยังมี and กับ or ที่เพิ่มเข้ามาใน Ruby ซึ่งเป็นสิ่งที่ทำให้โค้ดนั้นดูสวยงามขึ้น อ่านง่ายขึ้นตามหลักของ Ruby ลองดูโค้ดด้านล่างนี้เป็นตัวอย่างครับ irb(main):001:0> dessert = "Cheesecake" => "Cheesecake" irb(main):002:0> drink = "Coffee" => ...

Optimize database query ด้วย :include

Friday, August 7th, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments

ในการเขียนโปรแกรมบน Ruby on Rails นั้น เรามักที่จะใช้ ActiveRecord ในการทำหน้าที่เป็น ORM ระหว่างตัว Application กับ database ซื่งทำให้การเรียก Record นั้น สามารถทำได้อย่างง่ายดาย เช่น ถ้าผมจะเรียกดู post ทั้งหมดที่มีอยู่ในระบบ ผมแค่สั่ง Post.find(:all) # หรือว่า Post.all ก็ได้ ใน Rails 2.x ซึ่งตรงนี้ ถ้าเราไปดูใน Log file จะพบว่า ActiveRecord นั้น จะใช้คำสั่งค้นหาข้อมูลประมาณนี้ครับ ...

Thin Rolling Restart Patch

Sunday, August 2nd, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments

I wrote a patch for Thin web server to do a rolling restart (i.e. restart the server one at a time) when I was working for my final thesis, Localmapia. I put my source on Github, and already inform the ...

Object#try ใน Rails 2.3

Sunday, August 2nd, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments

เคยเจอปัญหาบ้างไหมครับ กับการที่บางครั้ง object ที่เราเรียก method ไปเนี่ย มันกลายเป็น nil ขึ้นมา ทำให้เกิด exception ขึ้นมา >> @user.username NoMethodError: You have a nil object when you didn't expect it! The error occurred while evaluating nil.username from (irb):1 ซึ่งตรงนี้ เพื่อที่จะหลบ exception ในบางครั้งทำให้ Developer ต้องทำการเช็คก่อนว่า object นั้นเป็น nil หรือไม่ เช่น >> (@user ...

Ruby และ active_support/whiny_nil

Monday, June 29th, 2009 Posted in My Project, Programming, Ruby, Ruby on Rails | Comments

สำหรับนักพัฒนาส่วนใหญ่ที่เริ่มเขียน Ruby on Rails คาดว่าตอนนี้ในเครื่องของทุกๆ คน น่าจะลง Ruby 1.8 อยู่ เนื่องจากยังคงมี Gem หลายๆ ตัว ที่ยังไม่รองรับ Ruby 1.9 และทำให้เกิดปัญหาทางด้านความเข้ากันได้อยู่บ้าง ฉะนั้นผมเลยอยากพูดถึงหลุมพรางที่ Ruby 1.8 ได้ทิ้งเอาไว้ และทำให้หลายๆ คนนั้นพลาดตกหลุมกันไปบ้างครับ ผมขอสมมุติเอาไว้ว่า ผมได้สร้างระบบ Blog แห่งหนึ่ง โดยที่มี Model สามตัวคือ Post เอาไว้เก็บข้อความ Comment เอาไว้เก็บความคิดเห็น และ User เอาไว้เก็บชื่อผู้ใช้ ที่สามารถแก้ไขข้อความได้ครับ สมมุติว่า User ที่สามารถเข้ามาแก้ไขได้นี้ ...

Squish it!

Sunday, May 17th, 2009 Posted in Programming, Ruby, Ruby on Rails | Comments

ต้องบอกว่า Ruby on Rails นั้นมี helper methods เยอะจริงๆ และบางครั้งถ้าเราไม่ได้เข้าไปดูใน api documentation เราก็จะไม่พบว่ามันมีเมธอดเอาไว้ทำอะไรบ้าง วันนี้ผมเจอ method นึงครับ ซึ่งคิดว่าน่าจะมีประโยชน์ และน่าจะมีใครต้องใช้เมธอดนี้แน่ๆ มีใครบ้างไหมครับ ที่เคยเห็น user ชอบโพสข้อมูลมาเว้นบรรทัดๆๆๆ หลายๆ อัน หรือว่าชอบเคาะ space bar เว้นห่างๆ กัน ทำให้บางครั้งมันดูไม่เรียบร้อย และมันอ่านยาก .. วันนี้ผมมี method มาแนะนำครับ ชื่อว่า #squish ตัวอย่างในการใช้งานก็เป็นอย่างนี้ครับ >> str = %(hello world) => "hello\nworld" >> str.squish => ...

Starling init.d script

Tuesday, November 25th, 2008 Posted in My Project | Comments

Today I was trying to get Starling to run at computer's startup, to use with Workling. So, I modified Apache's init.d script, and make it run Starling instead. Feel free to use this script, if you want to make your ...

Update Rails แล้วเจอ OpenURI::HTTPError

Tuesday, December 18th, 2007 Posted in Programming, Ruby, Ruby on Rails | Comments

วันนี้ลองทำการ update Rails ให้เป็น 2.0.2 (เพิ่งออกเมื่อวานนี้ครับ .. เป็น Bugfix จาก 2.0.1) เนื่องจากว่ายังไม่ได้ลองเขียนอะไรจริงๆ จังๆ ก็เลยทำการอัพเดทให้เป็นรุ่นล่าสุดไว้ก่อน เผื่อว่ามันมีอะไรใหม่ๆ เราจะได้ใช้ feature ใหม่ๆ มันซะเลย   แต่แล้วเจ้ากรรม หลังจากรัน gem update -y แล้วมันดันเกิดปัญหาขึ้นนี่ ..   Updating installed gems... Bulk updating Gem source index for: http://gems.rubyforge.org Attempting remote update of actionmailer ERROR:  While executing gem ... (OpenURI::HTTPError)    ...

โค้ดแก้ไข C Bundle ใน Textmate

Friday, June 15th, 2007 Posted in Programming | Comments

ตอนนี้ต้องใช้ Textmate ในการเรียน C++ Programmingแต่มีปัญหาว่า Textmate เจ้ากรรมนั้น ไม่สามารถที่จะ Compile และ Run ไฟล์เดียวโดดๆ ได้เพราะว่าเวลามันจะ Build มันจะต้องสร้างโปรเจค X Code ก่อนสองวันมานี้ ก็เลยลองแก้ Bundle ดูเรื่อยๆใช้ร่วมกันระหว่าง Ruby กับ AppleScriptแล้วก็ เปิด Google จนตาลายเลย ..จนได้ออกมา อย่างนี้ !Compile Single File to Tool#!/usr/bin/env ruby## Compile the active file to ...