<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AnnoMundi's Weblog &#187; Programming</title>
	<atom:link href="http://www.annomundi.info/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.annomundi.info</link>
	<description>AM, "in the year of the world"</description>
	<lastBuildDate>Mon, 20 Jul 2009 12:02:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Getting Started With Capistrano 2.0</title>
		<link>http://www.annomundi.info/2007/08/02/getting-started-with-capistrano-20/</link>
		<comments>http://www.annomundi.info/2007/08/02/getting-started-with-capistrano-20/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 15:02:58 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby and Rails]]></category>
		<category><![CDATA[Capistrano]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2007/08/02/93/</guid>
		<description><![CDATA[หลังจากได้ลองศึกษาและเขียน Web Application ด้วย Ruby On Rails มาได้สักพัก ก็ได้เวลา เอา Web Application ที่ทำ ไปใช้งานจริง ซึ่งในช่วงแรก ผมอาศัยการก็อปปี้จากตัว Development ไปใช้งาน โดยเปลี่ยน config ให้รันในโหมด Production ทั้งนี้ผมรันทั้ง Development และ Production บนเครื่องตัวเองที่บ้านครับ เพราะต้องการศึกษา และทดสอบให้มั่นใจซะก่อน 
และจากเดิมที่ใช้วิธีการก็อบปี้ ก็เปลี่ยนมาใช้ Subversion ช่วยซึ่งก็ทำให้สะดวกขึ้น และในที่สุดก็เลยมาลองใช้ Capistrano เพราะเห็นใครๆเขาก็ใช้กัน ^^ และพอได้มาลองใช้ดู ก็พบว่าวิธีการใช้งาน ที่มีคนเขียนไว้ตามเว็ปต่างๆนั้น ใช้แทบไม่ได้เลย &#8211; -&#8221; เพราะเวอร์ชั่น 2.0 นี้ต่างจากของเดิมเยอะพอสมควร ก็เลยต้องลองผิดลองถูก เดาๆเอาจากของเดิมที่มีคนเขียนอธิบายไว้ กับที่เว็ปของ Capistrano เขียนไว้ (น้อยจัง) พอทำสำเร็จเลยต้องมาเขียน Blog ไว้กันลืม [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากได้ลองศึกษาและเขียน Web Application ด้วย Ruby On Rails มาได้สักพัก ก็ได้เวลา เอา Web Application ที่ทำ ไปใช้งานจริง ซึ่งในช่วงแรก ผมอาศัยการก็อปปี้จากตัว Development ไปใช้งาน โดยเปลี่ยน config ให้รันในโหมด Production ทั้งนี้ผมรันทั้ง Development และ Production บนเครื่องตัวเองที่บ้านครับ เพราะต้องการศึกษา และทดสอบให้มั่นใจซะก่อน </p>
<p>และจากเดิมที่ใช้วิธีการก็อบปี้ ก็เปลี่ยนมาใช้ Subversion ช่วยซึ่งก็ทำให้สะดวกขึ้น และในที่สุดก็เลยมาลองใช้ Capistrano เพราะเห็นใครๆเขาก็ใช้กัน ^^ และพอได้มาลองใช้ดู ก็พบว่าวิธีการใช้งาน ที่มีคนเขียนไว้ตามเว็ปต่างๆนั้น ใช้แทบไม่ได้เลย &#8211; -&#8221; เพราะเวอร์ชั่น 2.0 นี้ต่างจากของเดิมเยอะพอสมควร ก็เลยต้องลองผิดลองถูก เดาๆเอาจากของเดิมที่มีคนเขียนอธิบายไว้ กับที่เว็ปของ Capistrano เขียนไว้ (น้อยจัง) พอทำสำเร็จเลยต้องมาเขียน Blog ไว้กันลืม ^^&#8221;</p>
<p>เริ่มต้นเลยใช้เช็คก่อนว่าเราได้ลง Capistrano 2.0 ไว้หรือยัง</p>
<pre class='terminal'>gem list</pre>
<p>ถ้ายังไม่ได้ลงก็จัดการลงเลยครับ</p>
<pre class='terminal'>sudo gem install capistrano</pre>
<p>จากนั้นก็ใน Project Root directory ซึ่งในกรณี้ของผมโปรเจคชื่อ inventory และอยู่ที่ Directory /home/my_local_username/aptana/workspace/inventory </p>
<pre class='terminal'>cd ~/aptana/workspace/inventory</pre>
<p>จากนั้นก็ทำการสร้างคอนฟิกไฟล์ของ Capistrano ใน Project ของเราด้วยคำสั่ง</p>
<pre class='terminal'>capify .</pre>
<p>จากนั้นถ้าจะดูว่าเราสามารถใช้คำสั่งอะไรได้บ้างให้ลองใช้คำสั่งนี้ดูครับ</p>
<pre class='terminal'>cap -T</pre>
<p>ทีนี้ให้เราไปเปิดไฟล์ config/deploy.rb เพื่อแก้ไขคอนฟิกให้ใช้งานได้ถูกต้องตามต้องการ ซึ่งปกติหน้าตาไฟล์คอนฟิกที่มันสร้างให้จะเป็นดังด้านล่างนี้</p>
<pre class="terminal"><code>set :application, "set your application name here"
set :repository,  "set your repository location here" 

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}" 

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "your app-server here"
role :web, "your web-server here"
role :db,  "your db-server here", :primary => true</code></pre>
<p>ก็ให้แก้ตัวแปร</p>
<ul>
<li>:application เป็นชื่อโปรเจค</li>
<li>:repository เป็น subversion repository ที่โปรเจคนี้ใช้งาน</li>
<li>:runner เป็น username ที่ใช้งานบน Remote Server</li>
<li>:runner เป็น username ที่ใช้งานบน Remote Server</li>
<li>:deploy_to เป็น path ที่เราจะ deploy web application บน Remote Server</li>
<li>:app, :web และ :db เป็นชื่อโดเมนของ Remote Server ที่เราจะ Deploy Web ซึ่งในกรณีของผม ผมจะ Deploy ไปยัง inventory.codesniper.org ซึ่งอยู่ในเครื่องที่ ผมทำงานนั่นแหล่ะ แต่ผมเซ็ตชื่อโดเมนไว้ใน /etc/hosts  application</li>
</ul>
<p>หลังจากแก้ไขไฟล์ config/deploy.rb เสร็จหน้าตาก็จะเป็นดังนี้</p>
<pre class="terminal"><code>set :application, "inventory"
set :repository,  "http://localhost/svn/inventory/trunk"
set :runner, 'my_remote_username'
# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"
set :deploy_to, "/home/my_remote_username/RailsProjects/#{application}"
# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "inventory.codesniper.org"
role :web, "inventory.codesniper.org"
role :db,  "inventory.codesniper.org", :primary => true

task :after_setup do
  run "mkdir -p #{shared_path}/media"
  run "mkdir -p #{shared_path}/media/thumbnail"
end

task :after_symlink do
  run "rm -rf current/public/media"
  run "ln -s #{shared_path}/media #{current_path}/public/media"
end</code></pre>
<p>แต่ทั้งนี้จะเห็นว่าผมใส่ Callbak Task ไว้ 2 Task คือ :after_setup ส่วนการทำงานเดี๋ยวผมจะ อธิบายทีหลัง ทีนี้หลังจากที่เราแก้ไขไฟล์ deploy.rb เสร็จแล้ว เราจะทำการเซ็ต ในส่วนที่เกี่ยวกับการ สั่งรัน Web Application บน Remote Server ซึ่งในที่นี้ผมจะรันด้วย Mongrel ดังนั้นเราต้องสร้างไฟล์ script/spin ขึ้นมา</p>
<p class='code'>nano -w script/spin</p>
<p>โดยในไฟล์ spin นี้ให้ใส่คำสั่งดังต่อไปนี้ (อย่าลืมแก้ไข Path ให้ถูกต้องด้วยนะครับ) ไฟล์นี้จะถูก Capistrono เรียกใช้โดยอัตโนมัติ</p>
<pre class="terminal"><code>/home/my_remote_username/RailsProjects/inventory/current/script/process/spawner -p 5010 -i 2</code></pre>
<p>โดยไฟล์นี้จะทำหน้านี้รัน Mongrel ในที่นี้ผมเซ็ตให้รัน 2 Process เพราะผมได้เซ็ต Apache/mod_proxy ไว้แล้ว และหลังจากนี้ ให้เราแก้ไขไฟล์ config/database.yml กันก่อน เนื่องจากผมใช้ sqlite3 เป็นฐานข้อมูล ดังนั้นเพื่อไม่ให้มีปัญหาตอน Deploy ผมเลยแก้ไขไฟล์ database.yml เป็นดังนี้</p>
<pre class="terminal"><code>development:
  adapter: sqlite3
  database: db/development.sqlite3

test:
  adapter: sqlite3
  database: db/test.sqlite3

production:
  adapter: sqlite3
  database: /home/my_remote_username/RailsProjects/inventory/shared/production.sqlite3</code></pre>
<p>ที่ต้องระบุ path ของ Production database ดังด้านบน ก็เพราะถ้าเราเก็บไฟล์ฐานข้อมูลไว้ใน Directory &#8220;db&#8221; ที่อยู่ใน Root Project เมื่อเราทำการแก้ไขโปรแกรมแล้วทำการ Deploy เพื่ออัพเดท Web App บน Remote Server ไฟล์ฐานข้อมุลก็จะหายไป<br />
ทีนี้่ก่อนที่เราจะ Deploy ให้ทำการ commit ไฟล์ในโปรเจคก่อน</p>
<pre class='terminal'>svn commit -m "Config Capistrano to Project"</pre>
<p>จากนี้เราจะเริ่มทำการ Deploy Web Application กัน เริ่มด้วยคำสั่ง</p>
<pre class='terminal'>cap deploy:setup</pre>
<p>หลังจากเรียกคำสั่งนี้ใน Remote server จะมี Directory จำนวนนึงถูกสร้างขึ้นมา และที่เราได้เขียน Callback Task ไว้ใน deploy.rb</p>
<pre class="terminal"><code>task :after_setup do
  run "mkdir -p #{shared_path}/media"
  run "mkdir -p #{shared_path}/media/thumbnail"
end</code></pre>
<p>เมื่อลองเช็คดูใน Remote Server ใน Path ที่เราจะ Deploy จะมี Directory &#8220;current&#8221;, &#8220;releases&#8221;, &#8220;shared&#8221; และใน &#8220;shared&#8221; นั้นจะมี Directory &#8220;media&#8221; และ &#8220;media/thumbnail&#8221; ที่เราสั่งให้สร้างไว้</p>
<p>จากนั้นให้ส่ัง Deploy ด้วยคำส่ัง</p>
<pre class='terminal'>cap deploy:cold</pre>
<p>ซึ่งคำสั่งนี้ใช้ Deploy Web Application ในครั้งแรก ซึ่งจะมีการสั่งรัน db:migration สร้างฐานข้อมุลขึ้นมา และรัน Mongrel ให้เราโดยอัตโนมัติ ส่วน Web Application ของเราจะถูก Deploy ไปยัง Directory &#8220;Release&#8221;</p>
<pre class='terminal'>$ pwd
/home/my_remote_username/RailsProjects/inventory
$ ls
current  releases  shared
$ls releases
20070802140742
$ls releases/20070802140742
app      components  db   lib  nohup.out  Rakefile  REVISION  test  vendor
Capfile  config      doc  log  public     README    script    tmp
</pre>
<p>จะเห็นว่าบน Remote Server นั้น Web Application Root จะอยู่ใน 20070802140742 ซึ่ง Directory &#8220;current&#8221; จะลิ้งก์ไปที่ Directory &#8220;20070802140742&#8243;<br />
และจากในช่วงแรกที่ผมได้เขียน Callback Task :after_symlink ไว้ใน deploy.rb</p>
<pre class="terminal"><code>task :after_symlink do
  run "rm -rf #{current_path}/public/media"
  run "ln -s #{shared_path}/media #{current_path}/public/media"
end</code></pre>
<p>ซึ่ง Callback Task นี้จะถูกรันในขั้นตอนนี้ ซึ่งจะทำการลบ Directory &#8220;media&#8221; ทิ้ง ที่ต้องลบทิ้งเพราะใน Directory นี้ที่ใช้เก็บรูปภาพ อาจมีรูปต่างๆที่เราอัพโหลดในช่วงพัฒนา ซึ่งเราไม่ได้เอาไปใช้จริง และหลังจากลบ Directory นี้แล้วก็เป็น คำสั่งสร้าง Symbolic link ไปยัง &#8220;shared/media&#8221; ส่วนทำไมต้องทำแบบนี้ เดี๋ยวจะอธิบายในช่วงต่อไปครับ ^^&#8221;<br />
ส่วนตอนนี้เราสามารถ เปิดดูเว็ปเราได้แล้วนะครับ และต่อไป ถ้าเราทำการพัฒนาเพิ่มเติม หรือแก้ไขบน Local แล้วต้องการอัพเทดบน Remote เราก็สามารถทำได้โดยง่ายด้วยคำสั่ง</p>
<pre class='terminal'>cap deploy</pre>
<p>ซึ่งจะทำการ deploy Web Application ที่เราพัฒนาเพิ่มเติมเสร็จ ่ไปยัง Remote Server และทำการ Restart Mongrel แต่จะไม่มีการสร้างฐานข้อมูลใหม่ให้เรา เพราะเป็นการ Deploy เพื่ออัพเดท Web Application บน Remote Server ถ้าเราลองดูใน Directory &#8220;releases&#8221; จะเห็นว่ามี Directory ใหม่สร้างขึ้นมา ภายในนั้นก็คือ Web Application Root ชุดใหม่ที่เราเพิ่งสั่ง Deploy มา และ Directory Current ก็จะถูกเปลี่ยนมาชี้ที่นี่แทน</p>
<p>นั่นเป็นสาเหตุที่ผมได้แก้ไขไฟล์ database.yml ที่ระบุ sqlite database file ไว้ใน shared แทนก็เพราะถ้าไว้ภายใน Web Application Root เมื่อเรา Deploy เพื่ออัพเดท Directory &#8220;current&#8221; จะถูกเปลี่ยนให้ลิ้งก์ไปที่ Web Application Root อันใหม่ซึ่งจะไม่มีไฟล์ฐานข้อมูล  </p>
<p>ตอนนี้น่าจะเริ่มเข้าใจแล้วนะครับว่า ที่ผมเขียน Callback Task ให้สร้าง Directory &#8220;media&#8221;, &#8220;media/thumbnail&#8221; ไว้ใน &#8220;shared&#8221; ก็ด้วยเหตุผลเดียวกัน เนื่องจาก Directory เหล่านี้ผมเอาไว้เก็บรูปภาพสินค้า เมื่อเราใช้งานบน Remote Server มีการอัพรูปสินค้าไปบ้างแล้ว ถ้าเราสั่ง deploy เพื่ออัพเดทเว็ป แล้วเราดันเก็บรูปไว้ใน Diretory ที่อยู่ภายใน Web Application Root มันก็จะเกิดปัญหาขึ้น เพราะ Directory &#8220;current&#8221; ถูกเปลี่ยนลิ้งก์ไปยัง Web Application Root ชุดใหม่แทน ทำให้รูปเดิมที่เคยอัพไปแล้วใช้ไม่ได้</p>
<p>สุดท้ายนี้ ผมไม่ได้เขียนเกี่ยวกับ การเซ็ต Apache &#8211; Subversion &#8211; Mongrel นะครับ ถ้าใครสนใจก็ ลองอ่านได้<a href="http://weblog.punneng.com/?p=136">ที่นี่</a>ครับ เพราะผมก็ไปอ่านจากที่นั่นแหล่ะ <img src='http://www.annomundi.info/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
ความจริงการใช้งาน Capistrano ยังมีอะไรให้ศึกษาอีกเยอะครับ มันสามารถเซ็ต และทำงานได้มากมาย กว่าที่ผมเขียนมาทั้งหมด เพียงแต่ผมพิ่งศึกษาและเพิ่งทดลองใช้งานได้แค่นี้ ไว้ถ้าได้อะไรมากกว่านี้ก็จะมาเขียนเพิ่มเติม</p>
<p class='alert'>หมายเหตุ : ทั้งนี้ที่ผมทดสอบนั้น Local และ Remote Server จะอยู่บนเครื่องเดียวกัน อาจทำให้บางท่าน ที่อ่านแล้วนำไปใช้ อาจไม่ได้ผลอย่างที่ผมเขียน ก็ต้องขออภัยด้วยครับ</alert></p>
<p>อ้างอิง : <a href="http://www.capify.org/getting-started/rails">Capistrano</a><br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li><a href="http://www.annomundi.info/2007/06/20/mini-review-about-shared-host-joyenttextdrive/" title="Mini Review about Shared Host @ Joyent/TextDrive">Mini Review about Shared Host @ Joyent/TextDrive</a></li>
<li><a href="http://www.annomundi.info/2006/11/21/%e0%b9%83%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b8%aa%e0%b8%b8%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b8%94%e0%b8%aa%e0%b8%b4%e0%b8%99%e0%b9%83%e0%b8%88%e0%b9%80%e0%b8%ad%e0%b8%b2%e0%b9%80%e0%b8%84%e0%b8%a3e/" title="ในที่สุดตัดสินใจเอาเครื่อง Colocate Server กลับบ้าน">ในที่สุดตัดสินใจเอาเครื่อง Colocate Server กลับบ้าน</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2007/08/02/getting-started-with-capistrano-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 0.6 Preview Release</title>
		<link>http://www.annomundi.info/2006/12/20/zend-framework-06-preview-release/</link>
		<comments>http://www.annomundi.info/2006/12/20/zend-framework-06-preview-release/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 15:19:44 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Zend-Framework]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2006/12/20/71/</guid>
		<description><![CDATA[ช่วงนี้ไม่ได้อัพบล็อกเลยเพราะมัวเขียนโปรแกรมและศึกษาเกี่ยวกับ Javascript ซึ่งต้องใช้
ในการทำเว็ปด้วย เลยยุ่งๆ แต่เมื่อวานลองเข้าไปดูในเว็ป Zend Framework ก็พบว่ามันได้
ออกเวอร์ชั่นใหม่มาแล้ว &#8211; -&#8221; เว็ปที่ผมทำอยู่นั้นใช้เวอร์ชั่น 0.2 Preview ก็เลยจัดการอัพเกรด
ซึ่งหลังจากอัพเกรดก็มีต้องแก้โค้ด 2-3 ที่เพราะบางคลาสมีการเปลี่ยนแปลงไปจากเดิมพอสมควร
นอกจากคลาสเดิมที่มีการปรับปรุงเพิ่มเติมก็มี component ใหม่ๆเพิ่มเข้ามา รายละเอียดก็
ตามด้านล่างเลยครับ

Lucene-compatible search engine query language
New Authentication component and improved ACL design
Improved MVC implementation and documentation
Improved Session-handling design
Integrated Google Data API Client
Improved XmlRpc client and server
Improved Http Client design, supporting cookies and proxy servers
New Web Services client for [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้ไม่ได้อัพบล็อกเลยเพราะมัวเขียนโปรแกรมและศึกษาเกี่ยวกับ Javascript ซึ่งต้องใช้<br />
ในการทำเว็ปด้วย เลยยุ่งๆ แต่เมื่อวานลองเข้าไปดูในเว็ป Zend Framework ก็พบว่ามันได้<br />
ออกเวอร์ชั่นใหม่มาแล้ว &#8211; -&#8221; เว็ปที่ผมทำอยู่นั้นใช้เวอร์ชั่น 0.2 Preview ก็เลยจัดการอัพเกรด<br />
ซึ่งหลังจากอัพเกรดก็มีต้องแก้โค้ด 2-3 ที่เพราะบางคลาสมีการเปลี่ยนแปลงไปจากเดิมพอสมควร<br />
นอกจากคลาสเดิมที่มีการปรับปรุงเพิ่มเติมก็มี component ใหม่ๆเพิ่มเข้ามา รายละเอียดก็<br />
ตามด้านล่างเลยครับ</p>
<ul>
<li>Lucene-compatible search engine query language</li>
<li>New Authentication component and improved ACL design</li>
<li>Improved MVC implementation and documentation</li>
<li>Improved Session-handling design</li>
<li>Integrated Google Data API Client</li>
<li>Improved XmlRpc client and server</li>
<li>Improved Http Client design, supporting cookies and proxy servers</li>
<li>New Web Services client for Simpy social bookmarking</li>
<li>Emerging components for I18N, Getopt, Mail folders, and many other enhancements to components and documentation.</li>
</ul>
<p>นอกจากที่ Zend จะออก Zend Framework เวอร์ชั่นใหม่แล้วก็ยังออก Zend Google Data<br />
Client Preview 0.6.0 มาด้วย แต่ตัวหลังนี้ผมยังไม่ได้ลองใช้เลย</p>
<p>ข้อเสียของการใช้ Zend Framework ทำเว็ปในตอนนี้คงเป็นเรื่องที่ตัว Framework มันยังไม่นิ่ง<br />
ทำให้เวลา Zend ออกเวอร์ชั่นใหม่มาเราก็ต้องคอยแก้ไขโค้ดตามอยู่เรื่อยๆ แต่ข้อดีก็คือช่วงแรกๆ<br />
นี้ตัว Framework มันยังไม่ซับซ้อนจะทำความเข้าใจได้ง่าย เมื่อมีเวอร์ชั่นใหม่ออกมาก็ศึกษา<br />
เพิ่มเติมเอา แต่ถ้าใครต้องการ Framework ที่จะเอาไปใช้ทำเว็ปจริงๆจังๆน่าจะศึกษาและใช้งาน<br />
Framework ตัวอื่นๆที่ตัว Framwork มัน stable แล้วมากกว่านะ</p>
<p>เว็ปไซต์ที่เกียวข้อง : <a href="http://framework.zend.com/">Zend Framework</a><br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li><a href="http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/" title="Zend Framework Preview 0.2.0 Released!">Zend Framework Preview 0.2.0 Released!</a></li>
<li><a href="http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/" title="Zend Studio 5.5 Beta Available Now!.">Zend Studio 5.5 Beta Available Now!.</a></li>
<li><a href="http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/" title="วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows">วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2006/12/20/zend-framework-06-preview-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP Framework Benchmark</title>
		<link>http://www.annomundi.info/2006/12/02/php-framework-benchmark/</link>
		<comments>http://www.annomundi.info/2006/12/02/php-framework-benchmark/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 22:56:14 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2006/12/02/70/</guid>
		<description><![CDATA[ช่วงนี้พอดีผมกำลังหัดใช้ Zend Framework อยู่ และก็บังเอิญไปเจอเว็ปบล็อกนึงเขาได้ทำการทดสอบ
PHP Framework ที่เป็นที่นิยมกัน ซึ่งก็มี่ี CakePHP, Solar, Symfony และ Zend Framework
ซึ่งเขาทดสอบ Benchmark ด้วยการเขียนโปรแกรมโดยใช้ Framework ต่างๆให้แสดงข้อความ
Hello World ออกมา และผลที่ได้คือ Solar > Symfony > Cake > Zend Framework
ซึ่ง Zend Framework ช้าที่สุด T_T ทำเอาผมเซ็งไปเลยเพราะกำลังใช้ทำเว็ปอยู่
แต่ก็เพราะเว็ปนี้ทำให้ผมรู้จัก PHP Framework เพิ่มขึ้นมาอีก 2 ตัว คือ Solar และ Symfony
เท่าที่ดู Feature ทั้ง 4 ตัวนี้แล้วรู้สึกว่า Symfony จะมีระบบคล้าย Ruby On Rails มากที่สุด
แต่ผมก็ยังขอปักหลักกับ Zend Framework [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้พอดีผมกำลังหัดใช้ Zend Framework อยู่ และก็บังเอิญไปเจอ<a href="http://paul-m-jones.com/blog/?p=236">เว็ปบล็อกนึง</a>เขาได้ทำการทดสอบ<br />
PHP Framework ที่เป็นที่นิยมกัน ซึ่งก็มี่ี CakePHP, Solar, Symfony และ Zend Framework<br />
ซึ่งเขาทดสอบ Benchmark ด้วยการเขียนโปรแกรมโดยใช้ Framework ต่างๆให้แสดงข้อความ<br />
Hello World ออกมา และผลที่ได้คือ Solar > Symfony > Cake > Zend Framework<br />
ซึ่ง Zend Framework ช้าที่สุด T_T ทำเอาผมเซ็งไปเลยเพราะกำลังใช้ทำเว็ปอยู่</p>
<p>แต่ก็เพราะเว็ปนี้ทำให้ผมรู้จัก PHP Framework เพิ่มขึ้นมาอีก 2 ตัว คือ Solar และ Symfony<br />
เท่าที่ดู Feature ทั้ง 4 ตัวนี้แล้วรู้สึกว่า Symfony จะมีระบบคล้าย Ruby On Rails มากที่สุด<br />
แต่ผมก็ยังขอปักหลักกับ Zend Framework ไปก่อน เพราะไหนๆระดับ Zend ลงมาทำเองแล้ว<br />
ต่อไปน่าจะดีขึ้น เท่าที่ตาม<a href="http://devzone.zend.com/node/view/id/1297">ข่าว</a>กลางเดือนธันวาคมนี้ก็จะออกเวอร์ชั่นใหม่กระโดดไปเป็น 0.60 เลย</p>
<p>ช่วงนี้ผมอาจอัพบล็อกไม่ถี่เท่าที่ควร ก็เพราะกำลังเขียนเว็ปด้วย Zend Framework นี่แหล่ะ<br />
เด๋วพอ Zend Framework ออกเวอร์ชั่นใหม่มาอาจต้องมีแก้โค้ดกันใหม่อีกแหงๆ T_T<br />
ส่วนใครอยากดูผลการ Benchmark เต็มๆก็ตามไปดูตามลิ้งก์อ้างอิงด้านล่างนะครับ</p>
<p>อ้างอิง : <a href="http://paul-m-jones.com/blog/?p=236">How Fast Is Your Framework?</a><br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li>No Related Post</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2006/12/02/php-framework-benchmark/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Framework Preview 0.2.0 Released!</title>
		<link>http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/</link>
		<comments>http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/#comments</comments>
		<pubDate>Thu, 02 Nov 2006 06:29:11 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend-Framework]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2006/11/02/43/</guid>
		<description><![CDATA[ในที่สุด Zend Framework Preview 0.2.0 ก็ถูกปล่อยออกมาให้ทดลองใช้กันแล้วครับ
หลังจากปล่อย 0.1.5 ให้ใช้กันอยู่นาน โดยที่ยังขาด Feature สำคัญๆหลายอย่าง ผมเอง
ก็ได้ทดลองใช้ 0.1.5 กับเว็ปนึงเหมือนกัน ^^ โดยเวอร์ชั่น 0.2.0 ที่ออกมานี้มีการปรับปรุง
ของเดิมหลายจุดและมีการเพิ่มระบบที่ยังขาดไปในรุ่น 0.1.5 อย่าง JSON server และ
Session Component เยี่ยมจริงๆ รายละเอียดเต็มๆตามด้านล่างเลยครับ

New MVC implementation
New HTTP request and response objects make it easy to automate unit testing for web apps without a web server, and also make it possible to use MVC [...]]]></description>
			<content:encoded><![CDATA[<p>ในที่สุด Zend Framework Preview 0.2.0 ก็ถูกปล่อยออกมาให้ทดลองใช้กันแล้วครับ<br />
หลังจากปล่อย 0.1.5 ให้ใช้กันอยู่นาน โดยที่ยังขาด Feature สำคัญๆหลายอย่าง ผมเอง<br />
ก็ได้ทดลองใช้ 0.1.5 กับเว็ปนึงเหมือนกัน ^^ โดยเวอร์ชั่น 0.2.0 ที่ออกมานี้มีการปรับปรุง<br />
ของเดิมหลายจุดและมีการเพิ่มระบบที่ยังขาดไปในรุ่น 0.1.5 อย่าง JSON server และ<br />
Session Component เยี่ยมจริงๆ รายละเอียดเต็มๆตามด้านล่างเลยครับ</p>
<ul style="list-style-type: square; list-style-position: outside; margin-left: 1pc">
<li>New MVC implementation</li>
<li>New HTTP request and response objects make it easy to automate unit testing for web apps without a web server, and also make it possible to use MVC for command-line and PHP-GTK application development</li>
<li>Enhanced pure PHP Lucene-compatible search engine component</li>
<li>New Mysqli DB adapter</li>
<li>New JSON server</li>
<li>New REST client and server</li>
<li>New XmlRpc client and server</li>
<li>New Acl component</li>
<li>New Session component</li>
<li>New Web Services clients for Delicious and Audioscrobbler</li>
<li>New Registry component</li>
<li>Significant improvements to many other components</li>
</ul>
<p>สำหรับคนที่เขียนเว็ปเองโดยใช้ PHP ผมว่า Framework ตัวนี้น่าสนใจไม่น้อยเลยครับ<br />
เพราะทำให้การพัฒนาเว็ปง่ายขึ้นมาก เพียงแต่ Host ที่ท่านใช้ต้องรองรับ PHP 5.1.4 ขึ้นไป<br />
นอกจากที่ Zend ปล่อย Zend Framework 0.2.0 เวอร์ชั่นใหม่แล้ว Zend ยังปล่อย<br />
Zend Google Data Client Library Preview Release 0.2.0. ออกมาให้ทดลองใช้กันด้วย<br />
โดยเจ้าตัวหลังนี้จะทำให้เราสามารถเขียนโปรแกรม PHP เพื่อติดต่อดึงข้อมูลจาก Google Data<br />
Web Service อย่างเช่น <a href="http://base.google.com/">Google Base</a>, <a href="http://calendar.google.com/">Calendar</a>, <a href="http://www.blogger.com/">Blogger</a>, and <a href="http://code.google.com/">CodeSearch</a> ผมว่า<br />
ว่างๆก็จะลองดูเหมือนกัน ^^</p>
<p>อ้างอิง :  <a target="_blank" href="http://framework.zend.com/">Zend FrameWork</a><br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li><a href="http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/" title="Zend Studio 5.5 Beta Available Now!.">Zend Studio 5.5 Beta Available Now!.</a></li>
<li><a href="http://www.annomundi.info/2006/12/20/zend-framework-06-preview-release/" title="Zend Framework 0.6 Preview Release">Zend Framework 0.6 Preview Release</a></li>
<li><a href="http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/" title="วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows">วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows</a></li>
<li><a href="http://www.annomundi.info/2006/10/06/3-easy-steps-to-avoid-javascript-memory-leaks/" title="3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript ">3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Studio 5.5 Beta Available Now!.</title>
		<link>http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/</link>
		<comments>http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/#comments</comments>
		<pubDate>Wed, 01 Nov 2006 05:33:19 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend-Framework]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2006/11/01/42/</guid>
		<description><![CDATA[เพิ่งได้แว็ปไปดูที่เว็ป Zend.com แล้วก็เห็นว่าทาง Zend ได้ปล่อย Zend Studio 5.5 Beta
มาให้ทดลองใช้กันแล้ว ใครที่ชอบลองของใหม่ไปโหลดกันมาทดลองดูกันได้ครับ ส่วนผมขอใช้
Zend Studio 5.2 ต่อไป อดเจ็บใจเล็กๆไม่ได้เพราะ License ผมหมดไปได้ไม่กี่อาทิตย์เอง
แล้วไม่ได้ต่ออายุ ก็ค่าต่อมันตั้ง $199 แถมผมใช้มา 1ปียังไม่คุ้มเลยก็เลยว่าจะทนใช้ไปจนคุ้ม
ก่อน และรอมี Promotion  ค่อยซื้อใหม่ ^^&#8221;
ส่วนเจ้า Zend Studio 5.5 Beta มีอะไรบ้างลองดูตามด้าล่างครับ
Version 5.2.0 to 5.5.0 Beta
PHP 5.2:

New PHP 5.2 Support

General:

Installation support for Mactel ( Install Anywhere 8 )
Support for antialiasing (via Preference settings)

Editor:

Supports opening URLs from [...]]]></description>
			<content:encoded><![CDATA[<p>เพิ่งได้แว็ปไปดูที่เว็ป Zend.com แล้วก็เห็นว่าทาง Zend ได้ปล่อย Zend Studio 5.5 Beta<br />
มาให้ทดลองใช้กันแล้ว ใครที่ชอบลองของใหม่ไปโหลดกันมาทดลองดูกันได้ครับ ส่วนผมขอใช้<br />
Zend Studio 5.2 ต่อไป อดเจ็บใจเล็กๆไม่ได้เพราะ License ผมหมดไปได้ไม่กี่อาทิตย์เอง<br />
แล้วไม่ได้ต่ออายุ ก็ค่าต่อมันตั้ง $199 แถมผมใช้มา 1ปียังไม่คุ้มเลยก็เลยว่าจะทนใช้ไปจนคุ้ม<br />
ก่อน และรอมี Promotion  ค่อยซื้อใหม่ ^^&#8221;</p>
<p>ส่วนเจ้า Zend Studio 5.5 Beta มีอะไรบ้างลองดูตามด้าล่างครับ</p>
<h3>Version 5.2.0 to 5.5.0 Beta</h3>
<p><strong>PHP 5.2:</strong></p>
<ul>
<li>New PHP 5.2 Support</li>
</ul>
<p><strong>General:</strong></p>
<ul>
<li>Installation support for Mactel ( Install Anywhere 8 )</li>
<li>Support for antialiasing (via Preference settings)</li>
</ul>
<p><strong>Editor:</strong></p>
<ul>
<li>Supports opening URLs from the Editor using right click</li>
</ul>
<p><strong>Web Services Support (SOAP):</strong></p>
<ul>
<li>Support for URLs in SoapClient Constructors</li>
<li>Bug fixed: Unsynchronized file name and configuration name</li>
</ul>
<p><strong>Java:</strong></p>
<ul>
<li>Embedded Java code completion of packages and classes in PHP code</li>
<li>Configure the Workspace&#8217;s default JRE / JDK</li>
<li>Configure project specific preferences</li>
<li>Nested Java code completion</li>
</ul>
<p><strong>Zend Platform Integration:</strong></p>
<ul>
<li>View Zend Platform Events in a dedicated Events List window</li>
<li>Customize, sort and filter Event List entities</li>
<li>Limit number of visible rows and initiate auto refresh</li>
<li>View Events from user-selected servers</li>
<li>Direct access to Platform&#8217;s Configuration dialog from the toolbar / menu</li>
<li>Configure Zend Platform&#8217;s GUI URL and authentication information</li>
</ul>
<p><strong>Zend Framework Integration:</strong></p>
<ul>
<li>Enable code completion for Zend Framework</li>
<li>View Zend Framework classes and functions in the PHP Inspector View</li>
<li>View source and debug into Zend Framework code</li>
</ul>
<p><strong>Source Control:</strong></p>
<ul>
<li>Explorer: highlights file labels 1according to their status in source control (added, merged with conflicts, modified, not versioned and up to date)</li>
<li>Source Control file status highlighting is customizable (from the Preferences dialog)</li>
<li>Can easily switch between CVS and Subversion support</li>
<li>Support for Subversion 1.4</li>
</ul>
<p><strong>General Bugs Fixed / Changes:</strong></p>
<ul>
<li>Bug fixed &#8211; If no Zend Guard path detected there is no default value</li>
<li>Bug fixed &#8211; Zend Guard detection doesn&#8217;t recognize old versions</li>
<li>Bug fixed &#8211; PHP Functions list doesn&#8217;t provide return types for all functions</li>
<li>Bug fixed &#8211; Uuencode functions in PHP Functions list are malformed</li>
<li>Bug fixed &#8211; Open File dialog has serious delay when a network drive is disconnected</li>
<li>Bug fixed &#8211; FTP files containing spaces in their name causes wrong file parsing</li>
<li>Bug fixed &#8211; Wrong tab behavior in the Preferences window</li>
</ul>
<p>สำหรับผม ผมว่าเวอร์ชั่นนี้ไม่ค่อยมีการเปลี่ยนแปลงไปจาก 5.2 สักเท่าไหร่ เป็นผม ผมจะรอ PHP6<br />
แล้ว Zend ออก Zend Studio ที่ Support ออกมาค่อนน่าสนใจหน่อย (แต่ต้องมีโปรโมชั่นด้วยนะ ^^&#8221;)<br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li><a href="http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/" title="Zend Framework Preview 0.2.0 Released!">Zend Framework Preview 0.2.0 Released!</a></li>
<li><a href="http://www.annomundi.info/2006/12/20/zend-framework-06-preview-release/" title="Zend Framework 0.6 Preview Release">Zend Framework 0.6 Preview Release</a></li>
<li><a href="http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/" title="วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows">วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows</a></li>
<li><a href="http://www.annomundi.info/2006/10/06/3-easy-steps-to-avoid-javascript-memory-leaks/" title="3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript ">3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows</title>
		<link>http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/</link>
		<comments>http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/#comments</comments>
		<pubDate>Tue, 17 Oct 2006 22:05:16 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[Windows-XP]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2006/10/18/33/</guid>
		<description><![CDATA[ช่วงหลังๆมานี่ผมกลับมาใช้ Windows ในการทำงาน และในการเขียน PHP
ปัญหาอย่างนึงที่น่ารำคาญคือส่ง email ไม่ออกมีปัญหากับ SMTP Server
ซึ่งผมก็ลง IIS และเป็น SMTP service ไว้ด้วยแต่ก็ส่งอีเมล์ไม่ออก แต่พอดีผม
ไม่ค่อยได้สนใจในส่วนนี้เท่าไหร่ เลยหยวนๆข้ามๆมันไปเขียนโปรแกรมทำส่วนอื่น
แต่พอดีช่วงนี้กำลังเขียนโมดูลของ Drupal และ่ต้องมีการส่ง email เลยจำต้องหา
วิธีทำให้มันใช้งานได้ ซึ่งจะอัพโหลดไปทดสอบบน Server ก็ลำบากในการแก้ไข
และ debug โปรแกรม ก็เลยลองๆ Search ดูก็เจอวิธีตาม Link ด้านล่าง
http://drupal.org/node/30079

ถ้าลิ้งก์เสียก็ตามล่างนี้เลย แต่อย่าลืมว่า Windows ต้องลง IIS ก่อนนะครับ
1) Go to: start > settings > control panel > Administrative Tools > Internet Information Services
2) Expand the &#8221; (local computer)&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงหลังๆมานี่ผมกลับมาใช้ Windows ในการทำงาน และในการเขียน PHP<br />
ปัญหาอย่างนึงที่น่ารำคาญคือส่ง email ไม่ออกมีปัญหากับ SMTP Server<br />
ซึ่งผมก็ลง IIS และเป็น SMTP service ไว้ด้วยแต่ก็ส่งอีเมล์ไม่ออก แต่พอดีผม</p>
<p>ไม่ค่อยได้สนใจในส่วนนี้เท่าไหร่ เลยหยวนๆข้ามๆมันไปเขียนโปรแกรมทำส่วนอื่น<br />
แต่พอดีช่วงนี้กำลังเขียนโมดูลของ Drupal และ่ต้องมีการส่ง email เลยจำต้องหา<br />
วิธีทำให้มันใช้งานได้ ซึ่งจะอัพโหลดไปทดสอบบน Server ก็ลำบากในการแก้ไข<br />
และ debug โปรแกรม ก็เลยลองๆ Search ดูก็เจอวิธีตาม Link ด้านล่าง</p>
<p><a target="_blank" href="http://drupal.org/node/30079">http://drupal.org/node/30079<br />
</a><br />
ถ้าลิ้งก์เสียก็ตามล่างนี้เลย แต่อย่าลืมว่า Windows ต้องลง IIS ก่อนนะครับ</p>
<blockquote><p>1) Go to: start > settings > control panel > Administrative Tools > Internet Information Services<br />
2) Expand the &#8221; (local computer)&#8221; node<br />
3) Right click on your SMTP server > go to &#8220;Properties&#8221;<br />
4) Click &#8220;Access&#8221; tab<br />
5) Under Relay Restrictions, click the &#8220;Relay&#8221; button<br />
6) Click &#8220;Add&#8221;<br />
7) Select &#8220;Single Computer&#8221; and enter IP address 127.0.0.1<br />
 <img src='http://www.annomundi.info/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Hit OK, OK, OK (until the properties dialog is closed)</p></blockquote>
<p>หลังจากเซ็ตตามด้านบนแล้วสคริปต์ PHP เราก็จะส่งอีเมล์ออกไปได้ตามปกติ<br />
เพียงแต่อาจมีปัญหา email ที่ถูกส่งไปอาจถูกปลายทางส่งเข้า Junk/Spam/Bulk Folder<br />
ก็ต้องคอยเช็คดูให้ดีๆ</p>
<p>อ้างอิง :  <a target="_blank" href="http://drupal.org/node/30079">http://drupal.org/node/30079</a><br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li><a href="http://www.annomundi.info/2008/08/08/linux-console-command-part1/" title="Linux Console Command Part1">Linux Console Command Part1</a></li>
<li><a href="http://www.annomundi.info/2006/12/20/zend-framework-06-preview-release/" title="Zend Framework 0.6 Preview Release">Zend Framework 0.6 Preview Release</a></li>
<li><a href="http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/" title="Zend Framework Preview 0.2.0 Released!">Zend Framework Preview 0.2.0 Released!</a></li>
<li><a href="http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/" title="Zend Studio 5.5 Beta Available Now!.">Zend Studio 5.5 Beta Available Now!.</a></li>
<li><a href="http://www.annomundi.info/2006/10/26/how-to-diable-tab-scrolling-in-firefox-20/" title="How to disable Tab Scrolling in FireFox 2.0">How to disable Tab Scrolling in FireFox 2.0</a></li>
<li><a href="http://www.annomundi.info/2006/10/06/3-easy-steps-to-avoid-javascript-memory-leaks/" title="3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript ">3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 วิธีง่ายๆในการหลีกเลี่ยงปัญหา Memory Leak ใน JavaScript</title>
		<link>http://www.annomundi.info/2006/10/06/3-easy-steps-to-avoid-javascript-memory-leaks/</link>
		<comments>http://www.annomundi.info/2006/10/06/3-easy-steps-to-avoid-javascript-memory-leaks/#comments</comments>
		<pubDate>Fri, 06 Oct 2006 01:56:31 +0000</pubDate>
		<dc:creator>AnnoMundi</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.annomundi.info/2006/10/06/20/</guid>
		<description><![CDATA[บทความเกี่ยวกับการหลีกเลี่ยงเขียน Javascript แล้วทำให้เกิด Memory Leak
หลักที่ผู้เขียนเขาแนะนำคือ
3. Set your XMLHttpRequest onreadystatechange handlers to null when you are done with them.
I use YAHOO.util.Connect for all my XHR connections and it uses a
polling mechanism instead of readstate, so I don’t need to do this
anymore. If you can switch to YAHOO.util.Connect (or
YAHOO.ext.UpdateManager built on top of it), I’d recommend it.
2. [...]]]></description>
			<content:encoded><![CDATA[<p>บทความเกี่ยวกับการหลีกเลี่ยงเขียน Javascript แล้วทำให้เกิด Memory Leak<br />
หลักที่ผู้เขียนเขาแนะนำคือ</p>
<blockquote><p><strong>3. Set your XMLHttpRequest onreadystatechange handlers to null when you are done with them.</strong></p>
<p>I use YAHOO.util.Connect for all my XHR connections and it uses a<br />
polling mechanism instead of readstate, so I don’t need to do this<br />
anymore. If you can switch to YAHOO.util.Connect (or<br />
YAHOO.ext.UpdateManager built on top of it), I’d recommend it.</p>
<p><strong>2. Clean up all your DOM event handlers on unload if there’s a chance they could reference a DOM object.</strong></p>
<p>There’s no reason to manually do this when there are libraries that<br />
do it automatically. I use YAHOO.util.Event for all my event handlers,<br />
it handles this for me automagically. Other libraries (prototype, dojo,<br />
etc) have some sort of mechanism to do the same thing, although I’m not<br />
sure how effective they are. If you look at the leak images above once<br />
again, you will notice almost all of them are in event related code of<br />
those libraries.</p>
<p><strong>1. Never put anything in a DOM expando or property other than a primitive value unless you plan on cleaning it up.</strong></p>
<p>This is the most important rule of all. It may seem convenient to<br />
put your JS object in a DOM expando, so you can $() and get it, but<br />
don’t do it. Sure, I know what you are thinking, I am being a little<br />
paranoid. There are lots of instances where putting a JS Object in a<br />
DOM expando <strong>won’t</strong> cause a leak. That’s true, but there are also<br />
many that will… some which are not so easy to detect (i.e. closures).<br />
So to avoid the possibility all together, I follow this simple rule.</p></blockquote>
<p>อ้างอิง: <a href="http://www.jackslocum.com/yui/2006/10/02/3-easy-steps-to-avoid-javascript-memory-leaks/">3 Easy Steps to Avoid JavaScript Memory Leaks</a><br />
<h3>บทความที่เกี่ยวข้อง</h3>
<ul class="related_post">
<li><a href="http://www.annomundi.info/2008/08/08/linux-console-command-part1/" title="Linux Console Command Part1">Linux Console Command Part1</a></li>
<li><a href="http://www.annomundi.info/2006/11/02/zend-framework-preview-020-released/" title="Zend Framework Preview 0.2.0 Released!">Zend Framework Preview 0.2.0 Released!</a></li>
<li><a href="http://www.annomundi.info/2006/11/01/zend-studio-55-beta-available-now/" title="Zend Studio 5.5 Beta Available Now!.">Zend Studio 5.5 Beta Available Now!.</a></li>
<li><a href="http://www.annomundi.info/2006/10/26/how-to-diable-tab-scrolling-in-firefox-20/" title="How to disable Tab Scrolling in FireFox 2.0">How to disable Tab Scrolling in FireFox 2.0</a></li>
<li><a href="http://www.annomundi.info/2006/10/18/%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2-php-%e0%b8%aa%e0%b9%88%e0%b8%87%e0%b8%ad%e0%b8%b5%e0%b9%80%e0%b8%a1%e0%b8%a5%e0%b9%8c/" title="วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows">วิธีแก้ปัญหา PHP ส่งอีเมล์ไม่ได้บน Windows</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.annomundi.info/2006/10/06/3-easy-steps-to-avoid-javascript-memory-leaks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.297 seconds -->
