Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Tuesday, December 18, 2007

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


วันนี้ลองทำการ 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)
    404 Not Found

ลองทำใหม่อยู่สามสี่รอบ ก็เริ่มมึนๆ ว่ามันเกิดอะไรขึ้น ก็เลยลองค้นหาใน Google ดู พบว่ามีคนมีปัญหาคล้ายๆ กัน โดยเขาเสนอวิธีแก้โดยการทำการ update RubyGems ก่อน ให้เป็นรุ่น 0.9.5 (ที่ติดมากับ Leopard จะเป็น 0.9.4 ครับ) โดยการใช้คำสั่ง

gem update --system

หลังจากนั้นพอใช้คำสั่ง gem update -y ก็ไม่มีปัญหาแล้วครับ อัพเดทเรียบร้อย :)

ปล. เห็นแว๊บๆ ตอนอัพเดทว่ามันใส่ flag -y (include dependencies) ให้เรียบร้อยแล้ว .. แปลว่าต่อไปรันแค่ gem update ก็พอแล้ว :)

Sunday, December 9, 2007

หาเรื่องไปพูดในงาน Barcamp Bangkok กันเถอะ!

เดี๋ยวนี้ผมเล่น twitter เป็นชีวิตจิตใจไปซะแล้ว ..


ช่วงนี้มีพี่ๆ หลายๆ คน เช่นพี่ keng, พี่ sugree กำลังเตรียมงาน Barcamp Bangkok กันอยู่
ซึ่งงาน Barcamp Bangkok เนี่ย เป็นการจัดประชุมแบบ Barcamp ซึ่งเหมือนกับว่า
ผู้พูด จะต้องเป็นทั้งผู้พูดและผู้ฟัง (คือมีเรื่องไปพูด และไปฟังคนอื่นพูดด้วย)
(ใครนึกภาพไม่ออก ลองกดลิงค์ไปดูครับ ^^) 
 
 
 
ซึ่งการประชุมนี้ มันดีตรงที่ว่ามันไม่ค่อยเป็นทางการเนี่ยแหละ
หลังจากที่เคยอ่านบรรยากาศที่พี่ mk เคยเอามาฝากจากงาน Barcamp Leeds (หาลิงค์ไม่เจอแล้ว)
ก็ดูน่าสนใจมากๆ ยิ่งเพราะว่ามี geek ไปพูดเยอะๆ เนี่ย เราจะได้ฉลาดขึ้นซะที ๕๕
 
แต่ปัญหาอย่างเดียวคือ .. แล้วจะเอาอะไรไปพูดนี่สิ ..
 
เข้าไปดูในหน้านั้น ก็เจอ topic ที่น่าสนใจ ที่พอจะพูดได้บ้าง (ย้ำว่าบ้างนะ นิดเดียวจริงๆ ..)
  • Web 2.0 in Thailand (แล้วจะเอาเว็บอะไรไปพูด ห๊ะ - -?)
  • Rails 2.0 (ยังเขียนไม่คล่องเลย)
  • PHP Framework (อันนี้มองไปหา hunt เพราะฮันท์สร้าง framework อะ)
  • Social Networks (ก็ไม่ใช่เราอีก - -*, ให้พูดเรื่อง hi5 ก๊ไม่ใช่)
  • Wordpress Blogging for Thai beginners (น่าจะเป็นพี่ keng.com มากกว่า ..)
เอาแล้วไง สรุปว่าก็ไม่มีเรื่องให้พูดซะแล้ว ๕๕
 
พี่ sugree บอกว่า เอาเรื่องที่เราเรียนๆ ไปพูดก็ได้
แต่คือ .. เราดันเรียนเรื่องธรรมดาๆ ไง ไม่ใช่เทคโนโลยีใหม่ๆ
จาว่า .. เดิมๆ ทั้งนั้นเลย ..
 
เอาเป็นว่าคิดหนักครับ จะเอาอะไรไปพูดดี
เพราะว่า product ที่เคยมีอยู่ตัวเดียว (GetCode+ ถ้าใครจำได้) ก็จับมันนอนไปแล้ว
เพราะว่า .. domain โดนกลืน แล้วมันหมดกะจิตกะใจ ..
 
สรุปไปนำเสนอเรื่องอะไรดีหว่า ..
 
เอาเป็นว่า เก็บไว้คิดนั่นแหละว่าจะเอาเรื่องอะไรไปดี
แต่ว่า อยากให้พี่ๆ ที่เป็น geek ทั้งหลาย ไปกันเยอะๆ นะฮับบ
จะได้ถ่ายทอดวิชาให้กับกระผมตัวต้อยๆ T^T

Wednesday, November 7, 2007

ฝึกงานที่ไหนดี

ตอนนี้ เข้าถึงปีสามเทอมปลายแล้ว

เนื่องจากที่มหาลัย ไม่ได้ระบุว่า เราต้องฝึกงาน
แต่ว่า .. ยังไงก็อยากฝึกเอาประสบการณ์อยู่ดีนั่นแหละครับ

ตอนนี้กำลังชั่งใจอยู่หลายๆ ที่
เพราะว่า ใจจริงอยากจะฝึกงานในบริษัทที่รับทำเว็บไซต์ แบบที่เป็นเป้าหมายในอาชีพ
แต่ว่าอีกใจหนึ่ง ก็อยากจะทำในบริษัท หรือหน่วยงานที่เกี่ยวกับการเขียนโปรแกรม
เพื่อตักตวงประสบการณ์ในการทำงานในหน่วยงานใหญ่ๆ ซะมากกว่า ..

ตอนนี้ได้ผู้ใหญ่หลายคน (ขอบคุณครับ) แนะนำว่าควรจะไปฝึกงานที่ไหนดี
พยายามชั่งใจอยู่ เพราะว่าก็กลัวเหมือนกันว่า เราจะไม่สามารถทำได้อย่างที่หวังไว้
อย่างเช่น .. ผู้ใหญ่เขาอาจจะคิดว่าเราทำได้ดี แต่เราอาจจะทำไม่ได้
แหะๆ ..

เอาเป็นเวลา เวลายังเหลืออีกประมาณเดือนหนึ่ง
ลองดูแล้วกันครับ สู้ๆ ^^

Monday, September 17, 2007

แก้ปัญหา character class preg_match กับภาษาไทยที่ใช้ unicode

วันนี้พยายามลองเขียน regular expression เพื่อหาว่าตัวอักษรที่รับมาเป็นภาษาไทย และ ไม่ใช่สระ
ลองเขียนๆ ดู ใช้ preg_match แล้วก็ character class ระหว่าง ก-ฮ ปรากฎว่าเจอเหตุการณ์ไม่คาดฝัน ..

echo preg_match("/^[ก-ฮ]$/", "ก"); // => 1
echo preg_match("/^[ก-ฮ]$/", "เ"); // => 1


ห๊ะ - -!

ปรากฎว่า ลองดูไปดูมา
มันเป็นเพราะว่า ถ้าเราใช้ character class เนี่ย มันจะทำการเช็คแค่ byte แรกเท่านั้น
แล้วภาษาไทยใน unicode มันใช้ทั้งหมด 3 bytes ..
ดังนั้น มันจึงเช็คแค่ byte แรกแล้วก็บอกว่าข้อความนั้น match กันเลยทันที ..

เพราะฉะนั้น วิธีการแก้ก็ง่ายๆ แค่กำหนดขนาดลงไป ..

echo preg_match("/^[ก-ฮ]{3}$/", "ก"); // => 1
echo preg_match("/^[ก-ฮ]{3}$/", "เ"); // => 0


แค่นี้ก็เรียบร้อย :D

Monday, July 16, 2007

ความล่าช้าของ GetCode+

ไม่ใช่ว่าล่าช้าเพราะว่าไม่ได้ทำ
แต่ทำไปทำมา กลับตอบคำถามของตัวเองไม่ได้ครับ


1. ทำอย่างไร ที่จะทำให้ระบบเก็บข้อมูลชื่อศิลปินนั้น
สามารถที่จะฉลาด แบ่งแยกชื่อศิลปินไทยกับอังกฤษออกจากกันได้

- เพิ่มช่องชื่อไทยกับอังกฤษ แล้วให้ default เป็นใส่ชื่อช่องแรก -- เลือกอันนี้
ดูแล้วน่าจะเป็นวิธีที่ Simple สุด แล้วค่อยมา match เพลงที่ duplicate กัน

- ให้รัะบบเอาชื่อศิลปินมาใส่ temp table ก่อน แล้วค่อยให้เรา approve
ไม่เวิร์คกับการที่ต้องมานั่ง approve เพลงเป็นพันๆ เพลงพร้อมกัน


2. วิธีการเรียกดูเพลงหน้าแรก
- แก้จากการที่ให้เปิดเป็น lightbox เป็น div over แทน น่าจะสวยกว่า

3. ระบบ search เพลงจากหน้าแรก (กล่องใหญ่ๆ)
- ส่งต่อไปหน้า search เลย จะได้ไม่มีปัญหาวุ่นวายใจ


สรุปก็คือ นั่งแก้ส่วน db ใหม่อีกแล้ว
แล้วก็ระบบ search อีก โฮะๆ ..

ใช้เวลาอีกเท่าไรเนี่ย !!

Wednesday, June 20, 2007

Python Programming Homework 1

อาจารย์ให้เมื่อวันที่ 19/6/50

even.py

# even.py
#
# A function that used to test if a number is even or not
#
# Written by Prem Sichanugrist (48050892)
#

def even(number) :
return (number % 2 == 0)



hypotenuse.py
# hypotenuse.py
#
# A function that will calculate a length of hypotenuse
# side of a right triangle given both other sides.
#
# Written by Prem Sichanugrist (48050892)
#

import math

def hypotenuse(side1, side2) :
return math.sqrt(float(side1) ** 2 + float(side2) ** 2)



การบ้านเสดแล้ว เย้!

Friday, June 15, 2007

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

ตอนนี้ต้องใช้ 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 an executable.
# Executable name is prefixed with "Test".

require 'English'

FilePath = ENV['TM_FILEPATH']
FileDir = ENV['TM_DIRECTORY']
FileBaseName = File.basename(FilePath)
FileExtension = File.extname(FilePath)
FileNoExtension = FileBaseName.sub(/#{FileExtension}$/, "")

Dir.chdir(ENV['TM_DIRECTORY'])

# have to use g++ to bring in C++ runtime libraries
cc = case FileExtension
when /\.c(pp?|xx|\+\+)/,'.C','.ii'
'g++'
else
'gcc'
end

puts "<pre>"
%x{ "#{cc}" -g -Wmost -Os -o "#{FileNoExtension}" "$TM_FILEPATH"}
puts "</pre>"


puts "<font color='#499914'>Successfully created #{FileNoExtension}</font>" unless $CHILD_STATUS != 0

(อาจจะแก้ไขอีกนิด เพราะอยากให้มันแสดงหน้าจอ Build สวยๆ หน่อย)

Run Single File in Terminal Window
#!/usr/bin/env ruby
#
# Compile the active file to an executable.
# Executable name is prefixed with "Test".

require 'English'

FilePath = ENV['TM_FILEPATH']
FileDir = ENV['TM_DIRECTORY']
FileBaseName = File.basename(FilePath)
FileExtension = File.extname(FilePath)
FileNoExtension = FileBaseName.sub(/#{FileExtension}$/, "")

puts %x{ osascript <<EOF
tell application "Terminal"
activate
do script "cd '#{FileDir}'; clear; echo 'Running #{FileNoExtension} ...'; echo ; ./#{FileNoExtension} ; echo ; read -p 'Please return to exit ..'; exit"
end tell
EOF }


ดูๆ แล่้วก็เวิร์คดีเหมือนกันแฮะ

Tuesday, May 22, 2007

GetCode+ จะทำต่อ !

สรุปบล็อคเรากลายเป็นบล็อกรายเดือนไปแล้วหรือเนี่ย?
เพราะกว่าจะอัพเดททีนึง ก็กลายเป็นว่า ผ่านไปอีเดือนนึงแล้ว

เดือนที่ผ่านมา ไม่มีอะไรมากมาย
นอกเสียจากการที่ นำโปรเจคเก่าๆ มาปัดฝุ่นใหม่ ..



อย่างเช่น GetCode+ เนี่ย
เป็นโปรเจคที่ทำเกี่ยวกับโค้ดเพลง
ทำมาตั้งแต่ปี 2546 แล้วแหละ
เป็นโปรแกรมฐานข้อมูลของโค้ดเพลงจากหลายๆ เว็บ
ซึ่งส่วนใหญ่ จะทำการซ่อนโค้ดไว้ ไม่ให้เราสามารถหาเจอ

เราก็เลยรวบรวมเป็นฐานข้อมูล ไว้ที่นี่ซะเลย !



แต่ด้วยที่ว่า หลายเดือน (ไม่สิ หลายปี) ที่ผ่านมาเนี่ย
เรามัวแต่ยุ่งกับเรื่องอื่นมากมาย ..
ทั้งเรื่องรัก เรื่องเรียน เรื่องงาน บลาๆ
ทำให้เราไม่ได้ทำให้มัน อัพเกรด ซะที ..

แต่ตอนนี้
ได้เวลาปัดฝุ่นแล้ว !


เตรียมพบกับ GetCode รุ่นใหม่ได้เลยเน๊ออ ^^V

Friday, March 2, 2007

SVN ใน Zend Studio

วันนี้ฮันท์สอนใช้ SVN ในการจัดการ source ของงาน ..
แต่พอลองใช้ Zend Studio ในการจัดการ SVN กลับเจอว่า ..

Server certificate verification failed: issuer is not trusted

เอ๋อรับประทานเลยจิ - -" ,, ก็คิดว่าเพี้ยนแล้ว .. .


ปรากฎว่าเมื่อลอง Search ใน Google แล้ว ,, ก็ปรากฎพบคำตอบมา

http://www.zend.com/support/knowledgebase.php?kbid=183&view_only=1

ทำตามแล้วก็ได้เลย ..
ซึ่งนั่นก็แปลว่า .. ก่อนที่เราจะทำการ Checkout svn ใหม่ๆ ,,
เราต้องทำการ Manual Checkout ก่อนครั้งนึง
เพื่อให้ตัว SVN Client มันทำการจำ Certificate ของ Server ..

Sunday, January 28, 2007

เพิ่มและลบ Element ในหน้าอย่างง่ายๆ

http://www.dustindiaz.com/add-and-remove-html-elements-dynamically-with-javascript/

เป็นความไม่ใส่ใจของตัวเองที่ไม่ได้ค้นหา
และหาวิธีง่ายๆ ที่จะจัดการกับ content ในหน้าหนึ่งๆ .. .

หลังจากการอ่านในหน้าที่ลิงค์ไป
ก็เพิ่งรู้ว่า ที่แท้ไอ้ appendChild() กับ removeChild() ก็ใช้อย่างนี้นี่เอง
แอบไม่รู้เสียตั้งนาน -*-

คราวนี้มีไอเดียเพิ่มขึ้นมาแว้วว ๕๕๕

Tuesday, January 9, 2007

Week 5: Oracle Database 10g Top 20 Features for the DBA

Week 5: Oracle Database 10g Top 20 Features for the DBA

เพิ่งรู้ว่า Oracle เวลาลบ Table มันจะลงไป recycle bin
ต้องทำการ PURGE RECYCLEBIN; ทุกครั้งที่จะเคลียร์

หรือไม่ก็ .. DROP TABLE tbl_name PURGE; ไปเลย

Monday, January 8, 2007

แก้ปัญหา ORA-01843: not a valid month ใน Oracle เครื่องภาษาไทย

ช่วงนี้เรียน Oracle ที่มหาลัย
แอบจะบ้าตาย เพราะว่า import sql statement ไม่ได้ .. .

คำถามว่า .. เพราะอะไร .. .


SQL> select to_date('20-JAN-06') from dual;
select to_date('20-JAN-06') from dual
*
ERROR at line 1:
ORA-01843: not a valid month


อะอะ .. ไปเจอบนหน้า http://www.cryer.co.uk/brian/oracle/ORA01843.htm


alter session set nls_date_format='DD-MON-YY';


พอเสร็จ นึกว่าจะใช้ได้แล้ว ..
แต่ก็ยังเจอปัญหาเดิม !


SQL> select to_date('20-JAN-06') from dual;
select to_date('20-JAN-06') from dual
*
ERROR at line 1:
ORA-01843: not a valid month


คราวนี้เลยลอง select session มาดู


select * from nls_session_parameters;


เจออันนี้ แปลกๆ ที่สุด !


PARAMETER
-----------------

VALUE
-----------------

NLS_DATE_FORMAT
DD-MON-YY

NLS_DATE_LANGUAGE
THAI

NLS_SORT
THAI_DICTIONARY


ก็เลยจัดการซะเลย


ALTER session SET NLS_DATE_LANGUAGE='ENGLISH';


ปรากฎว่า ใช้ได้ !


สรุปคือ ปัญหาของมันอยู่ที่ภาษาเท่านั้นเอง
เราจะตั้งเป็น permanent ได้ไหมหว่า .. .

Thursday, December 7, 2006

Javascript สำหรับทำ reflection

http://cow.neondragon.net/stuff/reflection

ไปเจอที่บล๊อคของพี่แชมป์ เป็นเว้บที่เอาไว้ทำภาพสะท้อน
(เหมือนของ Apple แต่เป็น Javascript เลย)

น่าเก็บไว้ทำเว้บ สวยดี ><"" '

Tuesday, November 28, 2006

อ่าน Python จบแล้ว

อ่าน Python จบแล้ว
หนังสือของสำนักพิมพ์ สสท. ที่ซื้อมา ..

อ่านไป ข้ามไปเยอะเหมือนกัน
เอาให้รู้ concept ละกัน
เพราะยังไง .. เดี๋ยวปีหน้าต้องใช้
แล้วก้อ .. เก็บไว้เป็น reference ได้อยู่และ .. .

อยากเขียน GetCode+ เป็น multi-thread โดยใช้ Python ละ
ท่าทางจะเจ๋งดี เพราะว่า connect เข้า server ได้หลายๆ ตัวพร้อมกัน
และดูเหมือนว่ามันจะเร็วกว่าการรัน PHP script บน apache
ที่แบบ .. ให้ user trigger อยู่ทุกวันๆ ..


ชักร้อนวิชา อ๊ากกกกก ><"" '