Ads 468x60px

วันศุกร์ที่ 22 กรกฎาคม พ.ศ. 2554

Using Drupal to build a web app

Computer tips by Siripong  บันทึกแบ่งปันความรู้ด้านคอมพิวเตอร์

http://siripong-computer-tips.blogspot.com/2011/06/using-drupal-to-build-web-app.html



Using Drupal to build a web app

จะทำ Project ใหม่ กำลังเลือก framework ก็กำหนดความคาดหวังกันซะหน่อย

เราคาดหวังอะไรจาก framework บ้าง?
================================
- เป็น web app
- ฟรี ไม่ติดเรื่องลิขสิทธิ์
- ภาษา เป็น php น่าจะดี
(เพื่อเลี่ยงปัญหาลิขสิทธิ์ java หรือความไม่แน่นอนใดๆ ที่อาจจะเกิดขึ้น)
- รองรับ postgres, mysql
- มีเอกสารเพียงพอ
- ควรอำนวยความสะดวก ในสร้าง app
(ทำงานหลักๆของ app คงไม่พ้น หน้า Search และแสดงข้อมูล
แล้วก็ Insert, Update, Delete)
framework ควรเอื้อให้พัฒนาได้อย่างเร็วๆ (เช่น  Validate input data)
เคยใช้ oracle application express (APEX) สร้าง App
ให้อารมณ์เหมือน ทำ M$ Access
(คือ click ๆๆๆ แล้ว key code นิดหน่อย แล้วได้ เป็น app ขึ้นมาใช้งาน)
แต่ต่างจาก access ตรงที่หน้าจอ User Interface เป็น Web
ถ้า framework เอื้อให้ทำได้อย่าง APEX นี่จะดีมาก
- เพิ่มส่วนขยายได้
เช่น อยากเพิ่ม lib ของ AJAX, JSON, JQuery, etc.
framework ก็เอื้อให้สามารถทำได้
(ถ้าไม่ได้พร้อมใช้ ก็ขอให้มีตัวอย่างคนที่ทำสำเร็จมาแล้ว
ไม่ต้องไล่แก้ code เพื่อเพิ่มเติม module ต่างๆ)
- เขียน code เพิ่มเติมสำหรับงานใน app ของเราได้
- Import Initial data ได้
- ติดต่อสื่อสารกับระบบอื่นๆได้
- เหมาะแก่การประมวลผล เพื่อออก report
- กำหนดสิทธิ์ผู้ใช้ (ACL)
- รองรับ Template
- Performance


เลยมาทำ research ตัว Drupal ดู สรุปได้ความดังนี้

โดยรวม
=======
- เป็น web app
- GNU GPL = นำมาใช้งานได้ฟรี
- เป็น php
- รองรับทั้ง postgres, mysql
(บาง module เช่น http://drupal.org/project/data รองรับเฉพาะ mysql)
(ใน D7 มีแยก layer ออกเป็น database abstraction
ทำให้ module ต่างๆ ไม่ต้องเขียนแยกสำหรับแต่ละ db อีกต่อไป)

- มีเอกสารพอสมควร (เพราะเป็นที่นิยม และมีผู้ใช้เยอะ)
- มี User Interface ให้ admin กำหนดสิทธิ์ + นิยามใหม่ได้โดยง่าย
รวมถึง รองรับ OpenID และ OAuth
- รองรับ Template
- มีระบบ cache (ซึ่งกำหนดได้หลายระดับ) เพื่อเพิ่ม Performance
(ไว้ทำ Project เสร็จคงให้รายละเอียดได้ว่าช้าแค่ไหน tune ยังไง)


สร้าง app ได้โดยง่าย?
===================
เนื่องจาก Drupal เริ่มต้นถูกสร้างขึ้นเพื่อเป็น CMS
ทำงานหลักๆของ app เช่น ทำหน้าหน้า Search และแสดงข้อมูล
แล้วก็ Insert, Update, Delete นั้น
Drupal มีหน้าจอ interface ให้กดๆ
(อาจจะกินเวลาในขั้นตอนตั้งชื่อตัวแปรบ้าง)
ก็จะได้หน้าผลลัพธ์ออกมาแล้ว !!!

โดยทั่วไป เมื่อพูดถึง CMS เราจะนึกถึงข้อมูลเพียง topic + body
(เช่น blog, news, forum) แล้วก็ส่วน comment
เลยสงสัยว่าด้วย drupal เราจะสร้างเนื้อหา (content)
หรือ ประเภทของเนื้อหา (content type) ที่มี field เพิ่มเติมตามความต้องการได้หรือ
(เช่น เนื้อหาประเภทหนังสือ มี isbn, ราคา, จำนวนหน้า เป็นต้น)
คำตอบคือ http://drupal.org/project/cck คือผู้อยู่เบื้องหลังคุณสมบัตินี้ครับ
(ซึ่งมีคุณสมบัติในส่วน ย้ายโครงสร้างข้อมูลที่กำหนดขึ้นนี้ ไปยัง production env ด้วย)

ซึ่งเราสามารถ config ให้ Validate input data
แล้ว drupal จะคอยตรวจสอบ + แสดงผลเตือนผู้ใช้ให้
เราไม่ต้อง coding สำหรับความต้องการนี้

ประเภทข้อมูลแบบ email http://drupal.org/project/email
หรือ ผูกรูปภาพเข้ากับ recode ในฐานข้อมูล http://drupal.org/project/imagefield
fields for content types that can be used to display video, image, and audio files from various third party providers (such as youtube)  http://drupal.org/project/emfield

ตัวอย่าง วิธีทำหน้า Search criteria โดยไม่ต้อง code
http://itshee.exteen.com/20090608/views-drupal
http://civicactions.com/blog/2009/apr/28/views_filter_blocks_drupal_6

ซึ่งตัว search result สามารถกำหนดให้แสดงผลเป็นตาราง
+ build-in ส่วน next prev last ในกรณีที่ผลลัพธ์มากกว่า 1 หน้า
+ ผู้ใช้สามารถกดตาม column ต่างๆ ให้เรียงลำดับข้อมูลมากน้อยได้
หรือ แสดงผลการค้นหาแบบ google ได้

กำหนดรูปแบบการแสดงผลข้อมูล http://drupal.org/project/contemplate

ตอน research อยู่, สงสัยอยู่ว่า cms ส่วนมากจะเป็นเหมือน blog
คือจะมี content หลัก แล้วก็ comment
เราสามารถ content มาลิงค์ความสัมพันธ์แบบ foriegn key ไปยังอีก content ได้หรือ
โดยที่ content อาจจะเป็นคนละ content type กันเช่น
content ประเภทอัลบั๊มเพลง สัมพันธ์กับ content type ชื่อเพลง
ได้คำตอบว่า http://drupal.org/project/cck ในส่วน nodereference ทำในส่วนนี้ได้
(ย้ายไปอยู่ในส่วน code module แล้วใน D7)


extension
==========
Drupal มี module ให้ download และติดตั้งเพื่อเพิ่มส่วนขยายได้อย่างง่ายดาย

ตัวอย่างวิธีการ http://drupal.org/node/587878
เป็นการใช้ module lightbox ที่ทำให้เมื่อเรากดที่รูป ระบบจะแสดงรูปในแบบ fullscreen
ผู้ใช้เลื่อนดูรูปก่อนหน้า หรือถัดไปได้ (เหมือนใน facebook) หรือเป็น slide show ก็ได้
(ไม่ต้อง coding ใดๆ อีกเช่นเคย)

ซึ่งเราสามารถเขียน code สร้าง module เพิ่มเติมสำหรับงานใน app ของเราได้เช่นกัน
(Thai version - http://www.thaitux.info/node/426)
หน้าเก็บค่า config ของ module นี่ เขียน code น้อยมาก
ตัวอย่างการเขียน page ที่บันทึกข้อมูลลง db เมื่อผู้ใช้กรอกและกดปุ่ม submit
http://coderepositories.blogspot.com/2011/02/drupal-module-inset-data.html

Using Drupal to build a web app #2

Import Initial data ?
=====================
ในมุมการสร้าง web app (ที่ไม่ใช่ cms)
อาจมีข้อมูลระบบเก่าที่ต้อง import เข้า

แบ่งออกได้เป็นหลายกรณี เช่น

เป็นข้อมูล master ไม่มี foreign key
ในรูปแบบ เช่น csv, xml, หรือ table อยู่ใน ฐานข้อมูล
import ได้หลายวิธีเช่น
http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard
http://drupal.org/node/1035296

เป็นข้อมูลที่มีความสัมพันธ์ one to many
เช่น table อัลบั๊มเพลง สัมพันธ์กับ table เพลง
(ซึ่งจะมีเพียงอัลบั๊มเดียว link ไปยัง เพลง
= เพลงหนึ่งเพลงอยู่ในอัลบั๊มเดียวเท่านั้น)
import ด้วย http://drupal.org/project/feeds

ผู้ฟังแต่ละคน ชอบเพลงได้หลายเพลง
เพลงแต่ละเพลงมีผู้ชอบฟังได้หลายคน
(ยังไม่ได้ศึกษา)


ติดต่อสื่อสารกับระบบอื่นๆได้
====================
XMLRPC, JSON, REST, AJAX, Webservice ...
ด้วย module ต่างๆ เช่น http://drupal.org/project/services

ตัวอย่าง
http://jeroenbourgois.be/get-drupal-data-to-an-external-site
http://www.sparklepod.com/myblog/drupal-services-and-json-server-part-2/


เหมาะแก่การประมวลผล เพื่อออก report ?
==================================
- run sql select insert, update, delete ได้
- มี api มาให้แทน sql statement
- Drupal มีการเก็บข้อมูลใน table เฉพาะ
ซื่งออกแบบให้รองรับการเก็บบันทึกการแก้ไขข้อมูล หลายครั้ง revision
ไม่ใช่เก็บเฉพาะครั้งล่าสุด
ดังนั้น อย่าคาดหวังว่า ข้อมูลจะอยู่บน table เดียว ให้ select ง่ายๆ (ถ้าไม่ได้ผ่าน drupal api)

- Drupal ไม่ใช่ Object-Oriented (เป็น Procedural)
ถ้าคาดหวัง จะมี ORM ต้องลง http://drupal.org/project/orm เพิ่ม

- Drupal ไม่รองรับ Atomic Transaction !!!


Others
=======
- Drupal ยืดหยุ่นสูง

- มี User Interface ให้แก้ไขเมนู, เพิ่มหน้า + ใส่รูป (เช่น FCKeditor)
(ไม่ต้อง code ใดๆ)
รองรับ markdown (http://tewson.com/markdown)

- search + แสดงข้อมูล บน table ที่มีอยู่แล้ว (น่าจะเรียกว่า custom table)
http://drupal.org/project/data (ไม่ต้อง code อีกเช่นเดิม)
(join ความสัมพันธ์กับ content บน drupal ได้)

- ฟรีจริงๆ (ไม่เหมือน บน joomla ที่หลาย module ฟรีตัว demo)

- มี http://drupal.org/project/panels ที่ทำให้แต่ละหน้ามี layout ที่ต่างกันได้

- สร้าง form ขึ้นมาเฉพาะงาน
เช่น http://drupal.org/project/webform (making surveys)

ทำหน้า frontpage http://drupal.org/project/front

หน้า contact us  http://drupal.org/project/contact_forms

บอกว่า drupal มี Acquia เป็นเบื้องหลัง เหมือน fedora กับ Redhat
(http://www.isriya.com/node/2355/why-geeks-love-drupal)

มี drush เป็นทางเลือกในการติดตั้ง & maintainance >> http://ubuntuclub.com/node/3159/drupal-ขั้นเทพ-ด้วย-drush

ตัวอย่างเทพๆ ในการ setup ลงบน centos
http://thedrupalblog.com/creating-centos-server-installation-apache-mysql-tomcat-php-drupal-and-solr

ทิ้งท้ายด้วย อีกตัวอย่าง(ที่น่าตื่นตา) การใช้ drupal สร้าง web สมัครงาน (ภายในเวลา 30 นาที)
http://benbuckman.net/tech/11/02/drupal-application-framework-bostonphp-competition

ชั่งน้ำหนักกันเอาแล้วกันนะครับ ว่าเหมาะสมกับ Project ที่กำลังทำหรือเปล่า
สำหรับบางงาน อาจจะเหมาะมากๆ

    วันพุธที่ 29 มิถุนายน พ.ศ. 2554

    หลักเกณฑ์ในการขอรับกล้าไม้

    http://www.thaitripstoday.com/tag/%E0%B8%81%E0%B8%A5%E0%B9%89%E0%B8%B2%E0%B9%84%E0%B8%A1%E0%B9%89
    หลักเกณฑ์ในการขอรับกล้าไม้
    1. ผู้ขอรับกล้าไม้ต้องยื่นคำขอและมาขอรับกล้าไม้ด้วยตนเอง (ตามแบบคำขอรับกล้าไม้พร้อมหลักฐาน)
    2. ตรวจสอบชนิดไม้ที่ต้องการนำไปปลูกว่ามีชนิดไม้ที่ต้องการหรือไม่
    3. ติดต่อขอรับกล้าไม้ได้ที่ศูนย์เพาะชำกล้าไม้ สถานีเพาะชำกล้าไม้ และหน่วยงานที่ได้รับมอบหมายให้มีหน้าที่แจกจ่ายกล้าไม้ โดยไม่ต้องชำระค่าธรรมเนียมใด ๆ ทั้งสิ้น
    4. ประชาชนทั่วไปสนใจติดต่อขอรับกล้าไม้ได้รายละไม่เกิน 1,500 ต้น/ปีหากมีโครงการปลูกต้นไม้ที่ไม่มีวัตถุประสงค์เพื่อการค้าและมีพื้นที่ เป้าหมายชัดเจน สามารถขอรับกล้าไม้ได้มากกว่ารายละ1,500 ต้น/ปี โดยให้ยื่นหนังสือแสดงโครงการ พร้อมหลักฐานประกอบแนบคำขอ
    5. ศาสนสถาน หน่วยราชการ รัฐวิสาหกิจ องค์กรเอกชนทั่วไป ขอได้หน่วยงานละไม่เกิน 10,000 ต้น/ปี แต่หากมีโครงการปลูกต้นไม้ที่ไม่มีวัตถุประสงค์ เพื่อการค้าและมีพื้นที่เป้าหมายชัดเจน สามารถขอรับกล้าไม้ได้มากกว่ารายละ10,000 ต้น/ปี โดยให้ยื่นหนังสือแสดงโครงการพร้อมหลักฐานประกอบแนบคำขอ

    หลักฐานการขอรับกล้าไม้
    1. บัตรประชาชน
    2. ถ้าเป็นโครงการต้องแนบรายละเอียดโครงการ เอกสารที่ดินและแผนที่สังเขป

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

    หมายเหตุ
    หน่วยงานที่แจกจ่ายกล้าไม้จะมีการติดตามประเมินผลการจ่ายกล้าไม้ดังกล่าว โดยวิธีสุ่มตัวอย่าง โดยแบ่งเป็นกลุ่ม ได้แก่ 50 – 1,000 กล้า และมากกว่า 1,000 กล้า ขึ้นไป ในแต่ละกลุ่มให้สุ่มตัวอย่างไม่น้อยกว่าร้อยละ 2 ของผู้มาขอรับกล้าไม้ ตามระเบียบกรมป่าไม้ พ.ศ. 2552

    ระเบียบการขอรับกล้าไม้ download icon 1 คน 1 ต้น ร่วมรณรงค์ลดโลกร้อน
    ขั้นตอนการขอรับกล้าไม้ download icon 1 คน 1 ต้น ร่วมรณรงค์ลดโลกร้อน 

    10.ศูนย์เพาะชำกล้าไม้แพร่ 305
    หมู่ 10 ต.แม่จั๊ว อ.เด่นชัย จ.แพร่ 54110
    0
    5461 4282
    0
    8192 56758
    Map

    นายศิริไชย รัตนภาค
    1.สถานีเพาะชำกล้าไม้จังหวัดลำปาง กม.ที่
    668-669 ถ.พหลโยธิน หมู่ 3 ต.แม่หวด  อ.งาว
    0 8618 13003

    Map

    นายขวัญชัย  ใจเฉพาะ
    จ.ลำปาง 52110
    2.สถานีเพาะชำกล้าไม้จังหวัดแพร่ 140 หมู่ 7
    ต.ป่าแมต อ.เมือง จ.แพร่ 54000
    0 8199 32415

    Map

    บันทึกที่มีคำสำคัญ: postgresql

    http://www.gotoknow.org/post/tag/postgresql

    บันทึกที่มีคำสำคัญ: postgresql 

    Kilimanjaro... IT(Ubuntu, PostgreSQL, Software) » pg_restore: [archiver] unsupported version (0)

    ขออนุญาตเก็บ ลิงก์ ไว้ แบบ มักง่ายอย่างนี้ไว้ก่อนน่ะครับผม.......... โอ้ ปวดหัว http://postgis.refractions.net/pipermail/postgis-users/2007-February/014568.html http://www.webservertalk.com/archive140-2004-11-458770.html มีต่อ »

    Kilimanjaro... IT(Ubuntu, PostgreSQL, Software) » ทั่วๆ ไปเกี่ยวกับ PostgreSQL Cinq ... กันลืม ... อิๆๆๆ... การ Backup และ Restore ผ่าน pgAdmin (0)

    หวัดดีครับ ก็มาถึงหัวข้อ ..... เกี่ยวกับ PostgreSQL ตัวที่ 5 แล้วน่ะครับ... ก็เลยต้องชื่อว่า... ทั่วๆ ไปเกี่ยวกับ PostgreSQL Cinq ... กันลืม ... อิๆๆๆ... การ Backup และ Restore ผ่าน pgAdminIII ในหัวข้อนี้ก็ไม่มีอะไรมาก แค่อยากบอกวิธีการ Backu... มีต่อ » 
     

    เมื่อเราทำการลง PostgreSQL เสร็จแล้วและทำการแก้ไขไฟล์คอนฟิกในส่วนที่เราต้องการเรียบร้อยหมดแล้ว ขั้นตอนต่อมาที่สำคัญเช่นกัน ก็คือ การสร้าง user ให้สามารถเข้าไปใช้งานที่ PostgreSQL ได้ เพราะ PostgreSQL ก็เปรียบเสมือนบ้าน ในบ้านต้องมีสมาชิก และสมาชิก... มีต่อ »

    Kilimanjaro... IT(Ubuntu, PostgreSQL, Software) » ทั่วๆ ไปเกี่ยวกับ PostgreSQL Trois ... กันลืม ... อิๆๆๆ (0)

    มาเขียนกันลืมอีกแล้ว ต่อเลยน่ะครับ เดี๋ยวหมดรมณ์ เขียนซะก่อน... อิๆๆ อืม ถึงไหนแล้ว อืม................... อ้อ เมื่อเราทำการลง PostgreSQL ในเครื่องเราเสร็จแล้ว และเขียนโปรแกรมภาษาอะไรก็ตามติดต่อกับฐานข้อมูล PostgreSQLได้แล้ว จะสังเกตได้ว่าเวลา... มีต่อ »

    Kilimanjaro... IT(Ubuntu, PostgreSQL, Software) » ทั่วๆ ไปเกี่ยวกับ PostgreSQL ... กันลืม ... อิๆๆๆ (0)

    เจ้านายผมให้ผมทำการติดตั้ง Ubuntu Server พอติดตั้งเสร็จ มันก็เป็นรูปแบบ แบบ command line ทั้งหมดเลย... ทีนี้เมื่อผมต้องการใช้งานโปรแกรมฐานข้อมูล PostgreSQL ก็จำเป็นต้องมีการทำการแก้ไขไฟล์ต่างๆ เพื่อให้ระบบที่ใช้ฐานข้อมูลตัวนี้ทำงานได้อย่างราบรื่น... มีต่อ » 
     

    ช่วงนี้กำลังศึกษาด้วยตนเอง เกี่ยวกับ web programing อยู่ครับ จุดประสงค์จริงๆก็คือต้องการที่จะนำข้อมูลในฐานข้อมูล ออกมาสรุปทำเป็นรายงาน โดยฐานข้อมูลที่ใช้อยู่ตอนนี้ก็คือ postgresql ซึ่งเป็นระบบฐานข้อมูลที่เป็น Opensouce ส่วนโปรแกรมที่จะใช้ติดต่อกับ... มีต่อ »
     

    "เจษ" เพื่อนเจ้ สมัยเรียนอยู่ มอ. เมื่อเกือบ สิบปีที่แล้วตอนนี้ไปได้ดิบได้ดี ที่เมืองหลวงส่งไฟล์มาให้สามสี่ไฟล์ ส่วนใหญ่เป็นหนังสือเกี่ยวกับ PHP5 และ PostgreSQL 8เจ้ก็ อ่านแบบลวกๆ ใช้เวลาประมาณ สองวันสองคืน (อืดจริงๆ)เพื่อทำโปรเจก ที่แสน... มีต่อ »
     

    พอดีศึกษาการเลือกฐานข้อมูลมาใช้ในองค์กรโดยเฉพาะองค์กรที่ต้องอ่านและสร้าง เอกสาร XML ก็จึงศึกษา MySQL 5, PostgreSQL 8 และ Oracle 10 gทุกระบบก็จะมีข้อดีและข้อเสียที่แตกต่างกันไป โดยสรุปแล้ว MySQL 5 จะเด่นในเรื่องของฟรี ใช้ง่าย และเร็ว (แต่คนที่พัฒนา ... มีต่อ »