<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4786988991528769667</id><updated>2011-11-28T07:39:27.233+07:00</updated><category term='search engine'/><category term='robots'/><category term='web crawlers'/><category term='spiders'/><category term='Research'/><category term='Path-ascending'/><category term='bot'/><category term='Selection Policies'/><category term='crwaling policies'/><category term='Google Map Api'/><title type='text'>LittleWingLab</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-7338505052307767965</id><published>2008-10-08T13:29:00.001+07:00</published><updated>2008-10-08T13:29:02.026+07:00</updated><title type='text'>Time Management</title><content type='html'>&lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="132"&gt;&lt;strong&gt;งาน&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;เร่งด่วน&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;ไม่เร่งด่วน&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="132"&gt;&lt;strong&gt;สำคัญ&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="149"&gt;&lt;strong&gt;ก. งานก้อนกรวด&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="164"&gt;&lt;strong&gt;ข. งานก้อนหิน&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="132"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="149"&gt;* วิกฤต         &lt;br /&gt;* ปัญหาประชิดตัว          &lt;br /&gt;* กำหนดการแน่นอน&lt;/td&gt;        &lt;td valign="top" width="164"&gt;โครงการใหม่         &lt;br /&gt;กฏระเบียบ          &lt;br /&gt;การปฏิรูป&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="132"&gt;&lt;strong&gt;ไม่สำคัญ&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="149"&gt;&lt;strong&gt;ค. งานเม็ดทราย&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="164"&gt;&lt;strong&gt;ง. งานน้ำ&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="132"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="149"&gt;รับรองแขกที่ไม่ได้เชิญ         &lt;br /&gt;จัดการจดหมายเอกสาร          &lt;br /&gt;เข้าประชุมทั่วไป          &lt;br /&gt;กิจกรรมทั่วไป&lt;/td&gt;        &lt;td valign="top" width="164"&gt;งานเลี้ยง         &lt;br /&gt;สังสรรค์          &lt;br /&gt;กิจกรรมอื่นๆ&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-7338505052307767965?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/7338505052307767965/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=7338505052307767965' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7338505052307767965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7338505052307767965'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/10/time-management.html' title='Time Management'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-8767373061246342982</id><published>2008-09-29T14:31:00.001+07:00</published><updated>2008-09-29T14:31:59.817+07:00</updated><title type='text'>ThaiUtilities</title><content type='html'>&lt;p&gt;public class ThaiUtilities {   &lt;br /&gt;public static String Unicode2ASCII(String unicode) { // แปลง Unicode เป็น ASCII    &lt;br /&gt;StringBuffer ascii = new StringBuffer(unicode); // กำหนดพื้นที่ใช้งานชั่วคราว     &lt;br /&gt;int code;    &lt;br /&gt;for(int i = 0; i &amp;lt; unicode.length(); i++) { // ลูปเท่าจำนวนตัวอักษร    &lt;br /&gt;code = (int)unicode.charAt(i); // อ่านค่ารหัสที่ละตัวอักษร    &lt;br /&gt;if ((0xE01&amp;lt;=code) &amp;amp;&amp;amp; (code &amp;lt;= 0xE5B )) // ตรวจสอบว่าอยู่ในช่วงภาษาไทยของ Unicode หรือไม่    &lt;br /&gt;ascii.setCharAt( i, (char)(code - 0xD60)); // หากใช้แปลงเป็นภาษาไทยในช่วงของ ASCII    &lt;br /&gt;}    &lt;br /&gt;return ascii.toString(); // แปลงข้อมูลกลับไปเป็นแบบ String เพื่อใช้งานต่อไป    &lt;br /&gt;}    &lt;br /&gt;public static String ASCII2Unicode(String ascii) {    &lt;br /&gt;StringBuffer unicode = new StringBuffer(ascii);    &lt;br /&gt;int code;    &lt;br /&gt;for(int i = 0; i &amp;lt; ascii.length(); i++) {    &lt;br /&gt;code = (int)ascii.charAt(i);    &lt;br /&gt;if ((0xA1 &amp;lt;= code) &amp;amp;&amp;amp; (code &amp;lt;= 0xFB)) // ตรวจสอบว่าอยู่ในช่วงภาษาไทยของ ASCII หรือไม่    &lt;br /&gt;unicode.setCharAt( i, (char)(code + 0xD60)); // หากใช้แปลงเป็นภาษาไทยในช่วงของ Unicode    &lt;br /&gt;}    &lt;br /&gt;return unicode.toString(); // แปลงข้อมูลกลับไปเป็นแบบ String เพื่อใช้งานต่อไป    &lt;br /&gt;}    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;ปล เอามาจาก หลายๆ ต่อ แต่เค้าว่าดังเดิมมาจาก javacentrix&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-8767373061246342982?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/8767373061246342982/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=8767373061246342982' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/8767373061246342982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/8767373061246342982'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/09/thaiutilities.html' title='ThaiUtilities'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-6464782134097419395</id><published>2008-09-23T16:46:00.001+07:00</published><updated>2008-09-23T16:46:55.377+07:00</updated><title type='text'>FW: ทอนเท่าไหร่</title><content type='html'>&lt;p&gt;เงินสิบบาท   &lt;br /&gt;ถ้าเรามีเงินอยู่ 10 บาท ซื้อของ 3 บาท จะได้รับเงินทอนเท่าไร?    &lt;br /&gt;ครูคนหนึ่งตั้งคำถามกับเด็กว่า 'ถ้ามีเงินอยู่ 10 บาท ซื้อของ 3 บาท จะได้รับเงินทอนเท่าไร' เด็ก    &lt;br /&gt;ส่วนใหญ่ตอบว่า '7 บาท'    &lt;br /&gt;แต่มีเด็ก 2คนที่ตอบไม่เหมือนกับคนอื่น คนหนึ่งตอบว่า '2 บาท' อีกคนหนึ่งตอบว่า 'ไม่ต้องทอน'    &lt;br /&gt;ครูถามเด็กคนแรกว่าทำไมถึงได้เงินทอน 2 บาท คำตอบที่ได้ก็คือภาพในใจของเขาสำหรับเงิน 10    &lt;br /&gt;บาท คือ เหรียญห้า 2 เหรียญ เมื่อซื้อของราคา 3 บาท เขา    &lt;br /&gt;ก็ให้เหรียญห้า 1 เหรียญ ดังนั้น จึงได้เงินทอน 2 บาท    &lt;br /&gt;ถามเด็กคนที่สองว่าทำไมไม่เหลือเงินทอนเลย    &lt;br /&gt;คำตอบก็คือเด็กคนนี้คิดว่าในกระเป๋ามีเหรียญบาท 10 เหรียญ เมื่อซื้อของราคา 3 บาท เขาก็ส่ง    &lt;br /&gt;เหรียญบาทให้ 3 เหรียญ เพราะฉะนั้น คนขายจึงไม่ต้องทอนเงิน    &lt;br /&gt;ให้เขา    &lt;br /&gt;โชคดีที่เป็นการถาม-ตอบในห้องเรียน ลองนึกดูสิครับว่าถ้าโจทย์นี้เป็นข้อสอบที่มีคำตอบเป็น ก-ข-ค-ง    &lt;br /&gt;เด็ก 2 คนนี้ก็คงไม่ได้คะแนนจากคำตอบที่ผิดเพี้ยนจากคน    &lt;br /&gt;ส่วนใหญ่    &lt;br /&gt;การสร้างโจทย์ที่ 'เสมือนจริง' จินตนาการของ 'ครู' อาจถูกจำกัดเพียงแค่ 'ตัวเลข' แต่สำหรับ    &lt;br /&gt;เด็ก จินตนาการของเขาไร้กรอบ 10 บาท จึงสามารถเปลี่ยน    &lt;br /&gt;เป็นเหรียญสิบ เหรียญห้า หรือเหรียญบาท    &lt;br /&gt;เมืองไทยมีเหรียญ 2 บาท เราจึงไ ด้คำตอบเพิ่มอีก 1 คำตอบ คือ ได้เงินทอน 1 บาท    &lt;br /&gt;โลกในห้องเรียนกับโลกของความเป็นจริงนั้นแตกต่างกัน โลกในห้องเรียน ทุกคำถามส่วนใหญ่มีเพียง    &lt;br /&gt;1 คำตอบ แต่โลกของความเป็นจริง ทุกคำถามอาจมีคำตอบที่    &lt;br /&gt;ถูกต้องได้เกิน 1 คำตอบ    &lt;br /&gt; 'อย่ารีบตัดสินความผิดถูกของคนๆ นั้น เพียงแค่ คำตอบ ของเรา'    &lt;br /&gt; 'อย่าหยุดความคิดสร้างสรรของคนๆ นั้น ด้วยกรอบความคิดของเรา'&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-6464782134097419395?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/6464782134097419395/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=6464782134097419395' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/6464782134097419395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/6464782134097419395'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/09/fw.html' title='FW: ทอนเท่าไหร่'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-3709647657024590324</id><published>2008-04-11T17:07:00.001+07:00</published><updated>2008-04-11T17:07:23.102+07:00</updated><title type='text'>GHC cont..</title><content type='html'>&lt;pre&gt;เราสามารถ สร้าง fn ด้วย clauses หลายๆ อันโดยคั่น ด้วยเครื่องหมาย เซมิโคลอน&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Prelude&amp;gt; let { f op n [] = n ; f op n (h:t) = h `op` f op n t }&lt;br /&gt;Prelude&amp;gt; f (+) 0 [1..3]&lt;br /&gt;6&lt;br /&gt;Prelude&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ดูแล้วงงๆ มะ&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ลองถามใน &lt;a href="http://www.codenone.com"&gt;www.codenone.com&lt;/a&gt; แล้ว มีคนตอบไว้ดังนี้&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Submitted by &lt;a href="http://www.codenone.com/user/39"&gt;pphetra&lt;/a&gt; on 7 April, 2008 - 07:39.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;function นี้ define ไว้ 2 กรณีคือ&lt;br /&gt;  &lt;br /&gt;กรณีที่ parameter ตัวที่ 3 เป็น empty-array&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;f op n [] = n&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;กับกรณี parameter ตัวที่ 3 เป้น array ปกติ&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;f op n (h:t) = h `op` f op n t&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;ถ้ายังงงว่าทำไมมันต้อง define เป็น 2 function แบบนี้&lt;br /&gt;  &lt;br /&gt;แนะนำว่าควรอ่าน concept เรื่อง pattern matching ก่อน&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Pattern_matching"&gt;http://en.wikipedia.org/wiki/Pattern_matching&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;เมื่อเราเรียก &lt;code&gt;f (+) 0 [1..3]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;เนื่องจาก array ของเรามีค่า&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;มันก็จะใช้ function ที่สองในการทำงาน&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;f (+) 0 (1:[2,3]) = 1 + (f (+) 0 [2,3])&lt;br /&gt;                  = 1 + (2 + (f (+) 0 [3]))&lt;br /&gt;                  = ...&lt;br /&gt;                  = 1 +  ... + (f (+) 0 [])&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;หลังจาก recursive ไปเรื่อยๆ จนถึง f (+) 0 [] (ตัวที่อยู่ที่ท้ายบรรทัด),&lt;br /&gt;  &lt;br /&gt;กรณีนี้ค่าใน array ของ parameter ตัวที่ 3 มันเป็นค่าว่าง&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;ดังนั้นเวลามันทำงาน มันก็จะไปตกในเงื่อนไข function แรก&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;f op n [] = n&lt;br /&gt;==&amp;gt;&lt;br /&gt;f (+) 0 [] = 0&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-3709647657024590324?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/3709647657024590324/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=3709647657024590324' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3709647657024590324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3709647657024590324'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/04/ghc-cont.html' title='GHC cont..'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5587890682466064271</id><published>2008-04-03T22:26:00.001+07:00</published><updated>2008-04-03T22:26:35.542+07:00</updated><title type='text'>TERM</title><content type='html'>&lt;p&gt;IT Management, Business strategies and functions, Asset/resource/knowledge management, B2B, Cost control, Customer support, E-commerce, IT budgeting, IT outsourcing, IT project management, R&amp;amp;D, Nanotechnology, Robots, ROI/TCO, Recycling, Standards, Infrastructure, IT training, Infrastructure/architecture management, Service level management, Internet, Domain names, Web sites, Industries, Automotive, Bio-tech, Entertainment, Government, Healthcare, Space, Networking, Data management, Data mining and analysis, Data security, Data warehousing/business intelligence, Database management, Directory services, LANs and WANs, Bandwidth, Diagnostics and monitoring, Ethernet, Network administration/implementation, Network standards/protocols, Optical networking, Routing/switching, Systems migration, TCP/IP, Mobile/wireless, 3G, 802.11/Wi-Fi, Bluetooth, Mobile platforms/communications, RFID, WAP, WiMax, Wireless LANs, Networking technology, Business broadband, Home automation, Personal broadband, Cable, DSL, Telephony, VoIP and IP telephony, VPNs, Security, Authentication and encryption, Biometrics, Digital signatures, PKI (public key infrastructure), SSL/TLS, Network security, Disaster recovery, Firewalls, IDS (Intrusion Detection Systems), Security applications/tools, Security implementation/standards, Security management, Security threats, Hacking, Spam and phishing, Spyware/adware, Viruses and worms, Software, Business applications, Antivirus software, App servers, Content management, Customer resource management (CRM), Databases, E-mail servers, Enterprise resource planning (ERP), File servers, Groupware, work flow software, Instant messaging, Knowledge management, Remote management, Sales force automation, Search, Spam filtering, Storage software, Supply chain management (SCM), Utility computing, Web servers, Web services, Mobile platforms, PalmOS, Pocket PC, Symbian, Open source, Operating systems, Linux, Linux desktop OS, Linux server OS, Mac OS, Microsoft Windows, Longhorn, Microsoft Server 2003, Windows 2000, Windows 98, Windows NT, Windows XP, Unix, Personal applications, Dell (DELL), Microsoft Outlook, Games, Media players, Office suites, Microsoft Office, Web browsers, Protocols and platforms, .Net, Authoring, Component-based development, Java, Multimedia, Object-oriented programming, Peer to peer, Programming languages, Software engineering/development, Software integration, XML, Software licensing&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5587890682466064271?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5587890682466064271/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5587890682466064271' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5587890682466064271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5587890682466064271'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/04/term.html' title='TERM'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-1045612042444913091</id><published>2008-03-30T20:16:00.001+07:00</published><updated>2008-03-30T20:16:56.693+07:00</updated><title type='text'>GHC ต่อ</title><content type='html'>&lt;p&gt;อ่านจาก &lt;a href="http://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html"&gt;Tutorial Chapter 3&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;เมื่อเราพิมพ์ expression ของ haskell ที่ prompt GHCi จะทำการ evaluate แล้วให้ผลลัพธ์ทันที เช่น &lt;/p&gt;  &lt;pre&gt;Prelude&amp;gt; reverse &amp;quot;hello&amp;quot;&lt;br /&gt;&amp;quot;olleh&amp;quot;&lt;br /&gt;Prelude&amp;gt; 5+5&lt;br /&gt;10&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;ตัว GHCi นอกจาก evaluate expression แล้วยังจัดการเกี่ยวกับ IO ด้วย เช่น&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Prelude&amp;gt; putStrLn &amp;quot;hello&amp;quot;&lt;br /&gt;hello&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Prelude&amp;gt; do { putStrLn &amp;quot;hello&amp;quot;; return &amp;quot;yes&amp;quot; }&lt;br /&gt;hello&lt;br /&gt;&amp;quot;yes&amp;quot;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Prelude&amp;gt; x &amp;lt;- return 42&lt;br /&gt;42&lt;br /&gt;Prelude&amp;gt; print x&lt;br /&gt;42&lt;br /&gt;Prelude&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;statement&amp;#160; &lt;code&gt;x &amp;lt;- return 42 หมายถึง &amp;quot;&lt;/code&gt;execute &lt;code&gt;return 42&amp;quot; ใน&lt;/code&gt; &lt;code&gt;IO&lt;/code&gt; และจากนั้นให้ bind ผลลัพธ์ไปเก็บที่ &lt;code&gt;x หลังจากนั้นเราสามารถใช้ x ใน statment อื่น&lt;/code&gt; ต่อได้ทันที เช่น ใช้คำสั่ง print เพื่อแสดงข้อมูลที่ x เก็บไว้ออกมา&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;เราสามารถ bind โดยใช้ let ก็ได้ดังนี้&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Prelude&amp;gt; let x = 42&lt;br /&gt;Prelude&amp;gt; x&lt;br /&gt;42&lt;br /&gt;Prelude&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;นอกจากนี้เรายังสามารถใช้ let ในการสร้าง function ขึ้นมาใช้งานได้เช่น&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Prelude&amp;gt; let add a b = a + b&lt;br /&gt;Prelude&amp;gt; add 1 2&lt;br /&gt;3&lt;br /&gt;Prelude&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Prelude&amp;gt; let extraadd a b = a + a + b&lt;br /&gt;  &lt;br /&gt;Prelude&amp;gt; extraadd 1 2&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;4&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;Prelude&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-1045612042444913091?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/1045612042444913091/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=1045612042444913091' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/1045612042444913091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/1045612042444913091'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/ghc_30.html' title='GHC ต่อ'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5177865979308575014</id><published>2008-03-22T18:40:00.001+07:00</published><updated>2008-03-22T18:42:17.962+07:00</updated><title type='text'>ลอง GHC (The Glorious Glasgow Haskell Compilation System User's Guide, Version 6.6)</title><content type='html'>&lt;p&gt;ดาวน์โหลด &lt;a title="http://www.haskell.org/ghc/dist/6.6/ghc-6-6.msi" href="http://www.haskell.org/ghc/dist/6.6/ghc-6-6.msi"&gt;http://www.haskell.org/ghc/dist/6.6/ghc-6-6.msi&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;ว้ววว ลงได้แหะ&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; ___&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ___ _   &lt;br /&gt;&amp;#160; / _ \ /\&amp;#160; /\/ __(_)    &lt;br /&gt; / /_\// /_/ / /&amp;#160; | |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GHC Interactive, version 6.6, for Haskell 98.    &lt;br /&gt;/ /_\\/ __&amp;#160; / /___| |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.haskell.org/ghc/"&gt;http://www.haskell.org/ghc/&lt;/a&gt;    &lt;br /&gt;\____/\/ /_/\____/|_|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type :? for help. &lt;/p&gt;  &lt;p&gt;Loading package base ... linking ... done.   &lt;br /&gt;Prelude&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5177865979308575014?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5177865979308575014/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5177865979308575014' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5177865979308575014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5177865979308575014'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/ghc.html' title='ลอง GHC (The Glorious Glasgow Haskell Compilation System User&amp;#39;s Guide, Version 6.6)'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5195531233163932925</id><published>2008-03-22T18:21:00.001+07:00</published><updated>2008-03-22T18:21:07.219+07:00</updated><title type='text'>Hugs 98</title><content type='html'>&lt;p&gt;หลังจากลง Visual Haskell ไม่สำเร็จ คราวนี้มาลอง &lt;a href="http://www.haskell.org/hugs/"&gt;Hugs98&lt;/a&gt; ดูมั่งครับ&lt;/p&gt;  &lt;p&gt;ดาวน์โหลด แล้วลอง install ดู อืมมม ผมใช้ vista ปรากฏว่าลง ไม่ได้แหะ&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5195531233163932925?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5195531233163932925/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5195531233163932925' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5195531233163932925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5195531233163932925'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/hugs-98.html' title='Hugs 98'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-2912220575150095996</id><published>2008-03-22T16:13:00.001+07:00</published><updated>2008-03-22T17:27:16.293+07:00</updated><title type='text'>สู้ visual haskell ต่อ</title><content type='html'>&lt;p&gt;หลังจากลงไม่สำเร็จ ก็ต้องหาในเน็ต ก่อนว่ามีใครเป็นแบบเรามั่ง&lt;/p&gt; &lt;p&gt;เจอที่ link นี้ เดาจาก&amp;nbsp; ชื่อก็น่าจะเกี่ยวกะปัญหาการติดตั้งแหะ&lt;a title="http://darcs.haskell.org/vshaskell/vs_haskell_setup/setup.vbs" href="http://darcs.haskell.org/vshaskell/vs_haskell_setup/setup.vbs"&gt;http://darcs.haskell.org/vshaskell/vs_haskell_setup/setup.vbs&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;นี่มันเป็น Visual Basic Script หนิ&lt;/p&gt;&lt;pre&gt;Rem ************************************&lt;br /&gt;Rem Get the Shell object&lt;br /&gt;Rem ************************************&lt;br /&gt;&lt;br /&gt;Set shell = CreateObject("WScript.Shell")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rem ************************************&lt;br /&gt;Rem Set path&lt;br /&gt;Rem ************************************&lt;br /&gt;&lt;br /&gt;system32Path = shell.Environment("PROCESS")("SYSTEMROOT") &amp;amp; "\System32\"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rem ************************************&lt;br /&gt;Rem Setup&lt;br /&gt;Rem ************************************&lt;br /&gt;&lt;br /&gt;Sub Setup(mode, vstudio)&lt;br /&gt;  installPath  = shell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Visual Haskell\" &amp;amp; vstudio &amp;amp; "\InstallDir")&lt;br /&gt;  &lt;br /&gt;  Rem *** Register vs_haskell.dll&lt;br /&gt;  &lt;br /&gt;  res = shell.Run ("""" &amp;amp; system32Path &amp;amp; "regsvr32.exe"" /i:" &amp;amp; vstudio &amp;amp; " " &amp;amp; mode &amp;amp; " /n /s """ &amp;amp; installPath &amp;amp; "bin\vs_haskell.dll""",0,true)&lt;br /&gt;  If res &amp;lt;&amp;gt; 0 Then&lt;br /&gt;    shell.Popup "Failed to setup vs_haskell.dll"&lt;br /&gt;    Stop&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  Rem *** Register vs_haskell_babel.dll&lt;br /&gt; &lt;br /&gt;  res = shell.Run ("""" &amp;amp; system32Path &amp;amp; "regsvr32.exe"" /i:" &amp;amp; vstudio &amp;amp; " " &amp;amp; mode &amp;amp; " /n /s """ &amp;amp; installPath &amp;amp; "bin\vs_haskell_babel.dll""",0,true)&lt;br /&gt;  If res &amp;lt;&amp;gt; 0 Then&lt;br /&gt;    shell.Popup "Failed to setup vs_haskell_babel.dll"&lt;br /&gt;    Stop&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  Rem *** Register vs_haskell_dlg.dll&lt;br /&gt;&lt;br /&gt;  res = shell.Run ("""" &amp;amp; system32Path &amp;amp; "regsvr32.exe"" /i:" &amp;amp; vstudio &amp;amp; " " &amp;amp; mode &amp;amp; " /n /s """ &amp;amp; installPath &amp;amp; "bin\vs_haskell_dlg.dll""",0,true)&lt;br /&gt;  If res &amp;lt;&amp;gt; 0 Then&lt;br /&gt;    shell.Popup "Failed to setup vs_haskell_dlg.dll"&lt;br /&gt;    Stop&lt;br /&gt;  End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  Rem *** VStudioSetup&lt;br /&gt;&lt;br /&gt;  vstudioPath  = shell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\" &amp;amp; vstudio &amp;amp; "\InstallDir")&lt;br /&gt;  res = shell.Run ("""" &amp;amp; vstudioPath &amp;amp; "devenv.exe"" /Setup",0,true)&lt;br /&gt;  If res &amp;lt;&amp;gt; 0 Then&lt;br /&gt;    shell.Popup "Failed to setup VStudio"&lt;br /&gt;    Stop&lt;br /&gt;  End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rem ************************************&lt;br /&gt;Rem Entry Points&lt;br /&gt;Rem ************************************&lt;br /&gt;&lt;br /&gt;sub Install71()&lt;br /&gt;  Setup "", "7.1"&lt;br /&gt;end sub&lt;br /&gt;&lt;br /&gt;sub UnInstall71()&lt;br /&gt;  Setup "/u", "7.1"&lt;br /&gt;end sub&lt;br /&gt;&lt;br /&gt;sub Install80()&lt;br /&gt;  Setup "", "8.0"&lt;br /&gt;end sub&lt;br /&gt;&lt;br /&gt;sub UnInstall80()&lt;br /&gt;  Setup "/u", "8.0"&lt;br /&gt;end sub&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;อืมม จะลอง run ดู โดยต้องใช้คำสั่ง cscript.exe&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Microsoft (R) Windows Script Host Version 5.7&lt;br&gt;&lt;br /&gt;&lt;p&gt;เหมือนเดิมไม่มีไรเกิดขึ้น เซ็งจัด&lt;br /&gt;&lt;p&gt;หาต่อ เจอ mail archive ที่เค้ามีปัญหา&lt;pre&gt;Hi Dennis,&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;tt&gt;Did you use the default install directory or a custom one? &lt;u&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;A custom &lt;/font&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/tt&gt;&lt;tt&gt;&lt;u&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;directory what caused this error for me&lt;/font&gt;&lt;/strong&gt;&lt;/u&gt;. The simple solution was to &lt;/tt&gt;&lt;tt&gt;uninstall and reinstall to the default Program Files\Visual Haskell path. &lt;/tt&gt;&lt;pre&gt;&lt;/pre&gt;&lt;tt&gt;Alternately, have a look at this file here - &lt;/tt&gt;&lt;tt&gt;&lt;a href="http://darcs.haskell.org/vshaskell/vs_haskell_setup/setup.vbs"&gt;http://darcs.haskell.org/vshaskell/vs_haskell_setup/setup.vbs&lt;/a&gt; &lt;/tt&gt;&lt;pre&gt;&lt;/pre&gt;&lt;tt&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#ff8080"&gt;What's failing is the calls to regsvr32.exe&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; - if you search your system &lt;/tt&gt;&lt;tt&gt;for vs_haskell.dll, you'll most likely find that it's in... C:\Program &lt;/tt&gt;&lt;tt&gt;Files\Visual Haskell\bin, no matter what install directory you specified. &lt;/tt&gt;&lt;pre&gt;&lt;/pre&gt;&lt;tt&gt;If you check the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Visual &lt;/tt&gt;&lt;tt&gt;Haskell\&amp;lt;Visual Studio version&amp;gt;\InstallDir you'll see that it's set to &lt;/tt&gt;&lt;tt&gt;the one you specified (where Visual Studio version is 7.1 for 2003 and &lt;/tt&gt;&lt;tt&gt;8.0 for VS 2005. &lt;/tt&gt;&lt;pre&gt;&lt;/pre&gt;&lt;tt&gt;So what's happening is that regsvr32 is trying to find the DLL's in the &lt;/tt&gt;&lt;tt&gt;\bin directory of your specified install dir, but the DLL's are over in &lt;/tt&gt;&lt;tt&gt;Program Files... not sure what other bugs this could introduce, hence &lt;/tt&gt;&lt;tt&gt;why I reinstalled to Progam Files &amp;lt;etc&amp;gt;. If you run the following three &lt;/tt&gt;&lt;tt&gt;commands in a command prompt, it should work to some extent, but I'll &lt;/tt&gt;&lt;tt&gt;reiterate that I haven't tested this. &lt;/tt&gt;&lt;pre&gt;&lt;font color="#ff8000"&gt;regsvr32.exe /i:8.0 /n /s "C:\Program Files\bin\vs_haskell.dll"&lt;br /&gt;regsvr32.exe /i:8.0 /n /s "C:\Program Files\bin\vs_haskell_babel.dll"&lt;br /&gt;regsvr32.exe /i:8.0 /n /s "C:\Program Files\bin\vs_haskell_babel.dll"&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;VS 2003 users should replace 8.0 with 7.1...&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;tt&gt;Now, is there a bug tracker anywhere for this, or is it just the mailing &lt;/tt&gt;&lt;tt&gt;list? I think the hardcoded paths in &lt;/tt&gt;&lt;tt&gt;&lt;a href="http://darcs.haskell.org/vshaskell/vs_haskell_setup/Common.wxs"&gt;http://darcs.haskell.org/vshaskell/vs_haskell_setup/Common.wxs&lt;/a&gt; need to &lt;/tt&gt;&lt;tt&gt;be tweaked, or the reg key(s) modified. :-) &lt;/tt&gt;&lt;pre&gt;Anyway, hope that helps you, good luck.&lt;br /&gt;&lt;br /&gt;Liam Clarke&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;_______________________________________________&lt;br /&gt;Glasgow-haskell-bugs mailing list&lt;br /&gt;Glasgow-haskell-bugs@haskell.org&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;ลองดู................... เหมือนเดิม&lt;/p&gt;&lt;br /&gt;&lt;p&gt;จะลอง uninstall แล้วลงใหม่อีกทีครับ&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-2912220575150095996?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/2912220575150095996/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=2912220575150095996' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/2912220575150095996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/2912220575150095996'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/visual-haskell_22.html' title='สู้ visual haskell ต่อ'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-7774207460974774801</id><published>2008-03-22T14:33:00.001+07:00</published><updated>2008-03-22T14:33:32.256+07:00</updated><title type='text'>Visual Haskell</title><content type='html'>&lt;p&gt;&lt;img height="56" src="http://www.haskell.org/visualhaskell/vhs.png" width="314" /&gt; &lt;/p&gt;  &lt;p&gt;เนื่องจากยังคาใจเลยค้นต่อ พบข้อมูล &lt;a href="http://www.haskell.org/visualhaskell/"&gt;Visual Haskell&lt;/a&gt; สามารถใช้งานร่วมกับ Visual Studio.net ของ Microsoft ได้ เอาละลองมาลุยกัน&lt;/p&gt;  &lt;p&gt;หน้าดาวน์โหลด พบ &lt;/p&gt;  &lt;p&gt;Downloads Available: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Version 0.2 for &lt;a href="http://www.haskell.org/visualhaskell/release-0.2/VSHaskell71.msi"&gt;Visual Studio 2003&lt;/a&gt; or &lt;a href="http://www.haskell.org/visualhaskell/release-0.2/VSHaskell80.msi"&gt;Visual Studio 2005&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;a href="http://www.haskell.org/visualhaskell/doc/index.html#release-notes"&gt;Release Notes&lt;/a&gt;] &lt;/li&gt;    &lt;li&gt;Version 0.0 for &lt;a href="http://www.haskell.org/visualhaskell/release-0.0/VHS.msi"&gt;Visual Studio 2003&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;a href="http://www.haskell.org/visualhaskell/doc/index.html#release-notes"&gt;Release Notes&lt;/a&gt;] &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;ที่น่าจะได้คือ Visual Studio 2005 เพราะในเครื่องมีอยู่แล้ว&lt;/p&gt;  &lt;p&gt;อ่าน [&lt;a href="http://www.haskell.org/visualhaskell/doc/index.html#release-notes"&gt;Release Notes&lt;/a&gt;] เพื่อเป็น แนวทางก่อน&lt;/p&gt;  &lt;p&gt;ไฟล์ที่ดาวน์โหลดมาขนาด 66.7 MB&lt;/p&gt;  &lt;p&gt;ดาวน์โหลด Paper workshop 2005 มาด้วยจะได้เล่นตามได้&lt;/p&gt;  &lt;p&gt;อ่าาาาา&lt;/p&gt;  &lt;p&gt;อ่านแล้ว ไม่เห็นมีไรเลย paper อะ&lt;/p&gt;  &lt;p&gt;ลองนี่มั่ง &lt;a href="http://www.haskell.org/haskellwiki/Haskell_in_5_steps"&gt;Haskell in 5 steps&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;อ่าา install อยู่เจอตัวนี้ Failed to setup vs_haskell_babel.dll&lt;/p&gt;  &lt;p&gt;vs_haskell_dlg.dll&lt;/p&gt;  &lt;p&gt;จบเห่ ลองเปิด visual studio ละ ไม่เห็น แหะ มีแต่อุปสรรคเจงง&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-7774207460974774801?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/7774207460974774801/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=7774207460974774801' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7774207460974774801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7774207460974774801'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/visual-haskell.html' title='Visual Haskell'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-2788633571119249130</id><published>2008-03-21T21:30:00.001+07:00</published><updated>2008-03-21T21:30:46.513+07:00</updated><title type='text'>ลองศึกษา DDC สักวัน</title><content type='html'>&lt;p&gt;ผม feed news จาก PLNews พบ DDC Alpha 1 ออกแล้ว เซ็งๆ อยู่เลยมาลองศึกษาดูกัน&lt;/p&gt;  &lt;p&gt;&lt;img height="116" src="http://www.haskell.org/sitewiki/images/e/ea/Ddc-alpha1-logo.png" width="256" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.haskell.org/haskellwiki/DDC"&gt;DDC&lt;/a&gt; อ่านดูจากเวบเค้าบอกว่าเป็น explicitly lazy dialect ของ &lt;a href="http://www.haskell.org"&gt;Haskell&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;แล้ว explicitly lazy dialect นี่มันอะไรหว่า ส่วน Haskell คือภาษาคอมพิวเตอร์ ภาษานึง ซึ่งเค้านิยามตัวเองว่าเป็น advanced &lt;a href="http://www.haskell.org/haskellwiki/Functional_programming"&gt;purely functional programming&lt;/a&gt; language เจอศัพท์ใหม่อีกละ แล้วไอ้เจ้า &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h2&gt;Functional programming&lt;/h2&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; นี่มันคือไร&lt;/p&gt;  &lt;p&gt;เอาละ มาเริ่มศึกษา Functional Programming กันก่อน เพราะรู้จักแต่ VB, Delphi ไรประมาณนี้&lt;/p&gt;  &lt;p&gt;Functional Programming Language เป็นรูปแบบนึงในการเขียนโปรแกรมซึ่งไม่เหมือนกันกับวิธีที่เค้าเรียกกันว่า &lt;b&gt;imperative ((อิมเพอ' ระทิฟช) adj. ซึ่งเลี่ยงไม่ได้, จำเป็น, เชิงบังคับ -n. คำสั่ง, ความจำเป็น, ข้อบังคับ, กฎเกณฑ์, น้ำเสียงขอร้องหรือเป็นเชิงบังคับ, มาลาเชิงบังคับของไวยากรณ์) programming&lt;/b&gt; models ซึ่งจะมีการ evaluation ของexpressions (นิพจน์) ทั้งหมดที่พูดมานี่ ไม่ว่าจะเป็น Functional programming language , imperative programming , etc.... นั้นมันก็คือ&lt;/p&gt;  &lt;p&gt;Programming Language Concepts นั่นเอง นั่นคือ ภาษาคอมพิวเตอร์ต่างๆ ที่ได้สร้างขึ้นมานั้นก็จะมีการออกแบบโดยได้วาง concept ไว้ต่างๆกัน ที่นี้ถ้าเรามาลองดูว่ามันมี กี่ประเภทจาก &lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages"&gt;wikipedia&lt;/a&gt; นะ เพียบเลยดังนี้&lt;/p&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Array_languages"&gt;1 Array languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Aspect-oriented_languages"&gt;2 Aspect-oriented languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Assembly_languages"&gt;3 Assembly languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Authoring_languages"&gt;4 Authoring languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Command_line_interface_languages"&gt;5 Command line interface languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Compiled_languages"&gt;6 Compiled languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Concurrent_languages"&gt;7 Concurrent languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Curly-bracket_languages"&gt;8 Curly-bracket languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Dataflow_languages"&gt;9 Dataflow languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Data-oriented_languages"&gt;10 Data-oriented languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Data-structured_languages"&gt;11 Data-structured languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Declarative_languages"&gt;12 Declarative languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Esoteric_languages"&gt;13 Esoteric languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Extension_languages"&gt;14 Extension languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Fourth-generation_languages"&gt;15 Fourth-generation languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Functional_languages"&gt;16 Functional languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Interactive_mode_languages"&gt;17 Interactive mode languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Interpreted_languages"&gt;18 Interpreted languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Iterative_languages"&gt;19 Iterative languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#List-based_languages_.E2.80.93_LISPs"&gt;20 List-based languages &amp;#8211; LISPs&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Little_languages"&gt;21 Little languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Logic-based_languages"&gt;22 Logic-based languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Machine_languages"&gt;23 Machine languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Macro_languages"&gt;24 Macro languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Metaprogramming_languages"&gt;25 Metaprogramming languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Multiparadigm_languages"&gt;26 Multiparadigm languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Numerical_analysis"&gt;27 Numerical analysis&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Non-English-based_languages"&gt;28 Non-English-based languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Object-oriented_class-based_languages"&gt;29 Object-oriented class-based languages&lt;/a&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Multiple_dispatch"&gt;29.1 Multiple dispatch&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Single_dispatch"&gt;29.2 Single dispatch&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Object-oriented_prototype-based_languages"&gt;30 Object-oriented prototype-based languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Off-side_rule_languages"&gt;31 Off-side rule languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Procedural_languages"&gt;32 Procedural languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Reflective_languages"&gt;33 Reflective languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Rule-based_languages"&gt;34 Rule-based languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Scripting_languages"&gt;35 Scripting languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Stack-based_languages"&gt;36 Stack-based languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Synchronous_languages"&gt;37 Synchronous languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Syntax_handling_languages"&gt;38 Syntax handling languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Visual_languages"&gt;39 Visual languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#Wirth_languages"&gt;40 Wirth languages&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages#XML-based_languages"&gt;41 XML-based languages&lt;/a&gt;&lt;/li&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;ที่แสดงมามันเป็นเพียงวิธีการหรือรูปแบบนึงของ อืมม เค้าเรียนกว่า Programming paradigm แต่ละแบบ กลับมาที่เรื่อง imperative programming ค้นข้อมูลเพิ่มเติมจะพบว่า จริงๆ มันก็คือ procedural programming อ่าา แบบนี้ก็น่าจะคุ้น เพราะคิดว่าเราคงผ่าน โปรแกรมภาษาต่างที่เป็นแบบ procedural มาแล้วไม่ว่าจะเป็น C,Pascal,VB...&lt;/p&gt;  &lt;p&gt;ย้อนนนนนกลับมาที่ Functional Programming มีคนแปลเป็นภาษาไทย ว่าคือ &amp;quot;ภาษาโปรแกรมเชิงหน้าที่&amp;quot; ผมค้นหาข้อมูลจาก เวบ &lt;a href="www.cs.su.ac.th/~tasanawa/cs517511/ppt/functional.ppt"&gt;ม.เกษตร&lt;/a&gt; ซึ่งอาจารย์เค้าอธิบายว่ามีลักษณะดังนี้&lt;/p&gt;  &lt;p&gt;- ใช้หลักการของฟังก์ชันทางคณิตศาสตร์&lt;/p&gt;  &lt;p&gt;องค์ประกอบของภาษา (Components)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;ใช้การเรียกฟังก์ชันมาทำงาน แทนการระบุในรูปคำสั่ง &lt;/li&gt;    &lt;li&gt;เป็นลักษณะการทำงานตามหน้าที่ (Functional) &lt;/li&gt;    &lt;li&gt;มีองค์ประกอบดังนี้&lt;/li&gt; &lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;ฟังก์ชันเบื้องต้น (Primitive Function)&lt;/li&gt;    &lt;li&gt;รูปแบบของฟังก์ชัน (Functional Forms)&lt;/li&gt;    &lt;li&gt;วิธีดำเนินการ (Application Operation)&lt;/li&gt;    &lt;li&gt;ออบเจกต์ (Object)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;สรุป&lt;/p&gt;  &lt;ol&gt;ข้อแตกต่างระหว่าง Imperative VS Functional   &lt;li&gt;แนวคิดพื้นฐานของการสร้างโปรแกรม&lt;/li&gt;    &lt;li&gt;เวลาที่ใช้ในการทำงาน&lt;/li&gt;    &lt;li&gt;การเขียนโปรแกรม&lt;/li&gt;    &lt;li&gt;ประสิทธิภาพของภาษา&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;ย้อนอีกที กลับไปที่ภาษา Haskell ซึ่งอ่านประวัติดูก็คงทราบว่า มันมีมานมนานนกาเล ยี่สิบกว่าปีแล้ว ป้าาาดนี่ถ้าดู ตัว Compiler ที่แสดงนี่มีหลายตัวเลย &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#GHC_the_Glasgow_Haskell_Compiler"&gt;1 GHC the Glasgow Haskell Compiler&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#The_Haskell_Interpreter_Hugs"&gt;2 The Haskell Interpreter Hugs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#nhc98"&gt;3 nhc98&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#Yhc_the_York_Haskell_Compiler"&gt;4 Yhc the York Haskell Compiler&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#HBI_and_HBC.2C_Chalmers.27_Haskell_Interpreter_and_Compiler"&gt;5 HBI and HBC, Chalmers' Haskell Interpreter and Compiler&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#Helium"&gt;6 Helium&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#Jhc"&gt;7 Jhc&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#Yale_Haskell"&gt;8 Yale Haskell&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.haskell.org/haskellwiki/Implementations#DDC_the_Disciplined_Disciple_Compiler"&gt;9 DDC the Disciplined Disciple Compiler&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;อะตัวสุดท้ายนี่ คุ้นๆ เพราะตรงกะ หัวข้อละ&lt;/p&gt;  &lt;p&gt;พออ่านถึงตรงนี้ ถึงรู้ว่า กรู หาเครื่องเล่นไม่ได้&lt;/p&gt;  &lt;pre&gt;---------------------------------------------------  The Disciplined Disciple Compiler: Build and installation instructions.&lt;br /&gt;---------------------------------------------------&lt;br /&gt;  0) You will need working copies of GHC (at least 6.8.1) and GCC installed.&lt;br /&gt;&lt;br /&gt;  1) Download the source.&lt;br /&gt;&lt;br /&gt;     Either:&lt;br /&gt;      a) grab the source tarball from http://code.google.com/p/disciple&lt;br /&gt;     &lt;br /&gt;      b) or use darcs to get the head branch:&lt;br /&gt;&lt;br /&gt;          $ darcs get http://code.haskell.org/~benl/disciple-HEAD&lt;br /&gt;      &lt;br /&gt;  2) Make a local copy of the build config file.&lt;br /&gt;&lt;br /&gt;     $ cp make/config.mk.sample make/config.mk&lt;br /&gt;    &lt;br /&gt;  3) Edit this make/config.mk file to set your target system.&lt;br /&gt;    &lt;br /&gt;  4) Build the compiler, runtime system and external libraries.&lt;br /&gt;  &lt;br /&gt;     $ make&lt;br /&gt;&lt;br /&gt;  5) Build the ddc libraries and run the test code (with optimisations enabled)&lt;br /&gt;  &lt;br /&gt;     $ bin/war -ddc O&lt;br /&gt;&lt;br /&gt;  6) Copy the compiler binary to your ~/bin dir &lt;br /&gt;      (where ~/bin is in your PATH)&lt;br /&gt;  &lt;br /&gt;     $ mkdir ~/bin&lt;br /&gt;     $ cp bin/ddc ~/bin/ddc.real&lt;br /&gt;&lt;br /&gt;  7) For Mac OS X: Copy the runtime library to your ~/lib dir&lt;br /&gt;     &lt;br /&gt;     $ mkdir ~/lib&lt;br /&gt;     $ cp runtime/libddc-runtime.dylib ~/lib&lt;br /&gt;&lt;br /&gt;  8) Create an alias to give ddc the path to its libraries and (static) runtime.&lt;br /&gt;      (You'll probably want to add this to your .profile, or similar)&lt;br /&gt;  &lt;br /&gt;     $ alias ddc='~/bin/ddc.real -basedir $(DDC_BUILD)'  (for bash)&lt;br /&gt;     $ alias ddc '~/bin/ddc.real -basedir $(DDC_BUILD)'  (for c shells)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  9) Compile and run your first program&lt;br /&gt;  &lt;br /&gt;     $ echo 'main () = println &amp;quot;Hello world&amp;quot;' &amp;gt; Main.ds&lt;br /&gt;     $ ddc -make Main.ds -o hello&lt;br /&gt;     $ ./hello&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;    see doc/HACKING for more info or go to &lt;a href="http://code.google.com/p/disciple"&gt;http://code.google.com/p/disciple&lt;br /&gt;&lt;/a&gt;---------------------------------------------------&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-2788633571119249130?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/2788633571119249130/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=2788633571119249130' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/2788633571119249130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/2788633571119249130'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/ddc.html' title='ลองศึกษา DDC สักวัน'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5492350305544241116</id><published>2008-03-18T18:09:00.001+07:00</published><updated>2008-03-18T18:09:00.679+07:00</updated><title type='text'>IronPython 2.0 Beta 1 ออกแล้ว</title><content type='html'>&lt;p&gt;IronPython คือ โปรเจคที่ไมโครซอฟต์ได้พัฒนา โปรแกรมภาษา Python ให้สามารถใช้ Class หรือ Library ต่างบน Platform .Net ของไมโครซอฟต์ได้&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;ข้อมูลจาก &lt;a href="http://plnews.org/posts/2008/03/15/102814.html" target="_blank"&gt;PLNews.org&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5492350305544241116?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5492350305544241116/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5492350305544241116' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5492350305544241116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5492350305544241116'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/ironpython-20-beta-1.html' title='IronPython 2.0 Beta 1 ออกแล้ว'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5903049357182123126</id><published>2008-03-18T17:50:00.001+07:00</published><updated>2008-03-18T17:50:55.254+07:00</updated><title type='text'>ทดลองป้อนจาก Windows Live Writer</title><content type='html'>&lt;p&gt;สวัสดีครับ ข้อความนี้ป้อนจาก โปรแกรม Windows Live Writer &lt;a href="http://lh6.google.com/anusorn.jaikaew/R9-eiuSQbcI/AAAAAAAAEUY/CxXTK0dceSA/18214-8_100%5B2%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="104" alt="18214-8_100" src="http://lh5.google.com/anusorn.jaikaew/R9-ejeSQbdI/AAAAAAAAEUg/YKhiN4znXnY/18214-8_100_thumb" width="104" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5903049357182123126?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5903049357182123126/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5903049357182123126' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5903049357182123126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5903049357182123126'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/windows-live-writer.html' title='ทดลองป้อนจาก Windows Live Writer'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5781745022063606335</id><published>2008-03-13T11:01:00.000+07:00</published><updated>2008-03-13T15:01:31.737+07:00</updated><title type='text'>Effective time management</title><content type='html'>ให้เวลากับงาน เพื่อความสำเร็จในภายหน้า&lt;br&gt;ให้เวลากับความคิด เพื่อเป็นคลังแห่งพลังในการทำงาน&lt;br&gt;ให้เวลากับการเล่น เพื่อความเป็นหนุ่มสาวอย่างถาวร&lt;br&gt;ให้เวลากับการอ่าน เพื่อเป็นน้ำพุแห่งปัญญา&lt;br&gt;ให้เวลากับความเป็นมิตร เพื่อเป็นถนนแห่งความสุข&lt;br&gt;ให้เวลากับความรัก เพื่อความชื่นบานแห่งชีวิต&lt;br&gt;ให้เวลากับการหัวเราะ เพื่อเป็นดนตรีแห่งความเบิกบาน  &lt;!-- multiply:no_crosspost --&gt;&lt;p class='multiply:no_crosspost'&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5781745022063606335?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5781745022063606335/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5781745022063606335' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5781745022063606335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5781745022063606335'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/03/effective-time-management.html' title='Effective time management'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-7457807145479191024</id><published>2008-02-13T18:29:00.000+07:00</published><updated>2008-02-13T23:29:11.963+07:00</updated><title type='text'>Jerome becomes a genius</title><content type='html'>&lt;span class="insertedphoto"&gt;&lt;img class="alignleft" src="http://tbn0.google.com/images?q=tbn:6XdN5cjp_0GQOM:http://www.nanmeebooks.com/book/imgBook/1581/8818-64-1.jpg" border="0"&gt; 1. ตั้งเป้าหมายให้เกินจริง.... คิดในแบบที่ปฏิบัติได้&lt;br&gt;2. "ภูมิปัญญา เพื่อความอยู่รอด" ต้องใช้ทฤษฏีหนูเร่ร่อน (จะพบความสำเร็จเมื่อคุณไม่ควรพอใจกับสภาพที่เป็นอยู่และความสะดวกสบายที่มี) อืมม ประมาณว่า อย่าตั้งอยู่บนความประมาณ จงเตรียมพร้อมต่อความเปลี่ยนแปลงตลอดเวลา&lt;br&gt;&lt;/span&gt;  &lt;!-- multiply:no_crosspost --&gt;&lt;p class='multiply:no_crosspost'&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-7457807145479191024?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/7457807145479191024/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=7457807145479191024' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7457807145479191024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7457807145479191024'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2008/02/jerome-becomes-genius.html' title='Jerome becomes a genius'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-4229868455479192039</id><published>2007-09-24T11:29:00.000+07:00</published><updated>2007-09-24T11:29:13.986+07:00</updated><title type='text'>Here is the source code for Micosoft Windows Vista :P</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_vTNQ6fcfS6Y/Rvc9C9tlwuI/AAAAAAAABtk/R2EZzLQkMYg/s1600-h/source-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_vTNQ6fcfS6Y/Rvc9C9tlwuI/AAAAAAAABtk/R2EZzLQkMYg/s320/source-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5113623023037301474" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-4229868455479192039?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/4229868455479192039/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=4229868455479192039' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/4229868455479192039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/4229868455479192039'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/09/here-is-source-code-for-micosoft.html' title='Here is the source code for Micosoft Windows Vista :P'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vTNQ6fcfS6Y/Rvc9C9tlwuI/AAAAAAAABtk/R2EZzLQkMYg/s72-c/source-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-1103120442878398739</id><published>2007-09-20T15:07:00.002+07:00</published><updated>2007-09-20T15:07:43.912+07:00</updated><title type='text'>อยากทำเวบใหม่</title><content type='html'>เอาแบบ Flickr + Google Map เหอๆ จะ work ป่าวเนี่ย&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-1103120442878398739?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/1103120442878398739/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=1103120442878398739' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/1103120442878398739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/1103120442878398739'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/09/blog-post.html' title='อยากทำเวบใหม่'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-2919722724673134419</id><published>2007-08-10T00:04:00.000+07:00</published><updated>2007-08-10T00:04:01.703+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map API 2</title><content type='html'>Zoom Level 1&lt;br /&gt;&lt;form action="http://newbiedevman.blogspot.com/2007/08/google-map-api-2.html" method="get"&gt;&lt;br /&gt;First name: &lt;br /&gt;&lt;input type="text" name="fname" value="Mickey" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last name: &lt;br /&gt;&lt;input type="text" name="lname" value="Mouse" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;input type="submit" value="Submit" /&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;div id="map2" style="width: 400px; height: 300px;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-2919722724673134419?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/2919722724673134419/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=2919722724673134419' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/2919722724673134419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/2919722724673134419'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/google-map-api-2.html' title='Google Map API 2'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-4288504889163084450</id><published>2007-08-09T16:26:00.000+07:00</published><updated>2007-08-09T16:26:25.077+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map API</title><content type='html'>&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;div id="map" style="width: 400px; height: 300px;"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-4288504889163084450?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/4288504889163084450/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=4288504889163084450' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/4288504889163084450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/4288504889163084450'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/google-map-api.html' title='Google Map API'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-4704025461959758278</id><published>2007-08-04T15:04:00.000+07:00</published><updated>2007-08-04T15:57:59.357+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Path-ascending'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection Policies'/><title type='text'>Path-ascending crawling</title><content type='html'>มี web crawler บางตัวที่สร้างขึ้นมาเพื่อเก็บข้อมูลทุกประเภทให้มากที่สุดเท่าที่เป็นไปได้&lt;br /&gt;Cothey ได้แสดงวิธี Path-ascending ในปี 2004  ตัวอย่างเช่น&lt;br /&gt;เมื่อเริ่มต้นจะทำการดูดจากเวบเพจ http://llama.org/hamster/monkey/page.html จากนั้นก็จะเริ่มทำการดูด เรียงลำดับดังนี้ /hamster/monkey/, /hamster/, และสุดท้ายที่ root  /.&lt;br /&gt;ตัวอย่างของ Web crawler ที่เก็บแหลกเช่น havester&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-4704025461959758278?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/4704025461959758278/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=4704025461959758278' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/4704025461959758278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/4704025461959758278'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/path-ascending-crawling.html' title='Path-ascending crawling'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-600013645917025118</id><published>2007-08-04T14:41:00.000+07:00</published><updated>2007-08-04T15:03:41.515+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Selection Policies'/><category scheme='http://www.blogger.com/atom/ns#' term='spiders'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'>Restricting followed links</title><content type='html'>การท่องไปตามเวบไซต์ต่างๆนั้น จริงๆ เราสนใจข้อมูลไฟล์ HTML เท่านั้นโดยหลีกเลี่ยงหรือไม่สนใจไฟล์อื่นๆ (MIME type) เพราะฉะนั้นเวลาตัว Web Crawler อาจส่งคำสั่งเพื่อขอข้อมูล HTTP HEAD มาอ่านดูเพื่อตรวจสอบว่าเวบไซต์นี้มี MIME type อะไรอยู่บ้างก่อนที่จะทำการดูดข้อมูล บางครั้งตัว Web crawler ถ้าอยากจะหลีกเลี่ยงการขอข้อมูล HEADER มาอ่านบ่อยๆ ก็อาจจะพิจารณาจากนามสกุลของไฟล์ HTML ที่ส่วนมากจะเป็น .html หรือไม่ก็ .htm หรือนามสกุลอื่นๆ ที่เป็นที่รู้จักว่าเป็นไฟล์ที่ให้ข้อมูลในรูปแบบของ html ออกมาอิเช่น .asp , .aspx , .php เป็นต้น บาง Web crawler อาจไม่สนใจ link ที่มี ? อยู่ใน url เนื่องจากเป็นเวบเพจแบบ dynamic ซึ่งใช้เทคนิค ในการส่งข้อมูลไปใน url ซึ่งบางเวบเพจจงใจเขียนหรือสร้างเวบเพจในลักษณะนี้เพื่อไม่อยากให้ ตัว web crawler มาดูดข้อมูลของตัวเองไป เนื่องจาก เวบเพจลักษณ์นี้จะมีการเปลี่ยนแปลงของข้อมูลตลอดเวลา&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-600013645917025118?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/600013645917025118/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=600013645917025118' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/600013645917025118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/600013645917025118'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/restricting-followed-links.html' title='Restricting followed links'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-7873398563720504220</id><published>2007-08-02T19:55:00.000+07:00</published><updated>2007-08-04T15:03:13.611+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web crawlers'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection Policies'/><title type='text'>Selection policy</title><content type='html'>มาต่อกันเรื่อง &lt;span style="font-weight: bold;" class="mw-headline"&gt;Selection policy &lt;/span&gt;&lt;span class="mw-headline"&gt;ของ web crawlers&lt;br /&gt;ถึงแม้จะเป็น Search Engines ระดับบิ๊ก (Google,Yahoo) ก็มีความสามารถเก็บข้อมูลเว็บไซต์ไว้ได้แค่เพียงส่วนหนึ่งของ เวบไซต์บน อินเทอร์เน็ตที่มีอยู่เท่านั้นเอง จากการศึกษาของ &lt;/span&gt;&lt;b&gt;Dr. Steve Lawrence &lt;/b&gt;และ &lt;b&gt;Dr. C. Lee &lt;/b&gt;&lt;b&gt;Giles &lt;/b&gt;แสดงให้เห็นว่า ไม่มี Search Engines รายใดเลยที่จะสามารถเก็บข้อมูลเว็บไซต์ไว้ได้มากกว่า 16% ของเวบไซต์ที่มีอยู่ ตัว crawler ( spiders, robots) ที่มีจะทำการดูดข้อมูลของเวบไซต์ต่างๆ มาเก็บนั้นอย่างหนึ่งที่ต้องทำคือการตัดสินใจในการ ดูดข้อมูลในส่วนที่คิดว่าสำคัญที่สุดของเวบไซต์นั้นๆ มา ซึ่งการที่จะทำแบบนี้ได้นั้นต้อง มีการให้น้ำหนักของความสำคัญของเวบเพจ ต่างๆ ที่จะดูดมา และเวบเพจไหนมันจะมีลำดับความสำคัญมากแค่ไหนในการที่จะดูดมาก็มีสิ่งที่ต้องพิจารณาหลายด้าน อาทิเช่น มีผู้เยี่ยมชมเวบเพจนี้จำนวนมาก หรือมี เวบไซต์อื่น link มายังเวบเพจนี้จำนวนมาก ดังนั้นมันจึงค่อนข้างยากมากในการออกแบบส่วน selection policies&lt;br /&gt;&lt;br /&gt;Cho เป็นคนหนึ่งที่ได้ทำการศึกษาเรื่องนี้ โดยข้อมูลที่เก็บได้จำนวน 180,000 เวบเพจจากโดเมน standford.edu โดยใช้วิธีเก็บรวบรวมข้อมูลของเวบเพจในหลายๆ รูปแบบ อาทิเช่นใช้วิธีค้นแบบ &lt;a href="http://en.wikipedia.org/wiki/Breadth-first_search" title="Breadth-first search"&gt;breadth-first&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Breadth-first_tree.svg/300px-Breadth-first_tree.svg.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Breadth-first_tree.svg/300px-Breadth-first_tree.svg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Breadth-first_search" title="Breadth-first search"&gt;  &lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Backlinks &lt;/b&gt;หมายถึงจำนวน link ที่เชื่อมโยงมายัง web page นั้นๆ หรือใช้ วิธีแบบ&lt;br /&gt;&lt;h1 class="firstHeading"&gt;&lt;a href="http://en.wikipedia.org/wiki/Pagerank"&gt;&lt;span style="font-size:100%;"&gt;PageRank&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Linkstruct2.svg/507px-Linkstruct2.svg.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 526px; height: 423px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Linkstruct2.svg/507px-Linkstruct2.svg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;บทสรุปเขาพบว่าวิธีแบบ PageRank เวิร์กสุด ตามมาด้วยแบบ Breadth และ Back link&lt;br /&gt;อย่างไรก็ตามอันนี้เป็นผลการศึกษาที่ไ้ด้ข้อมูลมาจากเพียง Domain เีดียว&lt;br /&gt;&lt;br /&gt;Najork และ Wiener ได้ใช้เทคนิคแบบ Breadth-First สามารถเก็บรวบรวมเวบเพจได้มากถึง 320 ล้านเวบเพจ เทคนิคของพวกเค้าคือ เวลาที่ web crawler ของพวกเขาเลื้อยไปดูดเวบต่างๆนั้น มันใช้วิธีพิจารณาในการดูดเวบเพจนั้น ด้วยการดูที่ High Pagerank (แต่พวกเขาไม่ได้ทำการศึกษาวิธีการอื่นๆ เพื่อเปรียบเทียบผลการทำงาน) หากจะให้อธิบายผลแล้วตอบว่าเวบเพจไหนมีความสำคัญมากที่สุด (ในการที่จะดูดมาเก็บก่อน) ก็ตรงที่มีจำนวน Link จาก Host อื่น ๆ เชื่อมโยงมายังเพจนั้นมากน้อยแค่ไหนนั่นเอง&lt;br /&gt;&lt;br /&gt;Abiteboul ได้ออกแบบวิธีการในการดูดเวบเพจต่างๆ โดยได้สร้าง อัลกอริธึม OPIC (On-line Page Importance Computation)  โดยวิธีการแบบ OPIC นี้ได้กำหนดให้แต่ละ page มีค่าเริ่มต้นค่าหนึ่งซึ่งเรียกว่า "cash" ซึ่งคงเปรียบเทียบคล้ายๆ กับเป็นจำนวนเงินว่าง้าน ซึ่ง เกิดจากจำนวนของการ link ที่ได้เชื่อมมายังเวบนั้น ลักษณะจะคล้ายกับเทคนิค PageRank แต่จะทำเร็วกว่าเพราะทำได้ใน step เดียว ตัว Web crawler ที่ใช้ เทคนิคแบบ OPIC นี้จะทำการดูดเอาเวบเพจที่มีค่า "cash" มากสุดก่อน มีการทดลองประสิทธิภาพในการเก็บข้อมูลประมาณ 100,000 เพจ ด้วยเทคนี้ แต่อย่างไรก็ตาม ก็ยังไม่เคยเอาวิธีการนี้ไปเปรียบเทียบกับวิธีการอื่นๆ ที่มีอยู่หรือนำไปใช้ทดสอบเวบเพจต่างๆ ที่มีอยู่จริง&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-7873398563720504220?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/7873398563720504220/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=7873398563720504220' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7873398563720504220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/7873398563720504220'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/selection-policy.html' title='Selection policy'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5164141560036639743</id><published>2007-08-01T15:33:00.000+07:00</published><updated>2007-08-01T16:02:51.189+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crwaling policies'/><title type='text'>Crawling policies</title><content type='html'>ถ้าอ่านจาก http://en.wikipedia.org/wiki/Web_crawler เรื่อง policies ของ web crawler แล้วเค้าก็บอกว่ามีเรื่องสามเรื่องที่จะเป็นอุปสรรคสำคัญที่ทำให้ web crawler เก็บข้อมูลได้ยากคือ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;its large volume (ข้อมูลที่เก็บมีขนาดใหญ่เกินไป)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;its fast rate of change (เวบเพจนั้นมีอัตราของการเปลี่ยนแปลงอย่างรวดเร็ว)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;dynamic page generation (เวบเพจเป็นแบบ dynamic ไม่คงที่)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;ปัญหาที่หนักที่สุดน่าจะเป็นการเก็บข้อมูลจากเวบที่เขียนขึ้นมาจาก server side script (php,jsp,asp...) เนื่องจาก เนื้อหาของเวบไซต์ที่ได้นั้นมาจากการสร้างขึ้นมา ณ ขณะนั้นที่เข้าไปยังเวบไซต์นั้นๆ ซึ่งอาจนำไปสู่เงื่อนไขที่ทำให้ web crawler ไม่สามารถหลุดออกจากเวบไซต์นั้นได้ ดังนั้น web crawler ต้องมีความระมัดระวังหรือมีความสามารถในการพิจารณาว่าจะไป link ถัดไปหรือไม่ ซึ่งมีประเด็นที่ web crawler ต้องพิจารณาคือ&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;i&gt;selection policy&lt;/i&gt; that states which pages to download.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;วิธีการเลือกเวบไซต์ที่ต้องการเข้าไปเก็บข้อมูล&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A &lt;i&gt;re-visit policy&lt;/i&gt; that states when to check for changes to the pages.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;การตรวจสอบการการเปลี่ยนแปลงของข้อมูลเวบไซต์เพื่อเข้าไปเก็บข้อมูลอีกครั้งหนึ่ง&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A &lt;i&gt;politeness policy&lt;/i&gt; that states how to avoid overloading websites.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;การหลีกเลี่ยงการเข้าไปเก็บข้อมูลเวบไซต์เดิม&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A &lt;i&gt;parallelization policy&lt;/i&gt; that states how to coordinate distributed web crawlers.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;การทำงานร่วมกันกับ web crawlers หลายๆ ตัวเพื่อช่วยกันทำงาน&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5164141560036639743?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5164141560036639743/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5164141560036639743' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5164141560036639743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5164141560036639743'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/crawling-policies.html' title='Crawling policies'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-3330537776285755058</id><published>2007-08-01T14:04:00.000+07:00</published><updated>2007-08-01T15:01:25.336+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web crawlers'/><category scheme='http://www.blogger.com/atom/ns#' term='robots'/><category scheme='http://www.blogger.com/atom/ns#' term='bot'/><category scheme='http://www.blogger.com/atom/ns#' term='spiders'/><title type='text'>Spiders หรือ Robots</title><content type='html'>ค้นไปค้นมาใน Google หรือว่า Wikipedia จะมีคำว่า Web Crawler อีกตัวที่เพิ่มเข้ามาแต่โดยรวมแล้วก็ทำหน้าีที่เหมือนกันนั่นแหละคือไปไล่เก็บข้อมูลจากเวบชาวบ้านเค้า&lt;br /&gt;เอามาจัดเรียงให้เป็นระเบียบเรียบร้อยในฐานข้อมูลของตัวเอง ถ้าจะเอาคำจำกัดความแบบเต็มๆ ลองไปอ่านที่นี่ http://en.wikipedia.org/wiki/Web_crawler&lt;br /&gt;ซึ่่งถ้าให้สรุปก็จะประมาณว่า web crawler หรืออาจถูกเรียกชื่อ เป็น web spiders หรือว่า web robot คือโปรแกรม หรือ autonomous script ที่ทำการ ท่องไปทั่ว world wide web แบบอัตโนมัติ ชื่ออื่นๆ ที่เคยเรียกกันแต่ว่า ตอนนี้ไม่ค่อยมีใครเรียกกัน ก็อาทิเช่น ants (คงสังเกตจากพฤติกรรมการเดินของมด) automatic indexers , bots (คงย่อมาจาก robots) หรือ worm (ไม่แน่ใจว่าตัวเดียวกับไวรัสหรือเปล่าแต่คิดว่าคงดูจาก พฤติกรรม) ถึงตรงนี้มีไอเดีย ในการปรับให้ web &lt;span style="font-weight: bold;"&gt;crawler มาทำหน้าที่ตรวจสอบความถูกต้องของเวบไซต์แหะ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;หลักการทำงานของ web crawler คือเราต้องมี list รายการเริ่มต้นของ URLs ที่จะเริ่มก่อน (ถูกเรียกว่า seeds) เช่น http://www.about.com จากนั้น ให้พิจารณาเนื้อหาที่ได้จาก หน้าแรกของเวบไซต์นี้ โดยให้มองที่ tag hyperlink จากนั้นให้เก็บ hyperlink นั้นไว้ใน list ต่อ ซึ่ง hyperlink ที่เก็บพวกนี้เค้าเรียกกันว่า crawl frontier ซึ่ง url ที่ได้จาก crawl frontier นั้น จะเ็ป็น URLs ที่จะให้ web crawler กลับมาดึงข้อมูลเพื่อไป update ใหม่ ในภายหลัง ( ขึ้นอยู่กับ policies ของ web crawler ที่กำหนด)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-3330537776285755058?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/3330537776285755058/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=3330537776285755058' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3330537776285755058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3330537776285755058'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/08/spiders-robots.html' title='Spiders หรือ Robots'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-6150991934237341770</id><published>2007-08-01T13:28:00.000+07:00</published><updated>2007-08-01T15:02:32.897+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'>การพัฒนา Search Engine</title><content type='html'>ผมจะลองศึกษาและสร้าง Search Engine ขึ้นมาเองจะลองดูว่าจะซับซ้อนและยุ่งยากขนาดไหน หุหุ&lt;br /&gt;ก่อนอื่น ก็ต้อง หาคำจำกัดความของ Search Engine ก่อนดีกว่า อิอิ ถ้าไปลองค้นหาจาก Google ละก็ ได้มาเพียบ เช่น&lt;br /&gt;&lt;span style=""&gt;&lt;li&gt;Internet search engines (eg Google, AltaVista) help users find web pages on a given subject. The search engines maintain databases of web sites and use programs (often referred to as "spiders" or "robots") to collect information, which is then indexed by the search engine. Similar services are provided by "directories," which maintain ordered lists of websites, eg Yahoo!&lt;br /&gt;&lt;a href="http://www.google.co.th/url?sa=X&amp;start=0&amp;amp;oi=define&amp;q=http://www.liv.ac.uk/webteam/glossary/&amp;amp;usg=AFQjCNHshnSyx_XS1cFmow_ISNwcDDfpYw"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;www.liv.ac.uk/webteam/glossary/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;อันนี้เค้าบอกว่า Internet search engines อย่างเช่น Google หรือ AltaVista ช่วยให้ผู้ใช้สามารถค้นหา เวบเพจ จากการป้อนหัวเรื่อง search engines จะต้องเกี่ยวข้องกับฐานข้อมูลที่เก็บข้อมูลเกี่ยวกับเวบไซต์ต่างๆ และใช้โปรแกรม (ส่วนมากจะเรียกว่า "spiders" หรือว่า "robots") สำหรับทำหน้าที่เก็บรวบรวมข้อมูลของเวบไซต์ต่างๆ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;เอาละ อย่างน้อยก็พอรู้ว่า Search Engines มันต้องมีเจ้าตัวโปรแกรมที่เรียกว่า spiders หรือว่า robots สำหรับไปเก็บข้อมูลจากเวบไซต์ต่างๆ มาใส่ไว้ในฐานข้อมูลเพื่อรอให้ผู้ใช้บริการเข้ามาสืบค้นละ&lt;br /&gt;ดังนั้น ถ้าจะเริ่มสร้าง Search Engines มันคงต้องสร้างเจ้าตัว spiders หรือ robots นี่ก่อนละ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-6150991934237341770?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/6150991934237341770/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=6150991934237341770' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/6150991934237341770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/6150991934237341770'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/07/search-engine.html' title='การพัฒนา Search Engine'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-3180372844749865540</id><published>2007-04-15T20:16:00.000+07:00</published><updated>2007-08-03T19:42:06.651+07:00</updated><title type='text'>กรมสรรพากร Web Services ตรวจสอบเลขที่บัตรประชาชน</title><content type='html'>using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Web.UI.HtmlControls;&lt;br /&gt;&lt;br /&gt;using System.Security.Cryptography.X509Certificates;&lt;br /&gt;using System.Net;&lt;br /&gt;using System.Net.Security;&lt;br /&gt;&lt;br /&gt;public partial class _Default : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;  protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;  {&lt;br /&gt;      if (!IsPostBack)&lt;br /&gt;      {&lt;br /&gt;          ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(TrustAllCertificateCallback);&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public string checkpin(string citizen_id)&lt;br /&gt;  {&lt;br /&gt;     th.go.rd.rdws.CheckTINPINService p = new th.go.rd.rdws.CheckTINPINService();&lt;br /&gt;  &lt;br /&gt;     DataSet result = new DataSet();&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;  //  p.ClientCertificates.Add(x509);&lt;br /&gt;   //   p.ServicePINAsync(&lt;br /&gt;   p.Timeout = 600*1000;&lt;br /&gt;    result = p.ServicePIN("anonymous","anonymous",citizen_id);&lt;br /&gt;      string r=string.Empty;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;      foreach (DataRow pRow in result.Tables[0].Rows) {&lt;br /&gt;          r= pRow[1].ToString();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      if (result.Tables.Count &gt;1)&lt;br /&gt;      {&lt;br /&gt;         foreach (DataRow sRow in result.Tables[1].Rows)  {&lt;br /&gt;              r += sRow[0].ToString();&lt;br /&gt;              r += sRow[1].ToString();&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;      if (r=="") {&lt;br /&gt;          return "No "+r;&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      { return "OK "+r;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;  {&lt;br /&gt;      // Load the client certificate from a file.&lt;br /&gt;    //  X509Certificate x509 = X509Certificate.CreateFromCertFile(@"d:\My Project\Demo\AJAXTodoList\iisx509.cer");&lt;br /&gt;&lt;br /&gt;      th.go.rd.rdws.CheckTINPINService p = new th.go.rd.rdws.CheckTINPINService();&lt;br /&gt;  &lt;br /&gt;     DataSet result = new DataSet();&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;  //  p.ClientCertificates.Add(x509);&lt;br /&gt;   //   p.ServicePINAsync(&lt;br /&gt;   p.Timeout = 600*1000;&lt;br /&gt;    result = p.ServicePIN("anonymous","anonymous","citizen id xxxx");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      foreach (DataRow pRow in result.Tables[0].Rows)  {&lt;br /&gt;          CitizenLabel.Text = pRow[0].ToString();&lt;br /&gt;          DigitOkLabel.Text = pRow[1].ToString();&lt;br /&gt;          IsExistLabel.Text = pRow[2].ToString();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      foreach (DataRow sRow in result.Tables[1].Rows)  {&lt;br /&gt;          CodeLabel.Text = sRow[0].ToString();&lt;br /&gt;          DescriptionLabel.Text = sRow[1].ToString();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static bool TrustAllCertificateCallback(Object sender,X509Certificate cert,X509Chain chain,SslPolicyErrors errors)&lt;br /&gt;  {&lt;br /&gt;      return true;&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-3180372844749865540?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/3180372844749865540/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=3180372844749865540' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3180372844749865540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3180372844749865540'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/04/web-serices.html' title='กรมสรรพากร Web Services ตรวจสอบเลขที่บัตรประชาชน'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-3678659455512158062</id><published>2007-01-24T17:53:00.000+07:00</published><updated>2007-01-24T17:55:44.882+07:00</updated><title type='text'>อ่านหนังสือแบบทะจิบานะ VS เรียนหนังสือแบบโนงุ</title><content type='html'>เอาของทาจิบานะ ก่อนนะ&lt;br /&gt;1. อย่าเสียดายเงินในการซื้อหนังสือ เพราะข้อมูลที่มีค่าที่สามารถเรียนรู้ได้จากการอ่าน หนังสือนั้น จะต้องเสียค่าใช้จ่ายในการหามามากกว่าการซื้อหนังสือมาอ่าน หลายสิบหรือหลายร้อยเท่า&lt;br /&gt;&lt;br /&gt;2. จงอ่านหนังสือเกี่ยวกับเรื่องหนึ่งๆ หลายๆ เล่ม&lt;br /&gt;3. จงอย่ากลัวความผิดพลาดที่อาจเกิดจากการซื้อหนังสือที่ไม่มีคุณค่ามาอ่าน&lt;br /&gt;4. จงอย่าฝืนอ่านหนังสือที่ไม่เข้ากับมาตรฐานของตน&lt;br /&gt;5. แม้อ่านผ่านๆ ไปแล้วจนตัดสินใจว่าจะไม่อ่านต่อไปก็ตาม ให้พลิกไปอ่านท่อนท้ายๆ ดู เพราะอาจจะพบอะไรที่คาดไม่ถึง&lt;br /&gt;6. จงฝึกเทคนิคการอ่านหนังสือให้เร็ว&lt;br /&gt;7. อย่าทำย่อความของเรื่องที่อ่าน เพราะแทนที่จะสามารถอ่านได้จบภายในสองชั่วโมง ก็จะต้อง อ่านถึงสองวัน เอาเวลาไปอ่านเล่มอื่นดีกว่า ให้ใช้วิธีขีดเส้นใต้หรือพับหน้ากระดาษแทน&lt;br /&gt;8. จงอย่ายึดมั่นกับคำวิจารณ์หนังสือ หรือ ความเห็นผู้อื่นมากเกินไป&lt;br /&gt;9. จงอย่ามองข้ามหมายเหตุต่างๆ เพราะบางทีมีใจความสำคัญที่ไม่ปรากฏในเนื้อความหลัก&lt;br /&gt;10. จงใช้วิจารณญานในการเชื่อเรื่องต่างๆ ที่อ่าน เพราะแม้แต่หนังสือที่มีชื่อเสียงไม่น้อยก็ ยังมีถ้อยความ "โกหก" อยู่มาก&lt;br /&gt;11. หากผู้เขียนมีความเห็นต่างๆ นอกเหนือจากที่สามารถสรุปได้จากข้อมูลที่กล่าวในหนังสือ ให้ตั้งคำถามว่าผู้เขียนมีหลักฐานอะไรในการเชื่อเช่นนั้น&lt;br /&gt;12. หากพบข้อสงสัยในความถูกต้องอะไรก็ตาม ให้ตรวจสอบกับข้อมูล และค้นหาคำอธิบายจาก จุดนั้นให้ได้&lt;br /&gt;13. การอ่านหนังสือแปลให้ระวังการแปลผิด ซึ่งมักมีอยู่มาก หากพบที่อ่านแล้วไม่เข้าใจ อย่าคิด ว่าตนเองโง่ แต่ให้คิดว่าเป็นไปได้ว่าจุดนั้นมีการแปลผิด&lt;br /&gt;14. อย่าเลิกหาเวลาอ่านหนังสือหลังเรียนจบมหาวิทยาลัยแล้ว เพราะความรู้ที่ได้จากการอ่าน ในตอนหลังนั้น เช่น อ่านเมื่อมีประสบการณ์ทำงานแล้ว จะมีประโยชน์มากกว่า&lt;br /&gt;ส่วนของ โนงุจิ&lt;br /&gt;อ่านต่อฉบับเต็มๆ ได้ที่นี่ครับ &lt;a href="http://www.fedu.uec.ac.jp/ATPIJ/sakkayaphab/vol3-5/art2.html"&gt;http://www.fedu.uec.ac.jp/ATPIJ/sakkayaphab/vol3-5/art2.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-3678659455512158062?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/3678659455512158062/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=3678659455512158062' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3678659455512158062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/3678659455512158062'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/01/vs.html' title='อ่านหนังสือแบบทะจิบานะ VS เรียนหนังสือแบบโนงุ'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5338969843180009376</id><published>2007-01-19T16:54:00.000+07:00</published><updated>2007-01-19T17:01:41.939+07:00</updated><title type='text'>Ruby On IIS</title><content type='html'>การติดตั้ง Ruby บน Windows XP Media Edition ให้สามารถใช้งานร่วมกับ IIS5.1&lt;br /&gt;ทดลองทำตาม&lt;a href="http://rubyforiis.sosukodo.org/rubyforiis/documentation/installationinstructionsforversion01"&gt;เวบไซต์นี้&lt;/a&gt;&lt;br /&gt;สิ่งที่ต้องมีก่อน&lt;br /&gt;1. &lt;a href="http://www.isapirewrite.com/"&gt;ISAPI Rewrite&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://rubyforiis.sosukodo.org/assets/RubyForIIS-0.1.exe"&gt;Ruby for IIS version 0.1&lt;/a&gt;&lt;br /&gt;3. Shane Caraveo’s &lt;a href="http://www.caraveo.com/fastcgi/"&gt;FastCGI binaries for ISAPI&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5338969843180009376?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5338969843180009376/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5338969843180009376' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5338969843180009376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5338969843180009376'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/01/ruby-on-iis.html' title='Ruby On IIS'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5067296772928921690</id><published>2007-01-08T06:44:00.000+07:00</published><updated>2007-01-08T06:47:25.244+07:00</updated><title type='text'>ภาษาใหม่นอกกระแสที่น่าติดตาม</title><content type='html'>1. &lt;a href="http://www.ruby-lang.org"&gt;Ruby&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.python.org"&gt;Python&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5067296772928921690?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5067296772928921690/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5067296772928921690' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5067296772928921690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5067296772928921690'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/01/blog-post.html' title='ภาษาใหม่นอกกระแสที่น่าติดตาม'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-6542869076204819790</id><published>2007-01-04T11:48:00.000+07:00</published><updated>2007-01-04T11:59:47.750+07:00</updated><title type='text'>การซ่อน Control Panel ของ Windows XP</title><content type='html'>ใช้ &lt;span style="font-weight: bold;"&gt;regedit&lt;/span&gt;&lt;br /&gt;ไปที่&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows&lt;br /&gt;\CurrentVersion\Policies\Explorer&lt;br /&gt;สร้าง ข้อมูลแบบ DWORD ชื่อ NoControlPanel  กำหนดค่าให้เป็น "1"&lt;br /&gt;&lt;br /&gt;Tip จาก &lt;a href="http://searchwincomputing.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid68_gci1186994,00.html"&gt;searchwincomputing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-6542869076204819790?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/6542869076204819790/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=6542869076204819790' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/6542869076204819790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/6542869076204819790'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/01/control-panel-windows-xp.html' title='การซ่อน Control Panel ของ Windows XP'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-8425380532267412186</id><published>2007-01-01T22:36:00.000+07:00</published><updated>2007-01-01T22:45:44.161+07:00</updated><title type='text'>SOA</title><content type='html'>ภารกิจต่อไปคือ SOA (Services Oriented Architecture )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-8425380532267412186?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/8425380532267412186/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=8425380532267412186' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/8425380532267412186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/8425380532267412186'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2007/01/soa.html' title='SOA'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5199131720859483027</id><published>2006-12-22T15:16:00.000+07:00</published><updated>2006-12-22T15:20:21.102+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Research'/><title type='text'>Project Research</title><content type='html'>1. Download On Demand&lt;br /&gt;2. VOD (like You Tube)&lt;br /&gt;3. Logistics&lt;br /&gt;4. RFID&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5199131720859483027?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5199131720859483027/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5199131720859483027' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5199131720859483027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5199131720859483027'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2006/12/project-research.html' title='Project Research'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4786988991528769667.post-5216426367348295530</id><published>2006-12-22T15:06:00.000+07:00</published><updated>2006-12-22T15:07:40.800+07:00</updated><title type='text'>Hi</title><content type='html'>เริ่มต้นเขียน Blog ใน Blogger ครั้งแรก&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4786988991528769667-5216426367348295530?l=newbiedevman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbiedevman.blogspot.com/feeds/5216426367348295530/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4786988991528769667&amp;postID=5216426367348295530' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5216426367348295530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4786988991528769667/posts/default/5216426367348295530'/><link rel='alternate' type='text/html' href='http://newbiedevman.blogspot.com/2006/12/hi.html' title='Hi'/><author><name>Freeman</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
