tag:blogger.com,1999:blog-894534734813342502024-02-07T19:38:12.392-08:00Willy的程式員之路半途出家學程式,這裡紀錄我對於技術的筆記,以及新點子Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.comBlogger78125tag:blogger.com,1999:blog-89453473481334250.post-43057334709230622532011-11-22T01:50:00.000-08:002011-11-22T01:50:51.008-08:00好用的 CSS 工具:Less 介紹(轉貼)原文出處:http://blog.eztable.com.tw/2011/11/18/introduction-to-less/Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-75882542218571027332011-07-26T07:44:00.000-07:002011-07-26T07:44:57.175-07:0010 Best Wedding Apps for iPhone<a href="http://www.iphoneness.com/iphone-apps/8-best-wedding-apps-for-iphone/">http://www.iphoneness.com/iphone-apps/8-best-wedding-apps-for-iphone/</a><br />
<br />
<br />
<span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif; font-size: 12px;"></span><br />
<div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Wedding apps are quite popular on iTunes. If you have been involved in a wedding, you are probably familiar with all the hard work that you have to put forth to get through one without any major problems. There is a whole lot of planning and organization that you will need to do to throw a dream wedding event. Thanks to the talented community of iPhone developers, you have access to various wedding applications that can help you get more things done and manage your event like a pro.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">These 10 wedding apps for iPhone can make life easier for those preparing for the big event:</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="140" class="alignnone size-full wp-image-1205" height="173" src="http://www.iphoneness.com/wp-content/uploads/2009/05/140.gif" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="140" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/iwedding" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">iWedding</a>: plan every little detail about your wedding with iWedding. Track what you need to do to throw a dream wedding event. Manage your guest lists and wedding activities like a pro.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="" height="313" src="http://www.iphoneness.com/wp-content/uploads/2009/05/13.jpg" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/weddingbridalbinder" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Wedding Bridal Binder</a>: a powerful wedding planner that helps you stay on top of things, take notes, select vendors, stay on budget and much more.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="141" class="alignnone size-full wp-image-1206" height="173" src="http://www.iphoneness.com/wp-content/uploads/2009/05/141.gif" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="141" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/iphone-apps/8-best-wedding-apps-for-iphone/?/myweddingapp" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">My Wedding</a>: manage every aspect of your wedding event to make sure nothing gets neglected.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="" class="alignnone size-full wp-image-5273" height="300" src="http://www.iphoneness.com/wp-content/uploads/2009/05/11.jpg" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/weddingdresslook" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Wedding Dress Look Book</a>: designed for those of you who are looking for that perfect dress for your wedding day. It is free and can give you some ideas.<span id="more-1204" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"></span></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="142" class="alignnone size-full wp-image-1207" height="173" src="http://www.iphoneness.com/wp-content/uploads/2009/05/142.gif" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="142" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/organizer" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Organizer</a>: a cool task management tool for iPhone that enables you to stay on track and become more organized.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="144" class="alignnone size-full wp-image-1209" height="173" src="http://www.iphoneness.com/wp-content/uploads/2009/05/144.gif" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="144" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://click.linksynergy.com/fs-bin/stat?id=Z5pPfNsy5Tg&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312350714&mt=8" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Wedding Date</a>: keeps track of your wedding date and reminds you of your anniversaries. So you won’t miss any of your precious memories.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="145" class="alignnone size-full wp-image-1210" height="173" src="http://www.iphoneness.com/wp-content/uploads/2009/05/145.gif" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="145" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://click.linksynergy.com/fs-bin/stat?id=Z5pPfNsy5Tg&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=290916994&mt=8" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">Wedding Day</a>: your wedding day is one of the most important events of your life. You can track how many days have passed you by from that date with Wedding Day.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="146" class="alignnone size-full wp-image-1211" height="173" src="http://www.iphoneness.com/wp-content/uploads/2009/05/146.gif" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="146" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://click.linksynergy.com/fs-bin/stat?id=Z5pPfNsy5Tg&offerid=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301995951&mt=8" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank">iBridal Gown</a><strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">:</strong> as the name suggests, Wedding dress allows you to find a decent dress for your wedding like a pro. Cool little app.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="" class="alignnone size-full wp-image-5276" height="312" src="http://www.iphoneness.com/wp-content/uploads/2009/05/14.jpg" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" width="208" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/smartstudio" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;">SmartStudio</a>: a powerful app for photographers and anyone given the task to take and prepare pictures for a wedding. It may be an overkill for a single wedding but it has a lot of merits.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><img alt="" class="alignnone size-full wp-image-5277" height="301" src="http://www.iphoneness.com/wp-content/uploads/2009/05/15.jpg" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" width="209" /></div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><a href="http://www.iphoneness.com/weddingscan" rel="nofollow" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;">WeddingScan</a>: a powerful wedding registry application for couples to register all kinds of stores at stores and have them uploaded to their online account.</div><div style="font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">Your take</strong>: what’s your favorite wedding application on iPhone?</div>Source: <a href="http://www.iphoneness.com/iphone-apps/8-best-wedding-apps-for-iphone/">http://www.iphoneness.com/iphone-apps/8-best-wedding-apps-for-iphone/</a><div style="font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br />
</div><div style="font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">同場加映</div><div style="margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"></div><ol><li style="font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 1.5;">http://www.iweddingdeluxe.com/ iWedding: Wedding Planner</li>
<li><span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">http://www.ibride.me/iphone/ iBride: wedding planner</span></span></li>
<li><span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">http://www.ourweddingnote.com/ 婚禮紀錄</span></span></li>
<li><span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">http://itunes.apple.com/us/app/wedding-sherpa/id409101971: </span></span><span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;">To Do list, Countdown, Guest List, Tips, Advice, Notes, find suppliers. </span><span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;">Facebook integration and your phone contacts makes Guest List management </span></li>
<li><span class="Apple-style-span" style="font-family: Arial, Verdana, sans-serif;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;"><br />
</span></span></li>
</ol><br />
<div style="font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br />
</div><div style="font-family: Arial, Verdana, sans-serif; font-size: 14px; line-height: 1.5; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><br />
</div>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com1tag:blogger.com,1999:blog-89453473481334250.post-14609387945651364842011-05-25T00:28:00.000-07:002011-05-25T00:28:16.268-07:00Google釋出App開發工具App InventorApp Inventor對Android市場是個靈藥還是毒藥?<br />
<a href="http://www.inside.com.tw/2010/07/13/app-inventor-a-good-effect-or-not">http://www.inside.com.tw/2010/07/13/app-inventor-a-good-effect-or-not</a><br />
<br />
App Inventor初探<br />
<a href="http://www.inside.com.tw/2010/07/24/app-inventor-first-play">http://www.inside.com.tw/2010/07/24/app-inventor-first-play</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-47812751545183072222011-04-04T21:49:00.001-07:002011-04-04T21:49:05.063-07:00將Phplist整合到網站<a href="http://www.nep-hk.com/drupal/node/44">http://www.nep-hk.com/drupal/node/44</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-79043747789045034552011-03-29T02:18:00.000-07:002011-03-29T02:27:45.994-07:00Facebook PAGE專用語言 FBML+FBJSFB的客製頁面就是FBML App<br />
裡面用到的語法為 FBML(Html on FB)及FBJS(Javascript on FB)<br />
<br />
相關資訊如下:<br />
<a href="http://developers.facebook.com/docs/reference/fbml/">http://developers.facebook.com/docs/reference/fbml/</a><br />
<a href="http://developers.facebook.com/docs/fbjs/">http://developers.facebook.com/docs/fbjs/</a><br />
<br />
不支援iframe在粉絲頁的tab<br />
若要嵌入video:用fb:flv 或 fb:swf<br />
<br />
<br />
PS. 官方將逐漸不支援FBML<br />
<div class="refindex"><div class="page" style="line-height: 18px; margin-bottom: 10px;"><div class="snippet"><div style="font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"><code style="color: #006000; font-family: monospace; font-size: 14px;"></code></div></div></div></div>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-30787796433712834382011-03-22T23:01:00.000-07:002011-03-23T00:03:47.351-07:00iPhone App產生器 iPhone App Creator<span class="Apple-style-span" style="font-size: large;">免費的AppCreator</span><br />
<span class="Apple-style-span" style="font-size: large;"><br />
</span><br />
createfreeiphoneapps<br />
<a href="http://www.createfreeiphoneapps.com/">http://www.createfreeiphoneapps.com/</a><br />
<br />
myappcreator<br />
<a href="http://www.myappcreator.com/">http://www.myappcreator.com/</a><br />
<br />
appmakr<br />
<a href="http://www.appmakr.com/">http://www.appmakr.com/</a><br />
<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Appincubator:想法代工,未來分利潤的25%給你</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.medlmobile.com/appincubator">http://www.medlmobile.com/appincubator</a></div><br />
<br />
<br />
<span class="Apple-style-span" style="font-size: x-large;">付費的服務</span><br />
<span class="Apple-style-span" style="font-size: large;"><br />
</span><br />
<span class="Apple-style-span" style="font-size: large;">彈性較大的AppCreator</span><br />
<br />
Swebapps:固定一次性費用+ monthly fee<br />
<a href="http://www.swebapps.com/iphone-app-development.php">http://www.swebapps.com/iphone-app-development.php</a><br />
<br />
AppBreeder:提供餐廳、活動、房地產、商業顧問、品牌等類型的App套件讓你localize,建立App免費,收monthly fee<br />
<a href="http://www.appbreeder.com/">http://www.appbreeder.com/</a><br />
<br />
MobileAppLoader:提供各行各業的套版,Setupfee很高<br />
<a href="http://mobileapploader.com/myapp/Default.aspx">http://mobileapploader.com/myapp/Default.aspx</a><br />
<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">GameSalad:開發小遊戲的App</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://gamesalad.com/">http://gamesalad.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><br />
++++<br />
<br />
<span class="Apple-style-span" style="font-size: large;">單純用途的App Creator</span><br />
<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Kanchoo:製作新聞類型的App</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.kanchoo.com/">http://www.kanchoo.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><br />
TapLynx:提供App編輯工具,收工具的錢<br />
<a href="http://www.taplynx.com/">http://www.taplynx.com/</a><br />
<br />
MyAppBuilder:Build book, video, audio App,收 monthly fee<br />
<a href="http://myappbuilder.com/">http://myappbuilder.com/</a><br />
<br />
BuildAnApp:<br />
<a href="http://www.buildanapp.com/">http://www.buildanapp.com</a><br />
<br />
EbookApp:開發電子書App<br />
<a href="http://ebookapp.com/">http://ebookapp.com/</a><br />
<br />
<br />
++++<br />
<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-size: large;">單一目的的App Maker:</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">MobileStoreMaker:展示產品</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://mobilestoremaker.com/bb/">http://mobilestoremaker.com/bb/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">MobileROADIE:為樂團設計的App</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.mobileroadie.com/">http://www.mobileroadie.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">MobBase:同樣是為樂團設計的App</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.mobbase.com/">http://www.mobbase.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">++++</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-size: large;">要寫code的Framework</span></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">PhoneGap:用html和java開發</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.phonegap.com/">http://www.phonegap.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Rhmobile:用html和ruby開發</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://rhomobile.com/">http://rhomobile.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">AppCelerator(titanium):用html, Javascript, CSS, Python, Ruby, PHP</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.appcelerator.com/">http://www.appcelerator.com/</a></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
<br />
參考:<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">13 Tools for Building Your Own iPhone App</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.readwriteweb.com/archives/13_tools_for_building_your_own_iphone_app.php">http://www.readwriteweb.com/archives/13_tools_for_building_your_own_iphone_app.php</a></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-10540187383366117112011-03-21T23:43:00.000-07:002011-03-21T23:48:03.263-07:00SEO checklist 與原理解釋轉自Xdite http://blog.xdite.net/?p=2036<br />
<br />
++++<br />
<br />
<br />
<div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">寫完昨日簡易 SEO tips 後相當手癢,雖然內容篇還沒結束,但想先來寫寫 SEO 的技術篇。其實 tuning 一個 websites 多半還是要靠「直覺」,但是技術功底紮實和觀念正確,真的會讓你 tuning 時事半功倍。想做好 SEO,細節其實要注意相當多地方。我會將之歸納成一章 checklist 方便使用外加原理解釋。</div><div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">不過背後原理若我在別的文章中解釋過了,原諒我的懶惰,我會直接給出舊文連結。</div><div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">做好 SEO 分為幾要幾不要:</div><div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">要:</div><blockquote style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: url(http://blog.xdite.net/wp-content/themes/origin/img/blockquote.png); background-origin: initial; background-position: 0% 100%; background-repeat: no-repeat no-repeat; color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 0.07em; margin-left: 0.07em; margin-right: 0.07em; margin-top: 0.07em; padding-bottom: 40px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">1. <strong>網站使用 valid html 撰寫,最好過 w3c validator</strong><br />
原理:這是一定要的,原因如 <a href="http://blog.xdite.net/?p=2018" style="color: #7a7636; text-decoration: none;">part3</a>。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">2. <strong>使用正確的 html 標記描述內容與網站的元素。該用 h1,h2, strong, p 的請不要客氣</strong><br />
原理:這是一定要的,原因如 <a href="http://blog.xdite.net/?p=2018" style="color: #7a7636; text-decoration: none;">part3</a>。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">3.<strong> 網頁敘述要含關鍵內容。關鍵字越前面越好。</strong>(但並非 abuse)<br />
原理:可觀察 Google 的 SERP (Search Engine Result Page)</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">4.<strong> 網頁 title 要含關鍵字。關鍵字越前面越好。</strong>(但並非 abuse)<br />
原理:可觀察 Google 的 SERP (Search Engine Result Page)</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">5. <strong>網址要含關鍵字。</strong>WordPress 在這方面設計的相當好,只要你把選項打開就行了。至於其他的內容網站,你可以考慮在背景使用 Google Translate 將網址標題轉成英文然後 append 在網址上。<br />
原理:可觀察 Google 的 SERP (Search Engine Result Page)</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><strong>其中權重 5 > 4 > 3</strong> 。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">6. 因為 3,4,5 的關係,<strong>生產內容時必須遵守 SEO 原則,程式設計上也必須做出搭配</strong>。請看 <a href="http://blog.xdite.net/?p=2018" style="color: #7a7636; text-decoration: none;">part3</a>。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">7. <strong>圖片內容,請加 alt 描述這張圖片</strong>。但 alt 字數也別太誇張,否則會视為 cheating。如果這是選單或 banner,請用 ul, li 和 h1,h2 寫,再用 CSS 技巧換掉。別來個 img + a 做 banner 的設計,img 權重遠低於 h1。<br />
原理: <a href="http://blog.xdite.net/?p=2018" style="color: #7a7636; text-decoration: none;">part3</a>。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">8.<strong> 把內容放在 Search Engine highly friendly 的平台</strong>,如果是你想在 Yahoo 取得高排名,請放 Wretch,如果你想在 Google 取得高排名,請放 Blogger.com。如果你是自己 hosting,請檢視你的平台是否有做到 checklist 上的要求。<br />
原理: 搜尋引擎偏好自家產品,結果會出現在比較前面</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">9. <strong>為網站生成符合標準的 sitemap.xml。並主動將結果送至 Google、Yahoo、Bing 等等</strong>。<br />
原理:搜尋引擎仰賴自己設計的爬蟲去抓取內容,他們的 index 路徑是遵循著網站上的內部連結以及外部連結,至於沒有被連結到網頁,自然就不會被收錄。他們沒有通靈能力,自然不知道你有產出這樣的內容。你必須主動告知他們。另外,sitemap 可以標記內容在該站的權重以及內容更新時間。有效提供 Search Engine 運算依據。這一點非常重要,根據我曾經做過的實驗,某搜尋引擎有送 sitemap 跟沒送,排名結果差非常非常多。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">10. <strong>在高 PR 的網站為自己的網站帶來 inbound link</strong>。<br />
原理:眾所諸知,Google 的演算法是 Page Rank 演算法。PR 演算法簡單的想法是:如果一個網站,越多網站甚至是超級大站都連結這個網站,那麼它必定是重要的。但切記千萬別 abuse。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">11. <strong>提昇網站效能,開啟速度要快</strong>。<br />
原理:網站速度,也是搜尋引擎排名的考慮因素之一。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">12. <strong>使用 Google Webmaster Tool 檢視你的網站 SEO 成效</strong>。<br />
原理:它真的很好用….</div></blockquote><div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">不要:</div><blockquote style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: url(http://blog.xdite.net/wp-content/themes/origin/img/blockquote.png); background-origin: initial; background-position: 0% 100%; background-repeat: no-repeat no-repeat; color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 0.07em; margin-left: 0.07em; margin-right: 0.07em; margin-top: 0.07em; padding-bottom: 40px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">1. 千萬<strong>不要濫用以上原則,搜尋引擎不是笨蛋,不會不知道你想作弊</strong>。適度的標記關鍵內容就能使你的排名大幅提昇。但是濫用會造成你被下架。<br />
原理:常識。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">2.<strong> 不要把主要內容放在 image/ js / flash/ iframe 內</strong>。<br />
原理: bot 只吃該頁的 html,image / js/flash/iframe 對他們來說只是一行外部網址。它們不會知道這是內容</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">3. <strong>不要在 a 裡面加 onclick / onmouseover 類似的屬性</strong>。<br />
原理:這多半指稱這是 js link,搜尋引擎會跳過這個 a 內的內容。如果你要上計算人氣等功能,請用 Unobtrusive Javascript 技巧實作。如果你只是想要做 css hover 效果,那就更欠人罵了,可以用 CSS 寫的東西為何要放上 a 去破壞 SEO 效果。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">4. <strong>連結不要濫用 302 redirect</strong>。<br />
原理:http response 的 301, 302 是有意義的。301 指的是永久性重導向,302 指的是暫時性重導向,但 RD 寫 code 往往沒有深究其意義。我曾經見過人氣系統用 302 設計先轉去人氣系統再跳回來。Epic Fail。302 對搜尋引擎來說是「完全不值得收錄」的內容,因為他是「暫時性網址」。如果網站全站都掛 302 連結,那……沒有搜尋引擎想要收錄超正常。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">5. <strong>標籤不要亂包</strong>。我曾經看過一行 html 是這樣寫的 <br />
<h1><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"> < h1 >< a href="xxx" > abc < /a >< img src="def" >< /img > < / h1> </span></h1></div>。搜尋引擎不知道重要的是 abc 還是沒有 alt 的 def。最後是連 abc 都被視為不重要內容。<br />
原理:你讓搜尋引擎精神錯亂。<br />
<div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">6. <strong>每一頁的 title 與 meta description 不要重複</strong><br />
原理:搜尋引擎很大的權重採用 title 與 meta description。如果一個網站 50 頁 + 的 title 和 meta description 都一樣。搜尋引擎不會知道哪一頁是真正的入口點,真正重要的內容。下場就是全部都不收錄!!!</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">7. <strong>meta keywords 不重要</strong><br />
原理:Google 不採用。Yahoo 採用。但權重不大。因為 meta keywords 曾經被大家濫用 …但如果你拿 meta keywords 來做 correct 字義的功能,是不錯的。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">8. <strong>不要用 Word 生內容和做網頁</strong><br />
原理: <a href="http://blog.xdite.net/?p=2018" style="color: #7a7636; text-decoration: none;">part3</a> Word 只會生一堆垃圾 html code 出來而已。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">9. <strong>不要用 PSD 自動轉 html 做版面</strong><br />
原理:拜託不要惡搞啊……這種 html 根本不能用</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">10. 檢查你的 <strong>robots.txt ,不要上線以後上面還是放了 disallow * </strong>,再疑惑為什麼搜尋引擎沒有收錄<br />
原理:廢話,你就叫搜尋引擎不要抓啊。最好這樣上面還會收錄你的內容。</div><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">11.<strong> 不要故意亂塞關鍵字,再用 css 技巧做 display :none</strong><br />
原理:搜尋引擎不是白痴。你這樣做的話會被視為作弊,列入黑名單。</div></blockquote><div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">以上就是非常基礎的白帽 SEO 手法與 checklist。其實白帽 SEO 一點都不難,你要做的其實只有:</div><blockquote style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: url(http://blog.xdite.net/wp-content/themes/origin/img/blockquote.png); background-origin: initial; background-position: 0% 100%; background-repeat: no-repeat no-repeat; color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 0.07em; margin-left: 0.07em; margin-right: 0.07em; margin-top: 0.07em; padding-bottom: 40px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"><div style="line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">(1) 了解 HTML tag 的語義,使用正確標籤標記你的內容<br />
(2) 了解搜尋引擎運作的基本原理,不要造成 bot 無法抓取與解讀<br />
(3) 觀察 SERP,了解各家搜尋引擎的偏好<br />
(4) 多做實驗,證實你觀察的假設行為<br />
(5) 別幹蠢事,別 abuse 這些基本技巧<br />
(6) 把這些基本原則常駐心中,上線前跑完一輪 check</div></blockquote><div style="color: #333333; font-family: 'Trebuchet MS', Verdana, Georgia, Arial, sans-serif; font-size: 13px; line-height: 1.5em; margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">如此一來,保證你的 content site PV 和 SERP result 排名絕對每天蒸蒸日上。</div>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-28429077753734929452011-03-21T10:27:00.000-07:002011-03-21T21:00:10.551-07:00iPhone開發iPhone開發者專區<br />
<a href="http://developer.apple.com/devcenter/ios/index.action">http://developer.apple.com/devcenter/ios/index.action</a><br />
<br />
Stanford教學<br />
<a href="http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter">http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter</a><br />
<br />
Object-C<br />
<a href="http://ipdevelop.blogspot.com/2009/05/objective-c-20.html">http://ipdevelop.blogspot.com/2009/05/objective-c-20.html</a><br />
<br />
iPhone 軟體開發筆記<br />
<a href="http://ipdevelop.blogspot.com/">http://ipdevelop.blogspot.com/</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-73157234474196896532011-03-20T22:35:00.000-07:002011-03-21T21:00:31.088-07:00Apps 跨平台策略<a href="http://www.inside.com.tw/2011/03/14/smarter-choice-app-developer">http://www.inside.com.tw/2011/03/14/smarter-choice-app-developer</a><br />
作者支持用html5+css+javascript<br />
但是反對者認為原生app的使用者體驗較好<br />
另外有人建議使用用web技術寫原生app的mobile framework,諸如 Titanium 跟PhoneGap等Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-25404295568094619932011-03-18T03:44:00.000-07:002011-03-18T03:44:43.013-07:00Quickly Build Social Network Service Via Web-serviced KickApps各類Social Networking組件都可以透過 <a href="http://www.kickapps.com/">KickApps</a>取得<br />
提供API呼叫進行存取,資料存在kickApps<br />
<br />
<br />
http://www.kickapps.com/our-platform/pricing/Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-17297413121863032702011-03-18T02:48:00.000-07:002011-03-20T22:51:18.802-07:00網頁規劃設計工具Balsamiq Mockups超好用的網頁規劃工具<br />
以後和工程師溝通更方便了<br />
線上是免費的唷!<br />
<br />
<a href="http://fun.idv.tw/fun/2010/01/balsamiq_mockups.html">http://fun.idv.tw/fun/2010/01/balsamiq_mockups.html</a><br />
<br />
<br />
線上流程圖:Cacoo<br />
http://fun.idv.tw/fun/2010/04/cacoo.htmlWillyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-30394847826310378422011-02-10T06:40:00.001-08:002011-02-10T06:40:29.160-08:00Google 群发邮件发件人指南我们收到了来自群发邮件发件人的询问,他们希望更详细地了解能确保邮件递送至 Gmail 用户的最佳做法。Gmail 对垃圾邮件进行分类的方式在很大程度上取决于用户的举报内容。Gmail 用户可以随时将任何邮件标记为垃圾邮件,也可以随时取消其标记。要提高收件箱的邮件递送率,请确保通讯组列表中的所有收件人都确实愿意接收您的邮件。请查 看以下主题获取一些技巧,了解如何确保您的邮件能够受到 Gmail 用户的欢迎。<br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#authentication">身份验证和标识</a><br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#sub">订阅</a> <br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#unsub">取消订阅</a><br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#format">格式</a> <br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#delivery">递送</a> <br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#thirdparty">第三方发件人</a> <br />
<a href="https://mail.google.com/support/bin/answer.py?answer=81126#affiliates">关联企业营销计划</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-21439451292038428162011-01-24T09:11:00.001-08:002011-01-24T09:21:57.512-08:00Object C教學<a href="http://www.otierney.net/objective-c.html.zh-tw.big5">http://www.otierney.net/objective-c.html.zh-tw.big5</a><br />
<a href="http://zh.wikipedia.org/zh-tw/Objective-C">http://zh.wikipedia.org/zh-tw/Objective-C</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-77160934425785189982010-09-25T11:22:00.001-07:002010-09-25T11:22:58.725-07:00URL Rewrite 網址重寫 優化URL重写优化<br /><br />1).URL标准化是什么意思?<br />URL标准化,英文:url canonicalization来自matt cutts的博客文章:SEO advice: url canonicalization 中文翻译:SEO的建议:URL标准化 “URL标准化”是一个动名词,不好直接解释,我把它反过来一下:<br /><br />什么是一个标准化的URL?<a name="entrymore"></a><br /><br />很多情况下,我们认为以下这几个链接都指向同一个页面(首页):<br /><br />www.example.com<br />example.com/<br />www.example.com/index.html<br />example.com/index.php<br />但 是从URL发送请求并返回网页内容的过程来看,这些URL都是互不相同的。对于上述URLs,Web服务器完全可以返回完全不同的内容。当这些URL所对 应的内容都一样时(一般情况下都一样的),谷歌需要从上述URLs中选一个具有代表性的,而忽略其余的。那么这个被谷歌选择了的URL,就是一个标准化的 URL。谷歌选择的这个过程称为“标准化”。<br /><br />谷歌是怎么URL标准化的?<br /><br />一般情况下,谷歌根据被外链的数量来判断。采用多的,则是标准化URL。<br /><br />我想告诉谷歌我想要的标准化URL,怎么办?<br /><br /><a href="http://www.laohucheng.com/post/215/" target="_blank">采用301重定向进行URL标准化</a>。<br /><br /><br />2).如何把动态链接静态化?<br />这是SEO过程中最经常碰到的问题,也是必须解决的问题。因为搜索引擎喜欢静态页面。从Web服务器的角度,这个问题转变为:如何将静态化的文件名称转化成参数。<br /><br />需要两步来处理:<br /><br />1、把网页上带链接的地方,都换上新的静态化链接。搜索引擎和浏览器将通过该链接来发生请求。(有些人做修改不是在网页上,而是进行动态链接向静态链接的转向,这是严重错误的)<br /><br />2、在httpd.conf或.htaccess中使用RewriteRule:<br /><br />RewriteRule "^/dir/ ([^./]*) \.html" "/dir/script.cgi?doc=$1" [PT]<br /><br />[PT]标记告诉Apache执行后续的所有操作。<br /><br />通过这个功能,使动态页面以静态链接的形式展示给搜索引擎,从而达到URL优化的目的。如SEO十万个为什么整站都是通过该方式实现。<br /><br /><br />3).改版时,如何保留原链接,创建新的URL?<br />具体操作办法(仅适用于apache网络服务器):<br /><br />文件位置:apache->conf->httpd.conf<br /><br />请在httpd.conf中使用Alias指令:<br /><br />Alias /newurl /www/htdocs/oldurl<br /><br />如:用户访问新的地址example.com/newurl/id34.html 服务器将提供的内容原地址是example.com/www/htdocs/oldurl/id34.html。<br /><br />注 意:Alias只会改变本地URL,如laohucheng.com/newurl/id34.html 的/newurl/id34.html 部分,而无法改变URL的主机名称部分(如:http://www.laohucheng.com/部分)。若要更改URL的主机名称部分,请使用 Redirect或RewriteRule指令。<br /><br />菜鸟指南:本功能的Alias指令在 httpd.conf中是这一句: #Alias /webpath /full/filesystem/path 去掉前面的#,并做下相应的修改即可。<br /><br />SEO过程中一般在这些情况下需要用到该功能:<br /><br />1、当文件移动或文件目录名称发现改变,出于SEO需要,你需要保持旧的URL;<br /><br />2、网站改版了,网站导航和链接发生变化,为了继续持有原链接带来的流量,你需要保持旧的URL;<br /><br />3、你希望不同的人用不同URL来链接同一个的内容。(SEO一般不建议这样做)<br /><br />等等。。<br /><br /><br />4).如何替换请求URL中的文字<br />以下解决方案,仅适用于Apache服务器。<br /><br />在.htaccess文件中添加以下语句:<br /><br />RewriteCond %{REQUEST_URL} "string1"<br /><br />RewriteRule "(.*)"string1(.*)" "$1string2$2" [N,PT]<br /><br />例 如当客户端发出请求URL:example.com/string1/abcstring1.html,则转换为目标URL:example.com /string2/abcstring2.html。其中[N]标记告诉Apache重新执行重写规则,直到RewriteCond失效为止。只要请求 URL中包含需要替换的字符串,它就会一直重复地执行。当所有的string1都被替换完毕,则RewriteCond失效。本例子 中,RewriteCond执行了2次。[PT]告诉mod_rewrite把重写的URL传送到Apache来进行接下来的处理工作。<br /><br />我们都知道,关键字是否在URL中对于网站SEO至关重要。对于建站初期不注重SEO的站点,特别是大型站点,本功能真是雪中送炭。<br /><br />注意:使用本功能时,有时会把非目标字符也做了修改,假如例子中的“abcstring1”不是目标字符,但这个功能也会替换了它。<br /><br /><br />5).如何将无效的URL重定向到其他页面?<br />很多时候,我们考虑把无效的URL比如:用户拼错的URL、不存在的URL重定向到别的网页,例如网站的首页、404页面等。<br /><br />在httpd.conf或.htaccess文件中使用ErrorDocument来捕获404 (找不到文件)错误:<br /><br /> ErrorDocument 404 /index.html<br /> DirectoryIndex index.html /path/to/notfound.html<br /><br />本功能会让所有的404错误——每次当某人请求无效的URL 时,都返回URL / index.html 提供的网站首页。<br /><br />这里需要注意两点:<br /><br />1、直接指向首页是否是合适的?或者让它指向到一个404页面会更好些?如果在404页面用javasctrip做一个跳转到首页,也是SEO允许的做法。<br /><br />2、即使返回有效的文件,仍然会将404 状态码返回给客户端和搜索引擎。这表示搜索引擎机器人来确认网站上的链接时,仍然会得到正确的结果(404状态码)。Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-46726776943580371392010-07-21T19:04:00.000-07:002010-07-21T19:07:41.288-07:00在 UTF8 編碼下的網頁簡繁互轉Javascript前端的繁簡轉換,無需動到後端程式及資料庫<br /><br />http://blog.markplace.net/marks_place/10/2006/10/27/150Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-41474032164962379532010-02-24T09:15:00.000-08:002010-02-24T09:27:51.322-08:00MySQL:Subquery vs. Join 效能何者為佳?在網路上查了一些資料,似乎尚無定見<br /><br />但是:<br /><br />MySQL官方說:「A <code class="literal">LEFT [OUTER] JOIN</code> can be faster than an equivalent subquery because the server might be able to optimize it better — a fact that is not specific to MySQL Server alone.」<br /><a href="http://dev.mysql.com/doc/refman/5.1/en/rewriting-subqueries.html">http://dev.mysql.com/doc/refman/5.1/en/rewriting-subqueries.html</a><br /><br />但是有些文章說 subquery比join好?<br /><a href="http://qops.blogspot.com/2008/01/inner-join-sql.htm">http://qops.blogspot.com/2008/01/inner-join-sql.htm</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-42968900246353903322009-10-12T18:48:00.000-07:002009-10-12T19:02:54.463-07:00MySql Stored Procedure如何使用Mysql的 stored procedure及trigger<br />http://whateverusay.pixnet.net/blog/post/12731385<br />、<br />http://social.msdn.microsoft.com/forums/zh-TW/238/thread/0646773a-fa4e-405d-aefb-0f8d681cbe2f/<br /><br />http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspxWillyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-66864641654479087352009-10-12T18:40:00.000-07:002009-10-12T19:03:45.363-07:00MySql 優化優化MySql伺服器效能<br />http://www.hkcode.com/linux-bsd-notes/93<br /><br />MySql的優化<br />http://eiping.com/?p=26<br /><br />MySql優化詳細介紹<br />http://blog.wu-boy.com/2008/06/18/281/<br /><br />MySql官方優化文件<br />http://dev.mysql.com/doc/refman/5.1/zh/optimization.html<br /><br />優化你的Mysql資料庫操作<br />http://www.hkpug.net/zh-hant/node/272Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-6533997320819406312009-09-28T21:40:00.000-07:002009-09-28T21:47:05.911-07:00PHP List APIPHPList 是一套很流行的電子報發送系統<br />但是如果想要從其他的web application叫用,有沒有好的方法呢?<br /><br />在網路上找了一些資訊,好好來研究一下<br />http://forums.phplist.com/viewtopic.php?t=5009<br />http://forums.phplist.com/viewtopic.php?f=7&t=5009&start=15<br />http://forums.phplist.com/viewtopic.php?f=15&t=24734<br /><br />PHP Command Docs<br />http://docs.phplist.com/CommandLineScriptInfoWillyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-23068070638776027042009-09-22T09:40:00.000-07:002009-09-22T09:41:52.526-07:00[PHP] 輸出Excel/CSV檔http://www.phpdc.com/article/18/<br />http://topic.csdn.net/t/20060824/16/4973156.html#Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-79705367500207232312009-09-18T10:46:00.000-07:002009-09-18T11:29:03.834-07:00沒想到也遇到「許功蓋」的問題最近幫朋友改網頁<br />她和本來合作的程式不合<br />因此整個網站臨時要找人幫忙收尾<br /><br />所以我第一次有機會用php進行開發....<br />沒想到改到一半突然狂跳 "unexpected t-string in xxx"<br />查了一下,這個錯誤訊息應該是多餘的符號<br /><br />但是檢查了好幾遍就是沒有多的分號或括號<br />搞了一整個禮拜<br /><br />今天重新逐段註解,控制段落,後來又發現原來程式碼設定big5<br />想說是不是編輯器設定編碼的問題....但是無功而返<br />最後終於發現問題出現在我加了一行 "發送成功" 的字串;<br /><br />"許" "功" "蓋" 三個字在 Big5下 會出現此問題<br />所以必須空一格 或加 "\",如 "發送成功 "或 "發送成功\"<br />其實這以前在學php課程的時候,老師也有提醒過!<br /><br />真的是隔行如隔山,不同語言間轉換其實基本邏輯不難<br />舉例來說,我寫java為主,但是真的要學php的語法應該也不難,反正要什麼功能Google上都可以找到語法或範例<br />真的難在於 debug的經驗<br /><br />與其說熟悉一種語言,不如說是熟悉該語言的開發環境及debug經驗<br />不經一事不長一事啊Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-12718269247101310942009-09-13T22:29:00.000-07:002009-09-13T22:30:42.366-07:00MySQL 的調校 (軟硬體、版本、設定)轉錄自 Gea-Suan Lin's Blog<br />http://blog.gslin.org/archives/2009/09/13/2088/<br /><br /><div class="entry-content"> <p>把一些關於 <a href="http://dev.mysql.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/dev.mysql.com');">MySQL</a> 的資料整理一下。</p> <p>初期的 MySQL 隨便跑沒關係,備份的部份記得要把 binlog 也一起備份起來,用 <a href="http://www.gzip.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.gzip.org');">gzip</a> 壓過後 (不使用 <a href="http://www.bzip.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.bzip.org');">bzip2</a> 或是高壓縮率參數,是因為考量解壓縮速度;另外推薦用 <a href="http://www.zlib.net/pigz/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.zlib.net');">Parallel gzip</a> 壓縮,速度比較快) 再用 <a href="http://www.openssl.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.openssl.org');">openssl</a> 加密丟到 <a href="http://aws.amazon.com/s3/" onclick="javascript:pageTracker._trackPageview('/outbound/article/aws.amazon.com');">Amazon S3</a> 上。</p> <p>成長後,買獨立伺服器要一次買兩台跑 HA,每台分別是:</p> <ul><li>CPU 要考量 SQL query 的方式,如果打算在 MySQL 做很多事情 (i.e. JOIN),CPU 要選高階的;如果大多都是 simple query,則以 C/P 值高的 CPU 優先:兩顆四核心 CPU 算是現在比較划算的硬體。不管哪一種,選低電壓的,像是 <a href="http://www.intel.com/Xeon/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.intel.com');">Intel Xeon</a> L5408 或是 Intel Xeon L5520,因為硬碟蠻熱的,要減少熱量以免伺服器容易當掉。</li><li>記憶體愈多愈好,64GB 算是還蠻基本的。</li><li>硬碟選轉速快的 15krpm SAS,挑大一點的硬碟 (以現在的市場就是 300GB) 省得以後空間不夠要搬動。最好是硬體 RAID1+0,依照應用決定單台 database 要多大,如果預定八顆的話可以買 2U 來塞。</li></ul> <p>軟體的部份:</p> <ul><li>一定要跑 <a href="http://www.linux.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linux.org');">Linux</a> x86-64 版本,挑大的 distribution 以免遇到問題卻無法解決。我自己還蠻偏好用 <a href="http://www.debian.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.debian.org');">Debian</a>。不論是 Debian 還是其他 distribution,儘量跟穩定的 branch,遇到需要升級時的問題會比較少,像是 <a href="http://www.debian.org/releases/lenny/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.debian.org');">Debian Lenny</a>。</li><li>如果要跑 <a href="http://www.drbd.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.drbd.org');">DRBD</a>,先在兩台上面設定好 <a href="http://www.linux-ha.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linux-ha.org');">Heartbeat</a> + DRBD。如果是跑 <a href="http://mysql-mmm.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/mysql-mmm.org');">MMM</a> 的話就設定 MMM,比較需要注意的是 MMM 的版本,參考「<a href="http://blog.gslin.org/archives/2009/08/13/2075/">MySQL MMM 的情況</a>」。</li><li>Filesystem 跑 <a href="http://en.wikipedia.org/wiki/XFS" onclick="javascript:pageTracker._trackPageview('/outbound/article/en.wikipedia.org');">XFS</a>,很多人在上面跑很久了,經過時間考驗的 Filesystem,跑起 MySQL <a href="http://www.innodb.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.innodb.com');">InnoDB</a> 的效率還不錯。</li><li>MySQL 跑 <a href="http://www.percona.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.percona.com');">Percona</a> 的 5.0 標準版本 (非 highperf 版),穩定性還不錯。如果預期到資料量很大的時候會是 I/O bound,可以考慮 Percona 的 5.1 版本,並且開啟 InnoDB Plugin 壓縮的功能。</li><li>跑監控程式,把系統的狀態記錄下來。可以是 <a href="http://munin.projects.linpro.no/" onclick="javascript:pageTracker._trackPageview('/outbound/article/munin.projects.linpro.no');">Munin</a>、<a href="http://www.cacti.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.cacti.net');">Cacti</a> 或是 <a href="http://www.nagios.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.nagios.org');">nagios</a>,資料對於瓶頸分析很重要。</li></ul> <p>my.cnf 設定的部份要花不少功夫,除了一般常見的設定外 (這部份網路上很多文件),有些在站台比較大時會發生的問題要注意:</p> <ul><li>back_log 要開大,因為站台大的時候通常不會用 pconnect (每個 web server 都掛著 64 個連線,當有十台 web server 就佔用 640 個連線),而是用 connect,在每次做完事情就斷線,配合 <a href="http://www.danga.com/memcached/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.danga.com');">memcached</a> 降低 MySQL 的需求。不過在量夠大的時候,還是會遇到預設的 back_log 不夠。<a href="http://www.smugmug.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.smugmug.com');">Smugmug</a> 的 CEO 在「<a href="http://blogs.smugmug.com/don/2008/12/23/great-things-afoot-in-the-mysql-community/" onclick="javascript:pageTracker._trackPageview('/outbound/article/blogs.smugmug.com');">Great things afoot in the MySQL community</a>」有提到吃過這個值的虧。</li><li>max_allowed_packet 設大一點,避免比較大的 INSERT 或是 UPDATE 造成錯誤。通常這是設計上的問題,應該要避免在 MySQL 裡放 blob 資料,不過偶而還是會需要…</li><li>max_connect_errors 設 4294967295,可以避免當 client (像是 <a href="http://www.php.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.php.net');">php</a>) 發生太多錯誤時被 block 住。</li><li>innodb_adaptive_checkpoint 要打開,可以避免在 flush dirty pages 的時候產生 slow query。MySQL 官方的版本沒有這個參數,而這個參數也是為什麼要用 Percona 版本之一。效果可以參考「<a href="http://www.mysqlperformanceblog.com/2008/11/13/adaptive-checkpointing/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.mysqlperformanceblog.com');">Adaptive checkpointing</a>」這篇文章。</li></ul> </div>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-32665592516851456922009-09-12T10:07:00.000-07:002009-09-12T10:09:31.321-07:00[教學] 用php發送E-MAIL用來傳送 e-mail 的描述語言程式(Script)可說是網站上最常見的程式之一。雖然它很單純,但是在某些時候,它卻往往對程式設計師們造成極大的困擾。在 PHP 中有一個函式叫做 mail(),只要有收信者名稱以及訊息內容,就可以拿來傳送訊息。但是你還是需要針對 mail()做某些調整,才能讓mail()為你完成你想做的事。<br /><br />首先,要讓 mail()能夠運作,你必須先有一個 SMTP 伺服器,好讓你的 PHP 連上去。雖然這個伺服器在電子郵件程式中佔有極其重要的地位,大部分的人還是對它一知半解。在這篇教學指南裡,我們會為你揭開 SMTP 的神秘面紗,並且同時解說關於使用 PHP 傳送電子郵件的某些常見問題。其中精采的內容還包括了:如何以迴圈的程式敘述,讀取電子郵件住址名單,同時針對其中的收件者一一傳送郵件,包括純文字格式以及 HTML 格式的郵件等等。<br /><br /><span style="font-weight: bold;">瞭解你的 SMTP 伺服器</span><br />SMTP 是 Simple Mail Transfer Protocol 的縮寫,而 SMTP 伺服器則是透過執行該通訊協定而傳送電子郵件的電腦。基本上,執行通訊協定指的是:如果你使用的是非 Windows 作業平台,執行的是 Sendmail 或 Qmail這類的電子郵件軟體。而如果這部機器使用的是 Windows 作業平台,那麼 SMTP 服務已經包括在 Windows NT Service Pack 中,或者內建在 Windows 2000 裡面,而且,這項服務通常就是正在執行中的電子郵件服務。<br /><br />這並不是說,SMTP 軟體就只有那幾種,只是它們是最被廣為使用的。如果你的網站是 ISP 的虛擬主機(Vitual hosting)套件的一部分,SMTP 服務應該就已經安裝在主機上面了。如果你是位系統管理者,負責管理某台放在 ISP 或公司機房的專屬主機(Dedicated machine)的話,那麼你很可能會需要在那部機器安裝某種 SMTP daemon,特別用來處理網站伺服器的電子郵件傳遞。<br /><br />然而,如果你只是一個單獨的使用者,只有一套網站伺服器開發平台在你的個人電腦上面,你可能沒有在你的機器上安裝 SMTP。這裡有個非常簡單但是精確的準則: 如果你是個 Windows 使用者,而你從來未曾聽過 SMTP 伺服器,那麼你就沒有安裝 SMTP。若果真如此,你有兩個選擇:安裝, 設定,並維護一個 SMTP 伺服器(如果你不知道那是什麼,我並不鼓勵你這樣做)或者直接使用已經在你手邊的東西。<br /><br />「我沒有安裝,怎麼會說在我手邊呢?」你可能會這樣問。嗯,如果你的電腦是透過撥接上網的(或 DSL 或者 cable),你可以直接使用你的 ISP 的外寄郵件伺服器(outgoing mail server)。例如,如果你的開發平台是 Windows 98,以及一台 56Kbps 的數據機,並透過 EarthLink 上網,那麼你可以用 mail.earthlink.net 當作你的 SMTP 伺服器。不管你使用的是哪一種電子郵件客戶端軟體(Eudora,Outlook,Netscape Mail 等等),你的外寄郵件伺服器都可以在 PHP 程式碼中,指定為 SMTP 伺服器。要訣在於,你要告知 PHP 這件事情。<br /><br />在 PHP 的主要設定檔,php.ini 中,有一些 directive 是你必須去設定,這樣一來 mail() 函式才能夠使用。在更改那些設定以前,你先看看它們是什麼。使用 phpinfo() 函式,可以顯示你的系統目前的設定, 做法是,建一個檔案,包括下列文字:<br /><br />CODE:<br />將檔案存起來,放在你的網站伺服器的文件根目錄中。然後用你的瀏覽器去看這個檔案。你應該會看到一個編排良好的現有設定列表。在這裡,你要注意的設定選項為:<br /><br />SMTP<br />sendmail_from<br />sendmail_path<br />如果你用的不是 Windows,你只須擔心 sendmail_path directive。如果你用的是 Windows,你就要注意先前兩個 directive。<br /><br />如果你用的是 Linux 或其他 Unix 變種系統,sendmail_path 應該差不多是這樣子設定的:<br /><br />sendmail_path = /usr/sbin/sendmail<br /><br />或者,如果你用的是 Qmail:<br /><br />sendmail_path = /var/qmail/bin/sendmail<br /><br />在這個 directive 裡面,你也可以設定某些 flag 來指明你的 queuing 做法,或者是用來明確的寫出你的 Return-Path 標題,就像這樣:<br /><br />sendmail_path = /usr/sbin/sendmail -t -fyou@yourdomain.com<br /><br />如果你不是 Windows 使用者,你所需要做的就那麼多了。如果你使用的是 Windows,你還有一些事情要處理。你必須看看 SMTP 以及 sendmail_from 的值。不要被 sendmail_from 的 directive 名字中的 sendmail 給搞糊塗了。雖然你在 Windows 上面並沒有用一個叫做 Sendmail 的程式,這個只是 directive 的名字而已。不要緊張。<br /><br />在phpinfo() 所顯示的結果中,注意一下 SMTP 以及 sendmail_from 原先的設定值 -- 它們應該是空白的,或者只是虛值(dummy)。你必須將它們改為對你系統有意義的值。<br /><br />如果你真的在你的機器上安裝並啟動 SMTP 伺服器,你的 php.ini 應該要有這樣的設定:<br /><br />SMTP = localhost<br /><br />然而,如果你要用你的 ISP 的外寄郵件伺服器(在這裡,我們用 EarthLink 做例子),那麼你的 php.ini 就要有這樣的設定:<br /><br />SMTP = mail.earthlink.net<br /><br />你也可以直接用 IP address 而非名字,因為電腦並不會區別這兩者的差異。<br /><br />第二個我們要設定的 directive 是 sendmail_from,這個是設定在 From 標題(header)裡面所使用的 e-mail 位址。這個設定值可以用 mail 程式更改,但是通常這裡的設定值都被拿來當作內定值。以下是,如果你的電子郵件地址是 youraddress@yourdomain.com, 所應該做的設定值。<br /><br />sendmail_from = youraddress@yourdomain.com<br /><br />在更改以上設定值之後,重新啟動你的網站伺服器,再用 phpinfo() 函式來確定這些設定已經被更改了。當你完成這些事情後, 你就已經準備好用 PHP 來傳送 e-mail 了。<br /><br /><br /><span style="font-weight: bold;">傳送一個簡單的 e-mail</span><br />mail() 函式相當簡單:只有五個參數,而且其中兩個是選擇性的(optional)。這些參數是:<br />收件者地址<br />主旨<br />訊息<br />其他郵件標題(選擇性)<br />其他 SMTP 伺服器的設定選項(選擇性)<br />額外的郵件標題參數,是用來控制某些電子郵件功能,像是 CC,BCC,Reply-To fields,或其他 SMTP 通訊協定所規定的功能。 在這個例子裡,我只用 From 以及 Reply-To 電子郵件標題。<br /><br />如果你要送 mail 給我,而你用的不是 Windows 系統,那麼它看起來會像這樣:<br /><br />CODE:<br />如果你用的是 Windows 的 SMTP 服務,那麼很可能你不需要設定第五個參數,以及額外的郵件標題參數 (即第四個參數),不過你要用 \r\n 而非 \n 將你的參數分開。因此,同樣的電子郵件,透過 Windows 的 SMTP 服務傳送,看起來會是這樣:<br /><br />CODE:<br />在以上程式中的 echo 敘述,是讓你的網頁瀏覽器在執行完這個程式後,回傳給你一個訊息。如果沒有這項敘述,你會收到一個「Document contains no data」對話方塊,因為沒有東西傳送到你的網頁瀏覽器上。<br /><br />mail() 函式只要連到指定的 SMTP 伺服器,就會回傳 true。這並不意味著郵件已經成功抵達收件者了。mail() 函式並不會等 SMTP 伺服器告訴它傳送成功或失敗。<br /><br />mail() 函式會回傳 false,並且送給你一個警告,像是「Couldn't connect in line x」 或者是「Unknown error in line x」。如果你沒看到前面兩個訊息,檢查一下 php.ini 的 SMTP 設定值。有兩種可能性會導致這個訊息的產生:SMTP 伺服器當掉了,或者是 PHP 沒連到 SMTP 伺服器。當然,這兩種情況下, 你的電子郵件都不會被傳送出去。<br /><br />這個程式用的參數都是寫死在程式中的。你可以透過一個簡單的 HTML 表格,將這些值送出去,然後再回傳給你一個回饋表格(feedback form)。<br /><br /><span style="font-weight: bold;">以迴圈讀取傳送名單</span><br />一旦你知道要怎樣傳送電子郵件給一個人,你或許會感到非常興奮而且想傳送同樣的訊息給很多收件者 --就像電子報一樣。你只要做一個簡單的迴圈敘述, 一一閱讀你名單上的名字,然後傳送電子郵件給他們。<br /><br />mail 函式的格式是一樣的:<br /><br />mail([recipient], [subject], [message], [any headers]);<br /><br />你必須將 [recipient] 換成迴圈中你的名單的下一個名字。假設你有一個 e-mail 地址的陣列:<br /><br />$addresses = array("me@mycompany.com", "you@yourcompany.com", "someone@otherplace.com");<br /><br />你只要以迴圈讀取這個 array, 取得新的電子郵件地址,然後傳送郵件。<br /><br />如果你的電子郵件地址名單是存在資料庫裡面,你還是可以用同樣的方式:以迴圈一一讀取它們。<br /><br />就是這麼簡單。顯然的,同樣的觀念可以運用到你特定的資料庫種類以及表格(table)架構, 雖然程式碼必須做一點修改。<br /><br />這裡還有一個小小的訣竅,在以迴圈敘述讀取一串電子郵件名單的時候,似乎每一個人都忽略了它:如果你有多於五十個郵件地址,你的程式或許在還沒完成讀取名單的時候,就逾時(time out)了,因為 PHP 對每個程式的內建時間限制是三十秒。你可以修改這個時間限制, 但是要小心。試著將這個修改的效果限制在某些特定的程式中, 例如迴圈讀取電子郵件名單並且傳送郵件。否則的話,你可能會有一些伺服器程序 (server process) 一直在你的伺服器上,你的主機會幾乎停滯,整個世界就會停止。<br /><br />要在程式裡面設定時間限制,使用 set_time_limit() 函式。你可以指定這個限制,例如六十秒(set_time_limit(60)),或者你可以讓它一直等下去,(set_time_limit(0))。<br /><br />將這個放在你的程式中,你傳送電子郵件的迴圈敘述就會一直持續下去直到名單中所有的地址都傳送出去為止。<br /><br /><span style="font-weight: bold;">傳遞 HTML 格式的電子郵件</span><br />傳送 HTML 格式的 e-mail 是另一個看起來困難但是做起來簡單的事情。一旦你知道怎麼做,你或許會為了以前把它想得太困難而想打你自己一頓!<br /><br />我們需要對先前用過的基本電子郵件敘述程式做兩個修改:<br /><br />你的郵件訊息應該是 HTML 格式的。<br />你必須增加內容種類郵件標題(content-type header)。<br />這樣就可以了。使用者如果擁有可以讀取 HTML 格式郵件的電子郵件客戶端軟體的話,他所看到的郵件訊息會是大型的粗體字形。如果你傳送的 HTML 格式的電子郵件有影像的 tag 在裡面,你必須記得在 src 屬性中使用完整的 URL。例如:<img src="http://www.yourdomain.com/images/image.gif" />。<br /><br />記得,不是所有人都可以讀取 HTML 格式的電子郵件,如果使用的軟體不能讀取 HTML 格式的電子郵件,那麼收件者就只能看到 HTML 程式碼。這會讓人有點受不了,所以小心使用這項功能。<br /><br /><span style="font-weight: bold;">結論</span><br />你可以用幾乎你所能想像得到的所有各種不同的方式,使用 PHP 傳送電子郵件。這篇文章只有接觸到基本面而已:設定你的伺服器,並且傳送一些簡單的電子郵件。你也可以用 mail() 產生的電子郵件來傳送附件,修改很多不同的郵件標題。大致上說來,你也可以用 PHP 做任何現實生活中, 電子郵件客戶端軟體或郵件名單程式可以做到的事情。Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-65337091254198799352009-09-09T22:29:00.000-07:002009-09-09T22:55:23.666-07:00ECFA即將簽署,台灣網路界可以要什麼?ECFA說白話,就是台灣與中國的共同市場,也就是最惠國待遇的最極致<br />商周最近報導了一篇 ECFA對於台灣的影響<br />http://www1.businessweekly.com.tw/web/webarticle_37802_p1.php<br />裡面提到,ECFA是ECFA是富人的威而剛、窮人的土石流,<br />按WTO架構,ECFA屬過渡協定,雖無強制性,但通常在10年內,兩邊必須完成約90%的商品服務免關稅,台灣與中國將互相大幅開放市場給對方。<br /><br />所以兩國間強者將恆強,台灣的優勢項目可以在大陸賣得更好,大陸的優勢項目可以在台灣賣得更好,也勢必帶來產業的重整。<br /><br />在其他產業紛紛向政府施壓,希望將產業的需求列入ECFA談判<br />台灣網路界能不能也站出來大聲說出自己的需求<br />為何台灣的網站要到大陸,要申請ICP執照,要符合當地人成立資本額100萬人民幣的標準,<br />而大陸網站來台就沒有任何限制?<br /><br />目前申请<span class="il">ICP</span>许可证的条件?<br />1 经营者为依法设立的<span style="color: rgb(255, 0, 0);">中资公司</span><br />2 注册资金达<span style="color: rgb(255, 0, 0);">100万及以上</span><br />3 有为用户提供长期服务的信誉或能力<br />4 有业务发展计划及相关技术方案<br />5 有健全的网络与信息安全保障措施<br />6 国家规定的其他条件<br /><br />台灣網路界能不能集結向政府呼籲,在ECFA中一併談判將中國所設立的壁壘消除?<br />中國希望管制言論,可以比照當地的標準審核。<br />要申請ICP,也可以比較當地去申請。<br />資本額100萬人民幣,也不是難事。<br />但是「限中資公司申請」,就很不合理<br />台灣或外商必須透過人頭成立中資公司,徒增困擾及可能的糾紛<br />既然要共同市場,就應該一併把這個限制消除<br />讓台灣網站有機會直接與對岸網站一較高下<br /><br />有沒有人願意一起來連署呢?Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0tag:blogger.com,1999:blog-89453473481334250.post-79330481846041551672009-04-13T02:46:00.000-07:002009-04-13T03:17:47.983-07:00YUI CSS 摘要<div id="xd9u" style="text-align: left;">YUI CSS<br /></div>出處:The YUI CSS Foundation影片<br />http://developer.yahoo.com/yui/reset/<br /><br />延伸閱讀<br /><a title="css使用px和em的差異" href="http://plog.longwin.com.tw/news-technology/2007/12/07/css_px_em_difference_2007" id="rlpe">css使用px和em的差異</a><br /><br /><br />詳細資料請點此(因為css的東西沒辦法Po上來)<br /><a href="http://docs.google.com/Doc?id=dgtnbc94_70hsw87hd8">http://docs.google.com/Doc?id=dgtnbc94_70hsw87hd8</a>Willyhttp://www.blogger.com/profile/02707968802332922492noreply@blogger.com0