10 การเปลี่ยนแปลงสำคัญใน Drupal 7

February 14th, 2012

“10 การเปลี่ยนแปลงสำคัญใน Drupal 7″ ตั้งใจจะเขียนนานแล้ว แต่เพิ่งได้มีโอกาสใช้ Drupal 7 แบบลึกซึ้งจริงจัง โดยผมคัดมาเฉพาะที่หัวข้อที่ส่วนตัวคิดว่าสำคัญๆนะครับ

  1. Secure มากขึ้นในการเปลี่ยน Password นั้น User ต้องใส่ Current Password (ถ้าเป็น Drupal 6 ต้องลง Password change confirm เสริม)
  2. สามารถ install/update modules ผ่านเว็บได้เลย (WordPress ทำได้นานแล้วนะ)
  3. Administrative links ทีแสดงด้านบนตลอดเวลาเพื่อให้เข้าถึง Admin functions ต่างๆได้เร็วขึ้น (ถ้าเป็น Drupal 6 ต้องลง Administration menu เสริม)
  4. มี Built-in Cron ไม่ต้องพึ่ง Server Config แล้ว (ถ้าเป็น Drupal 6 ต้องลง Poormanscron เสริม)
  5. มี RDF (RSS Feed) ในตัว (ถ้าเป็น Drupal 6 ต้องลง Views หรือ RDF เสริม)
  6. Content Construction Kit (CCK) หนึ่งใน Module ที่ขาดไม่ได้ ถูกรวมเข้ามาใน Drupal 7 Core Modules
  7. Custom Fields (แบบ CCK) นอกจากจะสามารถเพิ่มเข้าไปใน Node แล้ว ยังสามารถเพิ่มเข้าไปใน User, Comment, และ Taxonomy Terms ได้อีกด้วย
  8. Modules เสริมที่เกี่ยวกับ Images ถูกรวมเข้าไปใน Drupal 7 Core Modules - ImageAPIImageCacheImageField
  9. มีหน้า Dashboard แบบ WordPress แล้ว โดยสามารถดูสรุปต่างๆเกี่ยวกับ Site ได้อย่างรวดเร็ว
  10. เปลี่ยน jQuery จาก 1.3 เป็น 1.4 (jQuery ปัจจุบัน 1.7 แล้วนะ)

ส่วนด้านล่างนี่เป็นของแถม เป็นรายชื่อ Modules ที่ “จำเป็น” ต้องลงเสริม

  1. Views
  2. Chaos tool suite (ctools)
  3. Administration menu ยังไงก็ยังเจ๋งกว่า Administrative links ของ Drupal 7
  4. LoginToboggan
  5. Pathauto
  6. Webform
  7. Mobile Tools
  8. Zen
  9. Zenophile
  10. Devel

คนไทยส่ง SMS เข้ามือถือผ่าน Gmail ได้ฟรีแล้ว (ไม่ใช่ Google Calendar นะ)

October 18th, 2011

อย่างที่หลายๆคนน่าจะทราบว่า Google นั้นมีบริการส่ง SMS ฟรีในต่างประเทศเช่น US มานานแล้ว ส่วนในไทยนั้นก็ส่งฟรีเหมือนกันแต่ต้องเป็นการ Notification ต่างๆของ Google Calendar ซึ่งมีการหลายคนนำ API มาแปลงเป็นส่ง SMS หาตัวเองหรือคนที่รู้จักกันฟรี เพราะว่าเบอร์ที่จะรับ SMS ได้นั้นต้องทำการ Verify กับทาง Google ก่อน เราจึงไม่สามารถนำ Google Calendar มาใช้ส่งหาใครก็ได้

โดยนะล่าสุดเพื่งพบว่าเราสามารถเปิด SMS (text messaging) in Chat และ SMS in Chat gadget และ Labs Setting ของ Gmail ได้แล้ว

วิธีการใช้งานก็สุดแสนจะง่ายดาย แค่พิมพ์หมายเลขของผู้รับ SMS เช่น 0812223333 จากนั้นกด Enter จะเห็นว่าไม่ต้องใช้ Country code เช่น +66 ด้านหน้า

จากนั้น Gmail จะให้เราใส่รายละเอียดเพื่อสร้าง Contact จากหมายเลขนี้ (เฉพาะครั้งแรกเท่านั้น)

จากนั้นเราก็พร้อมที่จะส่ง SMS ไปหาหมายเลขนั้นแล้วล่ะครับ

ฝั่งผู้รับ

ส่วนในครั้งต่อไปถ้าอยากจะส่ง ก็สามารถกดได้ที่ชื่อ Contact ที่เราสร้างไปก่อนหน้านี้ได้เลยครับ

ส่วนข้อจำกับตอนนี้เท่าที่ทราบคือ:

  • ในประเทศไทย Operators ที่รองรับมีแค่ DTAC และ TrueMove นะครับ สาวก AIS หรือค่ายอื่นๆคงต้องรอไปก่อน – Reference
  • Credits ในการส่งคือ 50 ครั้ง โดยหลังจาก Credits เหลือ 0 แล้ว ระบบจะเติมกลับให้ภายใน 24 hrs นอกจากนี้ Credits จะเพิ่มขึ้น 5 Credits ทุกครั้งที่มีคน Reply กลับหาเรา (3 บาท ต่อ 5 SMS?) - Reference
  • การ Reply จาก Mobile นั้นสามารถส่งกลับมาหา Gmail ได้ แต่ผู้ส่ง (เจ้าของมือถือ) จะต้องเสียค่า SMS ให้กับ Operator เอง - Reference
  • หมายเลขของผู้ส่งนั้นจะเป็นของ Google แต่จะไม่มีื่ชื่อผู้ส่ง โดยทุก SMS จะมีข้อความการลงท้ายเพื่อบอกว่าผู้ส่งใช้ Email Address อะไร ดังนั้นถ้าผู้รับจำ Email Address เราไม่ได้ก็อาจจะงงๆเล็กน้อย

Check Me In – The Facebook App for check in to anywhere

August 6th, 2011

Check Me In allow you to check in to anywhere from any Web Browsers, Computers or Mobile Devices. It’s free.

The technologies behind Check Me In are:

  • HTML5 Geolocation API
  • Google Maps API
  • Google Gears
  • Facebook Checkin API
  • Facebook Search API

How to display all online friends in Facebook chat?

July 26th, 2011

As you know, Facebook has announced a new Chat UI. Unfortunately, the new UI is useless. It doesn’t show all your online friends.

But there is some secret, you can get the old chat UI back, just open this URL – https://www.facebook.com/presence/popout.php

ความจริง 9 ข้อเกี่ยวกับ Google+

July 3rd, 2011

หลายท่านคงได้เล่น Google+ กันมาพอสมควร ส่วนตัวผมเองเพิ่งมีโอกาสได้เล่น (วันหยุดพอดี) เลยขอสรุปสั้นๆให้เข้าใจกันง่ายๆ 9 ข้อดังนี้

  1. Google Plus = Facebook + Twitter คือไม่ต้องเป็น Friend กันก็ Follow กันได้ Comment กันได้ ด้วยเหตุนี้ Account ใน Google Plus ไม่น่าจะแบ่งแบบ Facebook ที่มี Pages ให้ Users ทั่วไป Follow
  2. เท่าที่ลองไม่มีการ Limit ตัวอักษรแบบ Twitter ที่ 140 หรือ Facebook ที่ 420 ตัวอักษร
  3. ความเจ๋งของ Stream ของ Google Plus อยู่ที่คุณสามารถแก้ไข Stream ที่ Share ไปแล้วได้ ซึ่งอย่างที่รู้กัน Facebook กับ Twitter ทำไม่ได้
  4. Google Plus มีการนำ GTalk, GMail, Picasa, Profile, +1, และ Buzz มารวมอยู่ด้วย (แต่ไม่ยักกะมี Youtube แฮะ)
  5. Circles เทียบเท่ากับ Following ใน Twitter โดยสามารถสร้าง Circle ย่อยๆเทียบเท่ากับ Lists ใน Twitter นั่นเอง
  6. +1 เทียบเท่ากับ Like นั้นเอง จริงๆเป็น Feature ที่ Twitter ควรจะมีมานานแล้ว เพราะเป็นการบอกถึงความ Popular ของ Post นั้นๆ
  7. Google Plus สามารถ Share ต่อได้ทุกอย่าง (เทียบเท่า Retweet หรือ Via ของ Facebook) แม้กระทั่ง Message ธรรมดา ที่ Facebook ไม่รู้ทำไมไม่ยอมให้ Share
  8. Hangouts มันคือการ Share Live Streaming ที่ Twitter และ Facebook ไม่มี (แต่เข้าใจว่า Facebook น่าจะมี 3rd Party Apps อยู่)
  9. Google Plus API กำลังจะมา ถ้าสนใจไปลงชื่อรอกันได้

Open Finder and Terminal from Eclipse on Mac

January 6th, 2011

อธิบายด้วยภาพละกันนะครับ

Finder

Terminal

9 ขั้นตอนในการ Install Apache, PHP, MySQL บน Mac OS X 10.6 (Show Leopard)

August 28th, 2010

ต้องยอมรับว่าผมไม่เคยใช้ Mac พัฒนาเว็บเลย ส่วนใหญ่จะเป็น iPhone เสียมากกว่า

แต่ไหนๆหลังๆก็ใช้ชีวิตอยู่กับ Mac มากขึ้น เลยลองพัฒนาเว็บบน Mac บ้างดีกว่่า ขั้นตอนก็คล้ายๆกับ Linux เพราะ Mac OS นั้นเป็น Unix นั่นเอง

1. Start Apache

sudo apachectl start

2. Test Apache

http://localhost

3. Enable PHP

แก้ไฟล์ /etc/apache2/httpd.conf (แก้ด้วย VI ก็ได้) ให้ uncomment php module ดังข้างล่าง

LoadModule php5_module        libexec/apache2/libphp5.so

4. Restart Apache

sudo apachectl restart

5. Test PHP

เพิ่มไฟล์ phpinfo.php ใน /Users/YOUR_USERNAME/Sites/ ใส่ code ดังนี้

phpinfo();

จากนั้นเปิด

http://localhost/~YOUR_USERNAME/phpinfo.php

6. Download MySQL

ให้เลือก DMG Package ที่นี่

http://dev.mysql.com/downloads/mysql/

ลงตามลำดับตามนี้

  • MySQL
  • Startup item
  • Preference pane

7. Start MySQL

เปิด System Preference -> MySQL

8. Create MySQL Password

โดย default root จะไม่มี password ให้เราสร้างดังนี้

cd /usr/local/mysql/bin
./mysqladmin -u root password YOURPASSWORD

9. Config PHP & MySQL

cd /etc
sudo cp php.ini.default php.ini
sudo chmod 666 php.ini

แก้ไข path ใน php.ini ให้ตรงกับ path ของ MySQL (/var/mysql/mysql.sock เป็น /tmp/mysql.sock)

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

ขอให้สนุกกับการพัฒนาเว็บครับ :)

Eclipse Helios is here! (Eclipse 3.6)

July 4th, 2010

ต้องยอมรับว่าหลังๆผมมีโอกาสได้ใช้ Eclipse น้อยมาก ณ ปัจจุบันผมยังใช้ Ganymede (3.4) อยู่เลยเนื่องด้วยจำเป็นต้องใช้ Plugins หลายตัวที่ยังไม่รองรับ Galileo (3.5) เช่น Flex3, Force.com IDE

เรียกได้ว่าผมไม่เคยใช้ Galileo กับงานจริงเลยก็ว่าได้แม้ว่าอยากจะใช้มากก็ตามที แต่ก็ยังแอบลุ้นว่าในอนาคตจะได้ใช้มันมากขึ้น โดยเฉพาะกับงานทางด้าน Java อย่างที่ผมเคย tweet เมื่อนานมาแล้วว่าเขียนภาษาอะไรก็ไม่มันส์เท่าเขียน Java จริงๆ

แต่ไม่ว่าจะอย่างไหร่ก็ตาม ทาง Eclipse Foundation ก็ยังคงออกตามแพลนที่วางไว้คือ Eclipse จะมี release ทุกปี โดยการรวบรวมโปรเจคในรอบหนึ่งปีนั้นๆมารวมกัน โดยปีนี้ชื่อของมันคือ Helios

สิ่งที่น่่าสนใจของ Helios ไม่ใช่เรื่อง Feature ใหม่ๆ (ซึ่งสามารถดูรายละเอียดได้จาก link ด้านล่าง) แต่เป็นความน่าจะเป็นที่ Eclipse และ NetBeans (ที่เพิ่งออก 6.9) มีโอกาสจะได้ join กัน (แต่แน่นอนคงหลังจาก Helios) เนื่องจาก ณ ปัจจุบัน Oracle ที่เป็นสมาชิกของ Eclipse Foundation นั้นได้สิทธิ์ขาดในการควบคุมการพัฒนา NetBeans เพราะการเข้าซื้อ Sun ของ Oracle นั่นเอง

คงต้องดูกันต่อไปครับว่าการสงบศึกในบ้าน Java ระหว่าง Eclipse กับ NetBeans จะมีอะไรดีๆออกมาบ้าง เช่น รวม Community, แชร์ Plugins ฯลฯ

สุดท้ายคือ link ที่น่าสนใจเกี่ยวกับ Helios ครับ

- Helios Home
- Helios Projects มีทั้งหมด 39 projects ที่น่าสนใจคือมี Git กับ JavaScript Development Tools มาในตัว
- Helios Demos
- Helios In Action

ความแตกต่างระหว่าง Software, Application, และ Program

June 20th, 2010

พอดีวันก่อนมีคนถามว่า Software, Application, และ Program นี่มันแตกต่างกันยังไง

ก่อนจะอธิบายด้วยคำพูด มาดูรูปกันก่อนดีกว่าครับ

จากภาพข้างต้นแสดงให้เห็นว่า ระบบคอมพิวเตอร์ (Computer System) ประกอบไปด้วย

- Hardware หรือ Machine นั่นเอง โดยอาจเป็นเครื่องจริงๆ หรือ Virtual Machine เช่น VMware/VirtureBox/VirtualPC ก็ได้

- Software ที่ทำงานอยู่ใน Hardware ข้างต้น ไม่ว่าจะเป็น OS เช่น Windows/Linux/Mac หรือ Game, Web Browser ก็ล้วนแต่เป็น Software

- Program คือส่วนย่อยของ Software กล่าวคือ Software หนึ่งตัวจะประกอบขึ้นมาจาก Program หลายๆตัวนั่นเอง ถ้าใน Software Project ขนาดใหญ่ เราอาจจะได้ยินการประเมิณว่าใน Software ตัวนี้มี Program ย่อยทั้งหมดเท่าไหร่

โอเค ดูเหมือนเราจะเริ่มเข้าใจว่า Software และ Program คืออะไร แล้ว Application ล่ะ?

ก็ขอยกภาพมาให้ดูก่อนที่จะอธิบายด้วยคำพูดเหมือนเดิม

จากภาพข้างต้นแสดงให้เห็นว่า ประเภทของ Software นั้นมีมากมายหลายแบบ รวมไปถึง Application ก็เป็นหนึ่งในประเภทของ Software

โดย Application นั้นคือ Software ที่ใช้เพื่อช่วยการทำงานของผู้ใช้ (User) ดังนั้น Application จะต้องมีสิ่งที่เรียกว่า ส่วนติดต่อกับผู้ใช้ (User Interface หรือ UI)

นอกจากนี้เรายังสามารถแบ่ง Application ออกเป็นประเภทย่อยๆ ตามสภาพแวดล้อมการทำงาน (Environment หรือ Platform) ของมัน เช่น

- Desktop Application คือ Application ที่ทำงานบนเครื่อง Desktop Computer เช่น PC หรือ Mac เป็นต้น

- Mobile Application คือ Application ที่ทำงานบน Mobile Device เช่น โทรศัพท์มือถือ เป็นต้น

- Web Application คือ Application ที่ทำงานบน Web เช่น Gmail เป็นต้น

โดย Web App อาจแบ่งออกไปอีกเป็น Intranet Application กับ Internet Application โดย Intranet หมายถึงมีการใช้งานแต่ภายในองค์กร ซึ่งตรงข้ามกับ Internet ที่เป็น World Wide Web นั่นเอง

ในยุค Web 2.0 เราอาจได้ยินคำที่พัฒนาต่อมาจาก Internet Application คือ RIA ที่ย่อมาจาก Rich Internet Application โดยหลักการแล้ว RIA คือ Application ที่ยังใช้ Web Technologies แต่มีการพัฒนาให้มี UI ในฝั่ง Client ที่ดีเหมือนๆกับการใช้ Desktop Application เพื่อสร้างประสบการณ์ที่ดีให้กับผู้ใช้ (User Experience หรือ UX) เช่น ไม่มีการ Refresh หน้าจอ มีลูกเล่น Dynamic ในการแสดงผลมากมายกว่า Internet Application แบบเดิมๆ

นอกจากนี้เราอาจเคยได้ยินคำที่เกี่ยวของกับ Application ตามมามากมาย เช่น

- iPhone Application คือ Application ที่ทำงานอยู่บน iPhone OS

- Facebook Application คือ Application ที่ทำงานอยู่บน Facebook Platform

- Google App Engine คือ ระบบ Cloud ของ Google เพื่อรัน Web Application

การบันทึก State ของ iPhone App ด้วย NSUserDefaults

June 14th, 2010

การบันทึก State ของ iPhone App คืออะไร?

มันคือการบันทึกค่าต่างๆ เพื่อที่ว่าเมื่อ user ปิด app แล้วเปิดขึ้นมาใหม่ก็จะได้ค่าเดิม เทียบได้กับ INI file ของ Windows นั่นเอง

สื่งที่ต้องทำมีสองส่วนคือ ตอน Save กับตอน Load ค่า

1. การ Save state ควรเรียกทุกครั้งที่มีการยืนยันการเปลี่ยนแปลงค่า บางท่านชอบ save ตอนจะปิดโปรแกรมทีเดียว (ใน applicationWillTerminate) ซึ่งมักจะเจอปัญหาว่าถ้าเครื่อง hang ค่าก็จะไม่ทันได้ save

1
2
3
NSUserDefaults *defaults =  [NSUserDefaults standardUserDefaults];
[defaults setInteger:myValue forKey:@"myKey"];
[defaults synchronize];

จากตัวอย่างข้างต้นเป็นการ save ค่า integer ของตัวแปรชื่อ myValue ด้วยชื่อ key ว่า myKey
จะเห็นว่ามีการเรียก [defaults synchronize] ด้วย เป็นการบอกว่าให้ save ค่านี้ทันที

2. การ Load state ควรจะเรียกครั้งแรกครั้งเดียวตอนเปิดโปรแกรม

1
2
3
4
5
NSUserDefaults *defaults =  [NSUserDefaults standardUserDefaults];
int myValue = [defaults integerForKey:@"myKey"];
if(myValue) {
	//set default value for myValue
}

จากตัวอย่างข้างต้นเป็นการ load ค่าจาก key ที่ชื่อว่า myKey มาใส่ตัวแปรชื่อ myValue
โดยหากหากไม่มีค่า (เช่น เปิดใช้โปรแกรมเป็นครั้งแรก) ก็จะให้ใช้ค่า default แทน

นอกจาก integer ตามตัวอย่างข้างต้นแล้ว เรายังสามารถบันทึกค่าประเภทอื่นๆได้อีก แนะนำให้อ่านที่ NSUserDefaults Class Reference ครับ