<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-15190589</id><updated>2009-11-07T17:16:09.349+07:00</updated><title type='text'>Tunoblog - NooB</title><subtitle type='html'>คณิตศาสตร์ ดนตรี คำศัพท์ คอมพิวเตอร์ และ อื่น ๆ อีก (มั่วมาก) มาก</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default?start-index=26&amp;max-results=25'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>155</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15190589.post-7437349396141154096</id><published>2007-11-25T15:07:00.000+07:00</published><updated>2008-12-13T08:18:11.310+07:00</updated><title type='text'>ร้านกาแฟหกรด</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ofWyhpN-VqU/R0ktpXz1pWI/AAAAAAAAAOI/Xx1MB6SVfPw/s1600-h/DSCN0377.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_ofWyhpN-VqU/R0ktpXz1pWI/AAAAAAAAAOI/Xx1MB6SVfPw/s320/DSCN0377.JPG" alt="" id="BLOGGER_PHOTO_ID_5136687038782088546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ไปเจอร้านกาแฟนี้ใน San Francisco ชื่อร้านมันตลกมากจนต้องเอามาให้ดู!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-7437349396141154096?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/7437349396141154096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=7437349396141154096' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/7437349396141154096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/7437349396141154096'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2007/11/blog-post.html' title='ร้านกาแฟหกรด'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ofWyhpN-VqU/R0ktpXz1pWI/AAAAAAAAAOI/Xx1MB6SVfPw/s72-c/DSCN0377.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-9133914286735506472</id><published>2007-06-11T10:21:00.000+07:00</published><updated>2007-06-15T06:41:36.611+07:00</updated><title type='text'>หัดออกเสียงแบบชาว California: เดาเสียง s z จากตัวสะกด</title><content type='html'>ไม่ได้เขียนอะไรใน blog นี้ประมาณเวลาตั้งครรภ์ได้ ตอนนี้ใกล้จะกลับไทยแล้ว ก็ขอเขียนซักหน่อยละกัน :P&lt;br /&gt;&lt;br /&gt;เนื่องด้วยภาษาอังกฤษที่เราเรียนในเมืองไทย เน้นให้อ่านออก เขียนได้ แต่ไม่ได้ให้ออกเสียงถูก พอมีโอกาสมาอยู่เมืองนอกแล้ว มันก็น่าจะฝึกส่วนที่ขาดหายไปใช่มะ แล้วก็สำเนียงภาษาอังกฤษของคนแถวนี้ (California) เค้าถือว่ามาตรฐานของ American English ด้วย ไหน ๆ มาอยู่ Stanford แล้ว ก็ลงเรียนวิชา Pronunciation ซะเลย :D ตอนแรกก็ไม่นึกหรอกว่ามันจะน่าสนใจขนาดนี้ เรียน ๆ ไป รู้สึกว่ามีสิ่งที่ไม่รู้เยอะแฮะ (แต่เรียนจบคอร์สแล้ว สำเนียงก็เหมือน ๆ เดิมอะนะ)&lt;br /&gt;&lt;br /&gt;คิดว่าหลาย ๆ คนที่เรียนอังกฤษในเมืองไทยคงยังไม่เคยรู้เรื่องพวกนี้ ก็เลยจะเอามาฝากกันนี่แหละ (American English อย่างเดียวนะ)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;เสียง s กับ z&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;คิดว่าทุกคนคงรู้อยู่แล้วว่า s มีเสียงเหมือน "ซ" หรือ "ส" ในภาษาไทย ส่วนตัว z เนี่ย ถึงเราจะไม่มีตัวอักษรที่ออกเสียงเหมือนกัน แต่คิดว่าตัวนี้ไม่น่าจะเป็นปัญหากับคนไทย ถ้าใครไม่รู้ว่า z ออกเสียงยังไง ก็ทำเสียง s (ไม่ได้ออกจากกล่องเสียง) แล้วพยายามเติมเสียงจากกล่องเสียง มันก็จะเป็น z เอง (อันนี้ง่าย)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;แล้วเมื่อไหร่ใช้ s เมื่อไหร่ใช้ z หละ?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;จะว่าไปมันก็เป็นเรื่องแปลก (คนที่รู้ก็คงไม่แปลกหรอก) ที่คำที่สะกดด้วยตัว s อ่านออกมาเป็น z เยอะมาก กฎสำหรับออกเสียง z เวลาเห็นตัว s ก็มีหลัก ๆ คือ&lt;br /&gt;&lt;ol&gt;&lt;li&gt;s ใน -s ที่ใช้เป็นตัวสุดท้ายของคำ ตามหลังเสียง voiced consonant (ไว้จะพูดถึงอีกที) เช่น pens&lt;br /&gt;&lt;/li&gt;&lt;li&gt;s ใน -es ท้ายคำที่เป็นพหูพจน์ (ให้ออกเสียงว่า อิซซ ด้วย z)&lt;/li&gt;&lt;li&gt;คำว่า is his Ms.&lt;/li&gt;&lt;li&gt;-sn't -sm เช่น anarchism&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;ส่วนกฎสำหรับออกเสียง s เวลาเห็นตัว s ก็มีคร่าว ๆ คือ&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ss&lt;/li&gt;&lt;li&gt;s ที่ขึ้นต้นคำ และไม่ได้ตามด้วย h, ch&lt;/li&gt;&lt;li&gt;s ที่ลงท้าย prefix เช่น misapprehend disavow&lt;br /&gt;&lt;/li&gt;&lt;li&gt;s หลังสระเสียงสั้น (ยกเว้น is his Ms.) เช่น this promise pus&lt;/li&gt;&lt;li&gt;s ใน -s ที่ใช้เป็นตัวสุดท้ายของคำ ตามหลังเสียง voiceless consonant&lt;br /&gt;&lt;/li&gt;&lt;li&gt;s หลังพยัญชนะ หน้าสระ เช่น insensitive absinthe lapse alongside forsake&lt;br /&gt;&lt;/li&gt;&lt;li&gt;-s? เมื่อ ? เป็นพยัญชนะ voiceless เช่น anarchist&lt;/li&gt;&lt;li&gt;คำ 1 พยางค์ที่ลงท้ายด้วย -ase กับ -oose&lt;/li&gt;&lt;/ol&gt;นอกจากกฎพวกนี้ ก็คงต้องจำกันแล้วหละ ตัวอย่างที่ต้องจำเช่น:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;s หลังสระเสียงยาวใน verb มักจะเป็น z เช่น realise refuse lose ease appease please แต่ loose grease lease cease crease increase decrease decease ใช้เสียง s&lt;/li&gt;&lt;li&gt;s หลังสระเสียงยาวในคำที่ไม่มีรูป verb มักจะเป็น s เช่น dose verbose close(adj) แต่ cheese disease ใช้เสียง z&lt;br /&gt;&lt;/li&gt;&lt;li&gt;คำบางคำอ่านต่างกันเมื่อเป็น noun กับ verb เช่น use กับ house ใช้ s เมื่อเป็น noun ใช้ z เมื่อเป็น verb&lt;br /&gt;&lt;/li&gt;&lt;li&gt;close ที่แปลว่าใกล้ (adjective กับ adverb) ใช้เสียง s ส่วน close ที่แปลว่าปิด (noun กับ verb) ใช้เสียง z&lt;/li&gt;&lt;li&gt;douse louse mouse ใช้เสียง s แต่ rouse spouse ใช้เสียง z&lt;/li&gt;&lt;li&gt;precise กับ concise ใช้เสียง s ส่วน incise exercise ฯลฯ ใช้เสียง z (ข้อสังเกตุ: precise กับ concise ไม่มีรูป verb)&lt;/li&gt;&lt;li&gt;garrison ใช้เสียง s แต่ visage ใช้เสียง z&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; เสียง "ซ" หรือ "ส" ที่มาจาก c หรือ sc ให้ออกเสียงเป็น s ทั้งหมด ส่วนที่มาจากตัว z ให้ออกเป็น z ทั้งหมด ยกเว้นคำ Italian (pizza, mezzo, ...) ให้ออกเป็นเสียง s&lt;br /&gt;&lt;br /&gt;ตัวอย่าง: เสียงสระเหมือนกัน ทางซ้ายเสียง s ทางขวาเสียง z&lt;br /&gt;&lt;div style="text-align: center;"&gt;place - plays&lt;br /&gt;ice - eyes&lt;br /&gt;miss - Ms.&lt;br /&gt;price - prize&lt;br /&gt;hence - hens&lt;br /&gt;dense - dens&lt;br /&gt;rice - rise&lt;br /&gt;race - raise&lt;br /&gt;race - rays&lt;br /&gt;race - raze&lt;br /&gt;loose - lose&lt;br /&gt;goose - goos&lt;br /&gt;hiss - his&lt;br /&gt;use(noun) - use(verb)&lt;br /&gt;face - phase&lt;br /&gt;bus - buzz&lt;br /&gt;ass - as&lt;br /&gt;lense - lens&lt;br /&gt;(lense กับ lens ความหมายเหมือนกันนะ)&lt;br /&gt;decease - disease&lt;br /&gt;(s ใน decease ใช้เสียง s ส่วน s ทั้งสองที่ใน disease ใช้เสียง z)&lt;br /&gt;close(adj) - close(v)&lt;br /&gt;close(adj) - clothes(n)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ตัวอย่างเปรียบเทียบตัวสะกด ทางซ้ายเสียง s ทางขวาเสียง z (เสียงอื่น ๆ ก็ต่างกัน):&lt;br /&gt;&lt;div style="text-align: center;"&gt;raci&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;t - raci&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;m&lt;br /&gt;purpo&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e - propo&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e&lt;br /&gt;(purp&lt;span style="font-weight: bold;"&gt;o&lt;/span&gt;se สระเสียงสั้น prop&lt;span style="font-weight: bold;"&gt;o&lt;/span&gt;se สระเสียงยาว)&lt;br /&gt;promi&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e - compromi&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e&lt;br /&gt;(prom&lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;se สระเสียงสั้น comprom&lt;span style="font-weight: bold;"&gt;i&lt;/span&gt;se สระเสียงยาว)&lt;br /&gt;analysi&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - analyse&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;(analyses เป็นรูปพหูพจน์ ... s ตัวแรกเป็นเสียง s ในทั้งสองคำนะ)&lt;br /&gt;crea&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e - ea&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e&lt;br /&gt;it&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - i&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;thi&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - hi&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;inten&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;e - intend&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;lap&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - lab&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;mote&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - mode&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;dock&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - dog&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;strife&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt; - strive&lt;span style="font-weight: bold;"&gt;s&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-9133914286735506472?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/9133914286735506472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=9133914286735506472' title='45 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/9133914286735506472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/9133914286735506472'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2007/06/california-s-z.html' title='หัดออกเสียงแบบชาว California: เดาเสียง s z จากตัวสะกด'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115933611693764762</id><published>2006-09-27T12:45:00.000+07:00</published><updated>2006-09-27T12:48:36.996+07:00</updated><title type='text'>เรื่อง Stanford</title><content type='html'>จะบอกว่า ถ้าจะดูเรื่องเกี่ยวกะชีวิตนู้บสแตนฟอร์ดเนี่ย ให้ไปดูที่ &lt;a href="http://tunoblog.blogspot.com/"&gt;Another Tunoblog&lt;/a&gt; แทน ขี้เกียจ update สองที่หนะ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115933611693764762?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115933611693764762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115933611693764762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115933611693764762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115933611693764762'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/09/stanford.html' title='เรื่อง Stanford'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115882504504597030</id><published>2006-09-21T14:38:00.000+07:00</published><updated>2006-09-21T14:50:45.086+07:00</updated><title type='text'>เด็กบ้านนอก - นู้บ</title><content type='html'>เผื่อคนที่ไม่รู้ ตอนนี้อยู่ที่ 119 Quillen Court, #500, Stanford CA 94305 นะ วันจันทร์จะเปิดเทอมแล้ว&lt;br /&gt;&lt;br /&gt;ไปอยู่ในที่ใหม่ มันก็มีอะไรต้องศึกษาใหม่เยอะนะ ... สถานที่ก็ใหญ่ เดินทางก็ลำบาก ถึงจะฟรีก็เหอะ รู้สึกมันบ้านนอกบ้านนอกไงก็ไม่รู้&lt;br /&gt;&lt;br /&gt;ไม่ค่อยมีเวลาเขียนเท่าไหร่เลย ช่วงนี้มีงานมีเหตุการณ์มากมาย ... ไว้มีเวลาแล้วจะมาเขียนอีกเยอะ ๆ ละกัน&lt;br /&gt;&lt;br /&gt;ป.ล. เพิ่งรู้ว่า IE มันไม่ยอมให้เขียนสระอาติดกันหลาย ๆ ตัวใน Edit Box อะ แย่จัง&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115882504504597030?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115882504504597030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115882504504597030' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115882504504597030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115882504504597030'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/09/blog-post.html' title='เด็กบ้านนอก - นู้บ'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115522838582843719</id><published>2006-08-10T23:40:00.000+07:00</published><updated>2006-08-10T23:46:25.870+07:00</updated><title type='text'>Siam Paragon</title><content type='html'>คำอ่าน "Siam Paragon" เป็นภาษาไทยเนี่ย ...&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;สยามภาระก้น&lt;/li&gt;   &lt;li&gt;สยามปลาร้าก้อน (เพี้ยนนิดหน่อย)&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt; มีมากกว่านี้อีกปะ บอกหน่อย&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115522838582843719?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115522838582843719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115522838582843719' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115522838582843719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115522838582843719'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/08/siam-paragon.html' title='Siam Paragon'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115186517115311689</id><published>2006-07-02T20:41:00.000+07:00</published><updated>2006-07-05T13:30:41.423+07:00</updated><title type='text'>Programming: Space-Time Relation</title><content type='html'>ขอเริ่มต้น post ของวันนี้ด้วยการขอโทษก่อนละกัน วันนี้ (จริง ๆ เมื่อวานด้วย) ไม่ได้ไปเยี่ยมบัณฑิตจุฬา ฯ ที่ไปซ้อมรับปริญญา เพราะมีเหตุการณ์สำคัญเกิดขึ้นที่บ้าน ที่คนทั่ว ๆ ไปคงเรียกว่าปัญหาครอบครัวหนะ&lt;br /&gt;&lt;br /&gt;แล้วก็ ... เตือนกันอีกครั้งนะ ... ถ้าจะดู post เก่า ๆ ให้มันเป็นลำดับดี ๆ ไปดูที่นี่&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.geocities.com/tunaococ/"&gt;Tunoblog Summarized&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;มันจะมี link มาที่หน้าของแต่ละ post ใน Tunoblog อันนี้&lt;br /&gt;&lt;br /&gt;โปรโมตเสร็จ ก็ขอเข้าเรื่องละกัน คราวนี้จะพูดถึงความสัมพันธ์ระหว่าง ความเร็วของ algorithm กับเนื้อที่ memory ที่จะต้องใช้&lt;br /&gt;&lt;br /&gt;สำหรับปัญหาปัญหานึง เราอาจจะมีวิธีแก้หลาย ๆ แบบ ซึ่งสำหรับนักเขียนโปรแกรมเนี่ย เค้ามักถามกันว่า "บิ๊กโอ (Big-O = O ใหญ่น่ะแหละ) เท่าไหร่?"&lt;br /&gt;&lt;br /&gt;ใครที่ยังไม่รู้จัก O ตัวนี้ ก็ขอพูดคร่าว ๆ ละกัน&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;O(g) = { f | f(x) เพิ่มไม่เร็วกว่า g(x) เมื่อ x มีค่ามาก ๆ }&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;จริง ๆ นิยามแบบชัด ๆ มันก็มีอยู่อะนะ แต่ขี้เกียจยกมา ไปดูเอาเองจาก &lt;a href="http://en.wikipedia.org/wiki/Big-O_notation"&gt;Wikipedia&lt;/a&gt; ละกัน :P&lt;br /&gt;&lt;br /&gt;มาต่อกันเรื่องหลัก คราวนี้มาสนใจเรื่อง Space-Time ดีกว่า ...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ทฤษฎีสัมพัทธภาพ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ม่ายช่ายและ :P ... จะพูดถึง Big-O ของเวลา กับ เนื้อที่ memory ที่ algorithm ใช้ตะหาก&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Sorting Algorithm&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ปัญหาการเรียงข้อมูลเนี่ย เป็นปัญหาสุดคลาสสิก ที่น่าเอามาพูดถึงที่สุด วิธีการเรียงที่นิยมสอนกัน มักจะมีอยู่เท่านี้ (ขาดเกินบ้างนิดหน่อย)&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Selection Sort - ใช้เวลา O(n&lt;sup&gt;2&lt;/sup&gt;) เมื่อมีข้อมูล n ตัว&lt;/li&gt;   &lt;li&gt;Bubble Sort - ใช้เวลา O(n&lt;sup&gt;2&lt;/sup&gt;)&lt;/li&gt;   &lt;li&gt;Insertion Sort - ใช้เวลา O(n&lt;sup&gt;2&lt;/sup&gt;)&lt;/li&gt;   &lt;li&gt;Shell Sort - ใช้เวลา O(n&lt;sup&gt;1.5&lt;/sup&gt;) (จริง ๆ มี O(n log&lt;sup&gt;2&lt;/sup&gt;n) นะ ดูที่&lt;a href="http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/shell/shellen.htm"&gt;นี่&lt;/a&gt;)&lt;/li&gt;   &lt;li&gt;Merge Sort - ใช้เวลา O(n log n)&lt;/li&gt;   &lt;li&gt;Quick Sort - ใช้เวลา O(n log n) (เฉลี่ย)&lt;/li&gt;   &lt;li&gt;Heap Sort - ใช้เวลา O(n log n)&lt;/li&gt;   &lt;li&gt;Bucket Sort - ใช้เวลา O(m + n)&lt;/li&gt;   &lt;li&gt;Radix Sort - ใช้เวลา O(n log m)&lt;/li&gt; &lt;/ul&gt;เมื่อ n คือจำนวนข้อมูล และ m คือขนาดของ domain ของข้อมูล จะเห็นว่า 7 วิธีแรก ทำงานเร็วกว่า 2 วิธีสุดท้ายในกรณีที่ m มากกว่า n มาก ๆ&lt;br /&gt;&lt;br /&gt;หนังสือทั่ว ๆ ไป มักจะไม่พูดถึงขนาดของ memory ที่ต้องใช้ เพราะว่า ไม่มีิอันไหนใช้เกิน O(n) ซึ่งเป็นขนาดของ input แต่เราจะลองมองดูซักนิดนะ ว่ามันเป็นยังไง&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Selection Sort - ใช้เนื้อที่เพิ่ม O(1)&lt;/li&gt;&lt;li&gt;Bubble Sort - ใช้เนื้อที่เพิ่ม O(1)&lt;/li&gt;&lt;li&gt;Insertion Sort - ใช้เนื้อที่เพิ่ม O(1)&lt;/li&gt;&lt;li&gt;Shell Sort - ใช้เนื้อที่เพิ่ม O(1)&lt;/li&gt;&lt;li&gt;Merge Sort - ใช้เนื้อที่เพิ่ม O(n)&lt;/li&gt;&lt;li&gt;Quick Sort - ใช้เนื้อที่เพิ่ม O(log n) (เฉลี่ย)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Heap Sort - ใช้เนื้อที่เพิ่ม O(1)&lt;/li&gt;&lt;li&gt;Bucket Sort - ใช้เนื้อที่เพิ่ม O(m)&lt;/li&gt;&lt;li&gt;Radix Sort - ใช้เนื้อที่เพิ่ม O(1)&lt;/li&gt; &lt;/ul&gt; ดู ๆ ไปเหมือน Heap Sort น่าจะดีที่สุด แต่จริง ๆ แล้ว มันมีอะไรมากกว่านี้นิดนึง มาลองดูละเอียดดีกว่า ว่าแต่ละวิธี ต้องการสิ่งอะไรที่ต่าง ๆ กัน (แบบคร่าว ๆ)&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Selection Sort - ลูป 2 ชั้น และตัวแปรพักข้อมูลสำหรับการสลับ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bubble Sort - ลูป 2 ชั้น และตัวแปรพักข้อมูลสำหรับการสลับ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Insertion Sort - ลูป 2 ชั้น และตัวแปรพักข้อมูลสำหรับการแทรก&lt;/li&gt;&lt;li&gt;Shell Sort (กรณีเวลา O(n log&lt;sup&gt;2&lt;/sup&gt;n)) - ลูป 3 ชั้น ตัวแปรสำหรับสร้างลำดับ 2 ตัว และตัวแปรพักข้อมูลสำหรับการสลับ หรือ แทรก&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Merge Sort - Recursive 2 ครั้ง ลูป 1 ชั้นที่มีตัวนับ 2 ตัว กับ array พักข้อมูลความยาว n และลูปคัดลอกค่าจาก array พักข้อมูล&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quick Sort - ลูป 1 ชั้นที่มีตัวนับ 2 ตัว ตัวแปรพักข้อมูลสำหรับการสลับ และ Recursive 2 ครั้ง&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Heap Sort - ลูป 2 ชั้น 2 ลูป และตัวแปรพักข้อมูลสำหรับการแทรก&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bucket Sort - ลูปกำหนดค่าเริ่มต้น (ใช้เวลา O(m)) ลูปรับ input และลูปแสดง output (ใช้เวลา O(n))&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Radix Sort (ฐาน 2) - ลูป 2 ชั้น ชั้นนอกทำซ้ำ log&lt;sub&gt;2&lt;/sub&gt;m ครั้ง ชั้นในมีตัวนับ 2 ตัว&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;ถ้าคิดความซับซ้อนของโปรแกรม เป็นเนื้อที่อีกประเภท เราก็พอจะคิดได้ว่า ถ้าใช้เนื้อที่มาก มันก็ทำงานเร็วนะ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Dynamic Programming - Fibonacci Function&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;อันนี้ คิดว่า หลาย ๆ คนคงคุ้นเคยและรู้อยู่แล้ว หน้าตามันก็ประมาณนี้ (ภาษา C ละกัน)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  &lt;/code&gt; &lt;div style="text-align: center;"&gt;&lt;code&gt;int fib(int n) { return n &lt;= 1 ? 1 : fib(n - 1) + fib(n - 2); }&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;จะเห็นว่า code สั้นมาก ดังนั้น จากหลักของเรา พอจะเดาได้ว่า น่าจะมีวิธีทำให้มันทำงานเร็วกว่านี้ แต่ code ยาวกว่านี้ หรือมีตัวแปรเพิ่ม&lt;br /&gt;&lt;br /&gt;ลองดูก่อน ว่า เขียนโปรแกรมแบบนี้ ใช้เวลาทำงานเท่าไหร่ ... คำตอบค่อนข้างง่ายนะ เวลาก็คือ O(fib(n)) น่ะแหละ (ว่าไปก็คือ O(α&lt;sup&gt;n&lt;/sup&gt;) เมื่อ α = golden ratio น่ะแหละ)&lt;br /&gt;&lt;br /&gt;มันกินเวลาน่าดูเลยนะเนี่ย ลองพยายามทำให้มันเร็วขึ้นสิ ... วิธีง่าย ๆ ก็คือ กำหนดตัวแปรเพิ่มเป็น array ความยาว n แล้วก็คิดค่าไล่ตั้งแต่ f(0) ถึง f(n) ไง หยั่งงี้ f(...) ตัวที่เคยคิดแล้ว ก็ไม่ต้องคิดซ้ำ&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;code&gt;int fib(int n) { return a[n] &gt; 0 ? a[n] : a[n] = fib(n - 1) + fib(n - 2); }&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;แล้วกำหนดค่าเริ่มต้นให้ a[0] = 1, a[1] = 1 และ a[อื่น ๆ] = -1&lt;br /&gt;&lt;br /&gt;จริง ๆ มันประหยัดเนื้อที่ได้อีกนะ แต่คราวนี้โปรแกรมจะซับซ้อนละ ...&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;int fib(int n)&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;int f, last1, last2;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;if (n &lt;= 1) return 1;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;last1 = 1;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;last2 = 1;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;for (--n; n &gt; 0; --n)&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;f = last1 + last2;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;last2 = last1;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;last1 = f;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;return f;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;จะเห็นว่า เหลือตัวแปรแค่ 3 ตัว (คือ memory O(1)) แลกกับ code ที่ยาวขึ้นอีกนิดนึง&lt;br /&gt;&lt;br /&gt;จริง ๆ ยังทำให้มันเร็วกว่านี้ได้อีกแหละ แต่คราวนี้ code จะยาวขึ้นเยอะเลย แล้วจะเร็วขึ้นเฉพาะเมื่อ n เยอะมาก ๆ ๆ ๆ ๆ เท่านั้น&lt;br /&gt;&lt;br /&gt;เอาเป็นว่า หยุดแค่นี้ก่อนดีกว่า&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115186517115311689?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115186517115311689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115186517115311689' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115186517115311689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115186517115311689'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/07/programming-space-time-relation.html' title='Programming: Space-Time Relation'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115168877321234620</id><published>2006-06-30T23:31:00.000+07:00</published><updated>2006-07-01T00:32:53.300+07:00</updated><title type='text'>Programming: Stack and Recursion</title><content type='html'>ไม่ยอมเขียนมาซะนาน ขอกลับมาทำบ้างซักครั้งละกัน ... คิดถึงจัง ความรู้สึกนี้ :D&lt;br /&gt;&lt;br /&gt;คราวนี้จะพูดถึงเรื่องการเขียนโปรแกรมซักหน่อยนะ คาดว่าจะเป็นประโยชน์กับ programmer รุ่นเด็ก ๆ บ้างนะ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;u&gt;Stack and Recursion&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;หลาย ๆ คนคงรู้อยู่แล้วว่าทั้งสองอย่างนี้มันคืออะไร และมันเกี่ยวกันยังไง ... ใครไม่รู้อ่านต่อละกัน :P&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stack&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;กลุ่มข้อมูลคล้าย ๆ หลอด CD ที่ใช้เสียบแผ่นหลาย ๆ แผ่นเข้าด้วยกัน&lt;/li&gt;   &lt;li&gt;คุณสมบัติก็คือ จะใส่เพิ่มหรือจะหยิบออก จะต้องทำจากข้างบน&lt;/li&gt; &lt;/ul&gt;&lt;span style="font-weight: bold;"&gt; Recursion&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำซ้ำ ๆ ที่เกิดจากการฟังก์ชันที่เรียกกันเป็นวง เช่น f เรียก g แล้ว g เรียก h แล้ว h เรียก f ไปเรื่อย ๆ&lt;/li&gt;   &lt;li&gt;สิ่งที่จำเป็นในการเขียนโปรแกรมแบบ Recursive ก็คือ จะต้องมีเงื่อนไขการหยุด&lt;/li&gt; &lt;/ul&gt;แล้วสองอย่างนี้ มันเกี่ยวข้องกันยังไงหละ?&lt;br /&gt;&lt;br /&gt;จริง ๆ อยากให้ไปอ่านเรื่องที่ทำ Virtual Machine จัง แต่มันคงจะยาวไปเนอะ ... สรุปเลยละกัน :P ง่าย ๆ ก็คือ ... ทุกครั้งที่เรียกฟังก์ชัน เราต้องเพิ่มข้อมูลบางอย่างใน Stack ของ CPU แล้วพอฟังก์ชันทำงานเสร็จ เราก็จะเอาของพวกนั้นออก&lt;br /&gt;&lt;br /&gt;แปลว่า ... ที่เราสามารถเขียนโปรแกรมแบบ recursive ได้เนี่ย ก็เพราะว่า CPU มันมี Stack อยู่&lt;br /&gt;&lt;br /&gt;และก็แปลว่า ... เราสามารถสร้าง Stack ขึ้นเอง แล้วก็ไม่ต้องไปรบกวน Stack ของ CPU ได้เหมือนกัน&lt;br /&gt;&lt;br /&gt;ลองดูตัวอย่างเลยละกัน สมมติว่าเรามีฟังก์ชันที่เขียนแบบ recursive ตัวนึง&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; function f(x)&lt;br /&gt; &lt;/code&gt;&lt;code&gt;begin&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  if x &lt;= 0 then return 0;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;else return 2x - 1 + f(x - 1);&lt;/code&gt;&lt;br /&gt;&lt;code&gt; end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;ถ้าเรามี Stack เราจะเขียนแบบไม่ recursive ได้เป็น&lt;br /&gt;&lt;br /&gt;&lt;code&gt; function f(x)&lt;br /&gt; &lt;/code&gt;&lt;code&gt;begin&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  push x onto Stack;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;  push "not done" onto Stack;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;  while Stack is not empty&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  do&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt; assign op ← Top of Stack;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;Remove Top of Stack;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt; assign x ← Top of Stack;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt; Remove Top of Stack;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;if op = "not done" then&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;begin&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;push x onto Stack;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; push "done" onto Stack;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; if x &lt;= 0 then do nothing;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; else&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; begin&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; push x - 1 onto Stack;&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; push "not done" onto Stack;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; end&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;end&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; else if op = "done" then&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; begin&lt;br /&gt;&lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; if x &lt;= 0 then assign ReturnValue ← 0;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;else assign ReturnValue ← 2x - 1 + ReturnValue;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; &lt;/code&gt;&lt;code&gt; end&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;  end while&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  return ReturnValue;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;จะเห็นว่า มันยาวขึ้นมาก -_-'' จริง ๆ จะทำให้สั้นกว่านี้ก็ได้อีกเยอะหนะนะ แต่นี่เป็นตัวอย่างการแปลงแบบตรงไปตรงมา ฟังก์ชันอะไรเราก็แปลงแบบนี้ได้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115168877321234620?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115168877321234620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115168877321234620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115168877321234620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115168877321234620'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/06/programming-stack-and-recursion.html' title='Programming: Stack and Recursion'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115166221552591094</id><published>2006-06-30T17:07:00.000+07:00</published><updated>2006-06-30T17:10:15.543+07:00</updated><title type='text'>แอบอัพเดท</title><content type='html'>โทษทีที่ยังไม่ได้เอารูปตอนไปยุโรปมาลงให้ จะเอามาให้ดูจริง ๆ แหละ แต่รอก่อนนะ ตอนนี้ขอแอบกลับไปเขียนเรื่องบ้า ๆ ต่อก่อน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115166221552591094?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115166221552591094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115166221552591094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115166221552591094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115166221552591094'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/06/blog-post_30.html' title='แอบอัพเดท'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-115142293726534766</id><published>2006-06-27T22:18:00.000+07:00</published><updated>2006-06-27T22:42:17.410+07:00</updated><title type='text'>ฟันคุด</title><content type='html'>ไปผ่าฟันคุดมาเมื่อวันศุกร์ที่แล้วหนะ . . . ผ่าข้างล่างสอง ถอนข้างบนสอง&lt;br /&gt;&lt;br /&gt;ก่อนหน้านี้ มีคนขู่ไว้เพียบเลย - -'' พอทำเอง มันก็ไม่ได้น่ากลัวขนาดนั้นซะหน่อย&lt;br /&gt;&lt;br /&gt;พอเจอหมอ หมอเค้าก็คุยก่อนนะ เค้าบอกว่า ฟันมันเอียงมาก (ประมาณ 70 องศา จากที่เห็นในฟิล์ม) เอียงเหมือนจะไปดันซี่ข้าง ๆ ด้วย ถ้าจะเอาออก จะต้องทำให้มันเป็นชิ้นเล็กชิ้นน้อยก่อน วิธีทำก็คือ ค่อย ๆ กรอเนื้อฟันออก จนมันบางลง ก็ออกแรกบีบให้มันแตก ... ฟังดูน่ากลัวมะ&lt;br /&gt;&lt;br /&gt;พอถึงเวลาจริง ที่เจ็บที่สุดก็เห็นจะเป็นเข็มฉีดยาชานี่แหละ (มันก็ไม่ได้เจ็บมากหรอก บริจาคเลือดยังเจ็บกว่าอีก)&lt;br /&gt;&lt;br /&gt;เริ่มแรก เค้าฉีดยาชาเสร็จแล้วก็รอแป๊บนึง แล้วก็เอาคีมมางัดแงะดึงฟันข้างบนออก เดี๋ยวเดียวเสร็จเลย รู้สึกว่าอะไร ๆ มันก็เร็วกว่าที่คิดนะ&lt;br /&gt;&lt;br /&gt;แต่อีกสองซี่ที่ต้องทำให้เป็นชิ้น ๆ เนี่ย ใช้เวลานานกว่าที่คิดแฮะ&lt;br /&gt;&lt;br /&gt;ช่วงที่รู้สึกเสียว ๆ ก็มีนะ ช่วงแรกคือ ตอนที่หมอกำลังขัดเนื้อฟันข้างขวาออกเนี่ย เค้าออกแรงเยอะมาก จนรู้สึกว่ามันตึงที่ข้างนอกเลย&lt;br /&gt;&lt;br /&gt;อีกช่วงนึงก็ ... จริง ๆ ไม่ได้รู้สึกเจ็บหรือเสียวฟันอะนะ เป็นความเสียวทางความคิดหนะ คือประมาณว่า ผู้ช่วยหมอเค้าไม่ใส่แว่นแล้วมองเห็นไหมไม่ชัด (สีมันคล้าย ๆ น้ำลาย) หมอก็ต่อว่า ว่าถ้ามองไม่ชัด คราวหน้าต้องใส่แว่นมานะ ไม่งั้นไม่ต้องมาช่วย - -'' เสียวมั้ยหละ&lt;br /&gt;&lt;br /&gt;แล้วหลังจากนั้นแป๊บเดียว หมอก็บอกอีกว่า ไหมเนี่ย ผู้ช่วยดึงไม่แน่น ... แล้วหมอก็ทำอะไรอีกก็ดูไม่รู้เรื่อง อาจจะเอาออก เย็บใหม่ก็ได้ (ยังไงตอนนี้ก็ดูไม่ออกแล้ว)&lt;br /&gt;&lt;br /&gt;พอทำเสร็จ ก็ไม่รู้สึกเจ็บเลยนะ แต่มันเมื่อยนิด ๆ เพราะต้องกัดสำลีไว้ตั้งหลายชั่วโมง แล้วก็ต้องคอยเอาน้ำแข็งประคบด้วย&lt;br /&gt;&lt;br /&gt;วันแรกหลังจากทำ ก็ไม่เจ็บนะ แค่รำคาญว่าเวลากินอะไร เศษมันจะติด ๆ แล้วเอาออกไม่ได้ แล้วก็เจ็บนิดหน่อยเวลากลืน เพราะว่ามีแผลที่ลิ้นนิดนึง&lt;br /&gt;&lt;br /&gt;วันที่สองก็ รู้สึกเหมือนวันแรก ... ไม่ค่อยรู้สึกว่ามันจะดีขึ้นแฮะ - -''&lt;br /&gt;&lt;br /&gt;วันที่สามเนี่ย เริ่มรู้สึกดีขึ้นละ แต่ก็ยังกินอะไรที่ต้องเคี้ยวไม่ได้หนะ ยังกินแต่ไข่ตุ๋น มันฝรั่งบด แล้วก็โจ๊ก&lt;br /&gt;&lt;br /&gt;วันนี้วันที่สี่แล้ว ... ทำไมมันรู้สึกเจ็บ ๆ อะ T_T ... ความเจ็บมันมีการหน่วงเวลาด้วยแฮะ ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-115142293726534766?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/115142293726534766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=115142293726534766' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115142293726534766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/115142293726534766'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/06/blog-post.html' title='ฟันคุด'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-114819041390751076</id><published>2006-05-21T11:26:00.000+07:00</published><updated>2006-05-21T12:46:54.020+07:00</updated><title type='text'>กลับมาละ</title><content type='html'>หลังจากวันจันทร์ที่แปดแล้ว ก็หาเน็ตไม่ได้เลยอ่า เอาเป็นว่า สรุปการไปเยือนเมืองนอกเอาทีเดียวเลยละกัน ... อ้อ ยังไม่ได้เอาภาพจากกล้องมาลงหนะ อ่านแห้ง ๆ ไปก่อนละกัน :P&lt;br /&gt;&lt;br /&gt;ก็ ... ต่อจากตอนที่แล้ว ก็ไปโรงงานกะโรงแรม สลับกันไปเรื่อย ๆ หละ จนวันที่สิบสอง ก็ขึ้นเครื่องบินไป Venezia จากสนามบิน Marco Polo ก็มีคนมารับไปโรงแรมแถว ๆ Padova ชื่อว่า Ibis&lt;br /&gt;&lt;br /&gt;ที่โรงแรมนี้ ลิฟท์ก็แปลกไปอีกแบบ คือมันไม่มีปุ่มเปิดประตู (โรงแรมที่แล้วไม่มีปุ่มปิด)&lt;br /&gt;&lt;br /&gt;สภาพส่วนใหญ่ในโรงแรมนี้ ดีกว่าโรงแรมที่แล้วนะ แต่ว่า ... มันไม่มีเน็ต T_T&lt;br /&gt;&lt;br /&gt;เย็นวันศุกร์ ได้ไปแวะซุปเปอร์มาร์เก็ตใกล้ ๆ โรงแรมด้วยหละ รู้สึกว่าของมันแพงจัง ... เดินอยู่ในนั้นพอประมาณ ก็ซื้อน้ำเปล่ามา กับขนมนิด ๆ หน่อย ๆ&lt;br /&gt;&lt;br /&gt;พอวันเสาร์ ก็ไปเดินเล่นในเมือง Padova มีร้านเสื้อผ้า เครื่องแต่งกาย เยอะมาก แล้วก็มีตลาดนัดด้วย ดูคล้าย ๆ เมืองไทยเลยแต่ว่าบรรยากาศมันดีจัง ติดอยู่ตรงที่น้ำดื่มมันแพง ... เดิน ๆ แล้วหิวน้ำ ก็ไม่ค่อยอยากซื้อ&lt;br /&gt;&lt;br /&gt;ตอนกลางวันกินข้าวที่ Pizzeria อะไรก็ไม่รู้ จำชื่อไม่ได้ สั่งพิซซ่ากินกับพ่อคนละถาด (ราคาถาดละแปดยูโร) ถาดมันใหญ่กว่าที่คิดแฮะ แต่ก็กินจนหมดได้หละน่า!&lt;br /&gt;&lt;br /&gt;หลังจากนั้นก็เดิน ๆ ไปเรื่อย ๆ ไม่ได้ซื้ออะไรเลย :( ก็มันไม่มีอะไรน่าซื้อหนิ ): ขึ้นรถเมล์กลับโรงแรม แล้วก็กินข้าวเย็นที่โรงแรม ... จบวัน&lt;br /&gt;&lt;br /&gt;วันอาทิตย์ ทุกอย่างปิดหมด รถเมล์ไม่วิ่ง ถ้าจะไปไหน ต้องเรียกแท็กซี่ราคาสุดโหด ก็เลยดิ้น ๆ อยู่แค่ในโรงแรม T_T นอนแต่หัวค่ำ เตรียมไปทำงานเช้าวันจันทร์&lt;br /&gt;&lt;br /&gt;ประมาณแปดโมงครึ่ง (เช้า) วันจันทร์ ก็ไปที่โรงงานอีกแห่งนึง คุย ๆ กะเค้าถึงซักสิบโมงสิบห้านาทีโดยประมาณ ก็ต้องไปโรงงานอีกที่นึง ที่นี้อยู่ใน Belluno ซึ่งก็ไกลพอควรเลย นั่งรถไปประมาณสี่สิบห้านาที ยังอยู่ระหว่างทางไปโรงงาน ก็เห็นภูเขาอยู่สองข้างถนน มองไปไกล ๆ หน่อยจะเห็นยอดเขาสีขาว ๆ ปกคลุมด้วยหมอกและหิมะ ... ดูดีจัง&lt;br /&gt;&lt;br /&gt;นั่งต่อไปอีกประมาณครึ่งชั่วโมง คราวนี้ทางขวามือไม่มีภูเขาแล้ว แต่เป็นเมืองแทน มองเมืองจากตรงนี้ก็สวยดีแฮะ&lt;br /&gt;&lt;br /&gt;แล้วอีกประมาณสิบห้านาที ก็ถึงที่หมาย ... โรงงานอีกแห่ง&lt;br /&gt;&lt;br /&gt;คุย ๆ กะเค้า ถึงประมาณบ่ายสาม ก็ต้องกลับ Venezia แล้ว เพราะว่าจะต้องขึ้นเครื่องบินกลับไป Roma เพื่อจะไปต่อเที่ยวบินไปยัง Frankfurt&lt;br /&gt;&lt;br /&gt;กลับไปถึง Roma ก็ไม่มีโรงแรมพักในเมืองอีก ต้องออกจากเมือง ไปพักโรงแรมใน Pomezia (คนละโรงแรมกับครั้งแรกนะ) ปุ่มในลิฟท์ของโรงแรมนี้เนี่ย ... คราวนี้ มันมีเลข 0 ถึง 9 เรียงเหมือนเครื่องคิดเลขเลย แต่ตึกมันมีไม่ถึง 9 ชั้นอะ ...&lt;br /&gt;&lt;br /&gt;นอน ตื่น วันอังคารละ คราวนี้ บินจากสนามบิน Fiumicino ไปสนามบิน Frankfurt&lt;br /&gt;&lt;br /&gt;เห็นภาษาเยอรมันแล้ว รู้สึกว่าอ่านยากกว่าอิตาลีเยอะเลย (คือ เดาความหมายไม่ค่อยได้เลย) คำที่รู้ก็เลยมีน้อยกว่า ... คือ ได้ประมาณเนี้ย&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;eingang = ทางเข้า&lt;br /&gt;ausgang = ทางออก&lt;br /&gt;toiletten = ส้วม&lt;br /&gt;fahrkarten = ตั๋ว&lt;br /&gt;bahnhof = สถานีรถราง/รถไฟ&lt;br /&gt;haupt = หลัก (head, main)&lt;br /&gt;platz = place&lt;br /&gt;markt = market&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;โรงแรมที่พัก ชื่อว่า &lt;a href="http://www.winters.de/boarding/"&gt;Winter's Eurotel Boardinghouse&lt;/a&gt; อยู่ในเมือง Offenbach ที่ไม่ได้พักใน Frankfurt ก็เพราะว่าจองโรงแรมใน Frankfurt ไม่ทัน มันเต็มหมดเลย (หรือไม่ก็แพงสุด ๆ) ที่นี่ มีอินเทอร์เน็ตแบบไร้สายนะ แต่ว่า ราคายี่สิบสี่ยูโรครึ่ง ต่อ ยี่สิบสี่ชั่วโมง เลยไม่เอา&lt;br /&gt;&lt;br /&gt;วันพุธ ตื่นเช้าหน่อย ไปดูงาน &lt;a href="http://www.achema.de/ACHEMA-lang-en.html"&gt;Achema 2006&lt;/a&gt; ละ ... ในนี้ ถ่ายรูปไม่ค่อยได้หนะ เลยไม่มีรูปมาโชว์เยอะเท่าไหร่&lt;br /&gt;&lt;br /&gt;งานนี้ใหญ่มากเลย สถานที่จัดงานเรียกว่า &lt;a href="http://www.messefrankfurt.com"&gt;Messe Frankfurt&lt;/a&gt; มี Hall ทั้งหมดสิบ Hall แต่ละ Hall มีขนาดเท่าศูนย์ ฯ สิริกิติ์เลยมั้ง แล้วยังให้เดินได้ Hall ละหลาย ๆ ชั้นด้วย ... เดินยังไงจะครบเนี่ย&lt;br /&gt;&lt;br /&gt;ค่าบัตรเข้างาน เค้าคิดคนละยี่สิบสามยูโร งานเปิดวันละเก้าชั่วโมง คือตั้งแต่เก้าโมงเช้า ถึงหกโมงเย็น ดังนั้น ค่าเข้าชมงาน ถ้าอยู่ตลอดเก้าชั่วโมง ก็ตกเฉลี่ยชั่วโมงละ 2.56 ยูโร (ประมาณนาทีละสองบาท)&lt;br /&gt;&lt;br /&gt;ของกินในงานเนี่ย แย่จัง ... มีแค่ขนมปังกะไส้กรอก แล้วก็ไอติมเนสท์เล่ ราคาแต่ละอย่าง ไม่สมกับปริมาณเลย ไส้กรอกหนึ่งเส้นกับขนมปังห่วย ๆ หนึ่งก้อน ราคาสองยูโรครึ่ง ไอตินเนสท์เล่สองลูกเล็ก ๆ (เน้นว่าเล็ก ๆ) บนโคนหนึ่งอัน ก็ราคาสองยูโรครึ่ง ส่วนน้ำเปล่ากับน้ำอัดลม ราคาเท่ากันคือแก้วละสองยูโร ตอนแรกต้องมัดจำค่าแก้วใบละครึ่งยูโรด้วย (เอาแก้วไปคืน จะได้เงินคืนมา)&lt;br /&gt;&lt;br /&gt;จริง ๆ วัฒนธรรมการมัดจำภาชนะเนี่ย มันก็มีหลายประเทศแล้วแหละ ... น่าแปลกเหมือนกัน ที่อิตาลีเค้าไม่มีแบบนี้&lt;br /&gt;&lt;br /&gt;ตอนเย็น พองานปิด ก็เดินไปที่ Frankfurt Hauptbahnhof แล้วขึ้นรถไฟสาย S9 ไปที่ Offenbach Marktplatz กะจะหาของกิน ที่ไหนได้ เค้าปิดกันเกือบหมดแล้ว ... เหลือ KFC เปิดอยู่ ไปกินก็ได้ - -''&lt;br /&gt;&lt;br /&gt;วันพฤหัสก็ ไปดูงานอีกวัน ไม่มีไรมากหรอก ก็อยู่ในงานทั้งวัน ตอนเย็นก็ไปหาของกิน แต่คราวนี้ ไม่ได้ไป KFC ละ เพราะว่าออกจากงานก่อนเวลาปิดนิดนึง ร้านอาหารอื่นเค้ายังไม่ปิด วันนี้ไปกินขาหมูเยอรมันที่ร้าน ... ลืมชื่อไปแล้ว :P&lt;br /&gt;&lt;br /&gt;วันศุกร์ ไปเที่ยวละ คราวนี้ เริ่มเดินจาก Frankfurt Hauptbahnhof ไปยัง Hauptwache แถวนี้ร้านขายของเยอะมากเลย มี Department Store แปดชั้นด้วย ... ของที่ขายก็เหมือน ๆ ร้านในกรุงเทพ ฯ นี่แหละ ... ที่ต่างจากห้างของเมืองเราก็มีบันไดเลื่อนนี่แหละ ... ชั้นนึงมันต่อกับบันไดเลื่อนแปดอันหนะ สะดวกดี ... (ถ้าไม่เข้าใจ รอดูภาพละกัน)&lt;br /&gt;&lt;br /&gt;อยากจะซื้อของกลับไปฝากหลาย ๆ อย่างนะ แต่มันมีแต่ช็อกโกแล็ตอะ - -''&lt;br /&gt;&lt;br /&gt;วันเสาร์แล้ว วันนี้จะกลับละ แต่ขอไปซื้อของฝากอีกนิดนึงก่อน ... เครื่องบินเค้าเรียกเข้าตอนบ่ายสองสิบห้านาที บังเอิญว่าไปถึงสนามบินแต่เช้า ก็เลยมีเวลาเดินหาของนานหน่อย ... แย่จัง มีเวลาเยอะ แต่ของมันดันมีน้อย ... ไป ๆ มา ๆ ก็มีแต่ช็อกโกแล็ตอะ&lt;br /&gt;&lt;br /&gt;บ่ายสามนิด ๆ เครื่องบินก็เริ่มปลดเปลื้อง ... บนเครื่องบินคราวนี้ ฉายหนังสองเรื่อง เรื่องแรกคือ Prime อีกเรื่องคือ King Kong&lt;br /&gt;&lt;br /&gt;... หมดละ ถึงกรุงเทพ ฯ ซะที!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-114819041390751076?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/114819041390751076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=114819041390751076' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114819041390751076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114819041390751076'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/05/blog-post_21.html' title='กลับมาละ'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-114712649046121267</id><published>2006-05-08T23:50:00.000+07:00</published><updated>2006-05-09T05:14:50.563+07:00</updated><title type='text'>วันนี้ก็ยาวอีกแล้ว</title><content type='html'>ตื่นตอนเช้า กินอาหารเช้า แต่งตัว ... พอถึงเก้าโมงก็มีคนมารับไปโรงงาน&lt;br /&gt;&lt;br /&gt;ถ่ายรูปโรงงานเค้าได้ซักสิบกว่า ๆ รูป กล้องดันแบตหมด - -'' ... ช่างมัน พรุ่งนี้ค่อยไปถ่ายใหม่ละกัน (จริง ๆ แบตมันก็อยู่ใกล้ ๆ แหละ แต่ไม่มีโอกาสไปหยิบ)&lt;br /&gt;&lt;br /&gt;ในโรงงานเค้ามีตู้ขายกาแฟร้อนด้วย หยอดได้แต่เหรียญนะ ... ใกล้ ๆ ตู้ก็มีป้ายห้ามสูบบุหรี่ (ถ้าสูบ จะถูกปรับตั้งแต่ 28.5 ถึง 285 ยูโร) แต่คนงานเค้ามาสูบตรงนี้เพียบเลย ... ก็มันสูบกันทุกคนหนิเนอะ&lt;br /&gt;&lt;br /&gt;พอบ่ายโมง เค้าก็พาไปกินข้าวกลางวัน เป็นโรงอาหารของโรงงานแหละ แต่อาหารก็พอใช้ได้นะ ... (ดีกว่าข้าวกลางวันของสาธิตจุฬาฯ ฝ่ายประถม แน่ ๆ)&lt;br /&gt;&lt;br /&gt;ประมาณบ่ายสอง ก็กลับไปฟังเค้าบรรยายเรื่องเครื่องมือ เอา drawing มาให้ดูเพียบเลย ... เริ่มรู้สึกว่าตัวเองกะเหรี่ยงแฮะ ไม่รู้จักเครื่องหมายเค้าเลย (แต่พอฟัง ๆ แล้วก็เริ่มจะเข้าใจบ้างหละ)&lt;br /&gt;&lt;br /&gt;ก่อนจะไปกินข้าวเย็น เรื่องสุดท้ายที่เค้าบรรยายก็คือ Plasma Sterilizer ซึ่งผู้ผลิตรายที่ดังที่สุดคือ Johnson &amp; Johnson ทำอยู่เจ้าเดียวมาสิบปีแล้ว เพิ่งจะมีคนอื่นเริ่มทำก็ปีที่แล้วเนี่ยแหละ การทำงานของมันก็เข้าใจไม่ยากนะ แต่ทำยากจัง เค้าบอกว่า ต้องใช้ High Vacuum Pump เพื่อทำความดันภายใน chamber ให้ได้ต่ำถึง 0.01 millibar สัมบูรณ์ จากนั้นก็พยายามทำให้อิเล็กตรอน หลุดออกจากโมเลกุลของอากาศที่ยังเหลืออยู่ โมเลกุลมันก็จะไวต่อสนามไฟฟ้าเพราะมันมีประจุ ส่วนอิเล็กตรอนที่หลุดออกไป มันก็ไวเหมือนกัน พอของพวกนี้วิ่งไปชนกับสารอินทรีย์ พันธะมันก็จะแตกออกง่าย ๆ เค้าก็เลยใช้วิธีนี้ฆ่าเชื้อ ... เพื่อจะทำให้อิเล็กตรอนมันหลุดง่าย ๆ เค้าก็ใส่ก๊าซที่มีความเสถียรต่ำ เพิ่มลงไปด้วย (อันนี้เค้าใช้ H&lt;sub&gt;2&lt;/sub&gt;O&lt;sub&gt;2&lt;/sub&gt;)&lt;br /&gt;&lt;br /&gt;ข้อดีของวิธีนี้ก็คือ ใช้อุณหภูมิต่ำ คือ ประมาณ 40 - 55 °C เท่านั้น เลยใช้กับพลาสติกหรือวัสดุไม่ทนความร้อนได้ แต่ข้อเสียก็คือ ของที่ใส่เข้าไปต้องแห้งจัด ๆ&lt;br /&gt;&lt;br /&gt;ความรู้ที่ได้เพิ่มตรงนี้มีสองเรื่อง คือ&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;เหตุผลที่ต้องให้ของของเรา แห้งจัด ๆ ก็เพราะว่า ที่ความดัน 0.01 mbar สัมบูรณ์เนี่ย จุดเดือดของน้ำจะต่ำมาก (เกือบ 0°C) น้ำทั้งหมดจะกลายเป็นไอ ทำให้ปริมาณก๊าซใน chamber เพิ่มขึ้น ซึ่งก็แปลว่า ความดันจะเพิ่มด้วย มันก็จะไม่ใช่ 0.01 mbar แล้ว ตัว vacuum pump ต้องดูดเอาพวกนี้ออกให้หมดด้วย กระบวนการแบบนี้จะกินแรง pump มาก ๆ บางครั้งเครื่องอาจจะหยุดทำงานไปเลย แล้วแจ้งเตือนว่าความชื้นสูงเกินไป&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;สถานะของก๊าซที่มีประจุเนี่ย เรียกว่า plasma (กะเหรี่ยงมั้ยเนี่ย ไม่รู้มาก่อน :P)&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;ถึงตอนเย็นเค้าก็พาไปกินข้าวเย็น จะบอกว่า สองทุ่มแล้วแหละ แต่ฟ้ายังไม่มืดเลยนะ&lt;br /&gt;&lt;br /&gt;ที่ร้านอาหาร เค้าก็สอนภาษาอิตาลีให้นิด ๆ หน่อย ๆ เอาสนุก ส่วนใหญ่คือ จะแปลเมนูภาษาอิตาลีให้ฟัง (ร้านนี้ไม่มีเมนูภาษาอังกฤษ) จำได้นิดเดียวเอง ประมาณเนี้ย ...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;acqua = water&lt;br /&gt;antipasto = appetizer&lt;br /&gt;zucchero = sugar&lt;br /&gt;&lt;br /&gt;salmone = salmon&lt;br /&gt;melone = melon&lt;br /&gt;limone = lemon&lt;br /&gt;&lt;br /&gt;fritto = fried&lt;br /&gt;misto = mixed&lt;br /&gt;&lt;br /&gt;mare = sea&lt;br /&gt;pesce = fish&lt;br /&gt;pescatore = fisherman&lt;br /&gt;calamari = squid(s)&lt;br /&gt;patata = potato&lt;br /&gt;funghi = mushroom(s)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;อ้อ ... แล้วก็ calcium เนี่ย เค้าอ่านว่า "คัลชุ่ม" แหละ&lt;br /&gt;&lt;br /&gt;กินเสร็จก็กลับโรงแรมเลย ... ตอนนี้ก็ เลยเที่ยงคืนแล้วอ่า ... ไปนอนละ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-114712649046121267?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/114712649046121267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=114712649046121267' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114712649046121267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114712649046121267'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/05/blog-post_08.html' title='วันนี้ก็ยาวอีกแล้ว'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-114701266422253493</id><published>2006-05-07T16:38:00.000+07:00</published><updated>2006-05-07T21:37:44.323+07:00</updated><title type='text'>วันนี้ยาวจัง</title><content type='html'>กะจะเอารูปมาให้ดูด้วย แต่ว่าลืมเอาสายต่อกล้องมา เลยเอาลงเครื่องคอมพ์ไม่ได้ T_T เล่าให้ฟังเป็นตัวอักษรอย่างเดียวก่อนละกัน&lt;br /&gt;&lt;br /&gt;ประมาณเที่ยงคืนครึ่ง วันนี้ ขึ้นเครื่องบิน สายการบินไทย ประตูยี่สิบสี่ ปลายทาง กรุงโรมนะครับ นั่งรอจนเที่ยงคืนห้าสิบห้า เครื่องบินก็เริ่มเปลื้องผ้า (Take Off)&lt;br /&gt;&lt;br /&gt;ตอนแรก บนจอทีวี เปิดซีรีส์ซิทคอมเรื่อง ... จำชื่อเรื่องไม่ได้อะ ... ก็ฮาใช้ได้ รายการต่อจากนั้นก็เป็น ดนตรีคลาสสิก ไม่สิ ดนตรีบาโรค มาพร้อมกับอาหารมื้อตีหนึ่งกว่า ๆ พอกินกันเสร็จ ผู้คนก็เริ่มหลับกัน (สงสัยเพราะเพลงน่ะแหละ) ... เรายังไม่อยากนอน ก็เลยนั่งวาดรูปเล่น (รูปเรขาคณิตหนะ กำลังคิดเรื่องที่ทำวิจัยอยู่ ... คิดไปคิดมา ได้ความว่า มันยากกว่าที่เคยคิดแฮะ) ผ่านไปประมาณชั่วโมงนึง เริ่มง่วง ๆ เลยนอนมั่ง&lt;br /&gt;&lt;br /&gt;ตื่นมา เค้าเปิด Narnia ให้ดูด้วย ... ดูแล้วก็เลยรู้ ว่าทำไมคนถึงด่ากันจัง ... ดูจบ กินข้าว รออีกแป๊บนึงก็หกโมงเช้าสามสิบห้านาที ถึงเวลาเครื่องบินแตะพื้นกรุงโรมละ&lt;br /&gt;&lt;br /&gt;ตรงที่ตรวจหนังสือเดินทางเนี่ย คนแน่นมากกกก ... กว่าจะออกจากสนามบินได้ ประมาณชั่วโมงนึงแหนะ ... จะบอกว่า ห้องน้ำในสนามบิน Fiumicino เนี่ย แย่กว่าดอนเมืองพอควรเลย&lt;br /&gt;&lt;br /&gt;ออกมา ก็มีคนขับรถมารับ ... รู้สึกไม่ค่อยคุ้นเคยกับรถชิดขวาเลยแฮะ ... นั่งรถประมาณครึ่งชั่วโมงก็ถึงโรงแรม Hotel Centrale ใน Pomezia&lt;br /&gt;&lt;br /&gt;เนื่องจาก Pomezia เป็นย่านอุตสาหกรรม ก็เลยไม่มีที่ท่องเที่ยวให้ดูเลย ... แต่ที่แย่กว่านั้น วันนี้วันอาทิตย์ครับ ... เมืองหยั่งกะเมืองร้างแหนะ มีแต่ตึก ไม่มีคน ไม่มีร้านขายของ ... จริง ๆ มีอยู่ร้านนึงใกล้ ๆ โรงแรม แต่ว่ามันปิดวันอาทิตย์หนะ&lt;br /&gt;&lt;br /&gt;ส่วน ตัวโรงแรม Hotel Centrale เนี่ย ก็ไม่ใช่โรงแรมหรูหราอะไรเลย ไว้หาสายต่อกับกล้องได้แล้วจะเอารูปให้ดู ลิฟท์ยังมีแบบที่กดปุ่มแล้วไฟไม่ขึ้น ข้างในก็ไม่มีจอบอกว่าอยู่ชั้นไหนแล้ว ...&lt;br /&gt;&lt;br /&gt;แต่สิ่งแปลก ๆ เท่ ๆ ก็มีอยู่บ้างนะ คือ ลิฟท์เค้า มีชั้น 0 กับ -1 ด้วยอะ ... เขียนหยั่งงี้บนปุ่มให้กดเลยนะ&lt;br /&gt;&lt;br /&gt;แล้วก็ ในห้องพักสำหรับสองคนเนี่ย ... ประตูห้องน้ำไม่มีล็อก&lt;br /&gt;&lt;br /&gt;และที่ขาดไม่ได้ ... มันมี Internet ให้ใช้ด้วย !!! มีได้ไงไม่รู้&lt;br /&gt;&lt;br /&gt;ตอนนี้ก็ ... สี่โมงยี่สิบสามละ (เหลือบไปเห็นนาฬิกาของเครื่องคอมพ์ ... 9:38 PM แล้วนี่หว่า) พอดีกว่า ไปคุย msn ละ ไว้มีอะไรจะมาบอกเรื่อย ๆ นะ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-114701266422253493?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/114701266422253493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=114701266422253493' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114701266422253493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114701266422253493'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/05/blog-post_07.html' title='วันนี้ยาวจัง'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-114656650786698744</id><published>2006-05-02T17:39:00.000+07:00</published><updated>2006-05-02T17:41:47.893+07:00</updated><title type='text'>กำลังจะไปยุโรป</title><content type='html'>วันที่ 6 - 20 เดือนนี้ จะไป Rome กับ Frankfurt หละ ไว้จะถ่ายรูปมาให้ดูกันบ้าง ... (กลับมา จะ update ละ)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-114656650786698744?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/114656650786698744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=114656650786698744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114656650786698744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114656650786698744'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/05/blog-post.html' title='กำลังจะไปยุโรป'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-114545072694300415</id><published>2006-04-13T19:43:00.000+07:00</published><updated>2006-04-19T19:45:26.970+07:00</updated><title type='text'>สวัสดีปีใหม่ไทย</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;สุขสันต์วันสงกรานต์จ้าาาา!!!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;อยู่เชียงใหม่หละ เล่นน้ำที่คูเมือง หนุกดี&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-114545072694300415?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/114545072694300415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=114545072694300415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114545072694300415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/114545072694300415'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/04/blog-post.html' title='สวัสดีปีใหม่ไทย'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113912285389574469</id><published>2006-02-05T11:57:00.000+07:00</published><updated>2006-02-06T13:39:21.996+07:00</updated><title type='text'>คนชอบ คนไม่ชอบ ...</title><content type='html'>&lt;div style="text-align: center;"&gt;คนที่ชอบเรา = คนที่พอใจในสิ่งที่เราทำ&lt;br /&gt;คนที่ไม่ชอบเรา = คนที่ไม่พอใจในสิ่งที่เราทำ&lt;br /&gt;คนที่รู้สึกเฉย ๆ กับเรา = คนที่ไม่คิดว่าต้องสนใจการกระทำของเรา&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;ระดับความพอใจที่ X รู้สึกต่อ Y&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;b&gt;ความพอใจจากประสบการณ์ตรง&lt;/b&gt;: Y ช่วย X&lt;/li&gt;   &lt;li&gt;&lt;b&gt;ความพอใจจากการวิเคราะห์&lt;/b&gt;: X รู้สึกว่า Y ทำสิ่งที่ X เห็นว่าดี&lt;/li&gt; &lt;/ul&gt; คำว่า "ช่วย" เอง ก็มีหลายลักษณะ เช่น&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;เป็นที่พี่งทางใจ&lt;/li&gt;   &lt;li&gt;ช่วยแก้ปัญหา&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;ให้เงิน&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;ซ่อมถนนแถวบ้าน&lt;/li&gt;   &lt;li&gt;พัฒนาชุมชนแถบใกล้เคียง&lt;/li&gt;   &lt;li&gt;ฯลฯ&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; ส่วน "ข้อมูลที่ทำให้พอใจ" จากการวิเคราะห์ ก็มีหลายแบบ เช่น&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;ทำให้คนทั้งโลกมีความสุขมากขึ้น&lt;/li&gt;   &lt;li&gt;ทำให้คนหลาย ๆ คน รวยขึ้น&lt;/li&gt;   &lt;li&gt;ทำให้คนที่เราไม่ชอบ เสียหาย&lt;/li&gt;   &lt;li&gt;ปราบยาเสพติดได้&lt;/li&gt;   &lt;li&gt;สร้างงานให้ชนชั้นล่าง&lt;/li&gt;   &lt;li&gt;ทำให้เศรษฐกิจดีขึ้น&lt;/li&gt;   &lt;li&gt;ฯลฯ&lt;/li&gt; &lt;/ul&gt; อย่างไรก็ตาม ข้อมูลที่ทำให้พอใจ มีความเป็นไปได้ว่าจะเป็นข้อมูลเท็จ สูงกว่าประสบการณ์ตรง นอกจากนั้น ข้อมูลเดียวกัน อาจให้ผลการวิเคราะห์ที่แตกต่างกัน สำหรับแต่ละบุคคล กล่าวคือ บางคนอาจจะพอใจ แต่บางคนอาจจะไม่พอใจ เมื่อได้รับข้อมูลเดียวกัน&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;ความพอใจของคนหมู่มาก&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;มันเป็นเรื่องปกติที่ เราไม่สามารถสร้างประสบการณ์ตรงกับคนหมู่มาก (เช่น ทั้งประเทศ) ได้ วิธีที่จะทำให้คนส่วนใหญ่พอใจเรา ก็คือ การให้ข้อมูล&lt;br /&gt;&lt;br /&gt;เพื่อที่จะให้ข้อมูลด้านดีของเรา ไปถึงคนส่วนใหญ่ได้ เราก็ควรจะควบคุมสื่อของข้อมูล ที่เข้าถึงคนส่วนใหญ่ได้ (เช่น โทรทัศน์ วิทยุ หนังสือพิมพ์ ฯลฯ)&lt;br /&gt;&lt;br /&gt;วิธีควบคุมสื่อที่เข้าถึงคนส่วนใหญ่ได้ ก็มีมากมายหลายอย่าง เช่น&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;เป็นเจ้าของสื่อเอง&lt;/li&gt;   &lt;li&gt;ควบคุมสื่ออื่นทางตรง (ซื้อ)&lt;/li&gt;   &lt;li&gt;ควบคุมผู้ที่ทำงานให้สื่ออื่น&lt;/li&gt; &lt;/ul&gt; วิธีการ "ควบคุมคน" สามารถทำได้ง่ายกว่าการทำให้คนกลุ่มใหญ่พอใจ ดังนั้น แนวทางหนึ่งในการทำให้คนพอใจ ก็คือ&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ใช้คนที่เราควบคุมได้ ไปเผยแพร่ข้อมูล (ที่อาจจะไม่จริง) เพื่อให้คนกลุ่มใหญ่พอใจ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;ข้อมูลดึงอารมณ์&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;วิธีการสร้างข้อมูลสนับสนุนหรือบ่อนทำลาย มักจะเน้นที่การดึงอารมณ์ ตัวอย่างการสร้างภาพขอความเห็นใจ เช่น&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;กลุ่มคนที่บ้าคลั่ง กำลังด่าทอ สาปแช่งเรา&lt;/li&gt;   &lt;li&gt;เด็ก คนแก่ คนป่วย คนพิการ คนจน มาให้กำลังใจเรา&lt;/li&gt; &lt;/ul&gt; หน้าที่ของผู้วิเคราะห์ที่ดีก็คือ ควรจะควบคุมไม่ให้อารมณ์มาเหนือเหตุผล และคิดเผื่อความเป็นไปได้ในหลาย ๆ ทาง เช่น กลุ่มคนดังกล่าว (ในตัวอย่างภาพที่สร้าง) มีความเป็นไปได้ที่จะถูกว่าจ้าง สูงกว่าคนปกติ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;ประชาธิปไตย&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ประเด็นสำคัญของประชาธิปไตยก็คือ &lt;b&gt;จำนวน&lt;/b&gt;คนที่ชอบเรา ดังนั้น วิธีที่กล่าวไว้ จึงเป็นวิธีที่นักการเมือง ในประเทศประชาธิปไตย นิยมมากที่สุด&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;แล้ว สิ่งที่ประชาชนควรกระทำหละ?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;โดยอุดมคติแล้ว หน้าที่ของประชาชนก็คือ วิเคราะห์ประสบการณ์และข้อมูลต่าง ๆ แล้วตัดสินใจ เพื่อผลประโยชน์สูงสุดของประเทศชาติ&lt;br /&gt;&lt;br /&gt;แต่ ถ้าทุกคนคิด "&lt;b&gt;ถูกต้องที่สุด&lt;/b&gt;" เหมือนกัน (และสิ่งที่ถูกต้องที่สุดมีเพียงหนึ่งเดียว) การเลือกตั้งทุกครั้งก็คงจบลงที่ มีผู้สมัครรับเลือกตั้งเพียงผู้เดียวเท่านั้นที่ได้คะแนนไม่เป็นศูนย์&lt;br /&gt;&lt;br /&gt;แน่นอนว่า สิ่งนี้ไม่สามารถเกิดขึ้นจริงได้ เพราะสิ่งที่ "&lt;b&gt;ถูกต้องที่สุด&lt;/b&gt;" มันไม่มีนิยามที่ชัดเจน แต่ละคนก็จะมองแตกต่างกัน สิ่งที่ประชาชนพอจะทำได้ก็คือ พยายามเลือกสิ่งที่ "&lt;b&gt;น่าจะถูกต้องที่สุด&lt;/b&gt;" ซึ่งตัวเลือกของแต่ละคน ก็มีสิทธิ์ที่จะแตกต่างกัน&lt;br /&gt;&lt;br /&gt;สรุปก็คือ เราควรจะถามตัวเองเสมอ ๆ ด้วยเหตุผล เพื่อเตือนตัวเองให้ตัดสินใจใกล้เคียง "อุดมคติ" มากที่สุด ตัวอย่างคำถามก็เช่น&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;ถ้าเราพอใจ X จากประสบการณ์จริง แสดงว่า X ทำเช่นเดียวกันกับผู้อื่นหรือไม่?&lt;/li&gt;   &lt;li&gt;ถ้าเราพอใจ X จากประสบการณ์จริง ผู้อื่นจะพอใจกับประสบการณ์แบบเดียวกันหรือไม่?&lt;/li&gt;   &lt;li&gt;ข้อมูลเกี่ยวกับ X ที่เราได้รับ มีโอกาสเป็นจริงหรือเท็จมากแค่ไหน?&lt;/li&gt;   &lt;li&gt;เรามีอคติหรือไม่ ในการวิเคราะห์ข้อมูลเกี่ยวกับ X?&lt;/li&gt;   &lt;li&gt;ถ้าเราพอใจข้อมูลที่ได้รับเกี่ยวกับ X ผู้อื่นจะพอใจข้อมูลเดียวกันนี้หรือไม่?&lt;/li&gt;   &lt;li&gt;ฯลฯ&lt;/li&gt; &lt;/ul&gt; ประเด็นที่สำคัญอีกเรื่อง ก็คือ เมื่อเราตัดสินใจไปแล้ว เราก็ไม่จำเป็นต้องยึดติดกับความคิดเก่านั้น เมื่อเราได้รับประสบการณ์หรือข้อมูลเพิ่ม เราก็ควรจะวิเคราะห์ใหม่ เพื่อให้แนวทางประชาธิปไตย สมบูรณ์แบบยิ่งขึ้น&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;ผู้สนับสนุนส่วนเกิน&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;คนที่เชี่ยวชาญเรื่องเกี่ยวกับ Y มักจะไม่ยอมรับ X เมื่อ X เป็นอะไรซักอย่างใน Y&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;(ที่ใช้คำว่า "มักจะ" ก็เพราะว่า มันไม่ใช่ทุกครั้ง)&lt;br /&gt;&lt;br /&gt;ตัวอย่างเช่น&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;คนที่ดูหนังมามาก ๆ มักจะวิจารณ์หนังเรื่องใหม่ ๆ ในทางลบ&lt;/li&gt;   &lt;li&gt;คนที่เห็นเสื้อบอลมามาก ๆ จะไม่ชอบเสื้อบอลรุ่นใหม่&lt;/li&gt;   &lt;li&gt;ฯลฯ&lt;/li&gt; &lt;/ul&gt; สาเหตุที่เป็นอย่างนี้ ก็อาจจะเป็นเพราะ ผู้ที่เชี่ยวชาญเรื่องเกี่ยวกับ Y มักจะเคยรู้จักสิ่งที่ดีกว่า X หรือถ้าผู้นั้นเคยทำสิ่งที่เกี่ยวกับ Y เองโดยตรง ก็อาจจะไม่อยากยอมรับคนที่เก่งกว่า&lt;br /&gt;&lt;br /&gt;(อย่างไรก็ตาม การไม่ยอมรับ ไม่ใช่สิ่งที่ผิด)&lt;br /&gt;&lt;br /&gt;เรื่องที่น่าแปลกก็คือ ข้อความตรงข้ามของประโยคข้างบน ก็เป็นจริงค่อนข้างบ่อย&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;คนที่ไม่เชี่ยวชาญเรื่องเกี่ยวกับ Y มักจะยอมรับ X เมื่อ X เป็นอะไรซักอย่างใน Y&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;เหตุผลที่เป็นเช่นนี้ ก็อาจจะเป็นเพราะว่า โดยธรรมชาติของมนุษย์ ไม่ชอบความขัดแย้ง ดังนั้น เมื่อมีใครเสนออะไรขึ้นมา เราก็มักจะไม่อยากไปโต้แย้งเขา นอกจากเราจะรู้จริง ๆ ว่ามันไม่ดีอย่างไร (คือ เราเชี่ยวชาญเรื่อง Y หรืออย่างน้อย เราคิดว่าเราเชี่ยวชาญเรื่อง Y)&lt;br /&gt;&lt;br /&gt;(การยอมรับ ก็ไม่ใช่สิ่งที่ผิด)&lt;br /&gt;&lt;br /&gt;ผลลัพธ์อย่างนึงของประโยคนี้ก็คือ คนที่ไม่ได้ใส่ใจการเมือง มีแนวโน้มจะยอมรับรัฐบาล&lt;br /&gt;&lt;br /&gt;เมื่อผนวกกับ &lt;b&gt;ความกลัวความเปลี่ยนแปลง&lt;/b&gt; ซึ่งเป็นธรรมชาติของมนุษย์อีกอย่าง เราจึงรู้ว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;คนที่ไม่ได้ใส่ใจในการเมือง มีแนวโน้มที่จะยอมรับรัฐบาล และไม่คิดล้มล้างรัฐบาล&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;คนเหล่านี้ เป็น "&lt;b&gt;ผู้สนับสนุนส่วนเกิน&lt;/b&gt;" ของรัฐบาล&lt;br /&gt;&lt;br /&gt;รัฐบาลที่ฉลาด จะเห็นช่องว่างตรงนี้ แล้วพยายามดึงคนกลุ่มนี้เป็นพวกให้มากที่สุด เพราะว่า มีปริมาณมาก และคล้อยตามง่าย&lt;br /&gt;&lt;br /&gt;อย่างไรก็ตาม ผู้สนับสนุนส่วนเกิน ไม่ใช่ผู้ที่ขัดขวางแนวทางของประชาธิปไตย แต่เป็นส่วนประกอบที่เกิดขึ้นจาก ธรรมชาติของประชาธิปไตย&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;คนเดินขบวน&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;คนส่วนใหญ่ มักจะมีหน้าที่ประจำของตัวเองอยู่แล้ว การที่จะต้องละทิ้งหน้าที่ตัวเองเพื่อไปทำอะไรซักอย่าง ที่มัน "&lt;b&gt;ไม่ปกติ&lt;/b&gt;" แสดงว่าสิ่งที่ไปทำนั้น จะต้องสำคัญมาก ๆ รัฐบาลควรมองพวกที่เดินขบวนเป็นข้อมูลที่ต้องสนใจ&lt;br /&gt;&lt;br /&gt;การตั้งตัวเป็นศัตรูกับพวกที่เดินขบวน แล้วไม่รับฟังสิ่งใด ๆ จากคนเหล่านี้ ถือว่าเป็นสิ่งที่ไม่สมควรกระทำ รัฐบาลใด ๆ ควรจะเข้าใจว่า ปกติแล้ว คนจะไม่พยายามมาเหนื่อยในเรื่องแบบนี้ ถ้ามีขบวนเกิดขึ้น รัฐบาลควรจะถามว่า เขามาเดินขบวนกันทำไม จะได้ไปแก้ปัญหาให้ได้&lt;br /&gt;&lt;br /&gt;การสลายกลุ่มผู้ประท้วง โดยการจ้างกลุ่มคนก่อความไม่สงบ (เช่น จ้างหญิงโสเภณีมาตีคนแก่ จ้างชาวบ้านมาแสดงการเผารูปผู้นำกลุ่มเดินขบวน ฯลฯ) เป็นสิ่งที่เลวร้ายยิ่งกว่าการไม่ฟังยิ่งนัก&lt;br /&gt;&lt;br /&gt;อย่างไรก็ตาม กลุ่มผู้ประท้วง หรือกลุ่มคนก่อความไม่สงบ อาจจะถูกว่าจ้างมาจากฝั่งใดก็ได้ เช่น กลุ่มผู้ประท้วง อาจจะถูกว่าจ้างโดยฝ่ายค้าน หรือกลุ่มคนก่อความไม่สงบ อาจจะถูกว่าจ้างโดยกลุ่มผู้ประท้วงเอง เพื่อสร้างภาพที่ไม่ดีต่อรัฐบาล ดังนั้น เป็นหน้าที่ของคนทุกคนที่ได้รับข้อมูลเหล่านี้ ที่จะต้องวิเคราะห์ด้วยเหตุผล &lt;b&gt;อย่าคล้อยตามไปกับปริมาณข้อมูล&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ถึงแม้ประชาธิปไตยจะเน้นสิทธิความเท่าเทียมกันของบุคคล แต่&lt;b&gt;ตัวตนของผู้เดินขบวน&lt;/b&gt;ก็เป็นข้อมูลที่ไม่ควรละเลย โดยเฉพาะ ในกรณีที่ผู้เดินขบวน เป็นคนมีอายุ มีฐานะการงาน มีครอบครัว สิ่งนี้แสดงว่า ถึงแม้จะมีภาระรับผิดชอบมากมาย ยังยอม "&lt;b&gt;เสี่ยงชีวิต&lt;/b&gt;" มาเดินขบวน&lt;br /&gt;&lt;br /&gt;ตัวอย่างเช่น ผู้เคยที่ประท้วงรัฐบาลในอดีต (เมื่อยังเป็นนักศึกษา) มีแนวโน้มที่จะเป็นผู้เชี่ยวชาญการเมือง สูงกว่าคนทั่วไป และมีแนวโน้มที่จะ "รักชาติ" มากกว่าด้วย การเรียกผู้มีอายุเหล่านี้ว่าเป็น "นักธุรกิจที่ถูกขัดผลประโยชน์" จึงฟังดูไม่สมเหตุสมผล (ในทางอุดมคติ ไม่ควรจะมี "นักธุรกิจที่ถูกขัดผลประโยชน์" ด้วยซ้ำ)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113912285389574469?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113912285389574469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113912285389574469' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113912285389574469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113912285389574469'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/02/blog-post.html' title='คนชอบ คนไม่ชอบ ...'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113847579082173935</id><published>2006-01-29T02:15:00.000+07:00</published><updated>2006-01-29T02:16:30.873+07:00</updated><title type='text'>ฮา...</title><content type='html'>อ่านอันข้างล่างแล้วหมั่นไส้ตัวเองแฮะ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113847579082173935?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113847579082173935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113847579082173935' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113847579082173935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113847579082173935'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/01/blog-post_29.html' title='ฮา...'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113838856246680181</id><published>2006-01-28T00:59:00.000+07:00</published><updated>2006-01-28T02:02:42.556+07:00</updated><title type='text'>เกือบโกหก ... ?</title><content type='html'>ประเด็นมันอยู่ที่ว่า หลาย ๆ คน คิดว่า คนที่จะเข้าวิศวะจุฬา ฯ ได้เนี่ย จะต้องขยันเรียนสุด ๆ (อย่างน้อยก็ ตอน ม. ปลาย) และคนที่จะได้เกียรตินิยมอันดับ 1 เนี่ย มันต้องขยันโคตร ๆ ๆ ๆ&lt;br /&gt;&lt;br /&gt;เรื่อง 2 เรื่องต่อไปนี้ เป็นเหตุการณ์ตัวอย่าง (จริง ๆ มีมากกว่า 2 ครั้ง) ซึ่งอาจจะไม่ได้ตรงกับเหตุการณ์จริง 100% นะ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;เรื่องที่ 1&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;เพื่อนผมคนนึง เคยเป็นอันดับต้น ๆ ของโรงเรียนตอนมัธยม เค้าอยู่วิศวะจุฬา ฯ เหมือนกัน (ตอนนั้นยังเรียนอยู่) แต่เกรดเค้าไม่ค่อยดี (คือ ใกล้ ๆ 3 ... บางคนก็บอกว่าดีแล้ว) พอไปคุยกะแม่เค้า แม่เค้าถามเกรดผม ... พอบอกไปปุ๊บ (ตอนนั้น 3.85) ก็ได้คำพูดตอบกลับมาทันทีว่า&lt;br /&gt;&lt;br /&gt; &lt;div style="text-align: center;"&gt;&lt;b&gt;อ่านหนังสือทบทวนทุกวันเลยสิ ดูอย่างเพื่อนไว้บ้างนะ&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ฮ่วย ... พูดไม่ออก ... เพื่อนผมก็พูดไม่ออกด้วยอะ ก็เค้ารู้แหละ ว่าผมเป็นไง ให้เอาอย่างผมก็ยิ่งซวยสิ ... สุดท้ายก็ได้แค่ ผงกหัวแล้วพูด "ครับ ๆ" อย่างเดียว&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;เรื่องที่ 2&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;มีแม่ของเด็กม.ปลายคนนึง (คือ เค้ารู้จักกับญาติผมหละ) ถามว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;อยู่วิศวะจุฬา ฯ ได้เนี่ย ต้องขยันมาก ๆ เลยสิ&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;จะให้ปฏิเสธหรอ? ... คือ ในใจก็รู้ตัวว่า ไม่เคยขยันเรียนอย่างที่คนอื่น ๆ เค้าพูดกัน แต่ไงดีหละ ... ก็เอาเป็นว่า สิ่งที่เราทำ ๆ ไป คนอื่นคงเรียกได้ว่า "ขยันมาก ๆ" หละมั้ง&lt;br /&gt;&lt;br /&gt;เลยตอบแบบคลุมเครือไป ประมาณว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;ครับ ตอนเอ็นทรานซ์เนี่ย ก็ต้องดูหนังสือเยอะ&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ในใจก็แอบคิดว่า ไอ้คำว่า "เยอะ" เนี่ย ... มันไม่มีนิยามที่เฉพาะเจาะจง คงไม่เรียกว่าโกหกนะ ... แต่แล้ว เค้าก็ถามต่อมาว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;ดูหนังสือก่อนสอบกี่เดือนหละ?&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;เวรกรรม ... จะตอบว่าสัปดาห์เดียวได้มั้ยหละเนี่ย ... ขอเลี่ยง ๆ อีกหน่อยละกันนะ&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;ก็ ... เตรียมตัวสอบเกือบทั้งปีหละครับ&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;"เตรียมตัวสอบ" เนี่ย คิดในใจว่า รวมเรื่องสมัครสอบไปด้วยละกัน คิดว่า ตั้งแต่เตรียมตัวสอบครั้งแรก ถึงการสอบครั้งที่สอง มันคงเรียกว่า "เกือบทั้งปี" ได้มั้ง ...&lt;br /&gt;&lt;br /&gt;ยัง ยัง ... ยังไม่รอด ...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;แล้วดูหนังสือวิชาเลขยังไงหรอ?&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;แป่วววว ... เล่นบอกวิชามางี้ ... ไม่ได้ดูอะ ... อ้อ ๆ แต่ ที่โรงเรียนมีโจทย์ (การบ้านงี่เง่า ๆ หนะ) ให้ทำเรื่อย ๆ หนิ&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;ก็ทำโจทย์เยอะ ๆ หละครับ&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ตอนนี้ ในใจก็คิดว่า แค่มากกว่า 0 คงเรียกว่า "เยอะ ๆ" ได้มั้ง ... แต่มันเริ่มขัดกับอุดมการณ์ตัวเองแล้วอะ ไม่เคยคิดเลย ว่าจะบอกให้คนอื่นท่องรูปแบบโจทย์ แต่เค้าต้องคิดงั้นแน่เลย และแล้ว เค้าก็บอกว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;เห็นมั้ยลูก ทำโจทย์เยอะ ๆ นะ เอาให้ครบทุกแบบเลย&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;- -'' ... ซะงั้น ... นี่มันเรียนผิดวิธีเลยนะ ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113838856246680181?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113838856246680181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113838856246680181' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113838856246680181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113838856246680181'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/01/blog-post_28.html' title='เกือบโกหก ... ?'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113740169926136089</id><published>2006-01-16T15:53:00.000+07:00</published><updated>2006-01-16T15:54:59.336+07:00</updated><title type='text'>งาน TAM 2006</title><content type='html'>ไปมาเมื่อวันเสาร์ จะบอกว่า&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;TAM 2006 ห่วยแตก!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; ไม่มีอะไรน่าสนใจเลยอะ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113740169926136089?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113740169926136089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113740169926136089' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113740169926136089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113740169926136089'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/01/tam-2006.html' title='งาน TAM 2006'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113673273905661457</id><published>2006-01-08T21:59:00.000+07:00</published><updated>2006-01-08T22:05:39.056+07:00</updated><title type='text'>อาวละ ... สรุป blog</title><content type='html'>blog ที่เกิดใหม่ตอนปีใหม่ มีดังนี้...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://tunoblog.blogspot.com/"&gt;Another Tunoblog&lt;/a&gt; - blog เรื่องไร้สาระ&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tunology.blogspot.com/"&gt;Tunology&lt;/a&gt; - blog วิชาการ&lt;br /&gt;(ใครที่อ่านสิ่งที่เคยเขียนไว้ที่นี่ (Tunoblog) ไม่ค่อยรู้เรื่อง ลองไปดูใหม่ที่ Tunology นะ อาจจะรู้เรื่องมากขึ้น)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tunosong.blogspot.com/"&gt;Tunosong&lt;/a&gt; - blog เกี่ยวกะดนตรี&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;แต่ยังไม่เลิกเขียนอันนี้นะ แค่จะ update น้อยลง (เยอะเลย)&lt;br /&gt;&lt;br /&gt;อัตราการ update ของทุก blog รวมกัน ก็คงจะน้อยกว่า blog นี้ในอดีตอยู่ดี :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113673273905661457?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113673273905661457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113673273905661457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113673273905661457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113673273905661457'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/01/blog.html' title='อาวละ ... สรุป blog'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113637814292709886</id><published>2006-01-04T19:26:00.000+07:00</published><updated>2006-01-04T19:35:42.990+07:00</updated><title type='text'>ไปเล่นมาเพียบเลย ...</title><content type='html'>&lt;div style="text-align: center;"&gt;จะย้ายเรื่องวิชาการไปที่ &lt;a href="http://tunology.blogspot.com/"&gt;Tunology&lt;/a&gt; แล้วนะ ส่วน Tunoblog อันนี้ ก็คงจะซีเรียสน้อยลงละ&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tunoblog.blogspot.com/"&gt;Another Tunoblog&lt;/a&gt; เขียนเป็นภาษาอังกฤษนะ&lt;br /&gt;&lt;br /&gt;แล้วก็ เรื่องดนตรี กับเพลงที่เอาให้ฟัง จะย้ายไปอยู่ที่ &lt;a href="http://tunosong.blogspot.com/"&gt;Tunosong&lt;/a&gt; หละ&lt;br /&gt;&lt;br /&gt;ของ blogsource ไม่เอาแล้ว ห่วยกว่า blogger อะ ...&lt;br /&gt;&lt;br /&gt;แล้วอยู่ดี ๆ ใจ๋ก็มาบอกว่า ให้ไปทำที่ &lt;a href="http://multiply.com/"&gt;multiply.com&lt;/a&gt; ... มันมีเนื้อที่ไม่จำกัดอะ ...&lt;br /&gt;&lt;br /&gt;ย้ายอีกทีดีมั้ยเนี่ย&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113637814292709886?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113637814292709886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113637814292709886' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113637814292709886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113637814292709886'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/01/blog-post_04.html' title='ไปเล่นมาเพียบเลย ...'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113605664879063119</id><published>2006-01-01T02:15:00.000+07:00</published><updated>2006-01-01T02:17:28.816+07:00</updated><title type='text'>สวัสดีปีใหม่ครับ</title><content type='html'>&lt;div style="text-align: center;"&gt;สวัสดี .. ปี .. ใหม่แล้ว .... ผองไทย .. จงแคล้ว .. ปวงภัย .... นะ&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113605664879063119?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113605664879063119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113605664879063119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113605664879063119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113605664879063119'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2006/01/blog-post.html' title='สวัสดีปีใหม่ครับ'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113577204209518188</id><published>2005-12-28T19:12:00.000+07:00</published><updated>2005-12-28T19:14:02.146+07:00</updated><title type='text'>ไปเล่นมา ...</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://tunococ.blogsource.com/"&gt;http://tunococ.blogsource.com/&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;ตามกระแสเก่านิด ๆ ... เขียนภาษาอังกฤษมั่ง&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113577204209518188?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113577204209518188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113577204209518188' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113577204209518188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113577204209518188'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2005/12/blog-post_28.html' title='ไปเล่นมา ...'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113566635941510530</id><published>2005-12-27T13:51:00.000+07:00</published><updated>2005-12-27T13:52:45.796+07:00</updated><title type='text'>ม่ายหวายแล้ววววววว!!!</title><content type='html'>เขียนบ่อย ๆ ไม่ไหวแล้วอะ ... งานมหาศาล ... หยั่งงี้ยังเรียกว่าว่างงานได้มั้ยเนี่ย&lt;br /&gt;&lt;br /&gt;แต่ยังไม่เลิกเขียนนะ!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113566635941510530?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113566635941510530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113566635941510530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113566635941510530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113566635941510530'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2005/12/blog-post.html' title='ม่ายหวายแล้ววววววว!!!'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113456250698037418</id><published>2005-11-21T18:49:00.000+07:00</published><updated>2005-12-18T01:17:35.150+07:00</updated><title type='text'>ถึงคราวต้องสร้าง Virtual Machine แล้ว (พื้นฐาน)</title><content type='html'>เพื่อให้เห็นภาพ ว่าที่ผ่าน ๆ มา มันเป็นอะไร คราวนี้ มาลองสร้าง Virtual Machine กันเถอะ ... มาสรุปสิ่งที่ Virtual Machine ควรจะมีก่อน ... ครั้งนี้คิดสำหรับ process เดียวก่อนนะ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Memory Units&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;เพื่อให้สามารถสร้าง memory module ได้ เราต้องกำหนดไว้ก่อนว่า แต่ละ word มีขนาดเท่าไหร่ ... สมมติเลยละกันนะ ว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;ตำแหน่งของ memory 1 ตำแหน่ง จะเก็บข้อมูลได้ 1 byte&lt;br /&gt;ขนาดของ instruction = 4 byte&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Process Space&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;PC - Program Counter&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Memory - แบ่งเป็น&lt;br /&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;Stack&lt;/li&gt;     &lt;ul&gt;       &lt;li&gt;SP - Stack Pointer&lt;/li&gt;       &lt;li&gt;BP - Base Pointer&lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;     &lt;li&gt;Heap&lt;br /&gt;&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;MA - Memory Address&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;AC - Accumulator&lt;/li&gt;&lt;li&gt;FP - Frame Pointer&lt;/li&gt; &lt;/ul&gt; และ operation ที่เกี่ยวกับ memory พื้นฐาน ก็คือ&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;load: AC ← mem[MA]&lt;/li&gt;   &lt;li&gt;store: mem[MA] ← AC&lt;/li&gt;   &lt;li&gt;push X: SP ← SP - 4; mem[SP] ← X&lt;/li&gt;   &lt;li&gt;pop X: X ← mem[SP]; SP ← SP + 4&lt;/li&gt; &lt;/ul&gt; &lt;b&gt;&lt;u&gt;Instruction Set&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ก่อนอื่น ตกลงกันก่อนว่า ส่วนของ OPCODE เราจะยังไม่ใส่ตัวเลขลงไป แต่สมมติว่ามันกินเนื้อที่ 4 byte (เพื่อให้ง่ายเวลา implement จริงเป็นวงจรด้วย) instruction set ที่เราต้องทำ มีสามกลุ่ม คือ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fundamental Instructions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;PUSH X&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;คำสั่งนี้ พิเศษกว่าคำสั่งอื่นตรงที่มันมี operand ด้วย ... ดังนั้น ขนาดของคำสั่งนี้จะต้องรวม X ลงไปด้วย ... เราจะกำหนดให้ 4 byte แรกเป็น opcode และ 4 byte หลังคือ X รวมกันเป็น 8 byte ต่อการ PUSH 1 ครั้ง&lt;/li&gt;   &lt;li&gt;การทำงาน: push X&lt;/li&gt; &lt;/ul&gt; PBASE&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: push BP&lt;/li&gt; &lt;/ul&gt; LOAD&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; load; push AC&lt;/li&gt; &lt;/ul&gt; STORE&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; pop MA; store&lt;/li&gt; &lt;/ul&gt; JMP&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop PC&lt;/li&gt; &lt;/ul&gt; JPOS&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; if AC &amp;gt; 0, pop PC, else pop AC&lt;/li&gt; &lt;/ul&gt; JNEG&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; if AC &amp;lt; 0, pop PC, else pop AC&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; JZ&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; if AC = 0, pop PC, else pop AC&lt;/li&gt; &lt;/ul&gt; JNZ&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; if AC ≠ 0, pop PC, else pop AC&lt;/li&gt; &lt;/ul&gt; CALL&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; push PC + 4; push BP; BP ← SP; PC ← AC&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; RETURN&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; SP ← BP; pop BP; pop PC; push AC&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; &lt;b&gt;Dynamic Allocation Instructions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;คำสั่งในกลุ่มนี้มีสองคำสั่งคือ ALLOC กับ FREE การทำงานของมันจะพิเศษหน่อย เพราะมันเป็น OS-Level Instruction ดังนั้น จะไม่สามารถ implement เป็น hardware ได้ตรง ๆ&lt;br /&gt;&lt;br /&gt;ALLOC&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; AC ← &lt;b&gt;malloc&lt;/b&gt;(AC); push AC&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; FREE&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; &lt;b&gt;free&lt;/b&gt;(AC)&lt;/li&gt; &lt;/ul&gt; &lt;b&gt;Arithmetic and Logical Instructions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;พวกนี้ จะมีเยอะเท่าไหร่ก็ได้ ... หลัก ๆ จะมีสองกลุ่มคือ unary กับ binary แต่ถ้าจะทำเพิ่ม ก็ทำได้เรื่อย ๆ นะ&lt;br /&gt;&lt;br /&gt;NEG&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; push -AC&lt;/li&gt; &lt;/ul&gt; ADD&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC + MA&lt;/li&gt; &lt;/ul&gt; SUB&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC - MA&lt;/li&gt; &lt;/ul&gt; MUL&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC * MA&lt;/li&gt; &lt;/ul&gt; DIV&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC / MA&lt;/li&gt; &lt;/ul&gt; MOD&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC mod MA&lt;/li&gt; &lt;/ul&gt; ส่วนคำสั่งที่เป็นด้าน logic เราจะถือว่า 0 = false และ ค่าอื่น ๆ = true นะ (แต่ค่า true ที่เป็น output ของ operation จะกำหนดให้เป็น 1 เลย)&lt;br /&gt;&lt;br /&gt;NOT&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop AC; push ¬AC&lt;/li&gt; &lt;/ul&gt; AND&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC ∧ MA&lt;/li&gt; &lt;/ul&gt; OR&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC ∨ MA&lt;/li&gt; &lt;/ul&gt; IFF&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push AC ↔ MA&lt;/li&gt; &lt;/ul&gt; XOR&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push ¬(AC ↔ MA)&lt;/li&gt; &lt;/ul&gt; NAND&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push ¬(AC ∧ MA)&lt;/li&gt; &lt;/ul&gt; NOR&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;การทำงาน: pop MA; pop AC; push ¬(AC ∨ MA)&lt;/li&gt; &lt;/ul&gt; แล้วจะมาต่อเรื่อง Floating Point อีกทีนะ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113456250698037418?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113456250698037418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113456250698037418' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113456250698037418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113456250698037418'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2005/11/virtual-machine.html' title='ถึงคราวต้องสร้าง Virtual Machine แล้ว (พื้นฐาน)'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15190589.post-113447793411830648</id><published>2005-11-20T19:40:00.000+07:00</published><updated>2005-12-14T18:48:55.540+07:00</updated><title type='text'>มาลองทำ Assembler กัน (Process Space)</title><content type='html'>ลองสมมติว่า เราเขียนโปรแกรมมา คอมไพล์เสร็จ มันเป็นก้อน object code หน้าตาคงที่ ...&lt;br /&gt;&lt;br /&gt;คำสั่ง JMP กับ CALL หละ? ตำแหน่งของการกระโดดมันคงที่หนิ ... แสดงว่า ถ้าเราเอา code เราไปวางไว้ที่อื่น (คือ address เริ่มต้นเปลี่ยนไป) มันก็จะทำงานไม่ถูกน่ะสิ!!!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Frame Pointer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ทางแก้ก็คือ แก้ที่ CPU ของเรา ให้ทุกครั้งที่ทำคำสั่งที่เกี่ยวกับ memory ให้เอาเลขที่ได้ ไปบวกกับ FP ก่อน แค่นี้ก็เรียบร้อย ... ว่าแต่ FP นี่มันจะเก็บไว้ที่ไหนหละ? ... ก็กำหนด Register ขึ้นมาอีกตัวสิ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Process Space&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ดังนั้น เพื่อให้การทำงานในแต่ละ process ถูกต้อง เราจะเก็บค่า FP ปะติดกับ object code ไว้สำหรับแต่ละ process ... ค่า FP นั้น จะรู้ในเวลาที่ load โปรแกรมลงใน memory&lt;br /&gt;&lt;br /&gt;พอถึงเวลาที่ process นั้นจะทำงาน เราก็เพียงแค่ load ค่า FP ของ process นั้นกลับคืนมา การทำงานก็จะถูกต้องแล้ว&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Cross-Process Communication&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;แล้ว เราจะทำให้ process ต่าง ๆ ติดต่อกันได้ยังไงหละ?&lt;br /&gt;&lt;br /&gt;วิธีที่เค้านิยมทำกัน จะมีอยู่ 2 แบบคือ&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Messaging - ติดต่อผ่าน OS&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Shared Memory - ขอ OS ให้เปิดช่องการติดต่อโดยตรง&lt;br /&gt; &lt;/li&gt; &lt;/ol&gt; จริง ๆ ทั้งสองวิธีก็ต้องพึ่ง OS ทั้งคู่ แต่วิธีแรกจะต้องพึ่ง "OS Instruction" มากกว่า&lt;br /&gt;&lt;br /&gt;รายละเอียดจริง ๆ ของสองอย่างนี้ จะยังไม่พูดถึงตอนนี้ละกัน ... ไว้หลังจากทำ Virtual Machine กับ Assembler ได้ก่อน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15190589-113447793411830648?l=tunococ.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tunococ.blogspot.com/feeds/113447793411830648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=15190589&amp;postID=113447793411830648' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113447793411830648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15190589/posts/default/113447793411830648'/><link rel='alternate' type='text/html' href='http://tunococ.blogspot.com/2005/11/assembler-process-space.html' title='มาลองทำ Assembler กัน (Process Space)'/><author><name>Tunococ</name><uri>http://www.blogger.com/profile/02940719268853405975</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04406230908372851786'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry></feed>