<?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-9076113</id><updated>2009-11-11T20:26:56.693-08:00</updated><title type='text'>jittat</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9076113.post-1540119991028356609</id><published>2008-12-27T18:45:00.001-08:00</published><updated>2008-12-28T06:16:43.187-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='merb'/><title type='text'>Merb blog tutorial</title><content type='html'>I started using &lt;a href="http://merbivore.com/"&gt;merb&lt;/a&gt; a few days ago. After searching through the net, I couldn't find any working blog example for merb 1.0.6.1 (that also uses &lt;a href="http://datamapper.org/"&gt;datamapper&lt;/a&gt;) that I'm using. Yes, I know that the new documentation is underway, but I'd rather get this out quickly. (And, yes, I know that merb 2 = rails 3.)&lt;br /&gt;&lt;br /&gt;This tutorial just tries to be an shorter updated version of this great tutorial &lt;a href="http://codingbitch.com/p/comboy/merb%20+%20datamapper%20+%20noob:%20quick%20start"&gt;"merb + datamapper + noob: quick start"&lt;/a&gt; (from a slightly different viewpoint).  It also assumes that you have some knowledge of rails.&lt;br /&gt;&lt;br /&gt;First you have to install merb.  The easiest way is to just&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ sudo gem install merb&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Because we'll use datamapper and sqlite3:&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ sudo gem install datamapper merb_datamapper do_sqlite3&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Start by generating merb application:&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;merb-gen app blog&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Using this &lt;tt&gt;merb-gen app&lt;/tt&gt; command generates an empty merb application that uses datamapper.&lt;br /&gt;&lt;br /&gt;In &lt;tt&gt;blog/&lt;/tt&gt;, you'll find a familiar directory structure.  As in rails, configuration files are in &lt;tt&gt;config/&lt;/tt&gt;.  The ones that you want to look at are &lt;tt&gt;dependencies.rb&lt;/tt&gt; (that basically lists all the components you're using), &lt;tt&gt;init.rb&lt;/tt&gt; (that specifies your choice of ORM, test framework, and template framework), and &lt;tt&gt;database.yml&lt;/tt&gt; (that, as in rails, provides database config).&lt;br /&gt;&lt;br /&gt;Right now, everything merb generates for us looks fine, so we'll stick with it.  &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Creating the model&lt;/h3&gt;&lt;br /&gt;It's time to create a model.  Issue the command (inside &lt;tt&gt;blog/&lt;/tt&gt;),&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;merb-gen model post&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;to create model Post.  It'll be in &lt;tt&gt;app/models/post.rb&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;In rails, you'll only have to write migration and model specification (e.g., all the columns) will be automatically read from the database.  With DataMapper, we have to specify the model's &lt;b&gt;properties&lt;/b&gt; inside its class definition.  Out Post model looks like this:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Post&lt;br /&gt;  include DataMapper::Resource&lt;br /&gt;  &lt;br /&gt;  property :id, Serial&lt;br /&gt;  property :title, String&lt;br /&gt;  property :body, String&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After that, we have to work with the database to create the table for it.  For simple property changes (e.g., adding a new model or adding properties), you don't have to write any migration as merb is clever enough to do that for you: just call&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;rake db:autoupgrade&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;There's another option for migrating table structures, &lt;tt&gt;rake db:automigrate&lt;/tt&gt;, but this rake task also deletes all your old data (it is &lt;b&gt;destructive&lt;/b&gt;), so I prefer &lt;tt&gt;db:autoupgrade&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Merb has an interactive console that we can play will models, so let's try to add some post to our blog before moving on.&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;merb -i&lt;/b&gt;&lt;br /&gt;irb(main):001:0&gt; &lt;b&gt;p = Post.new :title =&gt; 'Hello!', :body =&gt; 'This is my first post'&lt;/b&gt;&lt;br /&gt;=&gt; #&amp;lt;Post id=nil title="Hello!" body="This is my first post"&gt;&lt;br /&gt;irb(main):002:0&gt; &lt;b&gt;p.save&lt;/b&gt;&lt;br /&gt; ~ INSERT INTO "posts" ("title", "body") VALUES ('Hello!', 'This is my first post')&lt;br /&gt;=&gt; true&lt;br /&gt;irb(main):003:0&gt; &lt;b&gt;p2 = Post.create :title =&gt; 'Second post', :body =&gt; 'what??'&lt;/b&gt;&lt;br /&gt; ~ INSERT INTO "posts" ("title", "body") VALUES ('Second post', 'what??')&lt;br /&gt;=&gt; #&amp;lt;Post id=2 title="Second post" body="what??"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Creating the controller&lt;/h3&gt;&lt;br /&gt;Okay, we have something to display now.  Let's create a controller.  Call&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;merb-gen controller posts&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;This command generates &lt;tt&gt;app/controllers/posts.rb&lt;/tt&gt;.  Note that there's no &lt;tt&gt;Controller&lt;/tt&gt; suffix to the name.  Let's add something to method &lt;tt&gt;index&lt;/tt&gt;.&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Posts &amp;lt; Application&lt;br /&gt;  def index&lt;br /&gt;    @posts = Post.all&lt;br /&gt;    render&lt;br /&gt;  end  &lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In merb, you have to call &lt;b&gt;&lt;tt&gt;render&lt;/tt&gt;&lt;/b&gt; explicitly.  This would render a default view for this action.  Another point to note is that instead of using &lt;tt&gt;Post.find(:all)&lt;/tt&gt; with Active Record, in Datamapper you only have to call &lt;tt&gt;Post.all&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Let's create a view for this action.  We can edit &lt;tt&gt;views/posts/index.html.erb&lt;/tt&gt; like this:&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;&amp;lt;h1&gt;My posts&amp;lt;/h1&gt;&lt;br /&gt;&amp;lt;% for post in @posts %&gt;&lt;br /&gt;  &amp;lt;h2&gt;&amp;lt;%= post.title %&gt;&amp;lt;/h2&gt;&lt;br /&gt;  &amp;lt;p&gt;&amp;lt;%= post.body %&gt;&amp;lt;/p&gt;&lt;br /&gt;&amp;lt;% end %&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;It's time to see the posts!  Run&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;merb&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;then point your browser to &lt;a href="http://localhost:4000/posts"&gt;http://localhost:4000/posts&lt;/a&gt;  or &lt;a href="http://127.0.0.1:4000/posts"&gt;http://127.0.0.1:4000/posts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;New posts&lt;/h3&gt;&lt;br /&gt;Let's create a new post!  We'll add a link "add new post" at the bottom of the index page.  &lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;&lt;b&gt;&amp;lt;%= link_to 'add new post', url(:controller =&gt; :posts, :action =&gt; :new) %&gt;&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Method &lt;tt&gt;url&lt;/tt&gt;, that returns a url for an action, can be really fancy, but for now we go with a simple rails-like version.&lt;br /&gt;&lt;br /&gt;Then create methods &lt;tt&gt;new&lt;/tt&gt; in &lt;tt&gt;Posts&lt;/tt&gt; controller that render the view.&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Posts &amp;lt; Application&lt;br /&gt;  # ...&lt;br /&gt;  def new&lt;br /&gt;    @post = Post.new&lt;br /&gt;    render&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Also, the view &lt;tt&gt;new.html.erb&lt;/tt&gt; in &lt;tt&gt;app/views/posts&lt;/tt&gt;:&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;&amp;lt;h1&gt;Creating new post&amp;lt;/h1&gt;&lt;br /&gt;&amp;lt;%= form_for @post, :action =&gt; 'create' do %&gt;&lt;br /&gt;  &amp;lt;%= text_field :title, :label =&gt; 'Title' %&gt;&amp;lt;br/&gt;&lt;br /&gt;  &amp;lt;%= text_area :body, :label =&gt; 'Body' %&gt;&amp;lt;br/&gt;&lt;br /&gt;  &amp;lt;%= submit 'New post' %&gt;&lt;br /&gt;&amp;lt;% end =%&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Note that we use &lt;tt&gt;form_for&lt;/tt&gt; and methods &lt;tt&gt;text_field&lt;/tt&gt; and &lt;tt&gt;text_area&lt;/tt&gt; know that it is inside this form automatically.  (In rails you'd need the block parameter.)&lt;br /&gt;&lt;br /&gt;Finally, we add method &lt;tt&gt;create&lt;/tt&gt; to &lt;tt&gt;Posts&lt;/tt&gt; controller:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Posts &amp;lt; Application&lt;br /&gt;  # ...&lt;br /&gt;  def create&lt;br /&gt;    @post = Post.new params[:post]&lt;br /&gt;    @post.save&lt;br /&gt;    redirect url(:action =&gt; 'index')&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Try it to see if you can create new posts.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Comments&lt;/h3&gt;&lt;br /&gt;What kind of blogs without comments?&lt;br /&gt;&lt;br /&gt;So we'll create the comment model. Call&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;$ &lt;b&gt;merb-gen model comment&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;and edit &lt;tt&gt;app/models/comment.rb&lt;/tt&gt;:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Comment&lt;br /&gt;  include DataMapper::Resource&lt;br /&gt;  &lt;br /&gt;  property :id, Serial&lt;br /&gt;  property :body, String&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;We have to tell a Post that it has many comments.  We'll do this by adding something like &lt;tt&gt;has_many&lt;/tt&gt; in Active Record to the model:&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Post&lt;br /&gt;  # ...&lt;br /&gt;  has n, :comments&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is how you specify one-to-many association in Datamapper.  If you want one, just use &lt;tt&gt;has 1, :comment&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Now let's turn to view and controller.  Edit &lt;tt&gt;app/views/posts/index.html.erb&lt;/tt&gt; by adding comment listing and new comment form.&lt;br /&gt;&lt;div class="console"&gt;&lt;pre&gt;&amp;lt;h1&gt;My posts&amp;lt;/h1&gt;&lt;br /&gt;&amp;lt;% for post in @posts %&gt;&lt;br /&gt;  &amp;lt;h2&gt;&amp;lt;%= post.title %&gt;&amp;lt;/h2&gt;&lt;br /&gt;  &amp;lt;p&gt;&amp;lt;%= post.body %&gt;&amp;lt;/p&gt;&lt;br /&gt;  &amp;lt;ul&gt;&lt;br /&gt;    &amp;lt;% post.comments.each do |comment| %&gt;&lt;br /&gt;      &amp;lt;li&gt;&amp;lt;%= comment.body %&gt;&amp;lt;/li&gt;&lt;br /&gt;    &amp;lt;% end %&gt;&lt;br /&gt;    &amp;lt;li&gt;&lt;br /&gt;      &amp;lt;%= form_for Comment.new, :action =&gt; url(:controller =&gt; 'posts', &lt;br /&gt;                                               :action =&gt; 'create_comment', &lt;br /&gt;                                               :id =&gt; post.id) do %&gt;&lt;br /&gt;        &amp;lt;%= text_field :body %&gt;&lt;br /&gt;        &amp;lt;%= submit 'New comment' %&gt;&lt;br /&gt;      &amp;lt;% end =%&gt;&lt;br /&gt;    &amp;lt;/li&gt;&lt;br /&gt;  &amp;lt;/ul&gt;&lt;br /&gt;&amp;lt;% end %&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%= link_to 'add new post', url(:controller =&gt; :posts, :action =&gt; :new) %&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;I believe that with merb router, we can write a better the action url.  I'll update this entry after I find out how.  Also, note that to get the list display correctly, I have to delete the merb stylesheet link line in &lt;tt&gt;app/views/layout/application.html.erb&lt;/tt&gt; because it hides my list items.&lt;br /&gt;&lt;br /&gt;To handle this action, we create method &lt;tt&gt;create_comment&lt;/tt&gt; in &lt;tt&gt;Posts&lt;/tt&gt; controller.&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;class Posts &amp;lt; Application&lt;br /&gt;  # ...&lt;br /&gt;  def create_comment&lt;br /&gt;    post = Post[params[:id]]&lt;br /&gt;    comment = Comment.new params[:comment]&lt;br /&gt;    post.comments &amp;lt;&amp;lt; comment&lt;br /&gt;    post.save&lt;br /&gt;    redirect url(:action =&gt; 'index')&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note the way we find a post by id (&lt;tt&gt;Post[params[:id]]&lt;/tt&gt;).&lt;br /&gt;&lt;br /&gt;Hope this blog post help getting you started with merb and Datamapper.  Any comments are welcome!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wonam.exteen.com/20081228/blog-merb"&gt;ฉบับภาษาไทย&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-1540119991028356609?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/1540119991028356609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=1540119991028356609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/1540119991028356609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/1540119991028356609'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2008/12/merb-blog-example.html' title='Merb blog tutorial'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-115537326323640262</id><published>2006-08-12T01:49:00.000-07:00</published><updated>2006-08-12T02:02:40.100-07:00</updated><title type='text'>การสร้างรากฐานรัฐด้วยการศึกษา</title><content type='html'>ที่แอลเอ หน้าประตูเข้าสวนกุหลาบ หน้าบริเวณจัดแสดงใหญ่ ที่เป็นที่ตั้งของพิพิธภัณฑ์ประวัิติศาสตร์ธรรมชาติ (Natural History Museum) และศูนย์วิทยาศาสตร์ (Science Center)  มีเสาประตูสองอันสลักเป็นประโยคว่า&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;เสาประตูซ้าย:&lt;/span&gt; "THE END OF ALL GOOD GOVERNMENT IS THE HAPPINESS OF THE PEOPLE"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;เสาประตูขวา:&lt;/span&gt; "THE FOUNDATION OF EVERY STATE IS ITS EDUCATION OF ITS YOUTH"&lt;br /&gt;&lt;br /&gt;บังเอิญเหลือเกินที่พกหนังสือ "หลังโครงสร้างนิยม: ฉบับย่อ" เขียนโดยแคทเธอรีน เบลซีย์ แปลโดยอภิญญา  เฟื่องฟูสกุล ติดมือไปด้วย แล้วก็บังเอิญเช่นกันที่อ่านเจอข้อความนี้:&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;"[...] ประเด็นหลักของอัลตูแซร์ก็คือโรงเรียนและมหาวิทยาลัยไม่เพียงผลิตคนหนุ่มสาวป้อนตลาดแรงงานทุกระดับของโครงสร้างเศรษฐกิจเท่านั้น ทว่าในกระบวนการสอนอ่านเขียนและคิดเลข ก็ผลิตคำสอนเรื่องความเชื่อฟัง ความสุภาพอ่อนน้อม จิตวิทยาเบื้องต้น [...] คุณค่าของประชาธิปไตยเสรีนิยม วิธีออกคำสั่ง และวิธีทำงานรับใช้ชุมชน  กล่าวสั้น ๆ ก็คือ สถาบันการศึกษาทำให้วินัย โดยเฉพาะวินัยในตัวเองหยั่งรากฝังลึกในความคิดและสนับสนุนให้นักเรียนออกไปสู่สังคมและผดุงรักษาสภาพต่าง ๆ ที่เป็นอยู่ 'ด้วยตัวของพวกเขาเอง"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;อืม พอได้อ่านข้อความข้างล่างแล้ว การตีความและการทำความเข้าใจประโยคที่สองข้างต้นก็คงจะเหมือนเดิมไม่ได้แล้ว&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-115537326323640262?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/115537326323640262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=115537326323640262' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/115537326323640262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/115537326323640262'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/08/blog-post.html' title='การสร้างรากฐานรัฐด้วยการศึกษา'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-115062896655592897</id><published>2006-06-18T03:56:00.000-07:00</published><updated>2006-06-18T04:10:23.216-07:00</updated><title type='text'>เพลงเก่า-เพลงใหม่</title><content type='html'>(exteen หยุดให้บริการไปหลายวัน เขียนที่นี่ก่อนแล้วกัน---คงไม่มีใครมาอ่าน)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ใหม่&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ซีดีใหม่ที่เพิ่งซื้อมา มีศิลปินสองกลุ่ม (คน) ที่ชื่นชอบมากทั้งคู่ มาทำเพลงด้วยกัน ในอัลบั้ม Give#1&lt;br /&gt;&lt;br /&gt;เพลงชื่อ "&lt;span style="font-weight: bold;"&gt;แสงและเงา&lt;/span&gt;"  ร้องโดยญารินดา เนื้อร้องโดย วาสิต มุกดาวิจิตร (day tripper) ทำนอง/เรียบเรียงโดยทวนทอง นิยมชาติ (day tripper)   เนื้อเพลงที่เขียนโดยอู วาสิต มุกดาวิจิตร นั้นล่องลอย แล้วก็กัดกร่อนความรู้สึกแบบแปร่งแปลก  วลีต่อวลีที่เหมือนจะไม่เกี่ยวกัน แต่รวมกันได้ความหมายแบบเฉพาะตัว เป็นเอกลักษณ์ของเนื้อที่เขาแต่ง ตั้งแต่สมัยที่อยู่วงครับแล้ว  ส่วนญารินดานี่ชอบมานานแล้ว ยิ่งมาทำเพลงเองก็ทำได้เก๋มาก&lt;br /&gt;&lt;br /&gt;อัลบั้มชุดนี้ก็ทำให้ได้ฟังเพลงของ&lt;a href="http://www.apartmentkhunpa.cjb.net/"&gt;อพาร์ตเมนต์คุณป้า&lt;/a&gt; ซึ่งเป็นเพลงประหลาดอีกเพลงหนึ่ง  คนร้องจะไปฆ่ากามเทพ โยนคันศรทิ้ง ถ้าเธอต้องการ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;เก่า&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;นั่งรถไปศรีราชา ฟังเพลงในรถตู้เป็นเพลงเก่ามาก ของนกแล "อย่าลืมน้องสาว"  เพลงขึ้นว่า "ข้าวในนาแลเหลียว มือน้อยคอยเคียว มาเกี่ยวเก็บไป..."  (ฟังได้&lt;a href="http://www.thaidoweb.com/freeboard/show.php?Category=prayfar&amp;forum=46&amp;amp;amp;amp;amp;No=1888&amp;picfolder=U1mdN4433&amp;amp;PHPSESSID=baa2d498a357ef72900d0c57d9460866#top"&gt;ที่นี่&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;ไปเป็นด๊อกเตอร์ หรือเป็นนักศึกษาที่ไหน เป็นคุณนายบ้านใด บ้านใด ส่งเงินมามากพอแล้ว อย่าให้ส่งตัวพี่ไป หรือรวยแล้วมีน้องใหม่ลงลืมน้องสาว&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;ตอนเด็ก ๆ ฟังก็ไม่ได้คิดอะไร แต่ฟังอีกที เพลงนี่จะมีความหมายอื่น ๆ หรือเปล่า?  พี่สาวที่กล่าวถึง (เธอเป็นชาวเขา) ไปในเมืองไปทำอะไร?  เธอจะไปเป็นด๊อกเตอร์ได้หรือเปล่า?  แล้วตอนนี้ล่ะ&lt;br /&gt;&lt;br /&gt;คงเป็นเพลงคลาสสิกเพลงหนึ่งเลยทีเดียว&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;หมายเหตุ:&lt;/span&gt; อ้อ..  ระหว่างหา ค้น ๆ เจอว่า นกแล กลับมาอีกครั้ง ชื่อ &lt;a href="http://www.doitao.com/main/default.asp"&gt;ดอยเต่าดอตคอม&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-115062896655592897?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/115062896655592897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=115062896655592897' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/115062896655592897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/115062896655592897'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/06/blog-post.html' title='เพลงเก่า-เพลงใหม่'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114507346444175101</id><published>2006-04-14T20:38:00.000-07:00</published><updated>2006-04-14T21:06:50.976-07:00</updated><title type='text'>การแก้สมการเวียนบังเกิดเชิงเส้น</title><content type='html'>พิจารณาความสัมพันธ์เวียนบังเกิด (recurrence relations): $F(n) = A\cdot F(n-1) + B\cdot F(n-2)$ และมีค่าเริ่มต้น $F(0)$ และ $F(1)$&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ข้อสังเกต 1&lt;/span&gt;: ถ้าฟังก์ชัน $f$ และ $g$ สอดคล้องกับความสัมพันธ์เวียนบังเกิดข้างต้น $f+g$ ก็จะสอดคล้องด้วย&lt;br /&gt;&lt;span style="font-style: italic;"&gt;บทพิสูจน์:&lt;/span&gt; พิสูจน์โดยการแทนค่า&lt;br /&gt;&lt;div style="text-align: right;"&gt;[X]&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;ข้อสังเกต 2:&lt;/span&gt; ฟังก์ชันดังกล่าวเป็นฟังก์ชัน exponential ถ้า $A&gt; 0$ และ $B\geq 0$&lt;br /&gt;&lt;span style="font-style: italic;"&gt;บทพิสูจน์: &lt;/span&gt;&lt;br /&gt;(lowerbound): เราจะแสดงว่า $F$ มีค่ามากกว่า exponential function บางอัน&lt;br /&gt;&lt;br /&gt;สามารถตรวจสอบได้ว่า $F$ เป็นฟังก์ชันไม่ลดลง นั่นคือ $F(n')\geq F(n)$ เมื่อ $n'\geq n$&lt;br /&gt;&lt;br /&gt;ให้ $k$ เป็นจำนวนเต็มที่มากกว่า $2\cdot(2/A)$  &lt;span style="font-size:78%;"&gt;(จริง ๆ ควรใช้สัญลักษณ์ ceiling แต่ยังหาไม่เจอว่าทำใน ASCIIMathMLได้อย่างไร)&lt;/span&gt;  พิจารณา&lt;br /&gt;$F(n+k)=AF(n+k-1) + BF(n+k-2) $&lt;br /&gt;$= AF(n+k-1) + AF(n+k-3) + BF(n+k-4)$&lt;br /&gt;$= AF(n+k-1) + AF(n+k-3) + AF(n+k-5) + BF(n+k-6)$&lt;br /&gt;$=\sum_{i=1}^{k//2} AF(n+k+1-2i) + BF(n) \geq (k/2)\cdot AF(n+1) \geq 2F(n)$&lt;br /&gt;นั่นคือ $F(n+k)\geq 2F(n)$ หรือ $F(n)\geq C\cdot 2^(n//k)$ สำหรับค่า $C$ บางค่า&lt;br /&gt;&lt;br /&gt;(upperbound): เราจะแสดงว่า $F$ มีค่าไม่เกิน exponential function บางอันเช่นกัน&lt;br /&gt;$F(n)=AF(n-1)+BF(n-2)\leq AF(n-1)+BF(n-1)=(A+B)F(n-1)$ หรือ&lt;br /&gt;$F(n)\leq C'\cdot (A+B)^n$ สำหรับค่าคงที่ $C'$ บางค่า&lt;br /&gt;&lt;div style="text-align: right;"&gt;[X]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ดังนั้นวิธีการที่เราจะพิจารณาต่อไปก็คือการพยายามหา exponential function ที่สอดคล้องกับเงื่อนไขดังกล่าว&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/9076113-114507346444175101?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114507346444175101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114507346444175101' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114507346444175101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114507346444175101'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/blog-post_14.html' title='การแก้สมการเวียนบังเกิดเชิงเส้น'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114468702959559147</id><published>2006-04-10T09:11:00.000-07:00</published><updated>2006-04-10T09:37:09.650-07:00</updated><title type='text'>บทกวีแบบฟิบ</title><content type='html'>&lt;span style="font-style: italic;"&gt;ฝน&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ฟ้า&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;อากาศ&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;สุดแสนเงียบ&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ฉันนอนอยู่ในห้อง&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;รอคอยเวลาที่จะตื่นขึ้น&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;เพียงเพื่อพบกับวันใหม่ที่รออยู่อย่างไม่เปลี่ยนแปลง&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;บทกวีรูปแบบใหม่ ที่ชื่อว่าฟิบ (เสนอโดย &lt;a href="http://gottabook.blogspot.com/2006/04/fib.html"&gt;Gregory K.&lt;/a&gt; ผมอ่านเจอจาก &lt;a href="http://geomblog.blogspot.com/2006/04/fib.html"&gt;Geomblog&lt;/a&gt;) แต่ละบรรทัดจะประกอบด้วยจำนวนพยางค์เป็นไปตามเลขฟิโบนัชชี คือ 1, 1, 2, 3, 5, 8, 13, 21, ... ที่มีลักษณะคือตัวเลขตัวใด ๆ มีค่าเท่ากับตัวก่อนหน้าสองตัวบวกกัน หรือ ถ้าเขียนเป็นสูตรคณิตศาสตร์ก็คือ $F(1) = 1$, $F(2) = 1$, $F(n) = F(n-1) + F(n-2) $ กว่าจะเขียนได้ห้าบรรทัดก็แทบแย่แล้ว&lt;br /&gt;&lt;br /&gt;ลองอีกอัน...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;อิ่ม&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ง่วง&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;อยากนอน&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ท้องที่อิ่ม&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;มันทำให้สมอง&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;หยุดและไม่อยากคิดอะไรอีก&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;แล้ว closed form ของ $F(i)$ เป็นเช่นใด?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ลำดับฟิโบนัชชีนี้ เป็นรูปหนึ่งของ linear recurrence ซึ่งมีรูปทั่วไปเป็น $x_n = Ax_(n-1)+Bx_(n-2)$ เมื่อ $n\geq 3$  และในกรณีนี้เรามี $x_1=x_2=1$&lt;br /&gt;&lt;br /&gt;ขอเอาเรื่องนี้แทรก Central limit theorem สักหน่อยนะครับ... ไว้มาต่อพรุ่งนี้ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-114468702959559147?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114468702959559147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114468702959559147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114468702959559147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114468702959559147'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/blog-post_10.html' title='บทกวีแบบฟิบ'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114449610800188787</id><published>2006-04-08T04:32:00.000-07:00</published><updated>2006-04-08T08:20:01.203-07:00</updated><title type='text'>ทฤษฎีบทขีดจำกัดกลาง (1)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;กฎแห่งจำนวนมาก&lt;/span&gt; บอกกับเราว่า ถ้าข้อมูลตัวอย่างที่สุ่มมามีจำนวนมาก ค่าเฉลี่ยที่ได้ก็จะใกล้กับค่าเฉลี่ยจริง ๆ  &lt;span style="font-weight: bold;"&gt;ทฤษฎีบทขีดจำกัดกลาง&lt;/span&gt; (Central Limit Theorem) ให้ข้อมูลที่มากขึ้นกับเรา นั่นคือ ลักษณะของการแจกแจงของค่าเฉลี่ยที่ได้เป็นอย่างไร&lt;br /&gt;&lt;br /&gt;Central Limit Theorem กล่าวว่าการแจกแจง (distribution) ของค่าเฉลี่ยเมื่อจำนวนข้อมูลที่สุ่มมามีจำนวนมากจะเข้าใกล้การแจกแจงปกติ (Normal distribution)  ซึ่งจะมีรูปโค้งเป็นแบบระฆังคว่ำ (สุดฮิต) ดังรูปด้านล่าง&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Normal_distribution_pdf.png/325px-Normal_distribution_pdf.png"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Normal_distribution_pdf.png/325px-Normal_distribution_pdf.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(รูปจาก&lt;a href="http://en.wikipedia.org/wiki/Image:Normal_distribution_pdf.png"&gt;วิกิพีเดีย&lt;/a&gt;)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ในรูปแสดงกราฟการแจกแจงปกติที่ค่าเฉลี่ยและความแปรปรวนต่าง ๆ กัน&lt;br /&gt;&lt;br /&gt;ค่าความหนาแน่นน่าจะเป็นของตัวแปรสุ่มที่มีการแจกแจงปกติซึ่งมีค่าเฉลี่ย $\mu$ และความแปรปรวน $\sigma^2$ คือ $f(x) = 1/(\sigma\sqrt((2\pi)))\exp(-\frac{(x-\mu)^2}{2\sigma^2})$&lt;br /&gt;&lt;br /&gt;การแจกแจงปกตินี้ถูกนิยามขึ้นโดย &lt;a href="http://en.wikipedia.org/wiki/Abraham_de_Moivre"&gt;Abraham de Moivre&lt;/a&gt; (ราชบัณฑิตเรียกเขาว่า เดอมัวฟวร์) ซึ่งใช้การแจกแจงนี้ในการประมาณค่าของการแจกแจงทวินามของจำนวนครั้งที่โยนเหรียญได้หัวจากการโยนเหรียญที่เป็นกลาง 1800 ครั้ง  จากนั้น &lt;a href="http://en.wikipedia.org/wiki/Pierre_Simon_de_Laplace"&gt;Laplace&lt;/a&gt; ได้ขยายทฤษฎีของ de Moivre ให้ใช้ได้กับการแจกแจงทวินามใด ๆ&lt;br /&gt;&lt;br /&gt;ถ้าเราทดลองแบบสุ่มไม่ขึ้นต่อกัน $n$ ครั้ง แต่ละครั้งจะทดลองสำเร็จด้วยความน่าจะเป็น $p$ ตัวแปรสุ่มที่นับจำนวนครั้งของการทดลองสำเร็จจะมี &lt;span style="font-weight: bold;"&gt;การแจกแจงทวินาม&lt;/span&gt;   ยกตัวอย่างเช่นจำนวนที่ได้หัวจากการโยนเหรียญที่เป็นกลาง 1800 ครั้ง มีการแจกแจงแบบทวินาม ที่มีค่า $n=1800$ และ $p=0.5$ เป็นต้น&lt;br /&gt;&lt;br /&gt;ครั้งต่อไปเราจะพิสูจน์ทฤษฎีบทท้องถิ่นเดอมัวฟวร์-ลาปลาส (local theorem of DeMoivre-Laplace)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-114449610800188787?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114449610800188787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114449610800188787' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114449610800188787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114449610800188787'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/1_08.html' title='ทฤษฎีบทขีดจำกัดกลาง (1)'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114447459218888748</id><published>2006-04-07T22:17:00.000-07:00</published><updated>2006-04-08T04:04:33.056-07:00</updated><title type='text'>กฎแห่งจำนวนมาก (2)</title><content type='html'>เมื่อเรามีอสมการของเชบิเชฟแล้ว เราสามารถพิสูจน์ &lt;span style="font-weight: bold;"&gt;กฎแห่งจำนวนมาก&lt;/span&gt; ได้ไม่ยากนัก&lt;br /&gt;&lt;br /&gt;ก่อนอื่นเราต้องการหาค่าความแปรปรวนของผลรวมของตัวแปรสุ่มก่อน พิจารณาตัวแปรสุ่ม $X$ และ $Y$ เราจะใช้ความจริง (ที่อาจจะไปพิสูจน์กันในวันหลัง)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ความจริง 1 (Linearity of Expectation)&lt;/span&gt;:  $E[X+Y] = E[X] + E[Y]$&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ความจริง 2&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;(ผลคูณของตัวแปรสุ่มที่ไม่ขึ้นต่อกัน)&lt;/span&gt;: ถ้า $X$ และ $Y$ ไม่ขึ้นต่อกัน เราจะได้ว่า $E[X\cdot Y] = E[X]\cdot E[Y]$&lt;br /&gt;&lt;br /&gt;สำหรับตัวแปรสุ่ม $X$ ใด ๆ ค่าความแปรปรวนมีนิยามเป็น $Var[X]=E[X^2]-E[X]^2$   ดังนั้น&lt;br /&gt;&lt;br /&gt;$Var[X+Y]=E[(X+Y)^2] - E[X+Y]^2 $&lt;br /&gt;$= E[X^2 + 2X\cdot Y+Y^2]-(E[X]+E[Y])^2$&lt;br /&gt;$= E[X^2] + E[2X\cdot Y]+ E[Y^2]-E[X]^2-2E[X]E[Y] - E[Y]^2$ (ใช้ความจริง 1 ในการกระจาย)&lt;br /&gt;&lt;br /&gt;จากความจริง 2: เราจะได้ว่า  E[2X\cdot Y] = 2E[X\cdot Y] = 2E[X]E[Y]  นั่นคือ&lt;br /&gt;&lt;br /&gt;$Var[X+Y]=E[X^2] + E[Y^2] - E[X]^2 - E[Y]^2$&lt;br /&gt;$= (E[X^2] - E[X]^2) + (E[Y^2]  - E[Y]^2)$&lt;br /&gt;$= Var[X] + Var[Y]$&lt;br /&gt;&lt;br /&gt;นั่นคือ:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ความจริง 3&lt;/span&gt;: ถ้าตัวแปรสุ่ม $X$ และ $Y$ ไม่ขึ้่นต่อกัน $Var[X+Y] = Var[X] + Var[Y]$&lt;br /&gt;&lt;br /&gt;ดังนั้น, ถ้า $X$ เป็นผลรวมของตัวแปรสุ่ม $X_1,X_2,\ldots,X_n$ ที่ไม่ขึ้นต่อกัน แต่ละตัวมีค่าคาดหวัง $\mu$ และมีความแปรปรวน $\sigma^2$ เราจะได้ว่า&lt;br /&gt;&lt;br /&gt;$Var[X]=Var[\sum_{i=1}^n X_i] = n\sigma^2$&lt;br /&gt;&lt;br /&gt;เรายังต้องการความจริงอีกข้อหนึ่ง&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ความจริง 4&lt;/span&gt;: สำหรับค่าคงที่ $c$ ใดๆ $Var[cX] = c^2 Var[X]$&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;หมายเหตุ: อาจจะสงสัยว่า $Var[2X] = Var[X+X]$ น่าจะเท่ากับ $2Var[X]$ ตามความจริง 3 แต่จากข้างบนเราจะได้ว่า $Var[X+X] = Var[2X] = 4Var[X]$ นั่นเป็นเพราะ $X$ กับ $X$ นั้นไม่ใช่ตัวแปรสุ่มที่ไม่ขึ้นต่อกัน&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;บทพิสูจน์ (กฎแห่งจำนวนมากแบบอ่อน):&lt;/span&gt;&lt;br /&gt;พิจารณา $X_n=(X_1+X_2+\cdots+X_n)//n$  จากความจริงข้างต้น เราทราบว่า $E[X_n] = (E[X_1]+E[X_2]+\cdots+E[X_n])//n = \mu$ และ $Var[X_n] = \frac{1}{n^2}Var[X_1+X_2+\cdots+X_n] = \frac{n}{n^2}\sigma^2 = \sigma^2/n$&lt;br /&gt;&lt;br /&gt;เราต้องการหา&lt;br /&gt;$Pr[|X_n-\mu|&lt;\epsilon] =1-Pr[|X_n-\mu|\geq\epsilon]$  พิจารณา $Pr[|X_n-\mu|\geq\epsilon]$ ตามอสมการเชบิเชพ  เราจะได้ว่า $Pr[|X_n-\mu|\geq\epsilon]\leq (\sigma^2//n)/epsilon^2 = \sigma^2/(n\cdot\epsilon^2)$   นั่นคือ $\lim_{n\rightarrow\infty}\Pr[|\bar{X}_n-\mu|&lt;\epsilon] \geq 1-\sigma^2/(n\cdot\epsilon^2)=1$ ตามต้องการ &lt;div style="text-align: right;"&gt;[X]&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-114447459218888748?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114447459218888748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114447459218888748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114447459218888748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114447459218888748'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/2.html' title='กฎแห่งจำนวนมาก (2)'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114420505443933395</id><published>2006-04-04T19:18:00.000-07:00</published><updated>2006-04-04T19:45:26.113-07:00</updated><title type='text'>เกี่ยวกับปัญหา P กับ NP</title><content type='html'>ปัญหานี้เป็นปัญหาเชิงทฤษฎีที่สำคัญที่สุดและโด่งดังที่สุดของวิทยาการคอมพิวเตอร์ หลายคนบอกว่าวิทยาการคอมพิวเตอร์เชิงทฤษฎีไม่สามารถจะพูดเกี่ยวกับผลงานของสาขาตนเองได้มากนัก เพราะแม้แต่ปัญหาที่เป็นพื้นฐานที่สุด เรายังไม่สามารถตอบได้เลย&lt;br /&gt;&lt;br /&gt;สำหรับคนที่เคยผ่านหูผ่านตาปัญหาชื่อประมาณนี้มาบ้าง ขอผมทบทวนสักหน่อยโดยใช้ภาษาที่ไม่เป็นทางการนัก&lt;br /&gt;&lt;br /&gt;เวลาผมกล่าวถึง "ปัญหา" ผมหมายถึงปัญหาที่ต้องการคำตอบว่า "ใช่" หรือ "ไม่ใช่" เช่น &lt;span style="font-style: italic;"&gt;ปัญหาจำนวนเฉพาะ&lt;/span&gt; ที่ให้จำนวนเต็มบวกมาหนึ่งจำนวน แล้วถามว่าจำนวนหนึ่งเป็นจำนวนเฉพาะหรือไม่?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ปัญหาที่ถูกจัดอยู่ในกลุ่มปัญหา P&lt;/span&gt; คือปัญหาที่เรามีวิธีที่หาคำตอบได้อย่างมีประสิทธิภาพ&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ปัญหาที่ถูกจัดอยู่ในกลุ่มปัญหา NP&lt;/span&gt; คือปัญหาที่ถ้าคำตอบของปัญหาหนึ่ง ๆ คือใช่ เรามีวิธีการที่จะยืนยันคำตอบนั้นอย่างมีประสิทธิภาพ&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;(อ่านเพิ่มที่&lt;a href="http://th.wikipedia.org/wiki/%E0%B9%80%E0%B8%AD%E0%B9%87%E0%B8%99%E0%B8%9E%E0%B8%B5_%28%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%8B%E0%B8%B1%E0%B8%9A%E0%B8%8B%E0%B9%89%E0%B8%AD%E0%B8%99%29"&gt;วิกิพีเดียไทย&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;ปัญหานี้เป็นเรื่องพื้นฐานมาก ๆ ของการหาคำตอบ กับการยืนยันคำตอบ ซึ่งหลาย ๆ คนเชื่อกันว่า อย่างหลังน่าจะ&lt;span style="font-weight: bold;"&gt;ง่าย&lt;/span&gt;กว่า&lt;br /&gt;&lt;br /&gt;ผมจำได้ว่าได้อ่านจาก &lt;a href="http://www.cs.umd.edu/%7Egasarch/papers/poll.ps"&gt;โพล&lt;/a&gt; ที่ทำโดย &lt;a href="http://www.cs.umd.edu/%7Egasarch/"&gt;William Gasarch&lt;/a&gt; เกี่ยวกับปัญหา P และ NP  คำตอบหนึ่งของ &lt;a href="in-theory.blogspot.com"&gt;Luca Trevisan&lt;/a&gt; ในโพลนั้น (ที่หลาย ๆ คนคงคิดคล้าย ๆ กับเขา) ก็คือ เขากลัวว่าการพิสูจน์ปัญหาดังกล่าวจะเกิดจากการที่บางคนสังเกตเห็นความเกี่ยวข้องบางอย่างระหว่างปัญหานี้กับคณิตศาสตร์แปลก ๆ แล้วก็พิสูจน์ปัญหานี้ออกมาโดยการทำงานในคณิตศาสตร์แปลก ๆ นั้น  แล้วเราซึ่งเป็นนักวิทยาการคอมพิวเตอร์ซึ่งรู้เรื่องแค่คอมบินาทอริคส์ จะไม่มีทางเข้าใจบทพิสูจน์นั้นเลย&lt;br /&gt;&lt;br /&gt;(ผมได้ข่าวจากบล็อกของ Luca) ในงานการประชุมนักคณิตศาสตร์นานาชาติที่กรุงมาดริก (&lt;a href="http://www.icm2006.org/"&gt;ICM'06&lt;/a&gt;) ที่จะถึงนี้ &lt;a href="http://www.math.ias.edu/%7Eavi/"&gt;Avi Wigderson&lt;/a&gt; จะนำเสนอ&lt;a href="http://www.math.ias.edu/%7Eavi/PUBLICATIONS/MYPAPERS/W06/W06.pdf"&gt;บทความ&lt;/a&gt; ที่สรุปความคืบหน้าของการพิสูจน์ปัญหา P กับ NP  ตอนต้นบทความเขาอ้างถึงคำพูดของ Steve Smale ว่า "&lt;span style="font-style: italic;"&gt;ปัญหา P กับ NP --- ของขวัญสำหรับคณิตศาสตร์จากวิทยาการคอมพิวเตอร์&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;เราอาจได้เห็นความคืบหน้าบางอย่าง และสิ่งที่ Luca กลัวที่สุดอาจเป็นจริงก็ได้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-114420505443933395?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114420505443933395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114420505443933395' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114420505443933395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114420505443933395'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/p-np.html' title='เกี่ยวกับปัญหา P กับ NP'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114403627335514692</id><published>2006-04-02T20:16:00.000-07:00</published><updated>2006-04-02T20:51:13.393-07:00</updated><title type='text'>เกี่ยวกับ MathML และ ASCIIMathML</title><content type='html'>จากที่มีหลาย ๆ คนเข้ามาอ่าน แล้วมีปัญหาเกี่ยวกับการใช้ MathML หรือได้ให้ความเห็นเกี่ยวกับการใช้ MathML เอาไว้ (ดู &lt;a href="http://www.isriya.com/node/912"&gt;mk&lt;/a&gt; หรือ &lt;a href="http://wonam.exteen.com/20060401/jittat-blogspot-com"&gt;comment ของ bact'&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;จริง ๆ ผมก็ไม่ค่อยทราบเท่าไหร่นักเกี่ยวกับตัว MathML นี่ พอดีคุยกับ &lt;a href="http://theorycat.blogspot.com/"&gt;Kanat&lt;/a&gt; (ชื่อไทยเขียนไงนะ) ก็แนะนำวิธีที่ได้จาก &lt;a href="http://spaces.msn.com/crazytheoretician/blog/"&gt;นุ&lt;/a&gt; มา คือให้เอาบรรทัดนี้&lt;br /&gt;&lt;br /&gt;&amp;lt;script src="http://www1.chapman.edu/~jipsen/mathml/ASCIIMathML.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;ใส่ลงไปที่หัวบล็อก script นี้เป็นของคุณ &lt;a href="http://www1.chapman.edu/%7Ejipsen/"&gt;Peter Jipsen&lt;/a&gt; ชื่อว่า &lt;a href="http://www1.chapman.edu/%7Ejipsen/mathml/asciimath.html"&gt;ASCIIMathML&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;เวลาใช้ก็เขียนแบบที่เขียนใน LaTex คือ ใส่นิพจน์ทางคณิตศาสตร์ในเครื่องหมายดอลลาร์ เช่น &lt;pre&gt;$n^2+b^2/c$&lt;/pre&gt; จะได้เป็น $n^2+b^2/c$&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/9076113-114403627335514692?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114403627335514692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114403627335514692' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114403627335514692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114403627335514692'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/mathml-asciimathml.html' title='เกี่ยวกับ MathML และ ASCIIMathML'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114399182716108389</id><published>2006-04-02T08:14:00.000-07:00</published><updated>2006-04-02T10:44:28.940-07:00</updated><title type='text'>อสมการของเชบิเชฟ</title><content type='html'>จะพิสูจน์กฎแห่งการมีจำนวนมาก เราจะใช้ต้อง &lt;span style="font-weight: bold;"&gt;อสมการของเชบิเชฟ&lt;/span&gt; (ดูรายละเอียดแบบเป็นทางการได้ที่ &lt;a href="http://th.wikipedia.org/wiki/%E0%B8%AD%E0%B8%AA%E0%B8%A1%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B9%80%E0%B8%8A%E0%B8%9A%E0%B8%B4%E0%B9%80%E0%B8%8A%E0%B8%9F"&gt;วิกิพีเดียไทย&lt;/a&gt;) ซึ่งกล่าวว่าถ้าตัวแปรสุ่ม $X$ มีค่าคาดหวัง $\mu$ และความแปรปรวน $\sigma^2$ เราจะได้ว่า&lt;br /&gt;$\Pr[|X-\mu|\geq t]\leq (\sigma^2)/(t^2)$&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ก่อนอื่นต้องระบุก่อนว่าผมไม่ค่อยแน่ใจว่าบล็อกนี้จะเขียนให้ใครอ่าน คือ.. ไม่ค่อยแน่ใจว่าต้องเขียนถึงเรื่องพื้นฐานแค่ไหน เป้าหมายจริง ๆ ผมพยายามจะเขียนเกี่ยวกับ central limit theorem และการพิสูจน์ (เพราะว่าตอนนี้กำลังอ่านเรื่องที่เกี่ยวข้องกับเรื่องนี้อยู่)  ผมก็จะเขียนลึกบ้างตื้นบ้างตามสะดวกแล้วกันนะครับ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;คิดว่าหลาย ๆ คนคงเคยเห็นการพิสูจน์อสมการของเชบิเชฟที่ใช้อสมการของมาร์คอฟแล้ว  ผมเลยจะเขียนการพิสูจน์โดยตรงแทน (ซึ่งมีแนวคิดเหมือนกัน) ผมตามหนังสือของ Gnedenko ครับ&lt;br /&gt;&lt;br /&gt;เอากรณีที่เป็นดิสครีตแล้วกันนะครับ เราทราบว่า&lt;br /&gt;$\Pr[|X-\mu|\geq t] = \sum_{x:|x-\mu|\geq t}\Pr[X=x]$&lt;br /&gt;สังเกตว่าในส่วนที่เราหาผลรวมนั้น $(|x-\mu|)/t\geq 1$ เราจะได้&lt;br /&gt;$\sum_{x:|x-\mu|\geq t}\Pr[X=x]\leq \sum_{x:|x-\mu|\geq t}((|x-\mu|)/t)^2\Pr[X=x] $&lt;br /&gt;$= 1/(t^2) \sum_{x:|x-\mu|\geq t}(x-\mu)^2\Pr[X=x]$&lt;br /&gt;เนื่องจาก $(x-\mu)^2$ นั้นไม่น้อยกว่าศูนย์  ดังนั้นเราสามารถขยายขอบเขตของการหาผลรวมได้ โดยไม่ทำให้ผลที่ได้ลดลง นั่นคือ&lt;br /&gt;$\sum_{x:|x-\mu|\geq t}\Pr[X=x]\leq 1/(t^2) \sum_{x=-\infty}^{\infty}(x-\mu)^2\Pr[X=x]=(\sigma^2)/(t^2)$&lt;br /&gt;เพราะว่า $\sum_{x=-\infty}^{\infty}(x-\mu)^2\Pr[X=x]=\sigma^2$ ตามนิยามของความแปรปรวน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-114399182716108389?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114399182716108389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114399182716108389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114399182716108389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114399182716108389'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/blog-post.html' title='อสมการของเชบิเชฟ'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114390356270208374</id><published>2006-04-01T06:58:00.000-08:00</published><updated>2006-04-01T07:29:49.993-08:00</updated><title type='text'>กฎแห่งการมีจำนวนมาก (1)</title><content type='html'>(ในบล็อก &lt;a href="http://wonam.exteen.com"&gt;wonam.exteen.com&lt;/a&gt; ผมมักจะเขียนเรื่องทั่ว ๆ ไป แต่สำหรับบล็อกนี้ ผมจะพยายามเีขียนเรื่องที่เกี่ยวข้องกับวิทยาการคอมพิวเตอร์เชิงทฤษฎี ซึ่งอาจเป็นเรื่องที่ผมศึกษาอยู่ หรือไปผ่าน ๆ ตามา)&lt;br /&gt;&lt;br /&gt;ให้เหรียญที่เที่ยงตรงมาหนึ่งอัน โยน 2 ครั้ง แล้วนับจำนวนหัวที่ออกมา  ตามหลักความน่าจะเป็น ค่าคาดหวัง (expected value) ของจำนวนหัวก็คือ 1 แต่อย่างไรก็ตาม ไม่จำเป็นที่ผลที่ได้เป็นเช่นค่าคาดหวังเสมอไป ถ้าลองคำนวณดูจะพบว่า ความน่าจะเป็นที่จะได้หัว 1 ครั้งพอดี มีค่าเท่ากับ 0.5 เท่านั้น&lt;br /&gt;&lt;br /&gt;แล้วความน่าจะเป็นที่เราคำนวณมาเนี่ยะ มันจะมีประโยชน์อะไร?  เช่นถ้าเราบอกว่าเหตุการณ์หนึ่งจะเกิดขึ้นด้วยความน่าจะเป็น 0.5 จริง ๆ แล้วมีความหมายอะไรหรือไม่?&lt;br /&gt;&lt;br /&gt;ถ้าถกกันเรื่องความหมายแล้ว จริง ๆ ก็ตอบได้ยาก แต่ถ้าเรายึดโมเดลมาตรฐานทั่วไปของความน่าจะเป็น เราสามารถแสดง "ความหมาย" ของตัวเลขความน่าจะเป็นพอได้บ้าง&lt;br /&gt;&lt;br /&gt;ความเข้าใจหนึ่งที่เรามีเกี่ยวกับความน่าจะเป็นก็คือจำนวนครั้ง โดยเฉลี่ย ที่เหตุการณ์หนึ่ง ๆ จะเกิดขึ้น  แน่นอนคำว่าโดยเฉลี่ยนั้น มีนัยยะของจำนวนอยู่ด้วย  นั่นคือ ยิ่งมีการทดลองมากครั้งเข้า จำนวนครั้งของการเกิดขึ้นของเหตุการณ์ที่เรานับได้ ก็ควรจะมีสัดส่วนเข้าใกล้กับความน่าจะเป็น  นี่คือ "กฎแห่งการมีจำนวนมาก" หรือ Law of large number (ดูเพิ่มที่ &lt;a href="http://en.wikipedia.org/wiki/Law_of_large_numbers"&gt;en.wikipedia.org&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;ถ้าเราจะอธิบายในเชิงคณิตศาสตร์ เราก็อาจเขียนได้ดังนี้ (นี่คือรูปของ weak law of large numbers): ให้ $X_1,X_2,\ldots$ เป็นลำดับของตัวแปรสุ่ม ที่ไม่ขึ้นต่อกัน มีค่าคาดหวัง $\mu$ และค่าความแปรปรวน $\sigma^2$  ให้ค่าเฉลี่ยของตัวแปรสุ่ม $n$ ตัวแรก $\bar{X}_n = (X_1 + X_2 +\cdots + X_n)/n$  สำหรับ $\epsilon$ ใด ๆ ที่มากกว่าศูนย์&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;$\lim_{n\rightarrow\infty}\Pr[|\bar{X}_n-\mu|&lt;\epsilon] = 1$&lt;/ul&gt;&lt;br /&gt;สำหรับการพิสูจน์จะมาเขียนต่ออีกครั้ง&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9076113-114390356270208374?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114390356270208374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114390356270208374' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114390356270208374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114390356270208374'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/04/1.html' title='กฎแห่งการมีจำนวนมาก (1)'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9076113.post-114318198450108035</id><published>2006-03-23T22:29:00.000-08:00</published><updated>2006-03-23T22:33:04.516-08:00</updated><title type='text'>ชื่อซ้ำ ชื่อต่าง</title><content type='html'>เพิ่งมาใช้ last.fm (สถิติของผม &lt;a href="http://www.last.fm/user/wonam/"&gt;http://www.last.fm/user/wonam/&lt;/a&gt;) ซึ่งเป็น social network ของการฟังดนตรี หลาย ๆ คนสังเกตว่า&lt;br /&gt;&lt;ul&gt;&lt;li&gt;มีวงดนตรีหลายวงที่ชื่อซ้ำกัน (อาจจะมาจากหลายประเทศ)&lt;/li&gt;&lt;li&gt;วงดนตรีวงหนึ่ง เขียนได้หลายแบบ เช่น Modern dog กับ Moderndog หรือ P2 Warship กับ P 2 Warship กับ P II W P2 Warship&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/9076113-114318198450108035?l=jittat.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jittat.blogspot.com/feeds/114318198450108035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9076113&amp;postID=114318198450108035' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114318198450108035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9076113/posts/default/114318198450108035'/><link rel='alternate' type='text/html' href='http://jittat.blogspot.com/2006/03/blog-post.html' title='ชื่อซ้ำ ชื่อต่าง'/><author><name>jittat</name><uri>http://www.blogger.com/profile/09516350641683450334</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17812227450902099700'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry></feed>