ผลต่างระหว่างรุ่นของ "418342 ภาคปลาย 2552/การบ้าน 1"
ไปยังการนำทาง
ไปยังการค้นหา
Cardcaptor (คุย | มีส่วนร่วม) |
Ckw (คุย | มีส่วนร่วม) |
||
(ไม่แสดง 6 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน) | |||
แถว 1: | แถว 1: | ||
− | ในการบ้านนี้คุณจะอ่านข้อมูลจาก [http:// | + | ให้เมื่อวันที่ 11 กุมภาพันธ์ 2553 ส่ง'''วันที่ 17 กุมภาพันธ์ 2553 เวลา 23.59 น.''' |
+ | |||
+ | ในการบ้านนี้คุณจะอ่านข้อมูลจาก [http://www.freebase.com Freebase] แล้วนำมาสร้างฐานข้อมูลอย่างๆ ง่ายๆ พร้อมกับทำหน้าเว็บให้สามารถค้นหาข้อมูลเหล่านี้ได้ | ||
+ | |||
+ | == เริ่มต้น == | ||
+ | หา database dump ของหัวข้อที่คุณสนใจจาก http://download.freebase.com/datadumps/2009-12-30/browse/ ให้เลือกไฟล์ .tsv จากในนั้นมาหนึ่งไฟล์ ไฟล์ที่คุณเลือกควรจะมี | ||
+ | * ฟีลด์ (คอลัมน์) อย่างน้อย 5 ฟีลด์ | ||
+ | * เรคอร์ด (แถว) อย่างน้อย 500 แถว | ||
+ | |||
+ | == สร้างแอพพลิเคชัน == | ||
+ | สร้างแอพพลิเคชันในลักษณะเดียวกันกับ [[418342 ภาคปลาย 2552/ปฏิบัติการที่ 5|ปฏิบัติการที่ 5]] โดยทำตามขั้นตอนนี้ | ||
+ | * สร้าง scaffold ของโมเดลของหัวข้อที่คุณเลือก ยกตัวอย่างเช่น ถ้าผมเลือกหัวข้อเกี่ยวกับภาษาโปรแกรม (computer/programming_language.tsv) ผมอาจจะสร้าง scaffold ดังต่อไปนี้ | ||
+ | > ruby script/generate scaffold programming_language name:string language_paradigms:string ... | ||
+ | * สร้าง migration สำหรับเพิ่มข้อมูลเข้าฐานข้อมูล เช่น | ||
+ | > ruby script/generate migration add_programming_languages | ||
+ | * copy ไฟล์ .tsv ที่คุณโหลดมาไปใส่ใน directory <tt>db/migrate</tt> | ||
+ | * เติม migration ที่คุณเพิ่งสร้าง ให้ฟังก์ชัน up ทำการอ่านไฟล์ .tsv ที่คุณโหลดมา และฟังก์ชัน down ทำการลบเรคอร์ดทุกตัวออกให้หมด กล่าวคือไฟล์ migration ที่สร้างอาจจะมีหน้าตาเป็นอย่างนี้ | ||
+ | <geshi lang="rails"> | ||
+ | class AddProgrammingLanguages < ActiveRecord::Migration | ||
+ | def self.up | ||
+ | ... (เติมโค้ดส่วนนี้เอาเอง) | ||
+ | end | ||
+ | |||
+ | def self.down | ||
+ | ProgrammingLanguage.destroy_all | ||
+ | end | ||
+ | end | ||
+ | </geshi> | ||
+ | * สร้าง action ชื่อ search ใน controller ให้รับ parameter ลักษณะเดียวกันกับหน้า search ในปฏิบัติการที่ 5 '''แต่คราวนี้ให้ผู้ใช้กำหนดค่าฟีลด์ได้อย่างน้อยสามฟีลด์ขึ้นไป''' | ||
+ | * หลังจากทำการพัฒนาเสร็จแล้ว ให้ rollback migration ทั้งหมด (ให้ database ว่าง) แล้ว zip ไดเรคทอรีที่ rails สร้างทั้งหมดส่งมาที่อีเมล์ของ อ.ประมุข (pramook at gmail dot com) และ อ.ชาคริต (chakrit dot w at gmail dot com) |
รุ่นแก้ไขปัจจุบันเมื่อ 10:31, 20 มกราคม 2554
ให้เมื่อวันที่ 11 กุมภาพันธ์ 2553 ส่งวันที่ 17 กุมภาพันธ์ 2553 เวลา 23.59 น.
ในการบ้านนี้คุณจะอ่านข้อมูลจาก Freebase แล้วนำมาสร้างฐานข้อมูลอย่างๆ ง่ายๆ พร้อมกับทำหน้าเว็บให้สามารถค้นหาข้อมูลเหล่านี้ได้
เริ่มต้น
หา database dump ของหัวข้อที่คุณสนใจจาก http://download.freebase.com/datadumps/2009-12-30/browse/ ให้เลือกไฟล์ .tsv จากในนั้นมาหนึ่งไฟล์ ไฟล์ที่คุณเลือกควรจะมี
- ฟีลด์ (คอลัมน์) อย่างน้อย 5 ฟีลด์
- เรคอร์ด (แถว) อย่างน้อย 500 แถว
สร้างแอพพลิเคชัน
สร้างแอพพลิเคชันในลักษณะเดียวกันกับ ปฏิบัติการที่ 5 โดยทำตามขั้นตอนนี้
- สร้าง scaffold ของโมเดลของหัวข้อที่คุณเลือก ยกตัวอย่างเช่น ถ้าผมเลือกหัวข้อเกี่ยวกับภาษาโปรแกรม (computer/programming_language.tsv) ผมอาจจะสร้าง scaffold ดังต่อไปนี้
> ruby script/generate scaffold programming_language name:string language_paradigms:string ...
- สร้าง migration สำหรับเพิ่มข้อมูลเข้าฐานข้อมูล เช่น
> ruby script/generate migration add_programming_languages
- copy ไฟล์ .tsv ที่คุณโหลดมาไปใส่ใน directory db/migrate
- เติม migration ที่คุณเพิ่งสร้าง ให้ฟังก์ชัน up ทำการอ่านไฟล์ .tsv ที่คุณโหลดมา และฟังก์ชัน down ทำการลบเรคอร์ดทุกตัวออกให้หมด กล่าวคือไฟล์ migration ที่สร้างอาจจะมีหน้าตาเป็นอย่างนี้
<geshi lang="rails"> class AddProgrammingLanguages < ActiveRecord::Migration
def self.up ... (เติมโค้ดส่วนนี้เอาเอง) end
def self.down ProgrammingLanguage.destroy_all end
end </geshi>
- สร้าง action ชื่อ search ใน controller ให้รับ parameter ลักษณะเดียวกันกับหน้า search ในปฏิบัติการที่ 5 แต่คราวนี้ให้ผู้ใช้กำหนดค่าฟีลด์ได้อย่างน้อยสามฟีลด์ขึ้นไป
- หลังจากทำการพัฒนาเสร็จแล้ว ให้ rollback migration ทั้งหมด (ให้ database ว่าง) แล้ว zip ไดเรคทอรีที่ rails สร้างทั้งหมดส่งมาที่อีเมล์ของ อ.ประมุข (pramook at gmail dot com) และ อ.ชาคริต (chakrit dot w at gmail dot com)