showrecentposts({"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$georss":"http://www.georss.org/georss","id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338"},"updated":{"$t":"2009-11-09T23:51:35.325+07:00"},"title":{"type":"text","$t":"NooM.Dev"},"subtitle":{"type":"html","$t":"IT life cycle. \nDevelopment, Test, Implement, Travel ..."},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/posts/default"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default?alt\u003djson-in-script\u0026orderby\u003dpublished"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"},{"rel":"next","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default?alt\u003djson-in-script\u0026start-index\u003d26\u0026max-results\u003d25\u0026orderby\u003dpublished"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"}}],"generator":{"version":"7.00","uri":"http://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"89"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"25"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-2630776836182158766"},"published":{"$t":"2009-09-17T10:58:00.004+07:00"},"updated":{"$t":"2009-09-17T11:07:08.721+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"Can't backup the extension .cch files"},"content":{"type":"html","$t":"พี่ admin เดินมาถามผมว่า cch file คืออะไร มันทำให้การ Backup ไม่ completed\u003cbr /\u003eโดยไฟล์ที่ถูก Skip ไปได้ คือ Security.Config.cch\u003cbr /\u003e\u003cbr /\u003eจึงถามหาป๋ากู ได้ผลดังนี้\u003cbr /\u003e1. จาก microsoft \u003ca href\u003d\"http://support.microsoft.com/kb/815168\"\u003ehttp://support.microsoft.com/kb/815168\u003c/a\u003e บอกว่า\u003cbr /\u003e    \"The files that have the extension .cch are dynamically generated and do not have to be backed up or restored. You may find some files that have numbers appended to their .cch extensions. When you try to make backups of these files, you may receive errors because the files are in use. You must not make backups of these files because these files are cache files.\"\u003cbr /\u003e\u003cbr /\u003e2. จาก symantec \u003ca href\u003d\"http://support.veritas.com/docs/277549\"\u003ehttp://support.veritas.com/docs/277549\u003c/a\u003e (มีการอ้างถึง Microsoft Knowledge Base Article 815168 ข้างต้น) บอกว่า\u003cbr /\u003e\u003cbr /\u003e\"Files that have the extension .cch are dynamically generated and do not have to be backed up or restored.\u003cbr /\u003eSee Microsoft Knowledge Base Article 815168 for more details on this issue.  This article also contains more information on how to back up and restore .NET Framework configuration and security policy files.Adding an exclusion for these types of .cch files within VERITAS NetBackup (tm) should resolve the issue. \"\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003eสรุปคือ ไม่ต้องไป Backup ไฟล์ cch นี่คือคำตอบสุดท้ายของ Microsoft\u003cbr /\u003e!!?????!!!?#@#@#!!??\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-2630776836182158766?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/2630776836182158766/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d2630776836182158766","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/2630776836182158766"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/2630776836182158766"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2009/09/cant-backup-extension-cch-files.html","title":"Can't backup the extension .cch files"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-5341959362825757773"},"published":{"$t":"2009-09-15T21:39:00.003+07:00"},"updated":{"$t":"2009-09-15T22:31:09.721+07:00"},"title":{"type":"text","$t":"NEXT TO JAVA"},"content":{"type":"html","$t":"เอาดีกับ .NET มานาน\u003cbr /\u003eรู้สึกว่าอยากรู้อย่างอื่นบ้าง\u003cbr /\u003eพอดีมี Out source ที่จ้างมาจะใช้ NetBeans\u003cbr /\u003eเลยนึกออกว่า รื้อ JAVA อีกสักที\u003cbr /\u003e\u003cbr /\u003eDownload \u003ca href\u003d\"http://www.netbeans.org/\"\u003eNetBeans\u003c/a\u003e มาแล้ว\u003cbr /\u003eDownload \u003ca href\u003d\"http://java.sun.com/javase/downloads/index.jsp\"\u003eJDK 6 Update 16\u003c/a\u003e มาแล้ว\u003cbr /\u003e\u003cbr /\u003eเริ่มต้นศึกษามาบ้างแล้ว จาก\u003cbr /\u003e\u003ca href\u003d\"http://www.thaijavadev.com/\"\u003ehttp://www.thaijavadev.com/\u003c/a\u003e\u003cbr /\u003e\u003ca href\u003d\"http://www.thainetbeans.com/\"\u003ehttp://www.thainetbeans.com/\u003c/a\u003e\u003cbr /\u003eฯลฯ\u003cbr /\u003eแล้วก็ โหลด โหลด โหลด e-book ไว้เยอะ แยะ\u003cbr /\u003e\u003cbr /\u003eอ่าน อ่าน อ่าน ก่อนลงมือ\u003cbr /\u003eน่าจะเริ่มจาก JSE จากนั้นจะต่อด้วย J2EE\u003cbr /\u003e\u003cbr /\u003eไว้คืบหน้ายังจะเล่าสู่กันฟัง\u003cbr /\u003e\u003cbr /\u003eปล. แค่เริ่มก็มันส์แล้ว อยากไป J2EE เร็วๆ จัง\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-5341959362825757773?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/5341959362825757773/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d5341959362825757773","title":"2 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/5341959362825757773"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/5341959362825757773"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2009/09/next-to-java.html","title":"NEXT TO JAVA"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"2"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-4980411023563605267"},"published":{"$t":"2009-04-15T20:30:00.003+07:00"},"updated":{"$t":"2009-04-15T20:40:28.768+07:00"},"title":{"type":"text","$t":"ผมกลับมาแล้ว"},"content":{"type":"html","$t":"ผมเว้นวรรคไปนานหลายเวลาเลยทีเดียว ยังมีชีวิตอยู่ครับ แต่ภาระกิจมากพอตัว ถึงคราวนี้กลับมาแล้วครับ โดยกลับมาแบบทันเหตุการณ์สลายม๊อบเสื้อแดงที่ผ่านมาสดๆ ร้อนๆ\u003cbr /\u003e\u003cbr /\u003eมีลิงค์คลิปมาฝาก เป็นคลิปหลุดขำๆ ของอดีตนายกฯ ที่ยังลี้ภัยต่างแดน ลองดูสิ อิอิอิ\u003cbr /\u003e\u003ca href\u003d\"http://www.youtube.com/watch?v\u003dP1T1aKk2neg\"\u003ehttp://www.youtube.com/watch?v\u003dP1T1aKk2neg\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eและก็คลิปโห่ไล่เสื้อแดงที่จะมาปิดถนนบริเวณถนนสาธร จนเผ่นแน่บ อิอิอิ\u003cbr /\u003e\u003ca href\u003d\"http://play.kapook.com/vdo/show-68234\"\u003ehttp://play.kapook.com/vdo/show-68234\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003eไม่อยากให้เครียด ไม่อยากเห็นคนไทยทำร้ายกันเอง อยากให้คนไทยรักกัน\u003cbr /\u003e\"รักกันไว้เถิด เราเกิดร่วมแดนไทย จะเกิดชาติไหนไหน ก็ไทยด้วยกัน\"\u003cbr /\u003e\u003cbr /\u003eปล. สำหรับบทความทางเทคนิค จะเริ่มทยอยเขียนให้แล้วนะ หลังจากสะสมพลังซะนาน\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-4980411023563605267?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/4980411023563605267/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d4980411023563605267","title":"3 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/4980411023563605267"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/4980411023563605267"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2009/04/blog-post.html","title":"ผมกลับมาแล้ว"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"3"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-8273825013104646803"},"published":{"$t":"2009-01-02T22:34:00.014+07:00"},"updated":{"$t":"2009-01-02T23:03:11.979+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ท่องเที่ยว"}],"title":{"type":"text","$t":"ตลาดสามชุก ตลาดร้อยปี"},"content":{"type":"html","$t":"กลายเป็นบล็อกท่องเที่ยวไปแล้วซะนี่ คราวนี้มาอัพเดตแหล่งท่องเที่ยวชื่อดังแห่งหนึ่งของจังหวัดสุพรรณบุรี แหล่งท่องเที่ยวนั้นคือ ตลาดสามชุก หรือ ตลาดร้อยปี นั่นเอง\u003cbr /\u003e\u003cbr /\u003eออกเดินทางวันที่ 2 มกราคม 2552 มุ่งสู่ตลาดทันที ระยะทางก็ไม่ใกล้ไม่ไกลประมาณ 150 กม. จากกรุงเทพ\u003cbr /\u003e\u003cbr /\u003eคนเยอะมาก นึกว่าเดินตลาดคลองถม แต่โชคดีที่วันนี้อากาศเย็นสบาย\u003cbr /\u003e(สังเกตจากศีรษะคนสิ พยายามให้หลบกล้องแล้วนะ)\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV42Hysr_FI/AAAAAAAAAi0/c7EFMKFTHVs/s1600-h/PB230016.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV42Hysr_FI/AAAAAAAAAi0/c7EFMKFTHVs/s400/PB230016.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286722520075730002\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eตู้ไปรษณีย์โบราณ ให้เคยเห็นแถวบ้านบ้าง แสดงว่าเกิดทัน\u003cbr /\u003eี\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://4.bp.blogspot.com/_WtpPr2DcLLo/SV42X70sGWI/AAAAAAAAAi8/_LfqNHlkqFo/s1600-h/PB230017.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 300px; height: 400px;\" src\u003d\"http://4.bp.blogspot.com/_WtpPr2DcLLo/SV42X70sGWI/AAAAAAAAAi8/_LfqNHlkqFo/s400/PB230017.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286722797403117922\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eโปสการ์ดกิ๊บๆ แต่ราคาไม่ค่อยน่าคบเท่าไหร่\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV42-ieAYOI/AAAAAAAAAjE/in2J5uLM4U0/s1600-h/PB230014.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 300px; height: 400px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV42-ieAYOI/AAAAAAAAAjE/in2J5uLM4U0/s400/PB230014.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286723460611989730\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eข้าวหลามแตกมัน (ไม่ใช่ตกมัน)\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV43mOS6D0I/AAAAAAAAAjM/CWRdb5nFeS4/s1600-h/PB230015.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 300px; height: 400px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV43mOS6D0I/AAAAAAAAAjM/CWRdb5nFeS4/s400/PB230015.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286724142391496514\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003eร้านปู่มา ....\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SV44EeLns5I/AAAAAAAAAjU/bgR9y2t6Fg0/s1600-h/PB230026.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 300px; height: 400px;\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SV44EeLns5I/AAAAAAAAAjU/bgR9y2t6Fg0/s400/PB230026.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286724662051976082\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eที่ร้านปู่มามีรูปเก่าที่หาชมได้ยาก\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV44Vytn2iI/AAAAAAAAAjc/nf24W96Psjg/s1600-h/PB230025.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV44Vytn2iI/AAAAAAAAAjc/nf24W96Psjg/s400/PB230025.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286724959621077538\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eของเล่นไขลาน โหอย่างเยอะ... อยากได้ อยากได้\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV44v-EvSVI/AAAAAAAAAjk/uhTYaDnP8eA/s1600-h/PB230012.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV44v-EvSVI/AAAAAAAAAjk/uhTYaDnP8eA/s400/PB230012.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286725409347422546\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eนี่ก็มีอีก ... อยากได้ อยากได้\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SV45STYYqiI/AAAAAAAAAjs/flOCsO1FHGk/s1600-h/PB230013.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SV45STYYqiI/AAAAAAAAAjs/flOCsO1FHGk/s400/PB230013.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286725999182522914\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eส่วนนี่ขนมขนาดมินิ ดูยี่ห้อสิ ของจริงซะที่ไหน  (แต่กินได้นะ)\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://4.bp.blogspot.com/_WtpPr2DcLLo/SV45vW4ufyI/AAAAAAAAAj0/IFk17AxlgBw/s1600-h/PB230040.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://4.bp.blogspot.com/_WtpPr2DcLLo/SV45vW4ufyI/AAAAAAAAAj0/IFk17AxlgBw/s400/PB230040.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286726498339684130\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eส่วนไอ้กระป๋องหุ่นสองตัวนี้ก็ได้มาดับความกระเหี้ยนกระหือรือ\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SV46LHFQoMI/AAAAAAAAAj8/OFwdw7H9TUg/s1600-h/PB230043.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SV46LHFQoMI/AAAAAAAAAj8/OFwdw7H9TUg/s400/PB230043.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5286726975133622466\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eจบแล้วนะ\u003cbr /\u003eไทยเที่ยวไทย\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-8273825013104646803?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/8273825013104646803/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d8273825013104646803","title":"6 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8273825013104646803"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8273825013104646803"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2009/01/blog-post.html","title":"ตลาดสามชุก ตลาดร้อยปี"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://3.bp.blogspot.com/_WtpPr2DcLLo/SV42Hysr_FI/AAAAAAAAAi0/c7EFMKFTHVs/s72-c/PB230016.JPG","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"6"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-8197224166906617175"},"published":{"$t":"2008-12-31T11:01:00.002+07:00"},"updated":{"$t":"2008-12-31T11:07:51.269+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ทั่วไป"}],"title":{"type":"text","$t":"ส่งท้ายปีเก่าต้อนรับปีใหม่ 2552"},"content":{"type":"html","$t":"ขอให้ทุกท่านมีความสุขตลอดปี 2552 และตลอดไปด้วยครับ\u003cbr /\u003eสุขสันต์ปีใหม่ 2552\u003cbr /\u003e\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SVrv_FWtddI/AAAAAAAAAis/tv7wBTXPgG0/s1600-h/happy_new_2009.jpg\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 268px;\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SVrv_FWtddI/AAAAAAAAAis/tv7wBTXPgG0/s400/happy_new_2009.jpg\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5285800979720926674\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-8197224166906617175?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/8197224166906617175/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d8197224166906617175","title":"4 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8197224166906617175"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8197224166906617175"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/12/2552.html","title":"ส่งท้ายปีเก่าต้อนรับปีใหม่ 2552"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://2.bp.blogspot.com/_WtpPr2DcLLo/SVrv_FWtddI/AAAAAAAAAis/tv7wBTXPgG0/s72-c/happy_new_2009.jpg","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"4"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-3129537409769202658"},"published":{"$t":"2008-12-15T22:30:00.009+07:00"},"updated":{"$t":"2009-01-02T23:03:47.634+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ท่องเที่ยว"}],"title":{"type":"text","$t":"ทุ่งทานตะวัน จังหวัดสระบุรี ภาค 2"},"content":{"type":"html","$t":"เอารูปมาให้ดูเพิ่มเติมอีก ตามมาเลยครับ\u003cbr /\u003e\u003cbr /\u003eเอ้าทั้งหมดจัดแถว\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SUZ4e0XeM-I/AAAAAAAAAZg/x5dEQB7Y0uA/s1600-h/PB030014.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SUZ4e0XeM-I/AAAAAAAAAZg/x5dEQB7Y0uA/s400/PB030014.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5280040083986985954\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SUZ41deY4TI/AAAAAAAAAZo/NjWtuIZAXqc/s1600-h/PB030040.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SUZ41deY4TI/AAAAAAAAAZo/NjWtuIZAXqc/s400/PB030040.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5280040472978972978\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eถ่ายคุณผึ้ง สงสัยอายกล้อง\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUZ5HPc8RmI/AAAAAAAAAZw/ZGhrwAzRxYs/s1600-h/PB030044.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUZ5HPc8RmI/AAAAAAAAAZw/ZGhrwAzRxYs/s400/PB030044.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5280040778452452962\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eคุณเอ๋ เจ้าของรูปดอกทานตะวันใส่หมวกที่ผมขโมยเขามาโพส หุหุหุหุ\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SUZ58U_lpEI/AAAAAAAAAZ8/MQucN_DFb5U/s1600-h/PB030030.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 300px; height: 400px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SUZ58U_lpEI/AAAAAAAAAZ8/MQucN_DFb5U/s400/PB030030.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5280041690473014338\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eปิดท้ายด้วยรูปสเต็กเนื้อนกกระจอกเทศ ที่ไร่อรุณปภัสรา ขอบอกและขอบอกว่าเนื้อนุ่มและอร่อยมากๆๆ\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SUZ6tw2PylI/AAAAAAAAAaE/UmYDFQDXn7A/s1600-h/PC130270.JPG\"\u003e\u003cimg style\u003d\"cursor: pointer; width: 400px; height: 300px;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SUZ6tw2PylI/AAAAAAAAAaE/UmYDFQDXn7A/s400/PC130270.JPG\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5280042539763616338\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eแค่นี้ละกัน ไทยเที่ยวไทยนะครับ สนุกมากๆ\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-3129537409769202658?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/3129537409769202658/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d3129537409769202658","title":"5 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/3129537409769202658"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/3129537409769202658"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/12/2.html","title":"ทุ่งทานตะวัน จังหวัดสระบุรี ภาค 2"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://2.bp.blogspot.com/_WtpPr2DcLLo/SUZ4e0XeM-I/AAAAAAAAAZg/x5dEQB7Y0uA/s72-c/PB030014.JPG","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"5"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-1168209299740069660"},"published":{"$t":"2008-12-15T11:42:00.009+07:00"},"updated":{"$t":"2009-01-02T23:04:11.821+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ท่องเที่ยว"}],"title":{"type":"text","$t":"ทุ่งทานตะวัน จังหวัดสระบุรี"},"content":{"type":"html","$t":"\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eเอารูปทุ่งทานตะวัน ณ อ.มวกเหล็ก จ.สระบุรี มาให้ชมกัน\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eออกเดินทางวันเสาร์ที่ 13 ธันวาคม 2551 เวลา 6.30 น. ถึงที่หมายเวลา 9.30 น. โดยประมาณ\u003c/span\u003e\u003cbr /\u003e\u003cdiv\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eตอนนี้ดอกกำลังสวนมากเลย แต่แดดร้อนนะ ตัวดำเลยเรา เอ้าชมภาพได้เลย\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/div\u003e\u003cdiv\u003e\u003ca href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUXhIgCPIHI/AAAAAAAAAYw/ejSIQSIGJ2A/s1600-h/PC130168.JPG\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5279873674316292210\" style\u003d\"width: 400px; height: 300px;\" alt\u003d\"\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUXhIgCPIHI/AAAAAAAAAYw/ejSIQSIGJ2A/s400/PC130168.JPG\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/div\u003e\u003cdiv\u003e\u003ca href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SUXhZ99wFOI/AAAAAAAAAY4/gwNc_gCwCcg/s1600-h/PC130176.JPG\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5279873974408320226\" style\u003d\"width: 400px; height: 300px;\" alt\u003d\"\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SUXhZ99wFOI/AAAAAAAAAY4/gwNc_gCwCcg/s400/PC130176.JPG\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/div\u003e\u003cdiv\u003e \u003c/div\u003e\u003cdiv\u003e\u003c/div\u003e\u003cdiv\u003e\u003c/div\u003e\u003cdiv\u003e\u003ca href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUXhr0qmKvI/AAAAAAAAAZA/6M32F26HbGI/s1600-h/PC130195.JPG\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5279874281149704946\" style\u003d\"width: 400px; height: 300px;\" alt\u003d\"\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUXhr0qmKvI/AAAAAAAAAZA/6M32F26HbGI/s400/PC130195.JPG\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-1168209299740069660?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/1168209299740069660/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d1168209299740069660","title":"8 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/1168209299740069660"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/1168209299740069660"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/12/blog-post.html","title":"ทุ่งทานตะวัน จังหวัดสระบุรี"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://1.bp.blogspot.com/_WtpPr2DcLLo/SUXhIgCPIHI/AAAAAAAAAYw/ejSIQSIGJ2A/s72-c/PC130168.JPG","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"8"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-5161402066047605014"},"published":{"$t":"2008-09-10T15:58:00.004+07:00"},"updated":{"$t":"2008-09-10T16:10:12.670+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"SQL Server"}],"title":{"type":"text","$t":"Sybase SQL Tuning"},"content":{"type":"html","$t":"เหนื่อยครับช่วงนี้ แต่ไม่เท่าไหร่ครับ พอมีเวลามาอัพเดตกันเล็กน้อย หลังจากที่หายไปนานเลยครับ\u003cbr /\u003eมาตอนนี้ผมขอกล่าวถึง SQL Tuning ครับ ถึงแม้ว่าตัวผมจะผ่านการเขียน SQL Statement มาอย่างโชกโชน  แต่ในเรื่องการจูนนิ่งแล้ว ยังต้องศึกษาอีกพอสมควร อันความรู้ที่มีอยู่นั้นก็เพียงพอกับการแก้ปัญหาเท่านั้น แต่หากต้องการความรู้ระดับผู้เชี่ยวชาญแล้วนั้นขอบอกว่า สำหรับผมแล้วยังอีกยาวไกลครับ\u003cbr /\u003e\u003cbr /\u003eคราวนี้ผมขอย้ายไปค่าย Sybase นะครับ เนื่องจากใช้งานอยู่จริง แต่โดยหลักๆ แล้ว Statement คล้ายกับ MS SQL Server มาก น่าจะสามารถใช้หลัการ Tuning ร่วมกันได้\u003cbr /\u003e\u003cbr /\u003eผมขอแนะนำ link เหล่านี้ครับ บอกเทคนิคการ Tuning SQL ไว้อย่างน่าสนใจเลยทีเดียว คือ\u003cbr /\u003e\u003ca href\u003d\"http://www.lcard.ru/~nail/sybase/perf/66.htm\"\u003ehttp://www.lcard.ru/~nail/sybase/perf/66.htm\u003c/a\u003e\u003cbr /\u003eและ pdf ไฟล์เทคนิคการทำ Performance and Tuning ของ Sybase\u003cbr /\u003e\u003ca href\u003d\"http://download.sybase.com/pdfdocs/srg1100e/sqlsrvpt.pdf\"\u003ehttp://download.sybase.com/pdfdocs/srg1100e/sqlsrvpt.pdf\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eขอบอก ขอบอก ของเขาดีจริงเชียวล่ะ\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-5161402066047605014?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/5161402066047605014/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d5161402066047605014","title":"7 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/5161402066047605014"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/5161402066047605014"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/09/sybase-sql-tuning.html","title":"Sybase SQL Tuning"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"7"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-8112112588542237349"},"published":{"$t":"2008-05-31T23:44:00.002+07:00"},"updated":{"$t":"2008-05-31T23:58:57.830+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"Tutorial for Gof Design Pattern in VB.NET"},"content":{"type":"html","$t":"Today, I found a web site that describes about Design Pattern in VB.NET. I am reading this artical and I think that it is a good artical. Additional it free. I would like to advise you to reading it.\u003cbr /\u003e\u003cbr /\u003e\u003ca href\u003d\"http://www.programmersheaven.com/2/Design-Patterns-in-VB\"\u003ehttp://www.programmersheaven.com/2/Design-Patterns-in-VB\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003ePS. I want to learn about Design Pattern with VB.NET, I clearly understand.\u003cbr /\u003e\u003cbr /\u003eHave a nice day.\u003cbr /\u003eNooM\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-8112112588542237349?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/8112112588542237349/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d8112112588542237349","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8112112588542237349"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8112112588542237349"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/tutorial-for-gof-design-pattern-in.html","title":"Tutorial for Gof Design Pattern in VB.NET"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-8069743089447203616"},"published":{"$t":"2008-05-31T13:06:00.012+07:00"},"updated":{"$t":"2008-12-11T17:54:33.242+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"สััมมนา"}],"title":{"type":"text","$t":"งาน REMIX SEA 2008"},"content":{"type":"html","$t":"งาน REMIX SEA 2008 ก็ผ่านไปด้วยดี งานนี้ได้ทั้งกระเป๋าเป้สุดสวย และซอฟท์แวร์สุดเจ๋ง\u003cbr /\u003eผมมีภาพงานเล็กๆ น้อยๆ มาฝากกันด้วยนะ ลองชมกันดู\u003cbr /\u003e\u003cbr /\u003eเปิดตัวงานสัมมนาด้วยนางรำ(ถือร่มด้วยนะ)\u003cbr /\u003e\u003cbr /\u003e\u003ca href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SEDs7GKELTI/AAAAAAAAAXU/Q8AfthbnZX0/s1600-h/01.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206421669249559858\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SEDs7GKELTI/AAAAAAAAAXU/Q8AfthbnZX0/s400/01.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDtR2KELUI/AAAAAAAAAXc/vn2MkCwD0ss/s1600-h/02.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206422060091583810\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDtR2KELUI/AAAAAAAAAXc/vn2MkCwD0ss/s400/02.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eSiverlight คร๊าบพี่น้อง\u003cbr /\u003e\u003ca href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDtm2KELVI/AAAAAAAAAXk/0IBiS8DmyCw/s1600-h/04.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206422420868836690\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDtm2KELVI/AAAAAAAAAXk/0IBiS8DmyCw/s400/04.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eคนเกาหลีจะมา Show case ให้ชมกัน\u003cbr /\u003e\u003ca href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SEDt-mKELWI/AAAAAAAAAXs/9HETRYTAJw0/s1600-h/05.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206422828890729826\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SEDt-mKELWI/AAAAAAAAAXs/9HETRYTAJw0/s400/05.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eหนึ่งใน web ที่ใช้ silverlight ของเกาหลีเขาล่ะครับ (\u003ca href\u003d\"http://tvdeep.mnet.com/\"\u003ehttp://tvdeep.mnet.com/\u003c/a\u003e)\u003cbr /\u003e\u003ca href\u003d\"http://4.bp.blogspot.com/_WtpPr2DcLLo/SEDuRWKELXI/AAAAAAAAAX0/EDlY3Q_yRYE/s1600-h/07.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206423151013277042\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://4.bp.blogspot.com/_WtpPr2DcLLo/SEDuRWKELXI/AAAAAAAAAX0/EDlY3Q_yRYE/s400/07.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eนี่ก็ Shiverlight ครับ เจ๋งจริงๆ (\u003ca href\u003d\"http://shiverlight.net/\"\u003ehttp://shiverlight.net/\u003c/a\u003e)\u003cbr /\u003e\u003ca href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDwl2KELZI/AAAAAAAAAYE/R6Ceu2hKpfo/s1600-h/08.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206425702223850898\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDwl2KELZI/AAAAAAAAAYE/R6Ceu2hKpfo/s400/08.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eกระเป๋าเป้ครับสวยไหม\u003cbr /\u003e\u003ca href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDup2KELYI/AAAAAAAAAX8/KhtrsM80lDA/s1600-h/06.jpg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5206423571920072066\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SEDup2KELYI/AAAAAAAAAX8/KhtrsM80lDA/s400/06.jpg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eจบข่าวสั้นทันเหตุการณ์\u003cbr /\u003eสวัสดีครับ\u003cbr /\u003e\u003cbr /\u003eรวม link Silverlight show case ของเกาหลีเขาล่ะ\u003cbr /\u003e1. \u003ca href\u003d\"http://tvdeep.mnet.com/\"\u003ehttp://tvdeep.mnet.com/\u003c/a\u003e\u003cbr /\u003e2. \u003ca href\u003d\"http://shiverlight.net/\"\u003ehttp://shiverlight.net/\u003c/a\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-8069743089447203616?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/8069743089447203616/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d8069743089447203616","title":"1 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8069743089447203616"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8069743089447203616"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/remix-sea-2008.html","title":"งาน REMIX SEA 2008"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://3.bp.blogspot.com/_WtpPr2DcLLo/SEDs7GKELTI/AAAAAAAAAXU/Q8AfthbnZX0/s72-c/01.jpg","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"1"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-902220318705630557"},"published":{"$t":"2008-05-26T09:08:00.006+07:00"},"updated":{"$t":"2008-05-26T10:25:15.504+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"ดัก Key stroke CTRL+S"},"content":{"type":"html","$t":"ใน VB.NET เราสามารถเขียนโปรแกรมเพื่อตรวจจับ Key stroke จำพวกคีย์รวมได้ เช่น CTRL+S, ALT+A โดยการใช้อีเว็นต์ KeyDown\u003cbr /\u003e\u003cbr /\u003e\u003cpre class\u003d\"small\"\u003e\u003cbr /\u003e    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown\u003cbr /\u003e        If e.KeyData \u003d Keys.Control + Keys.S Then\u003cbr /\u003e            MessageBox.Show(\"Your key stroke is CTRL+S\")\u003cbr /\u003e        End If\u003cbr /\u003e    End Sub\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003eโดยต้องกำหนด Properties ชื่อ KeyPreview ของ Form1 เป็น True ด้วยนะ\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-902220318705630557?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/902220318705630557/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d902220318705630557","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/902220318705630557"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/902220318705630557"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/key-stroke-ctrls.html","title":"ดัก Key stroke CTRL+S"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-751194563051150625"},"published":{"$t":"2008-05-15T13:51:00.004+07:00"},"updated":{"$t":"2008-05-15T14:01:18.729+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Games"}],"title":{"type":"text","$t":"darkSector...easy"},"content":{"type":"html","$t":"I completely finished darkSector on last sunday. I'm very happy. The big boss is not hard in my openion. I try to kill him within 2 times.\u003cbr /\u003e\u003cbr /\u003eGTA2 is a next games that I will play. It's a very cool game in this world.\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-751194563051150625?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/751194563051150625/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d751194563051150625","title":"3 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/751194563051150625"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/751194563051150625"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/darksectoreasy.html","title":"darkSector...easy"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"3"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-5235328471612514624"},"published":{"$t":"2008-05-15T13:41:00.002+07:00"},"updated":{"$t":"2008-05-15T13:47:10.952+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"สััมมนา"}],"title":{"type":"text","$t":"งานสัมมนา Remix SEA 08"},"content":{"type":"html","$t":"งานสัมมนาระดับภูมิภาคเอเชียตะวันออกเฉียงใต้เพื่ออัพเดตเทคโนโลยีใหม่สุดๆ ก่อนใคร ใครสนใจเข้าไปดูได้ที่ \u003ca href\u003d\"http://www.remixsea.com/\"\u003ehttp://www.remixsea.com/\u003c/a\u003e แต่งานนี้เสียเงินนะครับ ไม่ฟรีเหมือนครั้งอื่นๆ\u003cbr /\u003e\u003cbr /\u003eงานจะมีขึ้นในวันที่ 29 พฤษภาคม 2551 ณ Central World\u003cbr /\u003eส่วนผมได้สิทธิพิเศษเข้าร่วมงานฟรีครับ อิอิอิอิ\u003cbr /\u003eไว้จะมาเล่าให้อ่านกันนะครับ\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-5235328471612514624?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/5235328471612514624/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d5235328471612514624","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/5235328471612514624"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/5235328471612514624"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/remix-sea-08.html","title":"งานสัมมนา Remix SEA 08"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-9083704437147720170"},"published":{"$t":"2008-05-08T16:59:00.006+07:00"},"updated":{"$t":"2008-12-11T17:54:33.525+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Certificate"}],"title":{"type":"text","$t":"Upgrade from MCSD to MCPD Enterprise"},"content":{"type":"html","$t":"I'm preparing to exam MCPD Enterprise by upgrade from MCSD. I found that this certificate needs to passed 2 exam are 70-553 and 70-554.\u003cbr /\u003e\u003cbr /\u003e1. \u003ca href\u003d\"http://www.microsoft.com/learning/exams/70-553.mspx\"\u003e70-553 is UPGRADE: MCSD Microsoft .NET Skills to MCPD Enterprise Application Developer by Using the Microsoft .NET Framework: Part 1\u003c/a\u003e\u003cbr /\u003e2. \u003ca href\u003d\"http://www.microsoft.com/learning/exams/70-554.mspx\"\u003e70-554 is UPGRADE: MCSD Microsoft .NET Skills to MCPD Enterprise Application Developer by Using the Microsoft .NET Framework: Part 2\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eBelow pictures show all books for this exam:\u003cbr /\u003e70-553\u003cbr /\u003e\u003ca href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SCLbrZXH15I/AAAAAAAAAXE/AbsL6rNq0ss/s1600-h/70-553.JPG\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5197958458527700882\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/SCLbrZXH15I/AAAAAAAAAXE/AbsL6rNq0ss/s400/70-553.JPG\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e70-554\u003cbr /\u003e\u003ca href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SCLb15XH16I/AAAAAAAAAXM/2lOy9bhSXf4/s1600-h/70-554.JPG\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5197958638916327330\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/SCLb15XH16I/AAAAAAAAAXM/2lOy9bhSXf4/s400/70-554.JPG\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-9083704437147720170?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/9083704437147720170/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d9083704437147720170","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/9083704437147720170"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/9083704437147720170"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/upgrade-from-mcsd-to-mcpd-enterprise.html","title":"Upgrade from MCSD to MCPD Enterprise"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://1.bp.blogspot.com/_WtpPr2DcLLo/SCLbrZXH15I/AAAAAAAAAXE/AbsL6rNq0ss/s72-c/70-553.JPG","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-1849456619868356581"},"published":{"$t":"2008-05-08T15:56:00.002+07:00"},"updated":{"$t":"2008-05-08T16:01:00.846+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Certificate"}],"title":{"type":"text","$t":"Certificate เก่าจะหมดอายุแล้ว"},"content":{"type":"html","$t":"\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eตามที่ผมเคยบอกไปก่อนหน้านี้แล้วว่า ผมจะพยายามสอบให้ได้ MCPD ใหม่ภายในปีนี้ โดยจะเริ่ม upgrade ขั้นแรกภายในเดือนนี้ เพราะอะไรนะหรือ ก็เพราะว่า MCAD, MCSD ของผมจะหมดอายุลงในวันที่ 31 มีนา 2552 แล้วน่ะสิ ถ้าไม่เริ่ม upgrade ตอนนี้ แล้วหวังจะ upgrade ตอนใกล้ๆ แล้วละก็ ผมแย่แน่ๆ เลย\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eดูประกาศของไมโครซอฟท์ได้ที่ \u003c/span\u003e\u003ca href\u003d\"http://www.microsoft.com/learning/mcpexams/status/examstoretire.mspx\"\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003ehttp://www.microsoft.com/learning/mcpexams/status/examstoretire.mspx\u003c/span\u003e\u003c/a\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eใครอยากสอบบ้างยกมือขึ้น ผมมีเทคนิคดีๆ จะบอกครับ ใครอยากรู้ถามหลังไมค์ได้เลย\u003c/span\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-1849456619868356581?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/1849456619868356581/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d1849456619868356581","title":"1 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/1849456619868356581"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/1849456619868356581"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/certificate.html","title":"Certificate เก่าจะหมดอายุแล้ว"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"1"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-1075423642530197990"},"published":{"$t":"2008-05-06T14:13:00.002+07:00"},"updated":{"$t":"2008-12-11T17:54:33.865+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ทั่วไป"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Games"}],"title":{"type":"text","$t":"Dark Sector"},"content":{"type":"html","$t":"\u003ca href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SCAGoySU-lI/AAAAAAAAAW0/NaynS8Fwa4o/s1600-h/darksector_header.jpeg\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5197161267748731474\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/SCAGoySU-lI/AAAAAAAAAW0/NaynS8Fwa4o/s320/darksector_header.jpeg\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003c/div\u003e\u003cbr /\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eI play the Dark Sector, that is a XBox360 games, for 2 weeks. On this weekend, I encounter the boss in Chapter 4. It is a robot. I can not knock it down. I try to fight many times until I give up. I seach a guide book for play this games. I found it is link at \u003c/span\u003e\u003ca href\u003d\"http://www.mycheats.com/view/superguide/3148404/dark_sector/ps3\"\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003ehttp://www.mycheats.com/view/superguide/3148404/dark_sector/ps3\u003c/span\u003e\u003c/a\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e .\u003c/span\u003e\u003c/div\u003e\u003cbr /\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003c/div\u003e\u003cbr /\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eNext weekend I will destroy it, the robot that I used to loss ... u will die... 555+\u003c/span\u003e\u003c/div\u003e\u003cdiv\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e\u003c/span\u003e \u003c/div\u003e\u003cdiv\u003e \u003c/div\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-1075423642530197990?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/1075423642530197990/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d1075423642530197990","title":"2 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/1075423642530197990"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/1075423642530197990"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/dark-sector.html","title":"Dark Sector"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://2.bp.blogspot.com/_WtpPr2DcLLo/SCAGoySU-lI/AAAAAAAAAW0/NaynS8Fwa4o/s72-c/darksector_header.jpeg","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"2"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-6934917741584031913"},"published":{"$t":"2008-05-03T12:06:00.007+07:00"},"updated":{"$t":"2008-05-03T12:26:36.088+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ทั่วไป"},{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"Design Pattern for VB.NET and C#"},"content":{"type":"html","$t":"\u003cp\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003eNow, I'm looking for e-books those have details about \"OO Design Pattern for VB.NET and C#\". \u003c/span\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003cbr /\u003eI need to know in-deep for that. Today I'm downloading some e-books included \u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003cbr /\u003e- Addison Wesley-Gang Of Four-Design Patterns, Elements Of Reusable Object Oriented Software\u003cbr /\u003e- Addison Wesley Design Patterns Elements of Reusable Object Oriented Software by GOF.RUS\u003cbr /\u003e- C# - Addison Wesley - Gang of Four - Design Patterns, Elements of Reusable Object Oriented Software \u003c/p\u003e\u003cp\u003e\u003cbr /\u003eI don't know its have contexts I need. But if I have more details about OO Design Patterns, I will let you know.\u003cbr /\u003e\u003cbr /\u003eP.S. on next month, I plan to exam for MCPD by upgrade from MCSD.NET before it expire on next year.\u003c/span\u003e\u003c/p\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-6934917741584031913?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/6934917741584031913/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d6934917741584031913","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/6934917741584031913"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/6934917741584031913"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/design-pattern-for-vbnet-and-c.html","title":"Design Pattern for VB.NET and C#"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-9212565242215512417"},"published":{"$t":"2008-05-02T16:54:00.002+07:00"},"updated":{"$t":"2008-05-02T17:16:33.918+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"แก้ปัญหา ODBC connection"},"content":{"type":"html","$t":"\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eวันนี้ผมต้องคิดหาวิธีการติดต่อฐานข้อมูล Sybase โดยไม่ต้องลงทะเบียน ODBC ทางออกของผมคือ google (ไม่ใช่ yahoo หรือ msn ฮา)\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eและผมก็พบกับ \u003c/span\u003e\u003ca href\u003d\"http://www.databasejournal.com/features/mssql/article.php/1491051\"\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003ehttp://www.databasejournal.com/features/mssql/article.php/1491051\u003c/span\u003e\u003c/a\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e มันเป็นแสงสว่างรำไรของผมเลยทีเดียว\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eในนั้นเขาพูดถึงปัญหาของการใช้ ODBC (ซึ่งบางครั้งก็เลี่ยงไม่ได้) ต่างๆ เช่น หากเครื่อง PC มีหลายพันเครื่อง คุณต้องตายแน่ๆ แต่เขาได้เสนอทางออกไว้ 4 ทาง คือ\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e1. เขียน ConnectionString โดยอ้างถึง DSN ไฟล์\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eเช่น dim cnstr as string \u003d \"FILEDSN\u003dc:\\myDsn.dsn\"\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003eวิธีการสร้าง dsn ก็แสนง่ายสามารถสร้างได้ใน ODBC Data Source Administrator ได้เลยครับ\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e2. เขียนโค้ดเพื่อสร้าง registry เอง ข้อนี้ยุ่งยากไป ผมขี้เกียจ\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:trebuchet ms;\"\u003e3. ทำการ export จาก registry จาก HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\ และ HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\ODBC Data Sources จะได้ไฟล์ reg แล้วก็เอาไปติดตั้งที่เครื่อง client\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e4. เขียน Windows Scripting Host เพื่อติดตั้ง ODBC ข้อนี้ผมไม่ถนัด กรุณาอ่านเองนะ (อิอิ)\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e5. ใช้ DSN-Less Connection ข้อนี้แหละที่ผมปิ้ง Idea ทันที\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003eผมเอาข้อ 1 และ ข้อ 5 มารวมกันโดยเมื่อผมได้สร้าง dsn ไฟล์ขึ้นมาแล้ว ผมก็จัดการเปิดมันด้วย notepad แล้วเอา script มันมาใส่เป็น connectionString ซะเลย 555+ ปรากฏว่ามันเวิร์คครับ\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003eผมเล่าให้ฟังเท่านั้น ถ้าใครสนใจกรุณาอีเมลล์มาถามนะ ไม่มีเวลาเขียนรายละเอียดตอนนี้และหากเขียนไปกลัวจะไม่มีใครอ่าน เหอ เหอ เหอ\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:Trebuchet MS;\"\u003e\u003c/span\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-9212565242215512417?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/9212565242215512417/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d9212565242215512417","title":"1 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/9212565242215512417"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/9212565242215512417"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/05/odbc-connection.html","title":"แก้ปัญหา ODBC connection"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"1"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-6285365713487670492"},"published":{"$t":"2008-04-17T08:32:00.003+07:00"},"updated":{"$t":"2008-04-17T08:50:32.480+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ทั่วไป"}],"title":{"type":"text","$t":"จบแล้ว HEROES ทั้ง 2 ภาค"},"content":{"type":"html","$t":"ด้วยความมันส์และน่าติดตามเป็นอย่างมากของซีรีย์เรื่องนี้ ผมก็อาศัยช่วงหยุดสงกรานต์ดูจนจบทั้ง 2 ภาคเลยเชียว\u003cbr /\u003e\u003cbr /\u003eภาคแรกจบแบบมันส์ๆ แต่เนื้อเรื่องดูยืดเยื้อไปหน่อย\u003cbr /\u003eส่วนภาคสองจบแบบเรียบง่าย แต่เนื้อเรื่องเข้มเข้น\u003cbr /\u003e\u003cbr /\u003eรอภาคสามอยู่นะคร๊าบบบบบ\u003cbr /\u003e\u003cbr /\u003eใครยังไม่ได้ดู ผมขอแนะนำให้หามาดูได้เลยครับ รับประกันความมันส์\u003cbr /\u003e\u003cbr /\u003e\"SAVE  THE  WORLD\"\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"color: rgb(255, 255, 255);\"\u003e.\u003c/span\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-6285365713487670492?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/6285365713487670492/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d6285365713487670492","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/6285365713487670492"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/6285365713487670492"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/04/heroes-2.html","title":"จบแล้ว HEROES ทั้ง 2 ภาค"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-306649382206420703"},"published":{"$t":"2008-03-20T13:31:00.004+07:00"},"updated":{"$t":"2008-03-20T13:42:55.124+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"ทั่วไป"}],"title":{"type":"text","$t":"ได้ดู HEROES แล้ววววว"},"content":{"type":"html","$t":"อ้างอิงจาก \u003ca href\u003d\"http://noomdev.blogspot.com/2008/01/heros-happen-here.html\"\u003ehttp://noomdev.blogspot.com/2008/01/heros-happen-here.html\u003c/a\u003e\u003cbr /\u003eมาวันนี้ผมก็ได้ดูแล้วครับ HEROES\u003cbr /\u003eแม้จะพึ่งดูไปเพียง 2 แผ่น ก็ขอบอกได้เลยครับท่านว่า สนุกมากๆ\u003cbr /\u003eเนื้อเรื่องเริ่มต้นอาจจะดูน่าเบื่อไปบ้าง แต่ก็เข้มข้นจริงๆครับ ดูแล้วยังงงๆ กับเหตุการณ์ต่างๆ อยู่พอสมควร ไม่แน่ใจว่าอาจจะต้องดูสัก 2 รอบ\u003cbr /\u003e\u003cbr /\u003eส่วนตอนนี้ HEROES ปีที่ 2 ก็ออกมาแล้วนะครับ กำลังหาของอยู่ แต่เพื่อนผมเขาได้ดูกันแล้ว อีกไม่นานก็คงมาถึงผมสักที จะดูให้หายอยกเลย อิอิ\u003cbr /\u003e\u003cbr /\u003eปล. ตอนนี้ผมเงียบหายไปเลย แต่ยังไม่ตายนะครับ ยังมีชีวิตอยู่ แต่มันเป็ีนชีวิตใหม่ที่ผมกำลังเผชิญอยู่ และมันก็ท้าทายผมพอสมควร จึงอาจจะไม่ค่อยเห็นผมอัพบล็อกเลย ก็ให้คิดถึงกันแบบนี้ไปก่อนนะครับ\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-306649382206420703?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/306649382206420703/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d306649382206420703","title":"5 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/306649382206420703"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/306649382206420703"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/03/heroes.html","title":"ได้ดู HEROES แล้ววววว"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"5"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-3933644506834844348"},"published":{"$t":"2008-02-06T16:02:00.000+07:00"},"updated":{"$t":"2008-02-06T16:32:48.443+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Crystal Report"},{"scheme":"http://www.blogger.com/atom/ns#","term":"ASP.NET"}],"title":{"type":"text","$t":"CRAXDRT Error Occured on Server. - 2147467259"},"content":{"type":"html","$t":"วันนี้ผมได้ช่วยพี่คนหนึ่งซึ่งพบ Error ขณะกำลัง Export ข้อมูลจาก Crystal Report\u003cbr /\u003eโดยเป็นโปรแกรมที่ run อยู่บน asp page ซึ่ง Error ที่พบคือ\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-weight: bold; color: rgb(255, 0, 0);\"\u003eCRAXDRT Error Occurred on Server, -2147467259 : 006~ASP 0251~Response Buffer  Limit Exceeded~Execution of The ASP page caused the Response Buffer to exceed  its configured limit.\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003eผมลองค้นหาจากแหล่งต่างๆ และพบผู้บอกวิธีแก้ไขไว้ ดังนี้ (กระผมขออนุญาตยกมาทั้งข้อความเลยครับ)\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-size:130%;\"\u003e\u003cspan style\u003d\"font-weight: bold;\"\u003eCRAXDRT Error Occured On Server\u003c/span\u003e\u003c/span\u003e\u003cbr /\u003eCRAXDRT Error Occured On Server. - 2147467259 : 006~ASP 0251~Response Buffer Limit Exceeded~Execution of the ASP page caused the Response Buffer to exceed its configured limit.\u003cbr /\u003e\u003cbr /\u003eCannot export report into word file which contains a large amount of data. Cannot import Crystal Reports related to Agent and Skillset performance.\u003cbr /\u003e\u003cbr /\u003eCRAXDRT Error Occurred on Server, -2147467259 : 006~ASP 0251~Response Buffer Limit Exceeded~Execution of The ASP page caused the Response Buffer to exceed its configured limit.\u003cbr /\u003e\u003cbr /\u003eRequest object error 'ASP 0104 : 80004005'\u003cbr /\u003e\u003cbr /\u003eOperation not allowed.\u003cbr /\u003e/Reporting/Historical/outputfile.asp, line 223\u003cbr /\u003e\u003cbr /\u003eCause:\u003cbr /\u003eBy default, Microsoft Internet Information Services (IIS) 6.0 sets the value of the AspMaxRequestEntityAllowed and AspBufferingLimit metabase key to 204,800 bytes.\u003cbr /\u003e\u003cbr /\u003eFix:\u003cbr /\u003eEdit the metabase.xml using Notepad and increase the values for AspMaxRequestEntityAllowed and AspBufferingLimit. For example, setting to 1073741824 will increase the file size to 1 GB.\u003cbr /\u003e\u003cbr /\u003ePosted by lam at April 1, 2007 04:22 PM\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003eแหล่งที่มา \u003ca href\u003d\"http://www.blogger.com/www.movement3.com\" target\u003d\"_blank\"\u003ewww.movement3.com\u003c/a\u003e (\u003ca href\u003d\"http://www.movement3.com/b/archives/2007/04/craxdrt_error_o.php\" target\u003d\"_blank\"\u003ehttp://www.movement3.com/b/archives/2007/04/craxdrt_error_o.php\u003c/a\u003e)\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003eผมขออธิบาย ดังนี้\u003cbr /\u003e1. เนื่องจาก IIS6.0 ซึ่ง run อยู่บน Windows Server 2003 กำหนด buffer ไว้เพียง  4 MB (4194304) เท่านั้น\u003cbr /\u003e2. เดิมโปรแกรมนี้ run บน IIS5.0 บนหครื่อง Windows 2000 ซึ่งไม่พบปัญหา (ผมยังไม่มีเวลาไปดูว่าใน IIS5.0 มันกำหนด buffer ไว้เท่าไร)\u003cbr /\u003e\u003cbr /\u003eแนวทางแก้ไข\u003cbr /\u003e1. เปิด IIS6.0 ขึ้นมา\u003cbr /\u003e2. คลิกขวาที่ Web Server(local computer) เลือก properties\u003cbr /\u003e3. ที่หน้าต่าง Web Server(local computer) Properties ให้คลิกเลือก \"Enable Direct Metabase Edit\"\u003cbr /\u003e4. กดปุ่ม Apply และ กดปุ่ม OK\u003cbr /\u003e5. เข้าไปยัง C:\\WINDOWS\\system32\\inetsrv และเปิดไฟล์ชื่อ metabase.xml โดยใช้ NotePad\u003cbr /\u003e6. ค้นหาคำว่า AspBufferingLimit\u003cbr /\u003e7. แก้ไขค่าจาก 4194304 เป็นค่าที่เราต้องการ เช่น 15728640 (15 MB)\u003cbr /\u003e8. เลือก File --\u003e Save\u003cbr /\u003e9. ปิด NotePad\u003cbr /\u003e10. ทำข้อ 1-2 อีกครั้ง แต่คราวนี้ให้เอาเครื่องหมายถูกหน้า \"Enable Direct Metabase Edit\" ออก\u003cbr /\u003e11. เสร็จพิธีกรรม นอนหลับฝันดี\u003cbr /\u003e\u003cbr /\u003eขอขอบคุณ lam จาก movement3.com ที่ได้เคย post ไว้เพื่อให้ผมได้เข้ามาหาทางออกได้\u003cbr /\u003eและขอบคุณคุณ MR.L สำหรับข้อมูลพาธไฟล์ที่ผมได้รู้จากกระทู้ของคุณ (\u003ca href\u003d\"http://greatfriends.biz/webboards/msg.asp?id\u003d56100\"\u003ehttp://greatfriends.biz/webboards/msg.asp?id\u003d56100\u003c/a\u003e)\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-3933644506834844348?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/3933644506834844348/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d3933644506834844348","title":"2 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/3933644506834844348"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/3933644506834844348"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/02/craxdrt-error-occured-on-server.html","title":"CRAXDRT Error Occured on Server. - 2147467259"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"2"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-2228707643489091898"},"published":{"$t":"2008-01-26T23:02:00.000+07:00"},"updated":{"$t":"2008-12-11T17:54:34.149+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"{Heroes} happen here."},"content":{"type":"html","$t":"\u003cspan style\u003d\"font-family:verdana;\"\u003eตอนนี้หากใครได้เข้าไปยังเว็บหลัก\u003c/span\u003e\u003ca href\u003d\"http://www.microsoft.com/thailand\"\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003eไมโครซอฟท์ ประเทศไทย \u003c/span\u003e\u003c/a\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003eน่าจะมองเห็นมุมหนึ่งที่มีข้อความว่า \u003cstrong\u003e\"{Heroes} happen here.\"\u003c/strong\u003e แล้วเกิดความสงสัยไหมว่า \u003cstrong\u003e\"มันคืออะไร\"\u003c/strong\u003e วันนี้ผมจะมีคำอธิบายความหมายให้ได้อ่านกัน\u003cbr /\u003e\u003cbr /\u003eก่อนอื่นผมขอยกหนังซีรี่ย์เรื่อง Heroes ชื่อดังของอเมริกาก่อนนะครับ เขาว่ากันว่าหนังเรื่องนี้เป็นหนังที่สนุกมากๆ ถึงแม้ว่าผมยังไม่ได้มีโอกาสได้ดูก็ตาม ผมก็ยังเชื่อแบบนั้น เพราะผมเป็นคนเชื่อคนง่ายครับ (โดยเฉพาะผู้หญิง)\u003cbr /\u003e\u003cbr /\u003e\u003c/span\u003e\u003ca href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/R5tgVYnbAiI/AAAAAAAAAWU/1onudG3tmHQ/s1600-h/heros.jpg\"\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003cimg id\u003d\"BLOGGER_PHOTO_ID_5159823718584353314\" style\u003d\"CURSOR: hand\" alt\u003d\"\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/R5tgVYnbAiI/AAAAAAAAAWU/1onudG3tmHQ/s320/heros.jpg\" border\u003d\"0\" /\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003cbr /\u003e\u003cbr /\u003eหนังซีรี่ย์เรื่องนี้เป็นเรื่องราวเกี่ยวกับมนุษย์ที่ได้วิวัฒนาการก้าวหน้า จนทำให้มียีนที่ทำให้เจ้าตัวมีพลังพิเศษต่างๆ เช่น บิน หยุดเวลา เทเลพอร์ท แรงช้าง รีเจนเนอเรตฯลฯ แต่ก็เกิดเรื่องวุ่นๆขึ้นเมื่อมีคนบางกลุ่มได้วางแผนการบางอย่างกับพวกเขา ทุกสิ่งทุกอย่าง ล้วนเป็นไปตามที่ชะตา(ปลอมๆ)ลิขิตไว้ หรือ เขาเหล่านั้นจะลิขิตชะตาใหม่ให้ตนเองได้หรือไม่...\u003cbr /\u003e\u003cbr /\u003eน่าดูใช่ไหมครับ ตอนนี้ผมก็กำลังหาอยู่เหมือนกัน ถ้าได้ดูจริงๆแล้วล่ะก็จะมาบอกว่าสนุกเหมือนที่คิดไว้หรือเปล่า\u003cbr /\u003e\u003cbr /\u003eอ่านมาตั้งนานคงเริ่มสงสัยแล้วสิครับว่ามันเกี่ยวกับ {Heroes} happen here. อย่างไร คำตอบก็คือ \"เหล่าผู้กล้าถือกำเนิดขึ้นที่นี่\" แค่แปลให้ฟังเฉยๆ ก็ยังคงงงกันอยู่ ผมขอขยายความให้ฟังตามรอยยักอันน้อยนิดในสมองของผมว่า\u003cbr /\u003e\u003cbr /\u003eเหล่าผู้กล้า (Heroes) \u003d นักพัฒนาระบบที่มีความเชี่ยวชาญ (Professional Developer)\u003cbr /\u003eถือกำเนิดขึ้นที่นี่ (happen here) \u003d ที่บ้าน? ที่ทำงาน? ที่ห้องน้ำ? แล้วที่ไหนล่ะ (ผมก็ไม่รู้ รู้แต่ว่าเป็น ที่นี่)\u003cbr /\u003e\u003cbr /\u003eรวมแล้วน่าจะหมายถึง เหล่านักพัฒนาระบบที่มีความเชี่ยวชาญได้ถือกำเนิดขึ้นแล้วที่นี่\u003cbr /\u003e\u003cbr /\u003eและเหตุผลที่เขาใช้เครื่องหมาย { } ระหว่างคำว่า Heroes นั้น ผมเข้าใจว่า ในการเขียนโปรแกรมภาษา C, C++, JAVA, C# ฯลฯ (ยกเว้น ภาษา Basic) เขาจะใช้เครื่องหมายนี้เพื่อกำหนดบล๊อกของโค้ดว่าเริ่มต้นและสิ้นสุดตรงไหน ดังนั้น เหล่าฮีโร่ทั้งหลายนั้น ก็เปรียบเสมือนผู้ที่สรรสร้างโค้ดที่อยู่ภายใต้เครื่องหมาย { } นั่นเอง\u003cbr /\u003e\u003cbr /\u003eแล้วคุณอยากเป็นฮีโร่บ้างไหมล่ะ ลองเข้ามาดูเว็บนี้ดูสิน่าจะมีหลายละเอียดให้บ้างไม่มากไม่น้อย \u003c/span\u003e\u003ca href\u003d\"http://www.microsoft.com/thailand/heroeshappenhere/default.aspx\" target\u003d\"_blank\"\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003eHeroes happen here.\u003c/span\u003e\u003c/a\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e เพื่อจะได้เข้าไปอยู่ใน { } กับเขาบ้างก็ได้นะ ใครจะไปรู้\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003cbr /\u003e\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003eป.ล. ในวันนี้ผมได้มีโอกาสติดตั้ง Visual Studio 2008 Professional Edition หลังจากที่ผมได้เอาเวอร์ชัน Express ออกแล้ว และลองจับเวลาดูครับ เริ่มติดตั้ง 15.30 น. ติดตั้งรวม Documens เสร็จเมื่อ 22.00 น. โอ้ววว ทำไมมันถึงได้นานขนาดนี้...\u003c/span\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003cbr /\u003e\u003c/span\u003e\u003cspan style\u003d\"font-family:verdana;\"\u003e\u003c/span\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-2228707643489091898?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/2228707643489091898/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d2228707643489091898","title":"4 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/2228707643489091898"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/2228707643489091898"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2008/01/heros-happen-here.html","title":"{Heroes} happen here."}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://2.bp.blogspot.com/_WtpPr2DcLLo/R5tgVYnbAiI/AAAAAAAAAWU/1onudG3tmHQ/s72-c/heros.jpg","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"4"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-8702656343614811155"},"published":{"$t":"2007-12-19T10:48:00.000+07:00"},"updated":{"$t":"2008-12-11T17:54:34.783+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"},{"scheme":"http://www.blogger.com/atom/ns#","term":"ASP.NET"}],"title":{"type":"text","$t":"Cryptography Simplified in Microsoft.NET"},"content":{"type":"html","$t":"\u003cspan style\u003d\"font-weight: bold; color: rgb(153, 0, 0);font-size:130%;\" \u003eตอนที่ 2 เพิ่มความปลอดกัยของ Hash Algorithm  ด้วย Salt\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003eจาก \u003ca href\u003d\"http://noomdev.blogspot.com/2007/12/cryptography-simplified-in-microsoftnet.html\" target\u003d\"_blank\"\u003eตอนที่ 1 บทนำ และ Hash Algorithm\u003c/a\u003e ได้กล่าววิธีการเข้่ารหัสแบบ on-way หรือ แบบทางเดียว (ถอดรหัสไม่ได้) โดยได้เสนอวิธีของการทำ Hash ด้วย RSA และ SHA1 พร้อมกับ แสดงตัวอย่างของโค้ดไปบ้างแล้ว มาตอนที่ 2 นี้ผมก็ยังอยู่ในเรื่องของ Hash ครับ ซึ่งเป็นเรื่องของการใช้้ Hash อย่างปลอดภัยครับ\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"color: rgb(0, 0, 153);font-size:130%;\" \u003e\u003cspan style\u003d\"font-weight: bold;\"\u003eเพิ่ม Salt ใน Hash เพื่อควารมปลอดภัยยิ่งขึ้น\u003c/span\u003e\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003eปัญหาอย่างหนึ่งของการ Hash คือ หากมี user 2 คนกำหนด Password เหมือนกัน เขาทั้งคู่ก็จะได้ Hash data เดียวกันทุกประการ ดังนั้นถ้าผมเป็น Hacker แล้วสามารถเข้าไปดูใน table ที่เก็บรหัสผ่านได้ ผมก็จะเห็น user 2 คนมี Hash data เหมือนกัน ผมสามารถเดาได้ว่า Password นั้นน่าจะเป็นเพียงคำง่ายๆ ก็จะลองทำ dictionary attack ดู เรามีวิธีแก้ไข คือ การเพิ่มคำที่เป็นเอกลักษณ์(Unique) เข้าไปใน Password แล้วจึงค่อยทำการ Hash\u003cbr /\u003e\u003cbr /\u003eคำที่เป็นเอกลักษณ์นี้ก็คือ Salt นั่นเอง\u003cbr /\u003e\u003cbr /\u003eแต่ในการใช้ Salt นั้น เราก็ต้องเก็บ Salt ไว้ด้วยเช่นกัน เพื่อใช้เป็นส่วนหนึ่งของ Password ในการ Hash เมื่อ user ทำการล๊อกอินเข้าสู่ระบบ และเพื่อเป็นการปลอดภัยของ Salt เช่นกัน เราจึงควรเก็บ Salt ไว้แยกออกจากตารางที่เก็บ User id และ Password\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"color: rgb(0, 0, 153);font-size:130%;\" \u003e\u003cspan style\u003d\"font-weight: bold;\"\u003eวิธีในการเพิ่ม Salt เข้าไปใน Password\u003c/span\u003e\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003eขอยกตัวอย่างวิธีที่ง่ายที่สุดก่อนคือ การนำข้อมูลส่วนอื่นๆ ของ user เช่น ชื่อ  นามสกุล  อีเมลล์แอดเดรส  หรือ รหัสพนักงาน  เข้าไปใน Password แล้วจึงทำการ Hash แต่วิธีนี้มีข้อเสียคือ เนื่องจากเราต้องเก็บ Salt ไว้แยกจากตารางข้อมูล user id และ Password ดังนั้นมันดูเป็นการตั้งใจเกินไปหากเราจะแยกเก็บ ชื่อ หรือ นามสกุล ออกไปจากตารางนี้ และ Hacker ก็ฉลาดมากพอที่จะเข้าใจในสิ่งที่เรากำลังทำอยู่\u003cbr /\u003e\u003cbr /\u003eวิธีที่ดีกว่า คือ การสร้างคำแบบสุ่ม โดยอาศัยคลาสใน .NET Framework ชื่อ RNGCryptoServiceProvider โดยคลาสนี้จะสร้าง array ของ byte แบบสุ่มตามขนาดที่เรากำหนดขึ้นเอง แล้วจึงนำ array ของ byte นี้มาใช้เป็น Salt เพื่อทำการ Hash ต่อไป\u003cbr /\u003e\u003cbr /\u003eโค้ดฟังก์ชันการสร้าง Salt\u003cbr /\u003eโดยคืนค่ากลับมาเป็น String ที่สุ่มมาแล้ว\u003cbr /\u003e\u003cpre class\u003d\"normal\"\u003e\u003cbr /\u003e  Private Function CreateSalt() As String\u003cbr /\u003e      Dim byteSalt(8) As Byte\u003cbr /\u003e      Dim rng As New Security.Cryptography.RNGCryptoServiceProvider\u003cbr /\u003e\u003cbr /\u003e      rng.GetBytes(byteSalt)\u003cbr /\u003e\u003cbr /\u003e      Return Convert.ToBase64String(byteSalt)\u003cbr /\u003e  End Function\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cbr /\u003eเมื่อเราทำการ Hash ก็ให้ Concat ค่า Salt กับ Password เข้าด้วยกันแล้วจึงทำการ Hash\u003cbr /\u003e\u003cpre class\u003d\"small\"\u003e\u003cbr /\u003e  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click\u003cbr /\u003e      SaltTextBox.Text \u003d CreateSalt()\u003cbr /\u003e      TextBox2.Text \u003d HashText(SaltTextBox.Text \u0026amp; TextBox1.Text)\u003cbr /\u003e  End Sub\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cbr /\u003eส่วนฟังก์ชัน Hash ยังคงเดิม\u003cbr /\u003e\u003cpre class\u003d\"normal\"\u003e\u003cbr /\u003e  Private Function HashText(ByVal TextToHash As String) As String\u003cbr /\u003e      Dim SHA1 As System.Security.Cryptography.SHA1CryptoServiceProvider\u003cbr /\u003e      Dim byteValue() As Byte\u003cbr /\u003e      Dim byteHash() As Byte\u003cbr /\u003e\u003cbr /\u003e      ' Instanciate SHA1\u003cbr /\u003e      SHA1 \u003d New System.Security.Cryptography.SHA1CryptoServiceProvider\u003cbr /\u003e      byteValue \u003d System.Text.Encoding.UTF8.GetBytes(TextToHash)\u003cbr /\u003e\u003cbr /\u003e      byteHash \u003d SHA1.ComputeHash(byteValue)\u003cbr /\u003e\u003cbr /\u003e      SHA1.Clear()\u003cbr /\u003e\u003cbr /\u003e      Return Convert.ToBase64String(byteHash)\u003cbr /\u003e  End Function\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cbr /\u003eผลลัพธ์ เมื่อทำการ Hash ข้อมูลเดียวกันด้วย Salt 2 ครั้ง ก็จะได้ Hash data ไม่เหมือนกัน\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/R2ijGmjYA5I/AAAAAAAAAWE/FRO3tl3FgX8/s1600-h/hash1.jpg\"\u003e\u003cimg style\u003d\"cursor: pointer;\" src\u003d\"http://1.bp.blogspot.com/_WtpPr2DcLLo/R2ijGmjYA5I/AAAAAAAAAWE/FRO3tl3FgX8/s320/hash1.jpg\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5145541908094256018\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003e\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/R2ijN2jYA6I/AAAAAAAAAWM/5FcMeLYOKH4/s1600-h/hash2.jpg\"\u003e\u003cimg style\u003d\"cursor: pointer;\" src\u003d\"http://2.bp.blogspot.com/_WtpPr2DcLLo/R2ijN2jYA6I/AAAAAAAAAWM/5FcMeLYOKH4/s320/hash2.jpg\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5145542032648307618\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eอย่าลืมว่าการใช้ Salt เราต้องเก็บค่า Salt ไว้ด้วยเพื่อใช้ในการ Hash ข้อมูลเมื่อ user ทำการล๊อกอินเข้ามา โดยต้องหาที่เก็บ Salt ให้ปลอดภัยด้วย\u003cbr /\u003e\u003cspan style\u003d\"color: rgb(255, 255, 255);\"\u003e.\u003c/span\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-8702656343614811155?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/8702656343614811155/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d8702656343614811155","title":"3 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8702656343614811155"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8702656343614811155"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2007/12/cryptography-simplified-in-microsoftnet_19.html","title":"Cryptography Simplified in Microsoft.NET"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://1.bp.blogspot.com/_WtpPr2DcLLo/R2ijGmjYA5I/AAAAAAAAAWE/FRO3tl3FgX8/s72-c/hash1.jpg","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"3"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-4628324164154496707"},"published":{"$t":"2007-12-17T13:27:00.000+07:00"},"updated":{"$t":"2008-12-11T17:54:35.212+07:00"},"title":{"type":"text","$t":"NooM's daemon"},"content":{"type":"html","$t":"\u003ca onblur\u003d\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/R2YXUmjYA4I/AAAAAAAAAV8/BKfEkeT4GdA/s1600-h/daemon.jpg\"\u003e\u003cimg style\u003d\"cursor: pointer;\" src\u003d\"http://3.bp.blogspot.com/_WtpPr2DcLLo/R2YXUmjYA4I/AAAAAAAAAV8/BKfEkeT4GdA/s320/daemon.jpg\" alt\u003d\"\" id\u003d\"BLOGGER_PHOTO_ID_5144825267031114626\" border\u003d\"0\" /\u003e\u003c/a\u003e\u003cbr /\u003e\u003cbr /\u003eนี่คือ Daemon ของผม แล้วของคุณล่ะ\u003cbr /\u003eเข้าไปค้นหา Daemon ของคุณได้ที่นี่ \u003cspan style\u003d\";font-family:Times New Roman;font-size:130%;\"  \u003e\u003cspan style\u003d\"font-size:14;\"\u003e\u003ca href\u003d\"http://www.goldencompassmovie.com/\"\u003ehttp://www.goldencompassmovie.com/\u003c/a\u003e\u003co:p\u003e\u003cbr /\u003e\u003c/o:p\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style\u003d\";font-family:Times New Roman;font-size:130%;\"  \u003e\u003cspan style\u003d\"font-size:14;\"\u003e\u003co:p\u003e\u003c/o:p\u003e\u003c/span\u003e\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cobject height\u003d\"400\" width\u003d\"450\"\u003e\u003cparam name\u003d\"movie\" value\u003d\"http://goldencompassmovie.com/goldenCompass_blog.swf?id\u003d734231\"\u003e\u003cembed src\u003d\"http://goldencompassmovie.com/goldenCompass_blog.swf?id\u003d734231\" type\u003d\"application/x-shockwave-flash\" menu\u003d\"false\" height\u003d\"400\" width\u003d\"450\"\u003e\u003c/embed\u003e\u003c/object\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-4628324164154496707?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/4628324164154496707/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d4628324164154496707","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/4628324164154496707"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/4628324164154496707"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2007/12/nooms-daemon.html","title":"NooM's daemon"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"http://3.bp.blogspot.com/_WtpPr2DcLLo/R2YXUmjYA4I/AAAAAAAAAV8/BKfEkeT4GdA/s72-c/daemon.jpg","height":"72","width":"72"},"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-3280874170034771338.post-8051868243109012894"},"published":{"$t":"2007-12-12T21:30:00.000+07:00"},"updated":{"$t":"2007-12-12T21:47:23.719+07:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":".NET Framework"}],"title":{"type":"text","$t":"Cryptography Simplified in Microsoft.NET"},"content":{"type":"html","$t":"\u003cspan style\u003d\"font-weight: bold; color: rgb(51, 0, 153);font-size:130%;\" \u003eตอนที่ 1 บทนำ และ Hash Algorithm\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-weight: bold; color: rgb(204, 0, 0);font-size:130%;\" \u003eบทนำ\u003cbr /\u003e\u003cbr /\u003e\u003c/span\u003e        ในการเก็บข้อมูลที่สำคัญหรือเป็นความลับในคอมพิวเตอร์นั้น เพื่อให้มีความปลอดภัยจากการเข้าถึงของบุคคลที่ไม่เกี่ยวข้อง หรือจากการขโมยข้อมูล เราควรมีการทำ Cryptography เพื่อปกป้องข้อมูลของเรา\u003cbr /\u003e\u003cbr /\u003eCryptography เป็นศาสตร์ของการแปลงอักขระที่มีความหมายให้เป็นอักขระที่ไม่มีความหมาย ทำให้มนุษย์ไม่สามารถอ่านออกได้\u003cbr /\u003e\u003cbr /\u003eศาสตร์นี้มีมานานหลายปีแล้ว มีมาก่อนคอมพิวเตอร์เสียอีก ซึ่ง Microsoft เองนั้นได้พัฒนา API สำหรับการทำ Cryptography มาตั้งแต่ Windows 95 จนมาถึง .NET ได้มีคลาสใหม่ๆ ซึ่งห่อหุ้ม Algorithm ในการทำ Cryptography ไว้ เพื่อให้ง่ายในการใช้งาน ผ่าน property และ method\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-weight: bold; color: rgb(204, 0, 0);font-size:130%;\" \u003eมารู้จักกับ Hash Algorithm\u003cbr /\u003e\u003cbr /\u003e\u003c/span\u003e    หากคุณต้องการเก็บ password ให้ปลอดภัยจากการมองเห็น คุณจะต้องสร้าง hash ของข้อมูล\u003cbr /\u003e\u003cbr /\u003eHash เป็น Algorithm แบบทางเดียว หรือ one-way algorithm ในการแปลงข้อมูล ซึ่งเมื่อแปลงข้อมูลไปแล้วจะไม่สามารถแปลงข้อมูลกลับไปเป็นข้อมูลก่อนที่จะแปลงได้อีก\u003cbr /\u003e\u003cbr /\u003eนักพัฒนาส่วนใหญ่ใช้ฐานข้อมูลในการเก็บ password ซึ่งทำให้ผู้ที่มีสิทธิในการเข้าถึงข้อมูลสามารถมองเห็น password ในฐานข้อมูลได้ ดังนั้นควร hash password ก่อน แล้วจึงค่อยเก็บลงในฐานข้อมูล เมื่อ user ป้อน password  จึงค่อย hash password ที่ user ได้ป้อนเข้ามา และนำไปเปรียบเทียบกับ hash data ที่เก็บอยู่ในฐานข้อมูลอีกที ดังนั้นจะไม่สามารถดู password ของ user ได้ว่าคืออะไร เพราะมันได้ถูก hash ไว้แล้ว และไม่สามารถแปลงกลับมาเพื่ออ่านได้อีก\u003cbr /\u003e\u003cbr /\u003eการ hash เป็นกระบวนการที่เปลี่ยนข้อมูลเดิมเล็กน้อย และเข้ากระบวนการผลิต hash data ออกมา โดยข้อมูลที่ต่างกันจะได้ hash data ที่ไม่เหมือนกัน และเป็นไปไม่ได้เลยที่จะได้ hash data ที่เหมือนกัน\u003cbr /\u003eสำหรับนักพัฒนาของ .NET แล้วมีวิธีการทำ hash ให้เลือกใช้มากมาย แต่ที่พบเห็นโดยทั่วไปหรือใช้บ่อยๆ คือ SHA1 และ MD5\u003cbr /\u003e\u003cbr /\u003eตัวอย่างโค้ดของฟังก์ชัน SHA1 (ต้อง import the namespace System.Security.Cryptography ด้วย)\u003cbr /\u003e\u003cbr /\u003e\u003cpre class\u003d\"normal\"\u003e\u003cbr /\u003ePrivate Function HashText(ByVal TextToHash As String) As String\u003cbr /\u003eDim SHA1 As SHA1CryptoServiceProvider\u003cbr /\u003eDim bytValue() As Byte\u003cbr /\u003eDim bytHash() As Byte\u003cbr /\u003e\u003cbr /\u003e' สร้างอ๊อบเจ็คของ Crypto Service Provider\u003cbr /\u003eSHA1 \u003d New SHA1CryptoServiceProvider\u003cbr /\u003e\u003cbr /\u003e' แปลงจาก String ไปเป็น array ของ byte\u003cbr /\u003ebytValue \u003d System.Text.Encoding.UTF8.GetBytes(TextToHash)\u003cbr /\u003e\u003cbr /\u003e' ทำการ Hash ซึ่งจะคืนค่าออกมาเป็น array ของ byte\u003cbr /\u003ebytHash \u003d SHA1.ComputeHash(bytValue)\u003cbr /\u003e\u003cbr /\u003eSHA1.Clear()\u003cbr /\u003e\u003cbr /\u003e' คืนค่า String จาก hash value\u003cbr /\u003eReturn Convert.ToBase64String(bytHash))\u003cbr /\u003e\u003cbr /\u003eEnd Function\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cbr /\u003eถ้าให้ Hash ข้อมูลคำว่า “Paul” จะได้ hash data คือ\u003cbr /\u003e\u003cpre class\u003d\"smallxx\"\u003e\u003cbr /\u003ew2h6uYgMJt/nq5ZqihcBteAXwv8\u003d\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cbr /\u003eแต่ถ้าเป็นคำว่า “Pauly” จะได้ hash data คือ\u003cbr /\u003e\u003cpre class\u003d\"smallxx\"\u003e\u003cbr /\u003eproywxJ0znMpGF5sbB18+7GSAsM\u003d\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cbr /\u003eจะเห็นได้ว่า แม้ข้อความจะเปลี่ยนไปเพียงเล็กน้อย เมื่อทำการ hash ข้อมูลออกมากลับทำให้ hash data แตกต่างกันอย่างสิ้นเชิง ด้วยวิธีการนี้ทำให้การ hash มีประโยชน์มาก ซึ่งทำให้ยากในการหารูปแบบหรือในการถอดข้อมูลดั้งเดิมออกมาจากข้อมูลที่เข้ารหัสไว้แล้วได้\u003cbr /\u003e\u003cbr /\u003eส่วน MD5 นั้นจะเหมือนกับ SHA1 เปลี่ยนแต่ Provider เท่านั้น\u003cbr /\u003e\u003cbr /\u003e\u003cpre class\u003d\"normal\"\u003e\u003cbr /\u003ePrivate Function HashTextMD5(ByVal TextToHash As String) As String\u003cbr /\u003eDim md5 As MD5CryptoServiceProvider\u003cbr /\u003eDim bytValue() As Byte\u003cbr /\u003eDim bytHash() As Byte\u003cbr /\u003e\u003cbr /\u003emd5 \u003d New MD5CryptoServiceProvider\u003cbr /\u003e\u003cbr /\u003ebytValue \u003d System.Text.Encoding.UTF8.GetBytes(TextToHash)\u003cbr /\u003e\u003cbr /\u003ebytHash \u003d md5.ComputeHash(bytValue)\u003cbr /\u003e\u003cbr /\u003emd5.Clear()\u003cbr /\u003e\u003cbr /\u003eReturn Convert.ToBase64String(bytHash))\u003cbr /\u003eEnd function\u003cbr /\u003e\u003c/pre\u003e\u003cbr /\u003e\u003cspan style\u003d\"font-weight: bold; color: rgb(204, 0, 0);font-size:130%;\" \u003eการเลือกใช้ Hash Algorithm\u003c/span\u003e\u003cbr /\u003e\u003cbr /\u003eกลไกของการ hash ข้อมูลแต่ละวิธีนั้นมีรูปแบบการทำงานคล้ายกัน แต่มีความแตกต่างอยู่ที่ขนาดของ key ที่ใช้ในการสร้าง hash หากใช้ key ที่ใหญ่ขึ้นก็จะทำให้การเข้ารหัสมีความซับซ้อนมากขึ้น\u003cbr /\u003e\u003cul\u003e\u003cli\u003eSHA1 ใช้ keyขนาด 160 – bit\u003c/li\u003e\u003cli\u003e    MD5 ใช้ keyขนาด 120 – bit\u003c/li\u003e\u003c/ul\u003eดังนั้น SHA1 จึงมีความปลอดภัยมากกว่า MD5\u003cbr /\u003e\u003cbr /\u003eอีกประเด็นหนึ่งในการพิจารณา คือ ความเป็นไปได้ในการชนกัน (Collision) ของ hash data ทั้งในทางทฤษฎีและในทางปฏิบัติ ซึ่งการชนกันนั้น คือ คำ 2 คำเมื่อทำการ hash แล้วได้ Hash data เดียวกัน\u003cbr /\u003e\u003cul\u003e\u003cli\u003eSHA1 ไม่มีความเป็นไปได้ในการชนกันเลยทั้งทางทฤษฎีและทางปฏิบัติ\u003c/li\u003e\u003cli\u003eMD5 มีโอกาสชนกันได้ในทางทฤษฎี แต่ในทางปฏิบัติไม่มีโอกาสชนกันเลย\u003c/li\u003e\u003c/ul\u003eสรุป ให้เลือกใช้ algorithm ที่เหมาะกับระดับความปลอดภัยที่คุณต้องการ\u003cbr /\u003e\u003cbr /\u003eพบกันใหม่ในตอนที่ 2 ครับ\u003cbr /\u003e\u003cspan style\u003d\"color: rgb(255, 255, 255);\"\u003e.\u003c/span\u003e\u003cdiv class\u003d\"blogger-post-footer\"\u003e\u003cimg width\u003d'1' height\u003d'1' src\u003d'https://blogger.googleusercontent.com/tracker/3280874170034771338-8051868243109012894?l\u003dnoomdev.blogspot.com' alt\u003d'' /\u003e\u003c/div\u003e"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://noomdev.blogspot.com/feeds/8051868243109012894/comments/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"https://www.blogger.com/comment.g?blogID\u003d3280874170034771338\u0026postID\u003d8051868243109012894","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8051868243109012894"},{"rel":"self","type":"application/atom+xml","href":"http://www.blogger.com/feeds/3280874170034771338/posts/default/8051868243109012894"},{"rel":"alternate","type":"text/html","href":"http://noomdev.blogspot.com/2007/12/cryptography-simplified-in-microsoftnet.html","title":"Cryptography Simplified in Microsoft.NET"}],"author":[{"name":{"$t":"NooM"},"uri":{"$t":"http://www.blogger.com/profile/11243032485655836748"},"email":{"$t":"noreply@blogger.com"},"gd$extendedProperty":{"xmlns$gd":"http://schemas.google.com/g/2005","name":"OpenSocialUserId","value":"12530684632009918001"}}],"thr$total":{"xmlns$thr":"http://purl.org/syndication/thread/1.0","$t":"0"}}]}});