<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7587710935479412692</atom:id><lastBuildDate>Sat, 05 Oct 2024 01:55:50 +0000</lastBuildDate><category>電腦</category><category>網路應用</category><category>Google</category><category>網站</category><category>閒聊</category><category>軟體</category><category>Social Network</category><category>紀錄</category><category>web2.0</category><category>Firefox</category><category>Chrome</category><category>觀察</category><category>網路技術</category><category>Facebook</category><category>心情</category><category>java</category><category>研究生？</category><category>瀏覽器</category><category>Plurk</category><category>程式設計</category><category>Google Reader</category><category>twitter</category><category>Windows</category><category>Microsoft</category><category>微網誌</category><category>Programming</category><category>Self-Learning</category><category>圖片會說話</category><category>Database</category><category>Search Engine</category><category>blogger</category><category>搜尋引擎</category><category>GMail</category><category>Firefox套件</category><category>程式語言</category><category>extension</category><category>電影</category><category>OS</category><category>MySQL</category><category>youtube</category><category>硬體</category><category>網路服務</category><category>名詞</category><category>科技名詞</category><category>網路學</category><category>Flickr</category><category>playframework</category><category>設計模式</category><category>軟體工程</category><category>Data Mining</category><category>Design Pattern</category><category>Paper</category><category>RSS</category><category>maven</category><category>ubuntu</category><category>創業</category><category>影片</category><category>書籍</category><category>CCNA</category><category>Yahoo</category><category>amazon ec2</category><category>android開發</category><category>cloud</category><category>heroku</category><category>spring framework</category><category>奧運</category><category>攝影</category><category>數學</category><category>演算法</category><category>設計</category><category>體育</category><category>.net</category><category>3C</category><category>Chrome套件</category><category>XML</category><category>eclipse</category><category>josso</category><category>linux</category><category>mongodb</category><category>open data</category><category>paas</category><category>python</category><category>thinkpad</category><category>web deisgn</category><category>圖片分享</category><category>專案管理</category><category>時間管理</category><category>歌詞</category><category>物件導向</category><category>音樂</category><category>Ajax</category><category>Google 文件</category><category>Redmine</category><category>RoR</category><category>SVN</category><category>SaaS</category><category>UML</category><category>apache</category><category>css</category><category>docker</category><category>hosting</category><category>j2ee</category><category>load-balancer</category><category>nodejs</category><category>nunit</category><category>open source</category><category>restful</category><category>tips</category><category>tomcat</category><category>twitter bootstrap</category><category>ui</category><category>工作法</category><category>敗家</category><category>旅遊</category><category>桌面管理</category><category>簡報</category><category>網站開發</category><category>計概</category><category>認證</category><category>軟體測試</category><category>雲端</category><title>I am here.</title><description>軟體開發。程式設計。Web2.0。網路。科技。筆記。軟體</description><link>http://kevingo75.blogspot.com/</link><managingEditor>noreply@blogger.com (Anonymous)</managingEditor><generator>Blogger</generator><openSearch:totalResults>472</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-5417252136563415016</guid><pubDate>Mon, 11 Apr 2016 02:08:00 +0000</pubDate><atom:updated>2016-04-11T10:08:10.926+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">docker</category><category domain="http://www.blogger.com/atom/ns#">nodejs</category><title>Dockerizing a Node.js web app</title><description>如果想要在 Docker 在跑 NodeJS 的應用，可以參考 NodeJS 官網上有一篇 「&lt;a href=&quot;https://nodejs.org/en/docs/guides/nodejs-docker-webapp/&quot;&gt;Dockerizing a Node.js web app&lt;/a&gt;」介紹，還蠻簡單易懂的，這邊稍微紀錄一下相關步驟。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;首先，建立 package.json&lt;/li&gt;
&lt;code&gt;&lt;pre&gt;{
  &quot;name&quot;: &quot;docker_web_app&quot;,
  &quot;version&quot;: &quot;1.0.0&quot;,
  &quot;description&quot;: &quot;Node.js on Docker&quot;,
  &quot;author&quot;: &quot;First Last &lt;first .last=&quot;&quot; example.com=&quot;&quot;&gt;&quot;,
  &quot;main&quot;: &quot;server.js&quot;,
  &quot;dependencies&quot;: {
    &quot;express&quot;: &quot;^4.13.3&quot;
  }
}
&lt;/first&gt;&lt;/pre&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;li&gt;使用 Express 建立簡單的 web server&lt;/li&gt;
&lt;code&gt;
&lt;pre&gt;&#39;use strict&#39;;

const express = require(&#39;express&#39;);

// Constants
const PORT = 8080;

// App
const app = express();
app.get(&#39;/&#39;, function (req, res) {
  res.send(&#39;Hello world\n&#39;);
});

app.listen(PORT);
console.log(&#39;Running on http://localhost:&#39; + PORT);
&lt;/pre&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;li&gt;增加一個 Dockerfile &lt;/li&gt;
&lt;code&gt;&lt;pre&gt;touch Dockerfile
&lt;/pre&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;li&gt;在 Dockerfile 中寫入以下資訊&lt;/li&gt;
&lt;code&gt;&lt;pre&gt;FROM node:argon

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ &quot;npm&quot;, &quot;start&quot; ]
&lt;/pre&gt;
&lt;/code&gt;
&lt;br /&gt;

Dockerfile 是 docker 用來 build image 的參考檔案。裡面會包含多個 commands，Docker 在 build image 的時候，會照著裡面所列的步驟一步一步執行。詳細的指令可以參考 Docker 官方網站的 &lt;a href=&quot;https://docs.docker.com/engine/reference/builder/#from&quot;&gt;Dockerfile reference&lt;/a&gt;。
&lt;li&gt;Building your image&lt;/li&gt;
&lt;code&gt;&lt;pre&gt;docker build -t &lt;your username=&quot;&quot;&gt;/node-web-app .
&lt;/your&gt;&lt;/pre&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;li&gt;確認 image 已經建立完成&lt;/li&gt;
&lt;code&gt;&lt;pre&gt;docker images
&lt;/pre&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;li&gt;透過 docker run 執行 &lt;/li&gt;
&lt;code&gt;&lt;pre&gt;docker run -p 49160:8080 -d &lt;your username=&quot;&quot;&gt;/node-web-app
&lt;/your&gt;&lt;/pre&gt;
&lt;/code&gt;
&lt;/ol&gt;
&lt;br /&gt;&lt;ol&gt;
&lt;code&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;/code&gt;
&lt;/ol&gt;
</description><link>http://kevingo75.blogspot.com/2016/04/dockerizing-nodejs-web-app.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-6052387388603375936</guid><pubDate>Sat, 19 Jan 2013 02:47:00 +0000</pubDate><atom:updated>2013-05-29T14:41:59.681+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Search Engine</category><category domain="http://www.blogger.com/atom/ns#">twitter</category><category domain="http://www.blogger.com/atom/ns#">電腦</category><title>Twitter 利用 Human Computation 改善搜尋結果(Amazon&#39;s Mechanical Turk)</title><description>Twitter 最近在其&amp;nbsp;&lt;a href=&quot;http://engineering.twitter.com/&quot; target=&quot;_blank&quot;&gt;Engineer Blog&lt;/a&gt; 中發表了一篇 &lt;a href=&quot;http://engineering.twitter.com/2013/01/improving-twitter-search-with-real-time.html&quot; target=&quot;_blank&quot;&gt;Improving Twitter search with real-time human computation&lt;/a&gt;，當中介紹了 Twitter 使用了 &lt;a href=&quot;https://www.mturk.com/mturk/welcome&quot; target=&quot;_blank&quot;&gt;Amazon&#39;s Mechanical Turk&lt;/a&gt; 服務來改善搜尋引擎的精準度。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
整個處理的流程是這樣：&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Twitter 利用 Storm(註：&lt;a href=&quot;http://storm-project.net/&quot; target=&quot;_blank&quot;&gt;Storm &lt;/a&gt;是 Twitter 所開發 open source 的 real-time 計算系統) 來觀察目前熱門的 query term。&lt;/li&gt;
&lt;li&gt;等到目前的 query term 到達一定量時，利用 Thrift API 把這些 term 丟到 Amazon Mechanical Turk 服務。&lt;/li&gt;
&lt;li&gt;Amazon Mechanical Turk 會把結果回傳回來，這時候 Twitter 再把結果丟到其原本的 backend 去處理，如此一來，即使是最新的 query term，使用者也有辦法找到其相關的資訊。&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Twitter 也提到，他們在很多方面都使用 human computation 來幫助他們改善整個系統，包括在計算廣告的相似度和搜尋的品質上。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
而 human computation 又是怎樣來 evaluation 每個 query term 呢？在這篇文章也有解釋：每個人會被問幾個可能的問題，包括：&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;這個 query 是屬於哪個類別？&lt;/li&gt;
&lt;li&gt;這個 query 是代表一個人嗎？&lt;/li&gt;
&lt;li&gt;...等等&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
另外值得一提的是，Twitter 對於所挑選的 &quot;評審&quot; (他們用 judge 來表示每個幫助他們 check query term 的 human resource) 也不是隨機亂挑的。有興趣的可以參考原文。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
很好奇的是，不知道像 Twitter 這樣的流量，需要 hire 多少人來幫他們看呢？&lt;/div&gt;
</description><link>http://kevingo75.blogspot.com/2013/01/twitter-human-computation-amazons.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-6052599861264624992</guid><pubDate>Thu, 17 Jan 2013 14:54:00 +0000</pubDate><atom:updated>2013-01-17T22:54:09.773+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">紀錄</category><title>史馥銘先生演講 - 個資(Personal data)與巨資(Big Data)的Privacy新挑戰 - 從手機感測資訊之應用談起</title><description>今天有幸在公司聽到史馥銘先生的演講，主題是個資與Privacy在這個世代的新挑戰。某些內容相當有趣，筆記如下：&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;在美國管理 Privacy 的 issue 是由公平交委員會(FTC)所管理。&lt;/li&gt;
&lt;li&gt;現在許多 mobile app 上的宣告，其實和使用者所認知會給予出去的東西有所差異。&lt;/li&gt;
&lt;li&gt;當我們在和使用者索取某些 data 時，不應該僅僅作字面上的描述，應該要告知他，取得此 data 後，延伸可能會造成的 issue。&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;比如說：當某個 app 向使用者索取 gps 的 data，就必須要告知，我們可能可以知道未來您的工作地點、住家 ... 等等資訊(以上透過 data mining 很容易找出 pattern)。&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;某些 mobile app 其實會向你 acquire 很多 data ，但是當你在安裝的時候，很容易就輕易的 accept，不知不覺間，data 就被會 collect 了。&lt;/li&gt;
&lt;li&gt;某個知名的遊戲 app ，其實不斷的在 collect 你的 gps location，而且是 free version 的才蒐集，付費的就不蒐集了。其實這些也算是該 app 的 businss model，這些 data 是可以賣錢的。&lt;/li&gt;
&lt;li&gt;Big data 不必然是 good data。&lt;/li&gt;
&lt;li&gt;顧客越來越聰明，當你竭盡所能的想要蒐集使用者的 data 時，使用者也可能給你假的 data。&lt;/li&gt;
&lt;/ul&gt;
</description><link>http://kevingo75.blogspot.com/2013/01/personal-databig-dataprivacy.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-8779006363530249894</guid><pubDate>Mon, 14 Jan 2013 15:51:00 +0000</pubDate><atom:updated>2013-01-14T23:52:05.060+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">紀錄</category><category domain="http://www.blogger.com/atom/ns#">閒聊</category><title>【轉】在熟練使用2B鉛筆前，請不要打開Axure</title><description>最近看到一篇不錯的文章，叫做：&lt;a href=&quot;http://www.hksilicon.com/kb/articles/103102/2BAxure&quot;&gt;在熟練使用2B鉛筆前，請不要打開Axure&lt;/a&gt;。記錄一下裡面不錯的部分：&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;當需求範圍已經相對清晰時，請先拿起筆，把產品的藍圖畫出來。通常對一個網站而言，你需要構建一副整體信息架構藍圖，也就是網站的主要網頁和層級關聯。記住，&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;只有當你相信自己用2B鉛筆畫的信息架構草圖是大家想要的，否則不要着急用工具進行美化。&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;用鉛筆勾勒藍圖或流程，目的是提高溝通的效率。拿起2B鉛筆，用10分鐘將頭腦風暴或範圍討論后的思路花在紙上，儘快與BOSS或團隊成員確認，是結構層最重要的事情，沒有唯一。&lt;/li&gt;
&lt;li&gt;
我見過太多的產品人員，包括我自己也曾經常犯類似的錯誤：妄圖一開始就使用電腦輔助設計程序，優美的將信息架構或流程圖畫出來。甚至跳過這一步，直接使用Axure話線框圖。&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;這個錯誤的可怕之處在於：你搞得自己很忙很苦逼，結果做出來的是無法得到認同的垃圾。&lt;/span&gt;&lt;/b&gt;

&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;更可怕的是，在面對你看似完美的圖標或線框圖時，BOSS被你忽悠住了，然後你們投入了整個團隊的開發資源，用了幾個月開發了一堆垃圾出來。
&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;
記住，&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;需求被砍掉不是恥辱，做垃圾浪費資源才是最大的恥辱&lt;/span&gt;&lt;/b&gt;。
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
在需求確認之前，永遠要作的事情就是：確認需求！確認需求！確認需求！&lt;/div&gt;
</description><link>http://kevingo75.blogspot.com/2013/01/2baxure.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-6786430752153201979</guid><pubDate>Sun, 06 Jan 2013 09:20:00 +0000</pubDate><atom:updated>2013-01-06T17:20:51.733+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Ubuntu crontab 記錄</title><description>在 Linux 上需要排程，有 crontab 這個好用的工具可以使用。一些有用的語法如下：&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;crontab -e：進入設定的檔案中，所有被寫在這個檔案裡面的每一行代表一項工作。&lt;/li&gt;
&lt;li&gt;crontab -l：檢視目前 crontab 的設定&lt;/li&gt;
&lt;li&gt;crontab -r：移除目前的 crontab 設定&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
而 crontab 的格式為：&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;分 時 日 月 週 指令&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><link>http://kevingo75.blogspot.com/2013/01/ubuntu-crontab.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3245176515261114032</guid><pubDate>Thu, 03 Jan 2013 15:15:00 +0000</pubDate><atom:updated>2013-01-03T23:15:26.618+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Database</category><category domain="http://www.blogger.com/atom/ns#">MySQL</category><title>查詢 MySQL table size 語法</title><description>&lt;script src=&quot;https://gist.github.com/4444196.js&quot;&gt;&lt;/script&gt;</description><link>http://kevingo75.blogspot.com/2013/01/mysql-table-size.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-4637454514818339788</guid><pubDate>Wed, 02 Jan 2013 15:38:00 +0000</pubDate><atom:updated>2013-01-02T23:40:00.766+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">MySQL</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">程式語言</category><title>利用 python update 資料庫欄位，跳脫字元的方式 (escape string)</title><description>在 python 中，用 Mysqldb module 

結果在 stackoverflow 一個討論串中有個很讚的做法：&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/3549691/what-is-the-best-escape-character-strategy-for-python-mysql-combo&quot;&gt;&lt;b&gt;What is the best escape character strategy for Python/MySQL combo?
&lt;/b&gt;&lt;/a&gt;

&lt;script src=&quot;https://gist.github.com/4435288.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;row[1] 指的是 column name&lt;/li&gt;
&lt;li&gt;row[3] 指的是要 insert 的 data&lt;/li&gt;
&lt;li&gt;row[0] 指的是 where 條件式域比對的限制條件&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
比對一下原始的 sql 就很清楚了：&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;cursor2.execute(&quot;update myTable set `&quot;+ str(&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;row[1]&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;) +&quot;` = \&quot;&#39;&quot; + str(&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;row[3]&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;) +&quot;&#39;\&quot; where ID = &#39;&quot;+str(&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;row[0]&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;)+&quot;&#39;&quot;)&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
</description><link>http://kevingo75.blogspot.com/2013/01/python-update-escape-string.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-2352327112935501878</guid><pubDate>Thu, 20 Dec 2012 06:51:00 +0000</pubDate><atom:updated>2012-12-20T14:51:18.023+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">MySQL</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>python 在安裝 MysqlDB 時，出現找不到 mysql_config 的錯誤</title><description>使用 python 在操作 Mysql 時，會需要用到 MySQLdb 這個 library，如果你在安裝時，出現找不到 mysql_config 的錯誤，可能的原因是當初在安裝 Mysql 時，是使用 apt-get 的方法安裝，這樣就不會有 mysql_config 這個檔案。&lt;br /&gt;
&lt;br /&gt;
解決的方式是安裝 dev 版本，分別執行下面的指令：
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4343373.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
這樣就解決了。</description><link>http://kevingo75.blogspot.com/2012/12/python-mysqldb-mysqlconfig.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3824916014507277516</guid><pubDate>Tue, 27 Nov 2012 10:43:00 +0000</pubDate><atom:updated>2012-11-27T18:43:28.413+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">電腦</category><title>保持 WinSCP 與 Server 之間的連線不中斷 (Keep WinSCP alive)</title><description>如果想要保持 WinSCP 和 Server 之間的連線不中斷，可以在 Connection 的時候去設定 Keepalives 的參數：&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3vgr2lI8vWbK8Jhs-KRGWnKJHyhssnlQxecQJ2GZjBcQXGb8VHgBC-_huANGVY4WAt7pARkxz70LVpoLGTKQlkJ9rycLlLkuHMbsNsgcPJ99-osYulZGydCs8ykUzrQTjYKf8TCNurg9S/s1600/scp.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3vgr2lI8vWbK8Jhs-KRGWnKJHyhssnlQxecQJ2GZjBcQXGb8VHgBC-_huANGVY4WAt7pARkxz70LVpoLGTKQlkJ9rycLlLkuHMbsNsgcPJ99-osYulZGydCs8ykUzrQTjYKf8TCNurg9S/s640/scp.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/11/winscp-server-keep-winscp-alive.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3vgr2lI8vWbK8Jhs-KRGWnKJHyhssnlQxecQJ2GZjBcQXGb8VHgBC-_huANGVY4WAt7pARkxz70LVpoLGTKQlkJ9rycLlLkuHMbsNsgcPJ99-osYulZGydCs8ykUzrQTjYKf8TCNurg9S/s72-c/scp.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-7719443920834245736</guid><pubDate>Tue, 13 Nov 2012 01:36:00 +0000</pubDate><atom:updated>2012-11-13T09:36:15.656+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">playframework</category><title>Playframework - Run application in the background</title><description>&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;play run&lt;/span&gt;&lt;/b&gt; : Run the application in the current shell&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;play start&lt;/span&gt;&lt;/b&gt; : Start the application in the background&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
【相關閱讀】&lt;br /&gt;
&lt;a href=&quot;http://www.playframework.org/documentation/1.2.4/cheatsheet/commandLine&quot;&gt;Play Manual&lt;/a&gt;</description><link>http://kevingo75.blogspot.com/2012/11/playframework-run-application-in.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3998108839581280320</guid><pubDate>Thu, 01 Nov 2012 15:30:00 +0000</pubDate><atom:updated>2012-11-01T23:30:17.397+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">amazon ec2</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">playframework</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>在 Ubuntu 12.04 LTS 下安裝 Playframework (@ Amazon EC2)</title><description>在 Ubuntu 下要安裝 Playframework 也不是很困難，大致上就是下載 playframework 的壓縮檔，解壓縮之後，放到自己喜歡的位置，接著再設定一下 bashrc ，把 path export 出來。&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
如果還沒有安裝 java jdk 的人，可以先執行以下的指令安裝：&lt;br /&gt;
&lt;br /&gt;
1. sudo add-apt-repository ppa:webupd8team/java&amp;nbsp;
&lt;br /&gt;
2. sudo apt-get update&lt;br /&gt;
3. sudo apt-get install oracle-java7-installer&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
安裝完畢後，可以用 java -version 的指令來確認一下是否正確安裝完畢。出現類似指令即可：&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
java version &quot;1.7.0_09&quot;&lt;br /&gt;
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)&lt;br /&gt;
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)&lt;/blockquote&gt;
&lt;br /&gt;
接著，執行以下指令安裝 Playframework：&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;1. 下載 playframework 的 zip 壓縮檔，在這裡我用 1.2.4 為例子：wget &lt;a href=&quot;http://download.playframework.org/releases/play-1.2.4.zip&quot;&gt;http://download.playframework.org/releases/play-1.2.4.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. 解壓縮至合適位置，我這裡解壓縮到目前的目錄：&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo unzip play-1.2.4.zip -d .&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
3. 接著可以切換到接壓縮出來的目錄下，執行 play 看看，如果有出現對應的 play 執行畫面，代表安裝成功了。&lt;br /&gt;
&lt;br /&gt;
4. 最後一步，到 user home 目錄下的 .bashrc ，用任何喜歡的編輯器開啟它之後，在最後加上 export PATH 的指令，可能會類似這樣：&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;export PATH=$PATH:/home/kevingo/play-1.2.4&lt;/b&gt;&lt;/span&gt;。最後的目錄端看你安裝 playframework 的目的地為何。&lt;br /&gt;
&lt;br /&gt;
如此一來就可以在 Ubuntu 下快樂的使用 Playframework 了。</description><link>http://kevingo75.blogspot.com/2012/11/ubuntu-1204-lts-playframework-amazon-ec2.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-8605223722627647034</guid><pubDate>Wed, 31 Oct 2012 15:26:00 +0000</pubDate><atom:updated>2012-10-31T23:26:42.938+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">amazon ec2</category><category domain="http://www.blogger.com/atom/ns#">cloud</category><title>申請 Amazon EC2 Cloud 主機，並利用 putty 登入(Step by Step, 圖多！)</title><description>最近將嘗試Amazon EC2的雲端主機服務，在這裡記錄一下過程，分享給大家。網路上也有不少文章有紀錄，不過有些介面和步驟略有不同。&lt;br /&gt;
&lt;br /&gt;
1. 前往 Amazon EC2 服務頁面，點選右方的 Sign Up Now 按鈕進行註冊動作：&lt;a href=&quot;http://aws.amazon.com/ec2/&quot;&gt;http://aws.amazon.com/ec2/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAL5l4VwroCYa5S9gSgM4dg5KC4Uu-BcACQI1_cCxV124HS3GBV9yFyJ007QY_Bik1SGVdGvXj-be2n-C4KEKmZmbs52tGebYL84zyVLpndOe0YBf5pWHLDS5AiqWi72H1s-2UGAhnJzR/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;376&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAL5l4VwroCYa5S9gSgM4dg5KC4Uu-BcACQI1_cCxV124HS3GBV9yFyJ007QY_Bik1SGVdGvXj-be2n-C4KEKmZmbs52tGebYL84zyVLpndOe0YBf5pWHLDS5AiqWi72H1s-2UGAhnJzR/s640/1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
2. 首先，如果是新用戶，選擇 &quot; I am a new user.&quot; ，同時輸入一個 E-Mail 帳號：&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyzs_I3En_UG0f1GVQ0Jkg8QsaCzTPTTSUHj5N6H9I8AShxr8YKzayzmBv5Qgs6C1rEtaeFUxMKmQVlCkcgEJ4qM2Vvk8iakOODwq_1Nm2iDGm8AHW0nbDZJW2xHSDUI5aY2LrIUtAUngZ/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;344&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyzs_I3En_UG0f1GVQ0Jkg8QsaCzTPTTSUHj5N6H9I8AShxr8YKzayzmBv5Qgs6C1rEtaeFUxMKmQVlCkcgEJ4qM2Vvk8iakOODwq_1Nm2iDGm8AHW0nbDZJW2xHSDUI5aY2LrIUtAUngZ/s640/2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;3. 接著輸入姓名、密碼：&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioXK5Q0kxhs-Eo-U5znkHe41-YoTl88Ggc1Z6fx76lclMzKsBCfklhDcyGL0moGqfWSSRbJ7_Wxh0pI1BJWkw-Gxw8h05liafe1iwtXBsvlMvX_YDFpLLt9wjLpJMcse09X5eIDy_GZ9gI/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioXK5Q0kxhs-Eo-U5znkHe41-YoTl88Ggc1Z6fx76lclMzKsBCfklhDcyGL0moGqfWSSRbJ7_Wxh0pI1BJWkw-Gxw8h05liafe1iwtXBsvlMvX_YDFpLLt9wjLpJMcse09X5eIDy_GZ9gI/s640/3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
4. 輸入其餘基本資訊：&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM7bFLnlUH-8ky2oYSUKIO4fvODtBsMITTpAXOHm-tfIjqMTVzeHa-XsZPR0S24gE52CtelXW4IIWOq0VWENtCloJqw7hZTi0n1nMkGSp1AdKqRRepIVdEmUZzth6QeIxGm6FLtF3OCWvq/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;586&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM7bFLnlUH-8ky2oYSUKIO4fvODtBsMITTpAXOHm-tfIjqMTVzeHa-XsZPR0S24gE52CtelXW4IIWOq0VWENtCloJqw7hZTi0n1nMkGSp1AdKqRRepIVdEmUZzth6QeIxGm6FLtF3OCWvq/s640/4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
5. 在這一步驟中，需要填入一張 valid 信用卡資訊。由於在使用 Amazon EC2 的服務時，如果你超過它免費方案的使用 quota 時，是需要收取費用的，信用卡就是這個用途。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbkmc3e3J3o4_UWq_7J1KVDCoKzL8NY97yTugunpYUM5rtRRDNbvbT9tysFB9b9p8spiDZ9NWeQVr_3NuK5vo6JQgYW_eJr_5xWk-W0TSKJmJGYPdbYyMbL6C2Q7rZ32kHN4f2IxBGiT91/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbkmc3e3J3o4_UWq_7J1KVDCoKzL8NY97yTugunpYUM5rtRRDNbvbT9tysFB9b9p8spiDZ9NWeQVr_3NuK5vo6JQgYW_eJr_5xWk-W0TSKJmJGYPdbYyMbL6C2Q7rZ32kHN4f2IxBGiT91/s640/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
6. 輸入一個電話號碼，進行驗證的用途。這一個步驟還蠻重要的，在這裡強烈建議用&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;家用電話，而不是用手機號碼。&lt;/b&gt;&lt;/span&gt;Amazon 會撥一通語音電話到你所填入的電話號碼中，會說一段英文，要你輸入下方的圖中的 pin 碼，才能完成驗證。不曉得是我的問題還是怎樣，用手機的話會收到語音電話，可是輸入的 pin 碼一直沒辦法通過驗證，而且輸入三次錯誤後，就要等12小時才能夠再次驗證 orz ... 換成市話就一切正常了，這是我的經驗，大家也可以試試看會不會發生這樣的情況。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSnx6Z61dT0vtS1Pi8jUsWLd94UEolCaDHDYNzDOEhSh1Gx2uXDCd4U1V-_eU2iBZcjlOVmhrxOw_7Y6k-Sc2mngpI_uQmyWemR6eGUiai95LZI18yp30MeTuQlRigKjax7ubJQnoiF9Ei/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSnx6Z61dT0vtS1Pi8jUsWLd94UEolCaDHDYNzDOEhSh1Gx2uXDCd4U1V-_eU2iBZcjlOVmhrxOw_7Y6k-Sc2mngpI_uQmyWemR6eGUiai95LZI18yp30MeTuQlRigKjax7ubJQnoiF9Ei/s640/6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
7. 按下步驟六的 Call Me Now ，就會出現 pin 碼，接著稍等一下就會收到語音電話，不用緊張，等它說完之後，就按下四位數的 pin 碼即可。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM7oN_Fr8La2wxC4jK1hKHFxLYDOHbJE_d5AvR0rEM7UEqvG3NgVI_YuVeqY9fScogi_B5jNN6724ifBElTdqPpfOhWH86HVARjrvfelTCMpoGD22C34t4_52z_TcX3OywO-uNUZZ7aLgg/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM7oN_Fr8La2wxC4jK1hKHFxLYDOHbJE_d5AvR0rEM7UEqvG3NgVI_YuVeqY9fScogi_B5jNN6724ifBElTdqPpfOhWH86HVARjrvfelTCMpoGD22C34t4_52z_TcX3OywO-uNUZZ7aLgg/s640/7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
8. 如果一切正確，就會看到下圖驗證成功的訊息。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBFgNk2SRmTnS0PSGoeV57Q8PhiIWdDS5Rb-Jni0PN-ux90WuqB3KzIEynt6XUvgXcBK1JLb01Rjy82pwu-IQYz0KVX4b9cEzokQRcsPQCggdGuYMgdHh26piD6rNVBr6UMPVYO3loH_jp/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBFgNk2SRmTnS0PSGoeV57Q8PhiIWdDS5Rb-Jni0PN-ux90WuqB3KzIEynt6XUvgXcBK1JLb01Rjy82pwu-IQYz0KVX4b9cEzokQRcsPQCggdGuYMgdHh26piD6rNVBr6UMPVYO3loH_jp/s640/8.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
9. 接著就會看到 Amazon 告訴你服務已經開通。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_2v3UOboIJA-9NmuLgmMT6GBAt9TIruptu0AjnpiLmtCISwfcoS2QcWb98tV6GK-M4Ysk1xYA2sPg75g3CsZsgqIvQGl9kLKhjHOZF5ydw4suVtRHWgemOQb0PPn0oxn8v68D1A_W6gdA/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_2v3UOboIJA-9NmuLgmMT6GBAt9TIruptu0AjnpiLmtCISwfcoS2QcWb98tV6GK-M4Ysk1xYA2sPg75g3CsZsgqIvQGl9kLKhjHOZF5ydw4suVtRHWgemOQb0PPn0oxn8v68D1A_W6gdA/s320/9.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
10. 連到 Amazon 服務的頁面：&lt;a href=&quot;https://console.aws.amazon.com/console/home&quot;&gt;https://console.aws.amazon.com/console/home&lt;/a&gt;。會看到有 EC2 的服務可選。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSEpC3GcitLjGBl9paZ1FgAVHuRqSAhgpzLMsEZV8liUWed1WpM_Mr7xhn2XFjZPG8CGDaEMOMx77ZNTOI3iZVbuU6dep1h4Le90nilhehtN66T9vYvZgA91wF1v1vP512breotwNqhkG4/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSEpC3GcitLjGBl9paZ1FgAVHuRqSAhgpzLMsEZV8liUWed1WpM_Mr7xhn2XFjZPG8CGDaEMOMx77ZNTOI3iZVbuU6dep1h4Le90nilhehtN66T9vYvZgA91wF1v1vP512breotwNqhkG4/s640/10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
11. 第一次進來之後，選擇&amp;nbsp;Launch&amp;nbsp;Instance，建立第一個雲端主機。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB87tATp872QP3Eh2VKqHEHQTNV7rL70yDt3NzAmpvZCXRYyrJMYUSLpFzBbzJhLBh_kpBOo16PbrBwtgjSwXUxiDgFveRVdtb7bWZku1xSAa3WVlt23qcuM53ImTWRwCtw4RWbidQGQQ8/s1600/11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB87tATp872QP3Eh2VKqHEHQTNV7rL70yDt3NzAmpvZCXRYyrJMYUSLpFzBbzJhLBh_kpBOo16PbrBwtgjSwXUxiDgFveRVdtb7bWZku1xSAa3WVlt23qcuM53ImTWRwCtw4RWbidQGQQ8/s640/11.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
12. 點進來之後，有三種選項可以幫助你建立一個 instance。不想要麻煩設定可以選擇 Quick Launch Wizard，幾個步驟就可以快速的幫你建立完畢。在這裡有許多作業系統可以選擇，有一些是免費的，在這裡我選的是 Ubuntu Server 12.04 LTS。同時，輸入一個名稱 (自己喜歡的即可)，特別要注意的是，在這個步驟要&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;下載一個 private key&lt;/b&gt;&lt;/span&gt;，也就是下方紅色框框的部分，先輸入這個 key 的檔名，接著按下 Download 的按鈕就會下載了，記得將這個 key 保存好，之後連線到這台機器時都需要用到這把 private key。下載完畢之後才能夠進行下一個步驟。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Iy5u9N-khNaJeDUozQFN1ph1-qrDSiM-exiW9EJDu7o5kKwLqjFUpkka_94at0tc154cscuqCP9jtRP5m5OI8Xk5o_sPLBSPUl0LvXW_XaV37ohtL2p-bc0H2oirrANGMgx4fSq_DXSS/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;386&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Iy5u9N-khNaJeDUozQFN1ph1-qrDSiM-exiW9EJDu7o5kKwLqjFUpkka_94at0tc154cscuqCP9jtRP5m5OI8Xk5o_sPLBSPUl0LvXW_XaV37ohtL2p-bc0H2oirrANGMgx4fSq_DXSS/s640/12.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
13. 接著都可以先不需要修改，按下 Launch 就可以囉。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQwc4lplRqVEsAju9J71gWoXLpsSvWDud0Mt5QThu3uBoHTCm7mwLbNV8fHYuwDDy_CgfvnNARSO-L8XgMU6kT-dv9IE-JkqlM-VWTMuKazU_VrS2YUFcIZoEmPt9Ps2g5bIwst28-iYlv/s1600/13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;382&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQwc4lplRqVEsAju9J71gWoXLpsSvWDud0Mt5QThu3uBoHTCm7mwLbNV8fHYuwDDy_CgfvnNARSO-L8XgMU6kT-dv9IE-JkqlM-VWTMuKazU_VrS2YUFcIZoEmPt9Ps2g5bIwst28-iYlv/s640/13.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
14. 看到類似的訊息就代表你所建立的 instance 已經在啟動中了。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrQ9sIOfdCVLcCs3pmA-fczBaFkciJjxinDekp0Ww1vOTM71R88RqBLkT7qfNgwS5DvePhLVHvlNMPlGGfVZ0Ppp_cXi0oLXXKKG4rnGPAfhlvBMzMOkY6O2e-GxJ6BKmfG5cgOtXrsPYy/s1600/14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;376&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrQ9sIOfdCVLcCs3pmA-fczBaFkciJjxinDekp0Ww1vOTM71R88RqBLkT7qfNgwS5DvePhLVHvlNMPlGGfVZ0Ppp_cXi0oLXXKKG4rnGPAfhlvBMzMOkY6O2e-GxJ6BKmfG5cgOtXrsPYy/s640/14.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
15. 接著點選左方的 Instances 按鈕，在右邊就會看到你所建立的 instance 已經啟動了！&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOiAoF50jgtMaTYHYHPstaaZ99U7wzClhXu7f-lFz6Pdgqj5Rv1oJcPpfUlUIPtdaGszK0j2SYuBgucxf5ypN6Yh5ixLvY81VmV4_x962GRBnaxZApSJ65nMpAlTpj7Ej5Kh2JHfZ_l9J9/s1600/15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOiAoF50jgtMaTYHYHPstaaZ99U7wzClhXu7f-lFz6Pdgqj5Rv1oJcPpfUlUIPtdaGszK0j2SYuBgucxf5ypN6Yh5ixLvY81VmV4_x962GRBnaxZApSJ65nMpAlTpj7Ej5Kh2JHfZ_l9J9/s640/15.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
16. 那要怎麼連線進去呢？點選該 instance 會看到下方有一些資訊，將 public DNS 的位置記好，這就是你用來連線進去的位置。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEFZ3qUQQ1JQ1T7biPlecsAnLXk3x2asMglZVHUchmTWMuwORAJQxRqL3cZb8DzlYtQPaWd8VVuphSjXRrqwgcbW_lOThIOFADjjRDxoRpuS6VWiLiU56EW3OR29dtISrpSXPIDrl2dVDk/s1600/16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;512&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEFZ3qUQQ1JQ1T7biPlecsAnLXk3x2asMglZVHUchmTWMuwORAJQxRqL3cZb8DzlYtQPaWd8VVuphSjXRrqwgcbW_lOThIOFADjjRDxoRpuS6VWiLiU56EW3OR29dtISrpSXPIDrl2dVDk/s640/16.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
17. 由於 Amazon EC2 預設提供的 private key 檔案是 pem ，要將其轉換成 putty 可以接受的 ppk 檔案才能利用 putty 連線進我們建立好的主機，所以在這裡要用一個叫做 puttygen 的工具來幫助我們轉換 private key。這個工具可以在此下載：&lt;a href=&quot;http://www.box.net/shared/rb7fogzgfe&quot;&gt;http://www.box.net/shared/rb7fogzgfe&lt;/a&gt;。下載完畢打開後，選擇 File -&amp;gt; Load private key，將剛剛下載的 pem 檔案讀進來，接著選擇軟體下方的 save private key，存成 ppk 檔案即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0dUlSwNuVsruYQDktE1n0Xlb4QmtyW4eiutZp7XGYHE1x9O8pBfiDu9vRJ9Q4-savK5AmpvHW08wy_Hf9RiUGHOajcncr_cwS0ugfVEHaB3QOKXVhQqKMFUt7jUXxwWAcM3PpZ3GP_P7/s1600/17.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE0dUlSwNuVsruYQDktE1n0Xlb4QmtyW4eiutZp7XGYHE1x9O8pBfiDu9vRJ9Q4-savK5AmpvHW08wy_Hf9RiUGHOajcncr_cwS0ugfVEHaB3QOKXVhQqKMFUt7jUXxwWAcM3PpZ3GP_P7/s640/17.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
18. 在使用 putty 連線時，選擇 connection -&amp;gt; SSH -&amp;gt; Auth，將剛剛轉換完畢的 ppk 檔案讀進來，接著在連線的網址中，輸入剛剛的 public DNC 就可以連線了。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IwRBO1MQLeW3h1C_nfnvS_MVcTCjG0mqO83hCRAmhE1UAYAerZZtUy1QfYBKUwz6kG_XSsynz9annbRrr0aHHDzZPQwL3yaudwMpWrozjsWQEE_wwt7pu00AF4E8RdAjZwTb1fgqaLfj/s1600/20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;618&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IwRBO1MQLeW3h1C_nfnvS_MVcTCjG0mqO83hCRAmhE1UAYAerZZtUy1QfYBKUwz6kG_XSsynz9annbRrr0aHHDzZPQwL3yaudwMpWrozjsWQEE_wwt7pu00AF4E8RdAjZwTb1fgqaLfj/s640/20.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
19. 連線進來後， Ubuntu 作業系統的預設帳號是 ubuntu，如果要轉換為 root，只要打指令 sudo su 就可以囉！恭喜你的雲端主機設定完畢！Enjoy it&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJsiTgmlOygjvo-yY2dAsPSPjhc_DYgrJaSTUJpX3VT65ovujvqElSPyjiVDy6faadBPsnEaux2u0nh9rYA5YBeuDMzM5_8pQWLMiu15Bv9T6ctyS3Yu3NKhhMrsqfnhNM4aFq93QV8Y4/s1600/18.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;382&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJsiTgmlOygjvo-yY2dAsPSPjhc_DYgrJaSTUJpX3VT65ovujvqElSPyjiVDy6faadBPsnEaux2u0nh9rYA5YBeuDMzM5_8pQWLMiu15Bv9T6ctyS3Yu3NKhhMrsqfnhNM4aFq93QV8Y4/s640/18.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/10/amazon-ec2-cloud-putty-step-by-step.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJAL5l4VwroCYa5S9gSgM4dg5KC4Uu-BcACQI1_cCxV124HS3GBV9yFyJ007QY_Bik1SGVdGvXj-be2n-C4KEKmZmbs52tGebYL84zyVLpndOe0YBf5pWHLDS5AiqWi72H1s-2UGAhnJzR/s72-c/1.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-4580107166729878191</guid><pubDate>Thu, 25 Oct 2012 14:43:00 +0000</pubDate><atom:updated>2012-10-25T22:43:31.381+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">amazon ec2</category><category domain="http://www.blogger.com/atom/ns#">cloud</category><category domain="http://www.blogger.com/atom/ns#">hosting</category><title>Amazon EC2 使用 Ubuntu 11.10 64bits 預設帳號與轉換成 root 方式</title><description>最近嘗試把專案 deploy 到 Amazon EC2，使用的作業系統是 Ubuntu 11.10 64bit 版本。預設的帳號是 &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;ubuntu&lt;/b&gt;&lt;/span&gt;，不需要輸入密碼。如果要轉換到 root ，只要在 bash 中輸入 &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;sudo su&lt;/span&gt;&lt;/b&gt; 指令即可。</description><link>http://kevingo75.blogspot.com/2012/10/amazon-ec2-ubuntu-1110-64bits-root.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-549724952186126153</guid><pubDate>Wed, 24 Oct 2012 03:12:00 +0000</pubDate><atom:updated>2012-10-24T11:12:28.472+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>設定 Eclipse 程式碼提示(Content assist auto activation)功能</title><description>一般的 IDE 大多都會有【程式碼提示】的功能，幫助開發者能夠快速的取得相關的屬性、方法，而不需要花腦袋去記憶。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgVXwWE3Dqrecjq33Fmn0UhlD2cSqglYZq8rWDRcuLwJoCmzs_dXXTxwEak1wLsmAoccrOVv7abw0SnNYh98h0amclUL5WriPRk3BWCr4k-7PXl1mRIjy5vy3NMsdKlIcOUXGvgp77m-zC/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgVXwWE3Dqrecjq33Fmn0UhlD2cSqglYZq8rWDRcuLwJoCmzs_dXXTxwEak1wLsmAoccrOVv7abw0SnNYh98h0amclUL5WriPRk3BWCr4k-7PXl1mRIjy5vy3NMsdKlIcOUXGvgp77m-zC/s400/%E6%9C%AA%E5%91%BD%E5%90%8D.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;在Eclipse上自然也有相同的功能，只是在預設值上，Eclipse只會針對使用者輸入 &lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&amp;nbsp;才會提示，而且提示的時候還會有些許的delay，如果不小心錯過了，需要用快速鍵【Alt + /】來重現。&lt;br /&gt;
&lt;br /&gt;
如果想要讓 Eclipse 不管輸入什麼英文字母都出現程式碼提示，可以透過以下的設定來達成：&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;進入【Window】-&amp;gt;【Preferences】-&amp;gt;【Java】-&amp;gt;【Editor】-&amp;gt;【Content Assist】，下方會看到【Auto Activation】的設定區塊。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5l73zxoRt5h-wSDbFGhwntz6gHWcmT1_U9iWpXhX0CjAFSFl9C7baTYrNintMcZX7IPlm2UgkT6rmYpLBq1KXyY21L33IMptTo_ayma1a3b9KQnNjyvuRw70XmtgcsXAWeh8PU8mJukMm/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;499&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5l73zxoRt5h-wSDbFGhwntz6gHWcmT1_U9iWpXhX0CjAFSFl9C7baTYrNintMcZX7IPlm2UgkT6rmYpLBq1KXyY21L33IMptTo_ayma1a3b9KQnNjyvuRw70XmtgcsXAWeh8PU8mJukMm/s640/%E6%9C%AA%E5%91%BD%E5%90%8D.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;在初始的設定上，Auto activation delay (ms) 是 200 ms，Auto activation triggers for Java 則是 &lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;在這裡，將 200ms 改成 &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;，然後下方的 . 改為&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt; .abcdefghijklmnopqrstuvwxyz&lt;/b&gt;&lt;/span&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
如此一來，之後每個字母都會有相對應的提示，啟動的速度也會加快許多了。&lt;br /&gt;
&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/10/eclipse-content-assist-auto-activation.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgVXwWE3Dqrecjq33Fmn0UhlD2cSqglYZq8rWDRcuLwJoCmzs_dXXTxwEak1wLsmAoccrOVv7abw0SnNYh98h0amclUL5WriPRk3BWCr4k-7PXl1mRIjy5vy3NMsdKlIcOUXGvgp77m-zC/s72-c/%E6%9C%AA%E5%91%BD%E5%90%8D.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-4755605444233518360</guid><pubDate>Mon, 15 Oct 2012 01:47:00 +0000</pubDate><atom:updated>2012-10-15T09:47:42.153+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>在 Ubuntu 下設定 path 環境變數</title><description>&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Go to home directory&lt;/li&gt;
&lt;li&gt;用編輯器開啟 .bashrc 檔案&lt;/li&gt;
&lt;li&gt;在文件最下方增加 export PATH=$PATH:&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;/xxx/yyy/zzz&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;存檔之後，設定即可生效&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
第三步驟中，紅色字部分即為欲設定的路徑位置。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://kevingo75.blogspot.com/2012/10/ubuntu-path.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3465773241812154956</guid><pubDate>Tue, 11 Sep 2012 05:47:00 +0000</pubDate><atom:updated>2012-09-11T13:47:01.806+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">twitter bootstrap</category><category domain="http://www.blogger.com/atom/ns#">ui</category><category domain="http://www.blogger.com/atom/ns#">web deisgn</category><title>Twitter Bootstrap 視覺化 UI 拖拉介面</title><description>Jetstrap 是一個針對 Twitter Bootstrap 的視覺化 UI 介面，你可以透過拖拉，將一些 Bootstrap 的基本元件組合成一個 HTML 頁面。左上方的按鈕也可以讓你 preview response design 在不同解析度下的一些成果。更改完畢之後，右上方的 Export 按鈕可以讓你很快的把這個頁面的 HTML Code 拿去用。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
如果對於從頭開始刻 HTML 覺得很苦手的話，試用看看也許可以省下一點工。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jetstrap.com/&quot;&gt;Jetstrap 服務&lt;/a&gt;：
&lt;a href=&quot;http://jetstrap.com/&quot;&gt;http://jetstrap.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDewc_PW4jMF1YthvcaQm-JadneRUS9WuhY7f5dFu9sxCOYUb7s0YRSSOp-b3bSPQVVJnTs4f3rGMPxNknxu6haPeEg4LEXo7uai_eWOAOtFByVtIBD32P9rq5a7eWC1lnMp5s93I8m1zx/s1600/jetstrap.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;462&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDewc_PW4jMF1YthvcaQm-JadneRUS9WuhY7f5dFu9sxCOYUb7s0YRSSOp-b3bSPQVVJnTs4f3rGMPxNknxu6haPeEg4LEXo7uai_eWOAOtFByVtIBD32P9rq5a7eWC1lnMp5s93I8m1zx/s640/jetstrap.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/09/twitter-bootstrap-ui.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDewc_PW4jMF1YthvcaQm-JadneRUS9WuhY7f5dFu9sxCOYUb7s0YRSSOp-b3bSPQVVJnTs4f3rGMPxNknxu6haPeEg4LEXo7uai_eWOAOtFByVtIBD32P9rq5a7eWC1lnMp5s93I8m1zx/s72-c/jetstrap.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-8314479275681355592</guid><pubDate>Mon, 20 Aug 2012 07:31:00 +0000</pubDate><atom:updated>2012-08-20T15:31:08.610+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">playframework</category><title>Playframework Dependencies Management</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
在 Playframework 中，dependencies 是由 &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;conf/dependencies.yml&lt;/b&gt;&lt;/span&gt; 檔案所管理。在這個檔案中，你可以設定相關的 dependencies 是來自不同的 repositories。像是在下圖中，我的 project 分別從 play 官方的 repository 吃了 play 和 fbgraph；另外其他的 dependencies 是吃我放在 local 的 jar file。在設定自己的 repositories 時，格式如下圖所示。&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
特別要注意的是，在 artifact 的部分，要放該 jar file 的絕對位置。像我就是放在該 project 下的 lib folder 中。
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/3401810.js?file=gistfile1.yml&quot;&gt;&lt;/script&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
在寫完 dependencies.yml 檔後，記得在 play command 中，輸入以下指令去安裝這些 dependencies 到你的專案中。
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/3401837.js?file=gistfile1.yml&quot;&gt;&lt;/script&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
如果你是用 ide 開發，請記得要再執行 ide 對應的指令，這樣你在 ide 中才能看到對應的 dependencies。像我是用 eclipse，就必須執行 
&lt;/div&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3401844.js?file=gistfile1.yml&quot;&gt;&lt;/script&gt;

&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/08/playframework-dependencies-management.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-6668373841408851903</guid><pubDate>Fri, 03 Aug 2012 10:02:00 +0000</pubDate><atom:updated>2012-08-03T18:02:14.938+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">heroku</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">MySQL</category><title>Heroku Project 中，取得mysql(clearDB)的位置與帳號密碼</title><description>在 Heroku 中，如果你用 MySQL 作為專案的資料庫，可以用 heroku config 指令來查看目前專案的一些設定檔：&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZj_PLseXOFyP97PHFjEKiY6Cw8eJ1h9IZ_45uVUJIulLpW-DjtLQX8lUj4V2xhGC1ycfR7SZog1WcF1Up730K1WcB8XmvcK5-AfBZJXZDxkWaPIkGugIDqGQCpKFAoy33OuOuwKBY0se4/s1600/Untitled.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;101&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZj_PLseXOFyP97PHFjEKiY6Cw8eJ1h9IZ_45uVUJIulLpW-DjtLQX8lUj4V2xhGC1ycfR7SZog1WcF1Up730K1WcB8XmvcK5-AfBZJXZDxkWaPIkGugIDqGQCpKFAoy33OuOuwKBY0se4/s640/Untitled.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
會有這樣的需求，是因為我想要用常用的 MySQL 管理工具(MySQL Workbench, MySQL Query Browser...etc)來管理我在 Heroku 上的資料庫。當你執行上述的指後，就可以看到該朱案的資料庫連線字串，其中上圖紅色的部分就是 MySQL DB 的位置，以我的專案來說，是放在 us-cdbr-east.cleardb.com 這裡。&lt;br /&gt;
&lt;br /&gt;
至於 username 和 password ，可以在資料庫 Dashboard 裡面的&amp;nbsp; Endpoint information 中得知。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL14wf1qoLJ5HMLEDODaZ-3hNklq3Qu4l6vE3h0xGXS33hP6GwaAffkRyl-gGwjGwncLhM2wRrJcu059V7ESoEEe7k9heNzCHKu2tqBSBj-Nut5O0-DYkteQh1ra3_WreijksEiWgXeBdP/s1600/44453.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL14wf1qoLJ5HMLEDODaZ-3hNklq3Qu4l6vE3h0xGXS33hP6GwaAffkRyl-gGwjGwncLhM2wRrJcu059V7ESoEEe7k9heNzCHKu2tqBSBj-Nut5O0-DYkteQh1ra3_WreijksEiWgXeBdP/s640/44453.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/08/heroku-project-mysqlcleardb.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZj_PLseXOFyP97PHFjEKiY6Cw8eJ1h9IZ_45uVUJIulLpW-DjtLQX8lUj4V2xhGC1ycfR7SZog1WcF1Up730K1WcB8XmvcK5-AfBZJXZDxkWaPIkGugIDqGQCpKFAoy33OuOuwKBY0se4/s72-c/Untitled.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-4550813970650167020</guid><pubDate>Fri, 27 Jul 2012 08:24:00 +0000</pubDate><atom:updated>2012-07-27T16:24:54.703+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">heroku</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">paas</category><category domain="http://www.blogger.com/atom/ns#">playframework</category><title>將git push heroku master時，發生no such app問題</title><description>最近在將 project 丟到 heroku 時，會發生 no such app 的問題。原因是我將 heroku 上的 app 更名後，會發生 remote 的名稱和目前的 master 不相符合。這時候可以按照下列的步驟解決。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;先把remote的git移除&lt;script src=&quot;https://gist.github.com/3186805.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;&lt;/li&gt;
&lt;li&gt;把目前的git repository加入&lt;script src=&quot;https://gist.github.com/3186816.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;
其中的xxxx是你的project名稱，可以在heroku的後台找到
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAgjpHfL513pQd_4lYLlQXZYsVqGHWyP6vQDglD2Eia5HyfYQnhztGLProHa7V54gOVlXil7oTj8TFajd8yTdG-bBG-5vW0qOEDwVQFPYJ5tlpal9JKjq3CDZMsPOsOAnyrcL1yjzQhE26/s1600/11111.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;347&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAgjpHfL513pQd_4lYLlQXZYsVqGHWyP6vQDglD2Eia5HyfYQnhztGLProHa7V54gOVlXil7oTj8TFajd8yTdG-bBG-5vW0qOEDwVQFPYJ5tlpal9JKjq3CDZMsPOsOAnyrcL1yjzQhE26/s400/11111.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;把新的 master push 上去&lt;script src=&quot;https://gist.github.com/3186824.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><link>http://kevingo75.blogspot.com/2012/07/git-push-heroku-masterno-such-app.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAgjpHfL513pQd_4lYLlQXZYsVqGHWyP6vQDglD2Eia5HyfYQnhztGLProHa7V54gOVlXil7oTj8TFajd8yTdG-bBG-5vW0qOEDwVQFPYJ5tlpal9JKjq3CDZMsPOsOAnyrcL1yjzQhE26/s72-c/11111.png" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-4773726359879242294</guid><pubDate>Fri, 29 Jun 2012 15:19:00 +0000</pubDate><atom:updated>2012-06-29T23:27:18.722+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">heroku</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">playframework</category><title>Deploy Playframework application on Heroku - using ClearDB(MySQL)</title><description>最近在把一個用 Playframework 開發的 application deploy 到 Heroku，並且後端資料庫想要使用 MySQL ，在部屬的過程中，遇到一些小問題，不過也順利解決了，把整個步驟記錄下來。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;
&lt;b&gt;Deploy Playframework application on Heroku&lt;/b&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;下載 Heroku Clinet Command line tools &lt;a href=&quot;http://toolbelt.herokuapp.com/windows/download&quot;&gt;http://toolbelt.herokuapp.com/windows/download&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;在你的 playframework app 下建立 git repo，並且 add file and commit：
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3018448.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;

&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;在Heroku上建立一個新的app：&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/3018457.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;
將project push到Heroku上：&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/3018462.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;
&lt;div style=&quot;color: red;&quot;&gt;
&lt;b&gt;設定 Heroku 上的MySQL
&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;這裡使用的是 ClearDB MySQL Database，首先要先去把這個 add-on 給啟用：&lt;/li&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd8pWu0AP29P_kWoqMU6CfQsdRKhlbQV51i_-C_bVn0pkKH7vPakb7WVO5pFIGNO_66bC1Y3aKwg8IYGDvL8yWLGc7ZQOeFaedNB6VxBqr1cJmOR-LFFJoOfCk0W9PMj_8S1IH-VO8WlTu/s1600/Untitled.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd8pWu0AP29P_kWoqMU6CfQsdRKhlbQV51i_-C_bVn0pkKH7vPakb7WVO5pFIGNO_66bC1Y3aKwg8IYGDvL8yWLGc7ZQOeFaedNB6VxBqr1cJmOR-LFFJoOfCk0W9PMj_8S1IH-VO8WlTu/s400/Untitled.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;li&gt;
接著，在 play app 中的 application.conf 中，設定資料庫的連線部分：&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/3018539.js?file=gistfile1.txt&quot;&gt;
&lt;/script&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;接著重新把專案 push 到 Heroku 上（上述的2~4步驟），應該就會正確吃到MySQL了！&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;</description><link>http://kevingo75.blogspot.com/2012/06/deploy-playframework-application-on.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd8pWu0AP29P_kWoqMU6CfQsdRKhlbQV51i_-C_bVn0pkKH7vPakb7WVO5pFIGNO_66bC1Y3aKwg8IYGDvL8yWLGc7ZQOeFaedNB6VxBqr1cJmOR-LFFJoOfCk0W9PMj_8S1IH-VO8WlTu/s72-c/Untitled.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-7853694089746552881</guid><pubDate>Thu, 14 Jun 2012 07:44:00 +0000</pubDate><atom:updated>2012-06-14T15:45:23.886+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">程式設計</category><title>在JPA中，將createNativeQuery的結果轉換成其他物件</title><description>在JPA中，當你使用createNativeQuery去下SQL語法時，你可能會用getResultList來取得查詢出來的結果：
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/2928730.js?file=gistfile1.java&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
但是當你執行時，會出現無法轉換的錯誤：&lt;b style=&quot;color: red;&quot;&gt;ClassCastException occured : [Ljava.lang.Object; cannot be cast to models.Post&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;這時候你可以在執行createNativeQuery時，給定第二個參數，用來說明要把這次的查詢轉換成某個物件，以上面的範例來說，你可以這樣寫：
&lt;script src=&quot;https://gist.github.com/2928776.js?file=gistfile1.java&quot;&gt;
&lt;/script&gt;

&lt;br /&gt;
回頭看一下官方的API，當中有特別提到這兩個不同方法的用途，在你執行update或delete時，就用傳sql字串的方式，其他需要作物件轉換的，就用第二種方法：&lt;br /&gt;
&lt;br /&gt;
Query createNativeQuery(String sqlString)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Create an instance of Query for executing a native SQL statement, e.g., &lt;b style=&quot;color: red;&quot;&gt;for update or delete&lt;/b&gt;. &lt;/li&gt;
&lt;/ul&gt;
Query createNativeQuery(String sqlString, Class resultClass)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Create an instance of Query for executing a native SQL query.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
【相關閱讀】&lt;br /&gt;
&lt;a href=&quot;http://docs.oracle.com/javaee/5/api/javax/persistence/EntityManager.html#createNativeQuery%28java.lang.String%29&quot;&gt;EntityManager API&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;</description><link>http://kevingo75.blogspot.com/2012/06/jpacreatenativequery.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3689461853814262337</guid><pubDate>Tue, 29 May 2012 15:29:00 +0000</pubDate><atom:updated>2012-05-29T23:30:14.780+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Social Network</category><category domain="http://www.blogger.com/atom/ns#">創業</category><category domain="http://www.blogger.com/atom/ns#">網站</category><category domain="http://www.blogger.com/atom/ns#">電腦</category><title>五種 Social Media Startups 獲利的 Business Model</title><description>偶然看到一篇【&lt;a href=&quot;http://mashable.com/2009/07/14/social-media-business-models/&quot;&gt;5 Business Models for Social Media Startups&lt;/a&gt;】的文章，稍微整理如下。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: large;&quot;&gt;&lt;b&gt;Freemium Model&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://5.mshcdn.com/wp-content/uploads/2009/07/freemium.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;384&quot; src=&quot;http://5.mshcdn.com/wp-content/uploads/2009/07/freemium.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
基本版的服務是免費的，但是如果想要進階功能，就要額外收費。採用此 model 的服務必須要思考，【有什麼誘因】可以讓使用者從免費版升級到進階付費版。如果免費版就可以提供大部分目標客群所需要的功能，那付費的比例就會很低了。&lt;br /&gt;
&lt;br /&gt;
原文中指出使用這種模式的服務有：UserVoice、Flickr、LinkedIn 和 PollDaddy。其中，UserVoice的使用者有16,652人(至2009/05)，付費的比例大約是5%。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: large;&quot;&gt;&lt;b&gt;Affiliate Model&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://8.mshcdn.com/wp-content/uploads/2009/07/affiliate.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;198&quot; src=&quot;http://8.mshcdn.com/wp-content/uploads/2009/07/affiliate.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Affiliate Model 指的是經銷商透過盟友的網站連結過去，則盟友就可以依照轉介過去的人數或成交金額進行收費(抽成)。換句話說，當你的網站或服務已經吸引了許多人，就可以藉由賣你的流量或Click來收費。有一些知名的部落客，也是採用這樣的方法。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: large;&quot;&gt;&lt;b&gt;Subscription Model&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://5.mshcdn.com/wp-content/uploads/2009/07/subscription.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;http://5.mshcdn.com/wp-content/uploads/2009/07/subscription.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Subscription Model 下，你的功能是透過讓使用者支付月費或年費來存取。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: large;&quot;&gt;&lt;b&gt;Virtual Foods Model&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://5.mshcdn.com/wp-content/uploads/2009/07/virtual-goods.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;352&quot; src=&quot;http://5.mshcdn.com/wp-content/uploads/2009/07/virtual-goods.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
藉由販售虛擬商品來獲利，包括遊戲中的武器、成就、點數、禮物...等等。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Advertising Model&lt;/span&gt;&lt;/b&gt;

&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizJBbBgNCU45jkVrXIawoUqBZREInAbHo_gpQL9kn7fEx2Fiout8W7Vp0z6soWBI_0htt9GRUgJYqk7FK9PVd665wkuU13YQPmrYWByYkB2e8RBFOy9tF7cXNtyp-UwkawhrxnkDIfrCvC/s1600/advertising.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizJBbBgNCU45jkVrXIawoUqBZREInAbHo_gpQL9kn7fEx2Fiout8W7Vp0z6soWBI_0htt9GRUgJYqk7FK9PVd665wkuU13YQPmrYWByYkB2e8RBFOy9tF7cXNtyp-UwkawhrxnkDIfrCvC/s400/advertising.jpg&quot; width=&quot;1&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
服務或網站透過廣告來獲利。通常來說，網站流量越高，獲利越高。&lt;br /&gt;
&lt;br /&gt;
【相關閱讀】&lt;br /&gt;
&lt;a href=&quot;http://mashable.com/2009/07/14/social-media-business-models/&quot;&gt;5 Business Models for Social Media Startups&lt;/a&gt;</description><link>http://kevingo75.blogspot.com/2012/05/social-media-startups-business-model.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizJBbBgNCU45jkVrXIawoUqBZREInAbHo_gpQL9kn7fEx2Fiout8W7Vp0z6soWBI_0htt9GRUgJYqk7FK9PVd665wkuU13YQPmrYWByYkB2e8RBFOy9tF7cXNtyp-UwkawhrxnkDIfrCvC/s72-c/advertising.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-9220182509986261640</guid><pubDate>Tue, 10 Apr 2012 01:51:00 +0000</pubDate><atom:updated>2012-04-10T09:51:09.590+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">軟體工程</category><title>軟體品質的三個面向</title><description>根據 David Chappell 在 &lt;a href=&quot;http://davidchappell.com/writing/white_papers/The_Three_Aspects_of_Software_Quality_v1.0-Chappell.pdf&quot;&gt;The Three Aspects of Software Quality: Functional, Structural, and Process&lt;/a&gt; 中指出，軟體品質可以用三個面向來檢視：Functional、Structural 和 Process，而這三個面向分別會有對應的群體來關注：User、Developer、Sponsor。&lt;br /&gt;
&lt;br /&gt;
Functional 面的軟體品質指的是軟體如何達到 User 的要求，分別有下列四個維度來描述：&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The software meets the specified requirements (軟體達成特定的需求)&lt;/li&gt;
&lt;li&gt;It has few defects (軟體的缺陷很少)&lt;/li&gt;
&lt;li&gt;It has reasonable performance (軟體具有良好的性能)&lt;/li&gt;
&lt;li&gt;It is easy to learn and use (軟體很容易學習及使用)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Structural 面向的軟體品質指的是軟體本身在結構上是否被良好的組織，通常 developers 會較為關注此面相。分別由以下維度來描述：&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Code testability (程式碼的可測試性)&lt;/li&gt;
&lt;li&gt;Code maintainability (程式碼的可維護性)&lt;/li&gt;
&lt;li&gt;Code understandability (程式碼的可理解性)&lt;/li&gt;
&lt;li&gt;Code efficiency - does it manage resources efficiently? (程式碼是否能夠有效率的去管理資源)&lt;/li&gt;
&lt;li&gt;Code security - does it prevent common security threats? (程式碼是否能夠避免常見的安全疑慮)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Process 面向的軟體品質具有下列幾個維度：&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;The software meets delivery dates (軟體如期產出)&lt;/li&gt;
&lt;li&gt;It meets budgets (軟體開發成本控制在預算內)&lt;/li&gt;
&lt;li&gt;A repeatable development process is in place, one that reliably delivers quality software (軟體開發的過程是可重複的，藉此提供高品質的軟體)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
【相關閱讀】&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.infoq.com/news/2012/04/An-Introduction-Software-Quality&quot;&gt;An Introduction to Software Quality&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</description><link>http://kevingo75.blogspot.com/2012/04/blog-post.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3283108721070595678</guid><pubDate>Wed, 28 Mar 2012 06:20:00 +0000</pubDate><atom:updated>2012-03-28T14:20:39.849+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">MySQL</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">tomcat</category><title>Tomcat 出現 JDBC Driver has been forcibly unregistered 錯誤</title><description>在deploy application的時候，偶爾會遇到 &quot;SEVERE: A web application registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.&quot; 這樣子的錯誤訊息。 &lt;br /&gt;
&lt;br /&gt;
查了一些資料後，發現在Tomcat 6.0.24之後增加了防止memory leak的feature，有幾個作法可以避免：&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;忽略他&lt;/li&gt;
&lt;li&gt;使用6.0.23之前的版本&lt;/li&gt;
&lt;li&gt;將 JDBC Driver 的 library 放到 tomcat 下的 lib 目錄&lt;/li&gt;
&lt;li&gt;繼承 BasicDataSource，自己 close connection&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/2224171.js?file=gistfile1.java&quot;&gt;
&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
【相關閱讀】&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/3320400/to-prevent-a-memory-leak-the-jdbc-driver-has-been-forcibly-unregistered&quot;&gt;To prevent a memory leak, the JDBC Driver has been forcibly unregistered&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://wiki.apache.org/tomcat/MemoryLeakProtection&quot;&gt;Memory Leak Protection&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/2940988/mysql-create-memory-leak-in-tomcat&quot;&gt;MySQL create memory leak in Tomcat
&lt;/a&gt;</description><link>http://kevingo75.blogspot.com/2012/03/tomcat-jdbc-driver-has-been-forcibly.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7587710935479412692.post-3566499371111006721</guid><pubDate>Fri, 23 Mar 2012 09:21:00 +0000</pubDate><atom:updated>2012-03-23T17:21:51.512+08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">spring framework</category><category domain="http://www.blogger.com/atom/ns#">程式設計</category><title>Spring Bean Scope 學習</title><description>在Spring中定義一個Bean時，可以針對其scope加以設定。在新版的Spring中，共有五種不同的scope可以設定，分別為：&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;singleton：在Spring IoC Container，該bean只會有&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;單一實例&lt;/span&gt;&lt;/b&gt;(a single instance)，此為Spring預設值&lt;/li&gt;
&lt;li&gt;prototype：在Spring IoC Container中，該bean可以有&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;多個實例&lt;/b&gt;&lt;/span&gt;(any number of object instances)&lt;/li&gt;
&lt;li&gt;request：&amp;nbsp;在每一次的HTTP Request，spring container會根據loginAction bean的定義來建立一個全新的instance，而且僅在目前的request中有效，所以可以放心的去更改instance的內部狀態，請求結束，request scope的bean instance會被destroy&lt;/li&gt;
&lt;li&gt;session：針對某個HTTP Session，spring container會根據userPreference bean的定義來建立一個全新的instance，同樣的，和request scope一樣，可以放心的去更改instance內部狀態。&lt;/li&gt;
&lt;li&gt;global-session：僅在portlet為基礎的Web應用下有作用。Porlet的規範中定義了global session的概念。&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
在定義scope時，會在bean中定義如下：
&lt;/div&gt;
&lt;div&gt;
&amp;lt;bean id=&quot;helloWorld&quot; class=&quot;HelloWorld&quot; &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;scope=&quot;singleton&quot;&lt;/span&gt;&lt;/b&gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
當scope設定為singleton時，整個container只會有一個instance，所以下方的obj和obj1都會是同一個instance。&lt;br /&gt;
&lt;code&gt;
      ApplicationContext context = new ClassPathXmlApplicationContext(&quot;Bean.xml&quot;);&lt;br /&gt;
      HelloWorld obj = (HelloWorld) context.getBean(&quot;helloWorld&quot;);&lt;br /&gt;
      obj.setMessage(&quot;hello&quot;);&lt;br /&gt;
      obj.getMessage();&lt;br /&gt;
      HelloWorld obj1 = (HelloWorld) context.getBean(&quot;helloWorld&quot;);&lt;br /&gt;
      obj1.getMessage();&lt;br /&gt;
&lt;/code&gt;
&lt;br /&gt;
&lt;div&gt;
&amp;lt;bean id=&quot;helloWorld&quot; class=&quot;HelloWorld&quot; &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;scope=&quot;prototype&quot;&lt;/span&gt;&lt;/b&gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
如果設定為prototype時，obj和obj1將會是不同的instances，可以分別進行操作。在這裡，singleton的單一instance是用id來進行識別，不同id、相同class時，還是可以有多個instances(getBean傳入不同的id即可)。&lt;br /&gt;
&lt;br /&gt;
request、session和global-session三種scope只能在web環境中使用，如果在非web環境設定，會出現【No Scope registered for scope &#39;request&#39;】的錯誤。&lt;br /&gt;
&lt;br /&gt;</description><link>http://kevingo75.blogspot.com/2012/03/spring-bean-scope.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item></channel></rss>