Thursday, June 30, 2011

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

ตัวอย่าง
Building a webservice
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 ที่กำลังทำหรือเปล่า
สำหรับบางงาน อาจจะเหมาะมากๆ

No comments:

Post a Comment