| iNmO_Khem 的个人资料Khem at next step of lif...照片日志列表 | 帮助 |
|
|
5月11日 Installing program on Linuxจดไว้หน่อย เพราะว่าลืมมาหลายทีแล้ว
ถ้าจะลงโปรแกรมที่เป็น .tar.gz ให้ใช้คำสั่ง
tar xwf <file_name>
มันจะแตกไฟล์มาเป็โฟลเดอร์นึง เข้าไปที่โฟลเดอร์นั้นแล้วก็
./configure --prefix=$HOME
parameter หลังนี่เป็นการเซ็ต directory ให้มันลงโปรแกรมไว้ (ถ้าไม่ใส่มันจะไปลงไว้ที่ root ซึ่งบางทีเราไม่สามารถลงโปรแกรมได้ เพราะไม่ใช่ root
เสร็จแล้วก็ทำการ make โปรแกรม
make
แล้วก็ลงซะ
make install
เป็นอันเสร็จ ^^
(วันนี้นั่งลง Mono อยู่ตั้งนาน กว่ามันจะ make เสร็จและลงด้วย T.T)
ป.ล. เลิก port โปรแกรมของพี่ป.เอกแล้วอ่ะ นั่งทำไปแล้วรู้สึกว่าไม่ได้อะไรขึ้นมา อีกทั้งยังเสี่ยงต่อการเกิด bug อีกด้วย 4月20日 AJAX, XMLRPCวันนี้จะขอเอาความรู้มาพูดหน่อยละกัน ให้เพื่อนๆ ลองสังเกตว่าปกติที่ใช้เว็บที่มีการแลกเปลี่ยนข้อมูลกับ server อ่ะมักจะเป็นแบบรูปนี้
คือ โหลดหน้าขึ้นมา แล้วเราก็กรอกๆ ฟอร์ม แล้วก็กด submit มันก็จะไปโหลดหน้าใหม่ ซึ่งจะบอกว่าเรากรอกเสร็จ/ไม่เสร็จ หรือมีปัญหาอะไรหรือเปล่า
วิธีการติดต่อกับ server จะเป็นการที่ web browser (เช่น IE) ทำการส่งข้อมูลไปที่ server แล้วรับ page ใหม่มาแสดงผล ส่วนหน้าที่จะทำอย่างนี้ได้เนี่ย จริงๆ แล้วในหน้าจะมี code อยู่ ทำให้ server ประมวลผลแล้วส่งหน้ามายัง browser ให้เราเห็นได้ต่างๆ กัน (ตามที่ได้ประมวล code)
ถ้าคนที่เคยใช้ gmail อาจจะเห็นว่าเว็บของ gmail จะไม่เหมือนกัน เพราะว่าเราจะทำอะไรอะไรในหน้าเดียว ซึ่งส่วนต่างๆ ของหน้ามันจะเปลี่ยนไปเรื่อยๆ โดยไม่มีการโหลดหน้าใหม่ ก็จะเป็นรูปแบบนี้
ซึ่งก็มีการติดต่อกับ server เช่นกัน เทคโนโลยีที่เอามาใช้นี่เรียกว่า AJAX หรือ Asynchronous Javascript And XML ซึ่งเป็นรูปแบบการเขียน (ไม่ได้เป็นภาษาใหม่แต่อย่างใด) โดยใช้ความสามารถของ Javascript ที่สามารถแก้ไขส่วนต่างๆ ของหน้าได้โดยไม่ต้องโหลดใหม่ กับความสามารถในการติดต่อ server โดยเขียนข้อมูลในรูปแบบ XML (คล้ายๆ กับเป็นการแพ็คส่งข้อมูลแบบนึงละกัน)
วิธีการของ AJAX ก็คือแทนที่จะให้ web browser โหลดหน้าที่เป็น server-side page ก็เปลี่ยนให้ Javascript ใช้ XML ในการโหลดแทน ผลก็คือเราก็สามารถใช้งานหน้านั้นได้เหมือนกับการใช้งานเว็บปกติ
--- จบเรื่อง AJAX ---
ที่นี้ก็จะพูดถึงเทคโนโลยี XMLRPC ซึ่งเป็นอันเก่ากว่า AJAX
XMLRPC ทำให้หน้าเว็บสามารถไปเรียกโปรแกรมที่รันอยู่บน server ได้ (ต่างจาก AJAX ที่ไปเรียกหน้าบน server) โดยโปรแกรมที่โดนเรียกนั้นจะต้องเขียนให้เป็น XMLRPC Server (ก็คิดว่าเหมือนต้องมีผู้ให้บริการรอรับคำสั่งอยู่อีกคนนึงนั่นเอง)
โดยส่วนมากเค้าจะใช้ Javascript ในการเรียกเหมือนกันแต่ขอบเขตความสามารถก็จะต่างกันนิดหน่อย โดย XMLRPC จะต้องมี server service ต่างหากรันไว้ แต่ว่าก็จะมีความสามารถมากกว่าเหมือนกับเขียนโปรแกรมทั่วไป (ใช้ทรัพยากรที่ server ได้เลย
--- จบแล้ว ---
ใครอ่านแล้วรู้เรื่องหรือไม่รู้เรื่องลอง comment ดูนะครับ 3月30日 Java Rise againเค้าทำให้ Mac OSX เร็วด้วย 10 ข้อนี้แปลผิดแปลถูก จาก:
Making An Operating System Faster
© Amit Singh. All Rights Reserved. (10 Things Apple Did To Make Mac OS X Faster) ถ้าใครเจอที่ผิดบอกด้วยเพราะเวลาเริ่มเขียนคือ 23:56 แต่เสี้ยนอยากเขียนให้เสร็จ
ควรเรียนวิชา OS ก่อนแล้วจะอ่านเข้าใจยิ่งขึ้น ส่วนใครที่เรียนแล้วอ่านไม่เข้าใจแสดงว่าลืมไปแล้ว
ใครที่ยังไม่ได้เรียนแล้วอ่านเข้าใจแนะนำให้มาเรียนสายคอมฯ นะจ๊ะ
1. BootCache
เวลาเริ่มเปิดเครื่องเนี่ย มันก็จะอ่านไฟล์จาก harddisk ใช่ป่ะ
เค้าก็เลยพยายามฉลาด โดยการจำว่ามันอ่านไฟล์ที่อยู่ตำแหน่งไหนของ disk บ้าง จดไว้ (จริงๆ เค้าวัดอย่างอื่นอีกด้วย แต่ไปอ่านบทความเต็มเอาเองละกัน)
พอเปิดเครื่องมาอีกทีก็ไปอ่านเอา block ที่จดไว้ (disk มันแบ่งเป็น blockๆ) ออกมารอไว้เลย ทำให้โหลดเร็วขึ้น
2. Kernel Extensions Cache
ใช้ทริกเดียวกันกับข้อแรก แต่คราวนี้เป็น Kernel และ Kernel Extension (Kernel คือโปรแกรมหลัก ที่เป็น "แก่น" ของระบบปฏิบัติการ (อ๊ะๆ ไม่รู้จักคำว่าระบบปฏิบัติการหล่ะซี่ ในที่นี่คือ Mac OSX ไง ถ้ายังไม่รู้เรื่องอีกก็เลิกอ่านอันนี้ได้แล้วอ่ะ เพราะคงจะงงขึ้นเรื่อยๆ) ส่วน Kernel Extension คือโปรแกรมที่ "แก่น" มันเรียกใช้ละกัน)
แทนที่จะไปหาไฟล์พวกนี้ (ซึ่งมันอาจอยู่กระจัดกระจายบน disk) ก็รวมมันซะ มาไว้ที่เดียวกันเลย เพื่อให้โหลดติดต่อกันทีเดียว
3. Hot File Clustering
มุกเดิมเหมือนกัน ทีนี้ปลี่ยนมาเป็นไฟล์อื่นๆ (โฟกัสที่ไฟล์เล็กๆ ใช้บ่อย) มันจะเก็บสถิติไว้ แล้วเลือกพวกใช้บ่อยๆ มาบันทึกไว้ที่ 0.5% แรกของ file system จะได้เรียกใช้ได้เร็วๆ (defrag อะไรเสร็จสรรพ)
4. Working Set Detection
แอบดูเหมือนเดิม แต่ใช้กับ Virtual Memory (เนื่องจากแรมพวกเราน้อยเกินไป เลยใช้วิธีเหมือนทดเลขอ่ะ เก็บสิ่งที่มีใน memory ที่ยังไม่ได้ใช้ตอนนี้ไว้ใน Virtual Memory ซึ่งจริงๆ แล้วเขียนบน harddisk) เวลาโหลดมาแต่ละทีก็จำว่า user แต่ละคนนี่ใช้งานโปรแกรมยังไง อันไหนที่มักจะโหลดต่อๆ กันขึ้นมา ทำนายเอาไว้เลย พอถึงเวลาจะใช้ก็สั่งโหลดทีละเยอะๆ ไปเลย ประหยัดเวลาดี
5. On-the-fly Defragmentation
เคยรู้จักการ Deflagmentation กันป่ะ คือปกติที่เราเขียนไฟล์ลงไปแล้วลบไฟล์ที่เขียนไปออกจะเกิดช่องโหว่ใน disk ใช่มะ ทีนี้ช่องโหว่นั้นเกิดใหญ่ไม่พอที่จะเขียนไฟล์ใหม่ลงไปได้ ก็เลยต้องแบ่งไฟล์ใหม่เป็นหลายๆ ท่อนให้พอดีกับช่องโหว่ที่มีอยู่ การที่จะยักย้ายถ่ายเทให้ไฟล์เป็นระเบียบ (อยู่ด้วยกัน ไม่กระจายเป็นท่อนๆ) คือ defragmentation นั่นเอง
มันก็เลยจัดการดูทุกครั้งที่อ่านไฟล์ว่าไฟล์นั้นเล็กๆ หรือเปล่า ถ้าเล็กๆ แล้วยังขาดเป็นท่อนๆ ก็ defrag ให้อัตโนมัติเลย (ปกติไฟล์เล็กๆ ที่ขาดเป็นท่อนๆ นี่จะเสียเวลาอ่านอ่ะ เนื่องจากต้องอ่าน disk block หลายครั้ง เพราะถ้ามันไม่ขาดท่อนก็ควรมาอยู่ใน block เดียวกัน จะได้อ่านครั้งเดียวนะ)
6. Prebinding
(เริ่มเบลอแล้ว ดังนั้นช่วงต่อไปนี้จะเมานะ)
ปกติแล้วคนเราไม่ค่อยเขียนโปรแกรมเองตั้งแต่ต้นอ่ะ (เขียนใหม่หมดก็ตายยยพอดี) เรากจะใช้อะไรที่เค้ามีมาให้อยู่แล้ว ตัวอย่างง่ายๆ คือ printf, scanf ใน stdio อ่ะ ทีนี้ไอ้โปรแกรมพวกนี้มันก็มีเปลี่ยน version ใหม่ให้ดีขึ้นบ้างเรื่อยๆ ทำให้เค้าคิดทำเป็น Dynamic Link Library เป็นไฟล์ .dll แยกต่างหากออกมา ข้อดีคือถ้าเปลี่ยนรุ่นก็แค่เปลีย่น .dll ไม่ต้องคอมไพล์ใหม่ทั้งโปรแกรม แต่ก็จะทำให้ช้าเวลารัน เพราะว่ามันจะต้องมาคุยกันให้รู้เรื่อง (resolve undefined variables & functions) ก่อนรันนั่นเอง
เค้าเลยทำการ prebinding โดยการกำหนด address กลุ่มหนึ่งใน memory ว่าใช้กับพวก library ชุดนี้เอง เวลาโปรแกรมจะมารันก็ไม่ต้องมาคุยก่อน ทำการอ้างถึงไปยัง address นี้ได้เลย (เหมือนทำ static linking ในระดับระหว่างโปรแกรมกับ OS เลยแฮะ) แต่ก็ไม่ได้ทำ prebinding ไปทุก function นะ เพราะ address ที่ reserve ไว้ก็มีจำกัดเหมือนกัน
7. Helping Developers Create Code Faster
อันนี้ไม่พูดอ่ะ ไปอ่านดูเองย่อๆ คือมี feature ที่ช่วยขณะพัฒนา เช่น การ compile ล่วงหน้าใน background, การ compile แล้วเอาไปปะได้ขณะที่ run อยู่
8. Helping Developers Create Faster Code
คือมี tools มากมายให้ใช้สร้างและตรวจสอบ
9. Journaling in HFS Plus
เก็บข้อมูลอื่นๆ เกี่ยวกับไฟล์ด้วย อันนี้อ่านไม่ค่อยข้าใจนะ
10. Instant-on
มันไม่ hibernate (เก็บ memory ลงใน harddisk แล้วก็ปิดเครื่อง ไม่ต้องใช้ไฟ) แต่มันมีการใช้ไฟเก็บ memory ไว้ ทำให้เปิดมาก็ใช้งานได้เลย (โอ เปลืองแบตดิ แล้วแบตหมดทำไงฟะ)
ทีนี้มันก็จดและเก็บตั้งเยอะแยะ แต่ก็ยังเร็วขึ้นได้แฮะ แสดงว่าวิธีเหล่านี้ก็มีประสิทธิภาพพอที่จะเทียบกับผลข้างเคียงที่มาจากการเก็บข้อมูลไว้มากมายนะเนี่ย
(ขอทำนายว่าต้องมีคน comment entry นี้ไม่เกิน 3 คนแน่นอน ได้แก่ น้องแน็ค (ถ้ามันกลับมาจากค่ายแล้วอ่าน), น้องชา (ถ้าได้เข้ามาอ่าน), ไทโกะ (รายนี้ไม่แน่ หลังจากกลับมาจากฮันนีมูนก่อน)) 3月16日 What if...What if the metabolic pathway can act as a Turing Machine.
What if the DNA transcription can be used as the encoding function.
What if the PCR is the new way of software distribution.
What if the biochemistry is the new grounds of computer science.
Not just bioinformatics or computational biology, but Biocomputing
น่าสนุกกว่า Quantum Computing ตั้งเยอะ ;P 2月23日 งานออกแบบกับความรับผิดชอบทางสุนทรีย: การรุกรานทางสุนทรียบริเวณอนุสาวรีย์ชัยสมรภูมิ หากไม่เปรียบเทียบสภาพของอนุสาวรีย์ชัยสมรภูมิในเมื่อก่อนกับปัจจุบันก็คงมีน้อยคนที่จะเห็นและหวาดกลัวสิ่งที่จะเกิดขึ้นในอนาคต ความงามของอนุสาวรีย์ชัยสมรภูมินั้นไม่ได้ถูกรุกรานจากเพียงแค่รางรถไฟฟ้าอย่างที่เป็นที่วิพากษ์อย่างแพร่หลาย แต่จากทั้งป้ายโฆษณา ห้างสรรพสินค้า ตลอดจนความพยายามที่จะเพิ่มความเป็น “จุดศูนย์รวม” ของอนุสาวรีย์ แล้วใครจะเป็นผู้รับผิดชอบผลของศูนย์รวมงานออกแบบจับฉ่ายและอนาคตอนุสาวรีย์ชัยสมรภูมิ ตั้งแต่พ.ศ. 2485 อนุสาวรีย์ชัยสมรภูมิตั้งเด่นเป็นอนุสรณ์รำลึกเกียรติประวิตของวีรชนที่เสียสละเพื่อเอกราชของไทย ซึ่งนับเป็นอีกหนึ่งงานสถาปัตยกรรมที่น่าชื่นชมกรุงเทพมหานคร ความเป็นสัญลักษณ์ของเอกราชที่ผู้คนที่ผ่านไปมาเห็นแล้วภูมิใจในความเป็นไทยนั้นนับเป็นความเพลิดเพลินของผู้คนที่ผ่านไปมา อย่างไรก็ตามการตั้งอยู่บนตำแหน่งเชื่อมต่อของถนนหลายสายทำให้อนุสาวรีย์ชัยสมรภูมิไม่สามารถหลีกเลี่ยงการรุกรานของเมืองได้ หลายสิบปีผ่านมากับการกระแสสังคมทุนนิยมทำให้เกิดเปลี่ยนแปลงโดยรอบอนุสาวรีย์ชัยสมรภูมิ ทำให้บริเวณโดยรอบเป็นแหล่งรวมของร้านค้า ตลาด ห้างสรรพสินค้า ท่ารถประจำทาง พื้นที่โดยรอบที่เคยโล่งทำให้ดาบปลายปืนด้ามนี้แสดงความยิ่งใหญ่อย่างชัดเจนได้ถูกล้อมกรอบ งานออกแบบโดยวัตถุประสงค์ต่างๆ กันปรากฎโดยรอบ ซึ่งวัตถุประสงค์เหล่านั้นไม่ใช่เพื่อเพิ่มความสง่างามให้กับอนุสาวรีย์ชัยสมรภูมิแม้แต่น้อย อาทิ ป้ายโฆษณาที่รูปแบบและเนื้อหาขึ้นอยู่กับทุนของผู้จัดโฆษณา ร้านอัดรูปที่แทนความเขียนของต้นไม้ด้วยตัวตึกเป็นสีของผลิตภัณฑ์ หรือห้างสรรพสินค้าแห่งต่างๆ ที่พยายามจะ “ผุด” ขึ้นในพื้นที่อันแออัดนั้น อีกงานออกแบบที่เป็นที่วิพากษ์กันในวงกว้างคือรางรถไฟฟ้า BTS ตั้งแต่ปี 2542 แม้จะมีผู้ต่อต้านแต่ในที่สุดรางรถไฟฟ้าพร้อมสะพานลอยที่บดบังทัศนียภาพเมื่อมองจากด้านดินแดงอย่างสิ้นเชิงก็ถูกสร้างขึ้น เมื่อพิจารณาจากจำนวนคนที่คับคั่งในช่วงเวลาเร่งด่วนงานชิ้นนี้สามารถตอบสนองความต้องการในการเดินทางได้อย่างดี อย่างไรก็ตามเส้นปูนที่พาดผ่านด้านหนึ่งของอนุสาวรรีย์นี้ก็ลดความงดงามที่โดนรุกรานของอนุสาวรีย์ไปอย่างเห็นได้ชัด อาจเนื่องด้วยเหตุผลทางวิศวกรรมหรืองบประมาณทำให้ไม่มีการออกแบบสิ่งกีดขวางนี้ให้เสริมความสง่างามของอนุสาวรีย์ชัยสมรภูมิได้ ความพยายามแปลงโฉมของบริเวณโดยรอบอนุสาวรีย์ครั้งล่าสุดคือการปรับปรุงบริเวณโดยรอบให้เป็นพื้นที่นัดพบแห่งใหญ่ที่ชื่อว่า Victory Point ร้านอาหาร ร้านหนังสือ ร้านเครื่องประดับตั้งบริเวณที่บาทวิถีเดิมให้เป็นสวนหย่อมร้านค้า แม้จะทำให้ผู้คนสามารถเพลิดเพลินกับบริเวณโดยรอบได้มากขึ้น แต่กลับทำให้ความสง่างามของอนุสาวรีย์ชัยสมรภูมิลดต่ำลง เนื่องจากความเป็นเอกลัษณ์ของการออกแบบร้านต่างๆ ทำให้บริเวณโดยรอบดูเป็นจับฉ่ายของงานออกแบบอย่างเห็นได้ชัด เห็นได้ชัดว่าความรับผิดชอบต่อสุนทรียของอนุสาวรีย์ชัยสมรภูมินั้นได้ถูกมองข้ามไปโดยการบุกรุกของเมืองและทุนนิยม คงไม่สามารถให้นักออกแบบรับภาระเพียงอย่างเดียวแต่ควรมีหน่วยงานภาครัฐเข้าดูแล ให้สุนทรียของแต่ละหน่วยที่ประกอบกันในบริเวณนั้นสัมพันธ์กับสุนทรียโดยรวมของอนุสาวรีย์ชัยสมรภูมิ หากยังไม่มีผู้ควบคุมทิศทางงานออกแบบในบริเวณโดยรอบ อนุสาวรีย์ชัยสมรภูมิคงกลายสภาพเป็นอนุสาวรีย์แห่งความจับฉ่ายทางการออกแบบแห่งกรุงเทพมหานครอย่างหลีกเลี่ยงไม่ได้ 10月10日 Design Pattern Part 1At first, I must say sorry for non-computer science reader because of the computer stuff which I keep post it everyday. You may think that my life is very boring these day. Conversely, I think that I've learned many things by myself in this short time.
I don't expect all of you to understand all in-depth of these. I just want to give an idea of "how we think" in computer science field. This may benifits you in a future. If you find this interesting or doubt in some detail, please feel free to comment this short blog entry. (It will be my pleasure to see that someone is reading it at all.)
If you can't endure this anymore, please look at 2 pictures below. That's a summary of ideas of this entry.
Today's story is about Design Pattern.
Background Knowledge
This section provides a brief background about object-oriented programming for non-computer science reader. I wrote this not rigorously, so you can easily understand main concept and the benefits of it.
Object-oriented programming is an evolution in programming style. Traditionally, programmer wrote their program by telling what to do and when to do it.
In object-oritened approach, we think of our program as a set of objects. Each object has
its own data and method to deal with those data. Work of a program is done by the
interaction between those objects.
In a program, we may have different object which has same type. Thus, we define Class
as a template of object, and Instance as an actual object when program is running. For
example, Class car can be instantiated to Toyota car or Honda car. Anyway, the level of
abstraction depends on the programmer's view.
Each class can be defined to have a data in it. That data can be either number, string, or
even an object of another class (or even an object from that class itself.)
Sometimes, we may creates a Class that is the general of other classes. For
example,Automobile is a general class for Car, Truck, and Motorcycle. We call Automobile
as a Superclass. Car, Truck, and Motorcycle will be called Subclasses.
We usually need to define some properties of the template of class, but not too many
detail on that. We call this class an Interface Class. In an Interface Class, we specifies only
methods name that should be exist. (Not what to be done, or what that class should
contains.) Note that Interface class can be called as a standard of classes.
The benefit of object-oriented programming can be easily seen. We can model actural
object in the real world to be a programming elemets. We can partition our work to
concentrate the high level without worrying about the detail. We can manage the portion of
code and reuse it. There're many more advantage and drawbacks of object-oriented
programming which can be easily found at wikipedia.
Design Pattern is a new concept to approach the object-oriented programming. Problem
that we faces in programming usually comes in similar ways, so we solve it with similar
solution. Design pattern originated form this concept. Many great designer (of course,
program designer) such as gang of four (4 very smart people in software engineering field)
has published the pattern to deal with some problem aspect. You will see in following
example of design pattern.
Facade pattern: What will you do if your team must use the complex machine? You should
read manual isn't it? Actually, you may assign some people of your team to read that
manual and take responsibility of that machine.
Facade patten adopt this idea to write the a class which deals with the lecacy system (an
old implemented system). Because we may not use all part of that system (or may use it
in different way which it was designed), we can implement this class as an easy-to-use
interface for another part. Following illustration compares the original situation and the usage of Facade pattern.
Problem: everyone has to be fuzzy with these things
Facaded, only one who have to fuzzy with that. 7月11日 สัมมนา Googleเมื่อวันจันทร์ที่แล้ว (4 กรกฎาคม 2548) เราทำสัมมนาเรื่อง Google แหล่ะ เนื้อหาส่วนใหญ่ก็เป็นเทคนิคและสถาปัตยกรรมระบบที่ใช้
วันนี้ทำรายงานเสร็จแล้ว จึงจะปิด job ซะที
ใครสนใจอ่านไปดาวโหลดได้ที่
ในนี้มีทั้ง PowerPoint ที่ปรับปรุงแล้ว และรายงานสัมมนาด้วย (เป็นรายงานที่ใช้เวลานึกว่าจะเขียนยังไงให้คนอ่านรู้เรื่องนานมาก) อ่านแล้วคิดยังไงกันบ้างก็มาคุยได้นะ 5月20日 เรตติ้ง Programming Languageวันนี้หยุดอยู่บ้านเพระว่าไปทำงานไม่ไหว เลยได้นั่งทำโน่นทำนี่ไปเรื่อยๆ เมื่อเช้าได้ setup database ที่เอา corpus (เป็นไฟล์ที่รวบรวมข้อความไว้มากมาย เอาไว้เป็นตัวอ้างอิงในการพัฒนาโปรแกรมเกี่ยวกับภาษาหน่ะ) พี่วีร์ (พี่ป.โทเกษตรที่ lab เป็นรุ่นพี่ JSTP) เค้าใช้ PostGreSQL เป็น DBMS โอ้โฮ เพิ่งรู้ว่ามี DBMS ที่ไม่ใช่ oracle ที่จะรองรับ query ตาม syntax SQL ที่เรียนมาได้เยอะขนาดนี้ ชักติดใจแล้วหล่ะสิ ลองใช้ Access แล้วจะรู้สึกรัก MySQL, ลองใช้ MySQL แล้วจะรู้สึกรัก PostGreSQL จริงๆ เรายังไม่มีความรู้เกี่ยวกับมันมากนัก ไว้ใช้ได้ซักพักคงได้มาเขียนเปรียบเทียบมันให้อ่านกัน วันนี้เข้าเว็บเพื่อดาวโหลด PHP4 มาสำหรับเป็น PHP server เพื่อทำงานสโมฯ (เพราะว่า server คณะฯ ใช้ PHP4 แต่เรามีแต่ PHP5) ดันเจอ link ที่ PHP คุยว่ามันได้ awarded programming languageof 2004 ด้วย พอเข้าไปก็เจอกราฟแสดง rating ของภาษาโปรแกรมหลายๆ ภาษาเลย (เอามาให้ดูข้างล่างนี้ด้วย) ผลการสำรวจนี้ได้มาจากการทำสถิติตาม search engine ต่างๆ ที่นำมาสามอันดับคือ C Java และ C++ที่น่าสนใจคือ C เป็นภาษาที่ได้รับความนิยมเป็นอันดับสองรองจาก Java ซึ่งเราเองสันนิษฐานว่าคงเป็นเพราะมีโปรแกรมมากมายที่เขียนโดย C (ทั้งใน Win32 และ non-Win32 system) และโปรแกรมเก่าๆ ที่เขียนโดย C ยังได้รับการบำรุงและเพิ่มเติมอีก แต่พอดูๆแล้วก็เห็นที่เดือนมีนาคม 2004 - เมษายน 2004 นั้น Java ที่มีเรตติ้งคงที่มานานกลับ เรตตกมหาศาล แต่ตัวที่มีเรตกระฉูดคือ Python เหอๆ เป็นเพราะอะไรเนี่ย? (ช่วงนั้นเป็นช่วงที่เราเริ่มรัก Python และเกลียด Java เหมือนกัน) แต่ก็เอาเหอะ ภาษาแต่ละภาษาก็มีจุดอ่อนจุดแข็งต่างกันไป ตอนนี้มาเขียน VB ให้ที่ Exxon ก็รู้สึกชอบและไม่ชอบบางอย่างเหมือนกันนะ 4月26日 Google Is Here!!วันนี้ได้รันงานเปลี่ยน IP Printer ไปทั้งหมด 1226 เครื่องใน SAP สองระบบสนุกดีจัง แต่ยังไม่เล่าให้ฟังเพราะว่าวันพฤหัสบดีและศุกร์นี้จะได้ไป CoE Training (Center of Excellence) เค้าจะพูดถึงโครงสร้างทั้งหมดของฝ่ายงาน และมีการอบรม SAP ด้วย เลยคิดว่าไว้เล่าตอนนั้นดีกว่าจะได้ข้อมูลที่ถูกต้อง วันนี้จะพูดถึง Google ซะหน่อย สมัยนี้ถ้าพูดถึง Google แล้วมีน้อยคนที่เคยใช้อินเตอร์เน็ทแล้วจะไม่รู้จัก เพราะว่าเป็นเครื่องมือล้วงลูกได้อย่างดี (55) Google นั้นเป็น search engine (โปรแกรมที่ค้นหาข้อมูลบนเว็บ) ตัวนึง เท่าที่เราได้อ่าน paper เกี่ยวกับ Google ผ่านๆ นั้นได้รู้ว่าพวก search engine ในยุคแรกๆ นั้นใช้วิธีการค้นหาคำที่มีในเว็บเท่านั้น อันนี้ก็เหมือนกับเปิดเว็บที่มีขึ้นมาแล้วอ่านดู ถ้าเจอคำนี้ก็ถือว่าใช้ได้ แต่เวลาค้นหานั้นเค้าไม่ได้ไปวิ่งที่เว็บๆ ทุกๆ หน้าทุกครั้งที่ค้นหาหรอกนะ เค้าจะมีตัวที่เรียกว่า spider (แมงมุมไต่ไปตามใย: web) เป็นตัวเข้าไปดูหน้าต่างๆ แล้วสร้างเป็นฐานข้อมูลเก็บเอาไว้ เวลาที่ spider เข้าไปดูก็จะเก็บพวกคำสำคัญต่างๆ เอาไว้ (อย่างเช่น The very big mushroom. เนี่ยอาจจะเก็บแค่ big mushroom) จากนั้นเวลาเราค้นหาสิ่งที่จำเป็นก็จะเอาคำที่เราค้นหาเข้าไปเทียบว่ามีหรือเปล่า (ฐานข้อมูลที่เก็บไว้จะต้องมีการทำ index ซึ่งทำให้เข้าถึงข้อมูลได้อย่างรวดเร็ว: index เหมือนกับสารบัญที่บอกว่ามีอะไรอยู่ที่ไหน แต่จะเป็นสารบัญของคำสำคัญทั้งหมด) วิธีนี้มันทำให้เราได้บางเว็บที่มันไม่เกี่ยวข้องมาเช่น ถ้า search engine เก่าๆ เราหาคำว่า room ก็อาจจะได้เว็บที่มีคำว่า mushroom มาด้วยก็ได้ (เพราะมันมี room 555) เค้าพยายามหาเทคนิคหลายอย่างมาแก้ เช่นการสร้างโปรแกรมให้พยายามวิเคราะห์เว็บว่ามันเกี่ยวกับเรื่องไหนแล้วทำเป็นอันดับเก็บเอาไว้ เวลาแสดงก็จะแสดงเว็บที่มีอันดับดีๆ ก่อน Google ผสมผสานเทคนิคแบบที่กล่าวมาข้างต้น และได้ให้ความสำคัญกับโครงสร้างการเชื่อมโยงกันของเว็บด้วย โดยเอามาใช้ทำเป็น PageRank (ค่าที่ใช้กำหนดว่าแต่ละหน้านั้นเกี่ยวข้องกันขนาดไหน) ค่านี้เป็นการคำนวณความน่าจะเป็นอย่างนึง โดยอาศัยค่า PageRank ของหน้าอื่นๆ ที่มันมี link ไปหา ประกอบกับระยะห่างของ link ระหว่างหน้าเหล่านั้น การที่หน้า A มี link ไปยังหน้า B ก็คล้ายๆ กับการที่หน้า A โหวตให้หน้า B นั่นเอง ลองดูรูปสูตรละกัน พวกที่เรียน Prob Theory แล้วอาจจะสามารถบอกรายละเอียดได้มากกว่าเรา นอกจากนั้น Google ให้ความสำคัญกับข้อความที่เป็น link มากเหมือนกัน เค้าคิดว่าบางครั้งข้อความที่เป็น link อาจให้ข้อมูลเกี่ยวกับเป้าเหมายได้ดีกว่าตัวเป้าหมายเองอีก ตรงนี้อ่านแล้วก็ไม่ค่อยเข้าใจนักเหมือนกัน แต่ Google ได้เอาโครงสร้างการเชื่อมโยงระหว่างเว็บมาใช้ในการกรองและลำดับผลที่ได้จากการค้นหาด้วย ทำให้ได้ผลที่ใกล้เคียงกับความต้องการของคนหามากกว่า และ Google นั้นเกิดมาจากนักศึกษา Standford สองคนที่ทำการวิเคราะห์ "back link" (ไม่แน่ใจว่าเป็นอะไร อาจเป็น link กลับจากเว็บนี้ไปยังเว็บที่ link มาก็ได้) อ่านคร่าวๆ มาได้แค่นี้แหละ ใครอยากรู้เพิ่มลองอ่านที่ http://www.howstuffworks.com ค้นหาคำว่า search engine เอา หรือถ้าอยากรู้เชิงลึกก็ paper นี้เลย Sergey Brin, Lawrence Page. "The Anatomy of a Large-Scale Hypertextual Web Search Engine". ได้ถือโอกาสใช้ http://scholar.google.com พอดี หะห้า ยังไม่รู้หล่ะสิว่ามันคืออะไร scholar คือบริการใหม่ของ Google ที่พัฒนา search engine เฉพาะทาง โดยจะเจาะจงไปในการค้นหา paper ทางวิชาการต่างๆ การค้นหานี้แตกต่างจากเว็บทั่วไปตรงที่มีการวิเคราะห์เอกสารเป้าหมายและสร้างฐานข้อมูลการอ้างถึง paper (citing) ไว้ด้วย ซึ่ง Google สามารถแสดงให้เห็นว่ามีการอ้างถึงแต่ละ paper เท่าไหร่ และมีใครอ้างถึงบ้าง และสามารถเข้าไปหา paper ต่อๆ ไปได้ง่ายขึ้น ถ้าได้ลองเข้าไปหาดูจะรู้สึกว่าหาได้ตรงใจ และทันใจกว่า นั่นก็เป็นเพราะว่ามันมีการตีกรอบการค้นหาเกิดขึ้น และพวกสิ่งที่เข้าไปค้นมันค่อนข้างจะมีโครงสร้างที่แน่นอนบ้างอยู่แล้ว (semi-structured documents) ทำให้ search engine ทำงานได้ไวขึ้น ตอนนี้ Google ก็กำลังทำ Beta (รุ่นทดสอบ) ของ scholar อยู่ นอกจากนั้นก็ยังมีตัวอื่นๆ เช่น print.google.com จะทำการ search หาในเอกสารสิ่งพิมพ์ที่มีการทำให้เป็น electronic paper โดยโครงการ publish ของ Google เองและ Froogle ที่ค้นหาพวกสินค้าต่างๆ คงได้เกริ่นความรู้เกี่ยวกับ search engine และ Google กันไปบ้างแล้ว ลองมาดูซิว่าเราจะใช้ Google อย่างไรให้หาเจอได้ง่ายและเร็วบ้าง เรามีเทคนิคสองสามอันที่เราใช้บ่อยๆ มาแนะนำ
นี่คือคร่าวๆ ที่เราใช้บ่อยๆ ถ้าอยากรู้มากกว่านี้เปิด help ของ Google ดูเอาได้น๊า หวังว่าทุกคนจะใช้เครื่องมือที่มหาวิทยาลัย Standford สร้างขึ้นมาให้ใช้กันฟรีๆ ได้อย่างคุ้มค่า เล่าให้ฟังอีกนิด คำว่า Google นั้นแผลงมาจาก Googol ซึ่งเป็นคำที่ใช้ในหนังสือคณิตศาสตร์เล่มหนึ่งแทนตัวเลข 1 ที่มีศูนย์ตามหลังอีก 100 ตัว เรากำลังกลัวว่าเมื่อพวกเรามี search engine กันดีขึ้นแล้วพวกเราจะไม่ใส่ใจกับการเก็บข้อมูลให้เป็นระเบียบ เพราะถือว่าเก็บยังไงก็สามารถหาออกมาได้ ถ้าซักวันมันหาออกมาไม่ได้หล่ะ อย่างเช่นข้อมูลที่เราเก็บไว้ดันไปอยู่ในที่ที่แวดล้อมด้วยข้อมูลที่ไม่เกี่ยวข้อง แล้วเราก็จัดการลบพวกนั้นทิ้งไปทั้งก้อนเลยคงวุ่นวายกันมากเลยนะ P.S. รู้หรือไม่ว่า Google นี่ถูกพัฒนาบน Python นะ 4月25日 ซีซี กับ บีซีซีเคยรู้กันบ้างมั้ยเอ่ยว่าการส่งอีเมล์นั้น นอกจาก to แล้ว ยังมีช่อง cc และ bcc อีก แล้วพวกนี้มันต่างกันยังไงหล่ะ? cc นั้นเป็นตัวย่อ (ภาษาอังกฤษเรียกว่า Abbreviation ต่างจาก Acronym นะ ไว้ว่างๆ จะมาบอกว่าต่างยังไง) มาจากคำว่า carbon copy หมายความว่า address ที่อยู่ในช่องนี้จะได้รับอีเมล์ฉบับนี้ ส่วน bcc นั้นย่อมาจาก Blind Carbon Copy ซึ่งจะเหมือนกับ carbon copy เกือบทุกอย่าง ยกเว้นว่า address ที่อยู่ในช่องนี้จะไม่ถูกโชว์ต่อสาธารณชน อันนี้เป็นประโยชน์อย่างยิ่งสำหรับการซ่อนเมล์แบบง่ายๆ เช่นเวลาต้องการส่ง forward mail ไปยังคนเยอะๆ ถ้าใช้ cc หรือ to นั้นจะทำให้ทุกคนที่ได้รับเมล์ ได้เห็น e-mail address นั้นทั้งหมด ทำให้สามารถนำเมล์นั้นไปใช้ได้หลายอย่าง (อาทิ spam) เราเลย bcc กันเพื่อไม่ให้เกิดการเอาไปใช้ได้ อย่างไรก็ตามเราเพิ่งได้ความรู้ใหม่จาก Exxon มาว่า ในทางธุรกิจแล้วเค้าจะมอง to, cc, bcc ในระดับความสำคัญลดหลั่นลงมา โดย
ยกตัวอย่างเช่น เราต้องการสมัคร ID อันนึงให้กับนาย A ซึ่งต้องผ่านการรับรองจากเจ้านายชื่อนาย B เราส่งเมล์ to: B และ cc: A เพื่อเป็นการแจ้งให้ B รู้และดำเนินการ และบอกทางอ้อมแก่ A ว่าส่งขอรับรองให้แล้ว พรุ่งนี้จะมาพูดถึงเทคนิคการใช้ Google และบริการใหม่ของ Google ที่เราได้ลองใช้บ้างแล้วให้ฟัง 4月24日 เครือข่ายที่ซ่อนอยู่ (ต่อ)ตอนแรกที่เค้าคิดจะทำเนี่ย เค้าก็คิดว่าถ้าทำขึ้นมามันจะคุ้มมั้ย (Feasibility Study: คือการศึกษาความเป็นไปได้ของงานก่อนที่จะทำ) อันนี้เค้าทำโดยการ simulate ความสัมพันธ์ระหว่างคนขึ้นมา โมเดลนี้เป็นกราฟที่แต่ละโหนดแทนคน และเส้นแทนความรู้จักกัน โดยในโหนดเหล่านั้นจะมีโหนดที่เรียกว่า โหนดผู้เชี่ยวชาญ (แทนเป้าหมายที่ข้อมูลอาศัยอยู่) จากการศึกษาสภาพความจริง เค้าตั้งสมมติฐานขึ้นมาว่า ยิ่งเราอยู่ห่างจากผู้เชี่ยวชาญ (ต้องสัมพันธ์โดยผ่านคนอื่นหลายคนมาก) โอกาสที่เราจะติดต่อไปถูกทางเพื่อไปหาผู้เชียวชาญให้ได้นั้นยิ่งน้อยลง เช่น เราต้องการติดต่อผู้เชี่ยวชาญด้าน AI คนหนึ่ง ถ้าเรารู้จักคนนี้โดยตรงเลย เราก็สามารถเข้าไปหาถูกคนได้ทันที แต่ถ้าเราไม่รู้จักแล้วเค้ารู้จักกับเพื่อนของเรา เราก็ต้องไปหาจากเพื่อนของเราอีกที ซึ่งเพื่อนของเราก็มีหลายคน มันมีโอกาสที่เราไปหาไม่ถูกคนก็ได้ และถ้าผู้เชี่ยวชาญอยู่ห่างไปอีก เพื่อนของเราอาจต้องติดต่อเพื่อนเค้าอีก ทำให้โอกาสที่จะไปถึงนั้นมีน้อยลง ค่านี้เราเรียกว่า Referral Factor (A) หรือสัมประสิทธิ์ในการอ้างถึง นอกจากนั้นเค้าก็บอกว่า แม้ว่าเราจะเข้าไปเจอกับ expert แล้วก็ไม่ได้หมายความว่าเค้าจะยินดีช่วยเรา คนที่ใกล้ชิดเรามีแนวโน้มที่จะช่วยเรามากกว่า แต่คนที่เราต้องอ้างไปไกลๆ ก็จะมีแนวโน้มที่จะไม่เอาใจใส่เรา เค้าเลยมีค่าอีกค่าคือ Responsiveness Factor (R) หรือสัมประสิทธิ์ในการตอบสนอง เมื่อได้โมเดลนี้แล้วเค้าก็ลองทำการ simulate ดูโดยการสุ่มโหนดแล้วพยายามหา expert เค้าตั้งสมมติฐานว่าในการค้นหาโดยปากต่อปากของคนทั่วไปนั้นจะมี R ต่ำ แต่ A สูง เพราะว่าคนเราถ้ารู้จักกันจริงๆ ก็จะถามไถ่ไปได้อย่างถูกต้อง แต่ว่าก็มีอัตราการสูญเสียของการถามต่อๆ เช่นกัน เพราะว่าคนเราลืมได้ ปรากฎว่าการทดลอง simulate ดูแล้วกับโหนด 100,000 โหนด โดยทุกๆ 20,000 โหนดจะมี 1 expert node อยู่ ได้อัตราความสำเร็จแค่ 20% เอง และจะใช้การส่งข้อความระหว่างโหนดประมาณ 10 ข้อความ ทีนี้ลองมาจำลองระบบอัตโนมัติที่เค้าจะใช้บ้าง เค้าให้สมมติฐานว่าระบบอัตโนมัตินี้ R สูงแต่ A ต่ำ เพราะว่าระบบนี้ใช้การค้นหาในฐานข้อมูลที่มีอยู่แล้ว จึงตอบสนองได้ดีกว่า แต่ความถูกต้องอาจน้อยกว่า ปรากฎว่าที่จำนวนโหนดเท่ากันได้อัตราความสำเร็จถึง 83% โดยการส่งข้อความระหว่างโหนดประมาณ 92 ข้อความ (ลองดูกราฟความสัมพันธ์ระหว่าง R, A และอัตราความสำเร็จประกอบ) ปรากฏว่าระบบนี้น่าจะให้ผลดีกว่า เค้าเลยทำการพัฒนาระบบต่อโดยได้มีการให้มันขุดข้อมูลจาก paper ด้าน AI โดยเค้าได้มีการใส่ expert ลงไปกลุ่มหนึ่ง ผลก็ออกมาพอใช้ได้ทีเดียว (แต่ว่าตอนนี้เข้าไปหาเว็บนี้ก็ไม่เจอซะแล้ว สงสัยยุบโครงการไปแล้ว ดูรูปเอาละกัน) ถ้าลองคิดดูว่าเราจะเอามันมาใช้กับพวกเว็บบอร์ดอะไรพวกนี้จะสามารถหาความสัมพันธ์ของคนได้มั้ย เค้าก็บอกไว้ว่า ความสัมพันธ์ระหว่างคนในพวกเว็บบอร์ดนั้นอาจจะมีทั้งเป็นผู้ที่เห็นด้วย และผู้ที่คัดค้าน เช่น คนที่มาตอบกระทุ้เดียวกันบ่อยๆ อาจจะเป็นคนที่สนับสนุนไอเดีย หรืออยู่ในฟิลด์เดียวกัน แต่อาจเป็นคนที่ต่อต้านไอเดียก็ได้ ดังนั้นทำให้ต้องมี factor เพิ่มขึ้นอีก ใครสนใจก็ลองเอาไปคิดต่อยอดดูได้นะ เพราะว่าเราคิดว่ามันสามารถเป็น extension ของ search engine ปกติได้ดีทีเดียว ถ้าเรารู้ว่าใครแต่ละคนสัมพันธ์กันอย่างไร หลังจากอ่าน paper อันนี้แล้วคิดว่าคงไม่หาทาง social network ต่อแล้วเพราะว่าดูเป็นการ apply นอกฟิลด์ที่ยังได้ประโยชน์ไม่เห็นภาพซักเท่าไหร่ และในทางสังคมศาสตร์นั้นมีปัจจัยหลายอย่างมากเกินไปที่จะโมเดลได้หน่ะ paper ต่อไปว่าจะดู survey ของเทคนิค database ที่ใช้กับเว็บดูซิ ว่าเค้ามีอะไรบ้าง ยุทธการจับผิดเมื่อสองสามวันก่อนพยายามทำ list หัวข้อของ python ให้น้องรหัส ได้อ่านเจอเรื่องนี้ในหนังสือ Python in the Nutshell หล่ะ เค้าบอกว่าเทคนิคการตรวจจับข้อผิดพลาดของโปรแกรมที่เราเขียนกันนั้นมีอยู่สองสไตล์ได้แก่ LBYL: look before you leap. และแบบ EAFP: it's easier to ask forgiveness than permission แบบ LBYL นั้นอาศัยการป้องกันความผิดพลาดของโปรแกรมโดยตรวจสอบความถูกต้องก่อนแล้วค่อยดำเนินการทำ ตัวอย่างโค๊ดเช่น
ส่วนแบบ EAFP นั้นเป็นการปล่อยให้เกิดข้อผิดพลาดไปแล้วดักจับ exception เอาทีหลัง
ถ้าเราเปรียบเทียบสองสไตล์นี้จะพบว่า แบบหลังจะเอาโค๊ดส่วนที่เป็น operation จริงอยู่ก่อนส่วนที่เป็น error-handling แต่แบบแรกกลับกัน เค้าได้ให้ข้อสังเกตว่ากรณีที่มี error หลายที่ แบบ EAFP จะทำให้อ่านโค๊ดง่ายกว่า เพราะว่าเอา operation ไว้ก่อนเสมอ ส่วนแบบแรกนั้นเอา operation ไว้หลัง คนอ่านโค๊ดอาจจะเมาก่อนที่จะอ่านมาถึงตัว operation แล้ว นอกจากนั้นการเช็คก่อนทำในแบบ LBYL ในบางกรณีอาจมีการทำงานซ้ำซ้อน ดังตัวอย่างโค๊ดข้างต้น ปกติแล้วใน compiler หรือ interpreter ของภาษาต่างๆ จะมีการเช็ก Dividie-by-zero ก่อนการหารอยู่แล้ว ดังนั้นหากต้องเขียน code เพื่อเปรียบเทียบอีกเราก็จะเสียไปอีก operation ฟรีๆ ถ้าเป็นโปรแกรมขนาดใหญ่ที่ข้อมูลนึงอาจมีการ share หลายคนพร้อมกัน มีโอกาสที่เกิดการ delay ได้ คือ ข้อมูลตัวที่เอามาเช็คจริง กับข้อมูลตัวที่เอามาทำ operation เป็นข้อมูลคนละตัว อันนี้ทำให้เกิดการผิดพลาดขึ้นได้อีก หากผู้ที่เขียนโปรแกรมนั้นไม่ได้รอบคอบเท่าที่ควรจะทำให้ละเลยที่จะเช็ค error บางอย่าง โปรแกรมก็จะผิดพลาดอีก ดังนั้นเค้าจึงแนะนำให้ใช้สไตล์ EAFP ดีกว่า แต่ทว่าแบบนี้ก็ไม่ใช่ทางแก้สำหรับทุกอย่างอยู่ เพราะแบบนี้ก็มีข้อเสียถ้าเอาไปใช้ไม่ถูกต้องเหมือนกัน โดยมักจะเกิดขึ้นเมื่อเราวาง try...except ไว้กว้างเกินไป ทำให้โอกาสที่เกิด error นั้นมาได้จากหลายที่ ตัว error ที่เราจับได้อาจจะไม่ใช่ตัวที่ต้องการจะจับก็ได้ นอกจากนั้นการ except Exception ที่เป็นกรณีทั่วไปมากๆ เช่น except Exception เลย อาจทำให้เราจับอะไรที่ไม่ต้องการก็เป็นได้ (เช่นจะจับ Divide-by-zero แต่ดันได้ IOException มาด้วย ทำให้เราไม่รู้ว่าโค๊ดเราผิดพลาด) อีกอย่างก็คือ EAFP นั้นจะทำไม่ได้ในภาษาเก่าๆ (พวกที่ไม่สนับสนุน Exception Handling) ดังนั้นแม้ว่าจะเลือกใช้ EAFP แล้วเราก็ควรระวังและเขียนโค๊ดให้รอบคอบอยู่ดี ใครมีความเห็นยังไงก็ลองคุยกันได้ว่า EAFP จะมีสิ่งที่น่าระวังตรงไหนอีกนะ 4月21日 เครือข่ายที่ซ่อนอยู่วันนี้ได้อ่าน paper นึง เราเจอ paper นี้จากการอ่านต่อจาก paper Web mining survey ที่อ.จาฯ แนะนำมา ได้เรื่องน่าสนใจมาเล่าให้ฟัง ในปัจจุบันนี้ แม้ว่าเทคโนโลยี search engine มันจะทันสมัย แต่แม้ว่าให้มันทันสมัยมากขึ้นยังไงมันก็ไม่สามารถหาข้อมูลที่สำคัญได้หมดหรอก เพราะว่าข้อมูลบางส่วนนั้นไม่ได้มีการเขียนหรือทำเป็นลายลักษณ์อักษร เผยแพร่ไว้ในเน็ท ข้อมูลนั้นอยู่ที่ไหนหล่ะ? ก็อยู่ที่ตัวคนคนนั้นเอง เช่น เวลาเราค้นหา paper อะไรซักอย่างแล้วอยากได้ข้อมูลลึกกว่า paper นั้น เราก็ต้องติดต่อไปที่คนเขียนใช่ป่ะ หรือเวลาเราอยากรู้ข่าวเรื่องอะไรซักอย่าง สมมติว่าเป็นเรื่องกันดั้มละกัน ถ้าเราหาในเน็ทก็อาจได้ข้อมูลจำนวนนึง แต่ว่าถ้าเราสามารถหาคนที่บ้ากันดั้มมากๆ มาคุยได้ก็จะได้ข้อมูลมากกว่าที่เราค้นหาได้ ดังนั้น การหาคนให้เจอย่อมจะได้อะไรที่มากขึ้น แน่นอนว่าเราไม่ได้รู้จักคนทุกคนที่เราต้องการหาข้อมูล แต่ว่าแต่ละคนจะต้องมีเพื่อนๆ ที่รู้จักบ้างแหล่ะ ซึ่งคนเหล่านี้สามารถมีคนรู้จักต่อๆ กันไปจนเป็นเครือข่ายถึงคนที่เราต้องการได้ อันนี้แหล่ะเป็นเครือข่ายอีกเครือข่ายหนึ่งซึ่งมีข้อมูลที่เราต้องการมากกว่าเว็บซะอีก เค้าเรียกว่า Social Network เสียอย่างเดียวที่เครือข่ายนี้คนเรามักมองไม่เห็น เพราะว่าไม่มี directory ที่จะเปิดดูได้ว่าเรารู้จักใครบ้าง และคนอื่นๆรู้จักใครต่อๆ กันไปบ้าง ตาคนที่เขียน paper นี้เค้าเลยปิ๊งไอเดียที่จะลองสร้างตัวค้นหาเครือข่ายขึ้นมา โดยเค้าใช้กลุ่มนักวิจัยด้าน AI (Artificial Intelligence) เป็นต้นแบบ เค้าใช้โปรแกรมวิ่งไปตาม link ของเว็บของนักวิจัยพวกนี้ จนได้เป็นเครือข่ายของคนที่วิจัยด้านนี้ขึ้นมา อ่านได้ประมาณครึ่งนีงเอง ไว้เดี๋ยวพรุ่งนี้มาเล่าต่อ |
|
|