
因為DreamIt的關係, 認識了AWS的一些人. 前一陣子剛好有機會跟其中一個亞洲區的技術支援通過電話. 他介紹了下面這幾篇AWS入門的文章跟連結. 我很快的看了一下, 覺得蠻不錯的. 跟大家分享分享.
Architecting for the AWS Cloud: Best Practices
Web Application Hosting: Best Practices

因為DreamIt的關係, 認識了AWS的一些人. 前一陣子剛好有機會跟其中一個亞洲區的技術支援通過電話. 他介紹了下面這幾篇AWS入門的文章跟連結. 我很快的看了一下, 覺得蠻不錯的. 跟大家分享分享.
Architecting for the AWS Cloud: Best Practices
Web Application Hosting: Best Practices
![]()
今天把這幾天在弄的project, 上到了github上. 但是又忘了Linux裡該做些什麼設定, 才能clone code. 還好很快地找到了這份help. 趕快在這邊自己備份一下. 以免下次又得去Google找囉. :)

今天終於要來嘗試怎麼upgrade或是migrate既有的AWS instance. 昨天晚上找到了這篇教學. 但是因為還是對AWS command line tool的操作有點"恐懼感". 所以還是選擇了使用GUI的方式來試試看upgrade/migrate AWS instance.
注意:這個方法只適用於用EBS當做root device的instance. 以下是各個步驟
1. 在AWS Management Console選擇你要upgrade/migrate的instance. 然後選擇Instance Actions裡的Create Images.
2. 在跳出來的對話窗裡, 幫這個image取個名字跟給個簡單的描述
3. 在Navigation的IMAGES->AMIs裡, 應該會看到步驟1, 2執行後所產生的image. 選擇哪個image之後, 點選Launch. 接下來就跟new instance差不多了.
4. ㄟ...好像就這樣子而已....:p (boot instance, start service, blahblah...就不在這篇的內容討論裡了)
只能說AWS真的是有一套囉! 讓這些事變得如此簡單. 實在令人佩服!!

之前為了flirq的blog, 很快的安裝了一份wordpress在AWS的instance上. 就交給負責marketing的人接手了. 所以一直沒有好好的來體驗一下wordpress的power. 這幾天總算因為要幫忙處理一些wordpress家的blog相關的事, 才有機會來跟wordpress好好親近一番.
玩了一些不同的themes還有相關的設定, 也試著改了一下相關的php還有css. 真的蠻佩服wordpress的架構跟建立起來的community的. 也感受到用wordpress來建立一個以content為主的website的便利性. 接下來一定要找時間再來多鑽研鑽研.
(Image from flickr's Phil Oakley under CC license)


這兩天在試著寫一個iPhone的小程式. 基本目標就是要在每天固定時間跳出特定通知. Local notification本身還算簡單. 例子找到了, copy & paste上去幾乎就可以用了. 但是在要設定每天"特定時間"這件事上就遇到了一點小障礙. 因為得用上NSDate, NSCalendar, NSDateComponents這三個classes. 今天花了不少時間跟他們三個奮戰.
心得感想是(不保證完全正確): NSDate代表的是一個"時間點", NSDateComponents是一個時間的container. 可以設定裡面的年/月/日/時/分/秒等值來代表一個時間點或是一段時間的長度. 而NSCalendar則像是用來解釋NSDateComponents內容的一個class.
滿有趣的一種設計. 不過用起來還沒有很習慣囉. :Q

這幾天為了看看有沒有關於Flirq的press, 再次體認了Google的強大. 這次主要是用了Google search結果出現後左側的"Show seach tools"哩的功能. 這邊可以針對"內容的產生時間"去做更仔細的過濾. 不過可能有人會問, 為什麼不直接用Google Alert等著收通知就好了? 因為我發現Google Alert好像會漏東西, 舉例來說, 前幾天明明就有不少Flirq相關的內容, 我一封Google Alert都沒收到. 所以只好自己來filter by date range一下囉. :)

昨天看到了Google currents的新聞, 馬上裝來玩玩. 目前感覺還不錯. 幾個我自己認為的優缺點: 優點是, 畫面乾淨, 使用界面簡單. 流暢度夠, 還可以連接Google Reader. 缺點是沒辦法連facebook, 然後有兩個按鈕的功能很confusing. (back and home). 不過整體說來還蠻喜歡這個app的. 可能會慢慢用這個來取代我目前手機上的RSS reader囉.
![]()
這幾天花了不少時間做Demo Day的投影片, 在這過程中用到了一個網站還不錯, 叫Icon Arcive 在這邊跟大家分享一下.
這個網站搜集了很多免費的icon. 對於作投影片或是web/app都很有幫助. 有需要免費icon的朋友可以上去找找囉. :)

AWS提供了command line tools讓開發者可以透過command對AWS做scaling. 今天花了點時間在我的MBP(OS 10.7.2)上裝了起來. 在這邊記錄一下過程. 以供之後參考.
主要參考網頁
1. http://docs.amazonwebservices.com/gettingstarted/latest/wah-linux/
2. http://docs.amazonwebservices.com/AutoScaling/latest/DeveloperGuide/index.htm...
3. http://stackoverflow.com/questions/6588390/where-is-java-home-on-osx-lion
其實安裝的步驟在command line tools的README.txt裡寫得蠻清楚的. 所以建議可以先到2裡面的How to Get the Command Line Tool先把zip檔抓回來. 然後照著README.txt裡面步驟作即可.
Environment Variable的部份, 可以直接改自己目錄裡的.bash_profile, JAVA_HOME 的部份, 我是參考3裡的方法設定.
環境變數設定完後, 得設定AWS user credentials. 我是用AWS Keys的方法(可以連到http://aws.amazon.com/security-credentials查找)
都設定完之後, 可以照README.txt裡的方法. 測試看看是不是都work. (as-describe-auto-scaling-groups --headers一定要試, 因為會測到credentials有沒有設定好) 如果work, 恭喜, 那應該就是安裝好了! :)

本來試著要用CakePHP內建的Email component來實作Flirq的email通知功能. 但是不小心發現了SwiftMailer這個更好用的component. (重點是, example提供的很完整XD) 雖然還沒做完相關的功能. 但是有了SwiftMailer跟它的範例. 應該只是時間的問題. 在此特別推一下囉! :)
(Image from flickr's matthewspiel under CC license)

因為Facebook要求從今年10/1開始, 所有的app都要有https的Canvas URL. 所以只好乖乖的來處理一下https需要的SSL certificate. 我們所有的domain都是從GoDaddy買的, 而GoDaddy的SSL certificate價錢也還算OK. 所以昨天晚上就想說趕快來把這個搞定. 購買的流程還算順利, 但是等到要送出CSR (Certificate Signing Request)的時候, 卡關卡了很久. 照著GoDaddy的說明, 一行指令就生出了所需的key跟csr. LAMP環境裡用openssl生出來的CSR通常是長下面這樣
-----BEGIN CERTIFICATE REQUEST-----
CSR內容.......
-----END CERTIFICATE REQUEST-----
但是問題來了...當我把CSR內容貼到GoDaddy的網頁裡的時候, 一直被退回. 試著重新生成了幾個不同的csr檔案, 甚至於跑到了一些可以幫忙生成csr的網頁生成csr跟decode我生成的csr內容的網站去生成跟檢查我的csr. 結果GoDaddy還是不吃. 最後要放棄之前, 靈機一動. 就把整個內容(沒錯, 就是包括BEGIN, END那些東西)都丟了進去..鐺鐺...就成功了....只能說, GoDaddy, 我真是搞不懂你啊....
(Image from flickr's runnr_az under CC license)

之前的開發幾乎都是直接在AWS的instance上, 剛開始因為要改的東西不多. 還勉強可以接受. 不過這幾天覺得繼續這樣下去不行. 所以決定在自己的MBP上弄出一個開發環境. 一種選擇就是自己裝MySQL跟PHP然後用Mac自己本來就有的Apache. 不過不是很想對系統做這麼多的改動. 相信很多人也是這麼想...所以才有後來找到的這個solution: MAMP
安裝跟開始使用是跟我預期的一樣簡單. 不過因為我用了ImageMagicK來處理一些圖片的特效. 為了讓PHP能夠叫用IMagicK, 現在還在努力搞定這個問題中. 希望不需要搞太久囉.
(Image from flickr's Jon Gosier under CC license)
目前為止, 用了一堆不同的服務商提供的免費或是便宜的服務. 但是也因此網站的各個功能相當的分散XD 昨天開會討論, 決定把我們的online dating site, TraRoma.com, 的blog從posterous搬到自己的AWS instance上. 昨天晚上開始裝到今天設定好. 在這邊記錄一下, 看看能不能幫上什麼人.
1. 我們目前是跟Godaddy買domain, 所以domain設定所有的工作都是透過Godaddy的界面.
2. 我們用了LaunchRock來做我們的landing page. 所以domain的A name (or @)是指到LaunchRock的server.
3. 目前的blog是用posterous來架的. 所以照著posterous的說明, 我加了一個CNAME (blog)指到posterous的server.
4. 因為決定要把blog搬到wordpress上, 所以就很快照著網路上找到的說明, 在我們目前的AWS instance上架起了wordpress. 目前是裝在/var/www/html/blog目錄裡.
5. 接著挑戰開始來了. AWS instance的domain name長的是ec2-xxx-xx-xx-xx.compute-1.amazonaws.com. 所以可以用http://ec2-xxx-xx-xx-xx.compute-1.amazonaws.com/blog來看我們的blog. 但是我們希望剛架起來的wordpress能夠被http://blog.traroma.com指到.
6. 我試著要利用URL rewrite去改. 但是沒能成功XD
7. 最後我的解決方法是, 把CNAME指到AWS instance上. 然後在AWS的httpd.conf裡, 加了Virtual Host. 把blog.traroma.com指到wordpress安裝的路徑.
目前看起來這樣的方式是可行的. 希望沒有什麼副作用囉. :)
昨天為了我們的Online Dating Website TraRoma.com設定好AWS instance跟LAMP的環境之後, 今天第一件事是試著在AWS上把CakePHP裝起來. 前面幾步問題不大, 就是1)下載cakephp, 2)解開cakephp到webroot裡, 3) 把app/tmp的讀寫權限設定好. 本來以為這樣就可以開始玩了(因為之前在自己laptop的Ubuntu裡這樣就夠了). 但是沒想到出現了奇怪的錯誤.
Warning (2): strtotime() [http://php.net/function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead [CORE/cake/libs/cache.php, line 597]
Notice: Trying to get property of non-object in /var/www/html/cakephp/cake/libs/cache/file.php on line 248 Fatal error: Call to a member function cd() on a non-object in /var/www/html/cakephp/cake/libs/cache/file.php on line 248
後來查了一下, 原來是app/config/core.php裡的date_default_timezone_set要設定. 有人說這是因為PHP的版本的原因造成的. (我的Ubuntu上是5.3.5, AWS上的是5.3.6). 不過把這個搞定之後, 就可以正常看到index.php的畫面了. 最後就是把URL rewriting搞定. 這部分就是照著index.php裡link到的tutorial網頁把httpd.conf設定好. 然後重開httpd就搞定了! 喔耶! 可以開始在AWS上面來烤蛋糕了!!
經過這一陣子的survey, 決定要用cakePHP來開發接下來要做的網站. (謎之音: 其實是懶得學Ruby跟RoR吧?). 最近得加緊學習怎麼樣好好利用cakePHP這套framework來快速開發網站. 才能夠在短時間之內, 不斷地修改/增加網站功能, 找出使用者最有興趣的功能. 所以接下來可能開始會出現一些cakePHP的學習心得筆記囉.
今天想要分享一下如何快速地建立Landing Page跟Blog. 現在的startup真的很容易開始, 因為現成的工具實在很多. 舉例來說, LaunchRock是一個專門讓你快速建立Landing Page測試使用者喜不喜歡你的idea的網站. LaunchRock讓建立Landing Page變成填寫幾個表格的工作. 照著instructions, 幾分鐘之後就可以有個還算上相的Landing Page可以用. 還可以加入Google Analytics來作進一步的分析. 最花時間的部分, 大概是怎麼在有限的字數裡面, 清楚描述你的idea.
Blog的Tool更是完整. 從自己可以抓回來安裝, 到可以實際上是掛在他們的機器, 但是看起來是你的subdomain的solution都有. 本來應該要花點時間在Wordpress, Tumblr, 跟Posterous之間抉擇, 不過之前為了申請這些startup accelerator programs, 已經先稍微用過了posterous, 所以就順理成章的繼續用了XD. 不敢說非常好用, 但是也目前來講夠用了.
目前還在打造我們的project. 所以還是先用Landing Page跟Blog先擋著. 不過現在開發起Web site, 也跟以前很不一樣了. 等project做出點成果, 再來看看有沒有什麼值得分享的心得囉. :) 不過有了這麼多工具可以幫忙開始驗證你的想法, Are you ready to go?
之前還在美國的時候, 就已經在meetup.com上註冊了幾個不同的meetup. 但是這次回來之後, 因為沒辦法參加本來要參加的Startup Accelerator Program, 很多事情(ex. networking, 學習怎麼pitching, 怎麼檢視自己的idea) 都得自己來. 所以就開始參加了一些Startup相關Meetup的events. 收穫挺多的. 在這些event裡可以看看其他公司在做些什麼? 他們怎麼在五分鐘之內pitch自己的公司? 聽眾通常關心什麼問題? 如果有VC列席, VC會有什麼樣的疑問? 另外就是event結束後的networking (認識VC, 認識其他的創業家). 不過也因為紐約這邊現在有太多不同的meetup了. 目前還在看看有哪些事比較值得持續參加的meetup. 希望很快能夠找出一些值得持續參加的meetup, 從中多學習跟認識人.
什麼是Startup Accelerator Programs? 這是很多聽到我要來美國參加Startup Accelerator Program的朋友都會問的第一個問題. 我的回答(也是我自己的認知), Startup Accelerator Program可以說是給創業家的補習班或是創業訓練課程. 至於這些program的細節? 因為我本來要去的program, 因為我們team自己的一些狀況, 結果最後沒參加成. 所以暫時也沒辦法跟大家分享太多參與這些program的實際經驗. 至於有哪些Startup Accelerator Programs? 最有名的當然就是頂頂有名的YCombinator. 接著在後的是在越來越多城市有據點的TechStars. 其他還有還算有名的Startup Accelerator Program呢? goo.gl/jEu0J 是一份整理的還不錯的列表. 有興趣的人可以看看.