2011年9月28日 星期三

[筆記] Building social networking service with DIASPORA* on Heroku

_2011-09-29_12

Looks familiar? It's not Google+. It's DIASPORA. An open source project that implements a distributed social networking service. This project was announced on APRIL 24, 2010 (Just right after Facebook f8 2010 that is at APRIL 21). Alpha version was released at NOV 23, 2010 (two days before my birthday :P). 

According to this, Mark Zuckerbug also donated to it just because it's a cool idea.

It's built on Ruby on rails. So it might be not so difficult to port it to Heroku platform which is a nice RoR host (althrough it still took me some time). It might be easier than build from scratch on a Linux. 

I'm a newbie to these two (Heroku and DIASPORA). I'm also not familar with RoR. Here records steps I tried. 

create an application on heroku

First, you need to create an application on Heroku. There are several platform stack on Heroku. Cedar stack might be the newest and most powerful one. It supports several languages and frameworks. And It also makes it very easy to deploy RoR applications. 

You need to install heroku CLI before creating an application. And use "heroku login" to login to your heroku account.

Run the following command to create a new cedar application (assume application name is "mysocialy") --

heroku create --stack cedar mysocialy

After the application created, you'll have a url "http://mysocialy.herokuapp.com/" for your site. And a git repository: git@heroku.com:mysocialy.git

import source codes

Get DIASPORA* source codes from git hub:

git clone git://github.com/diaspora/diaspora.git

Get your source codes from Heroku git repository (you'll get an empty folder):

git clone git@heroku.com:mysocialy.git

If you have trouble to download from Heroku. Try to use "heroku keys:add" to add your ssh public key and try again.

Copy all files except ".git" folder from "diaspora" to "mysocialy".

Initial configuration

Make new configuration files from example.

cd config

mv application.yml.example application.yml  

mv database.yml.example database.yml

Edit application.yml. Make "pod_url" to your host. In this case:

pod_url: "http://mysocialy.herokuapp.com/"

Deploy codes

Add and commit files:

git add .

git commit -am 'initial import'

Push them to Heroku

git push origin master

The coolest thing that Heroku does is that it makes deploy codes so easy. All you need to do is to push your codes to its git repository. And it could also install all related modules for you (that is configured in Gemfile). Super easy.

Ok, I must admit that I lie a little bit. There might be some problems. After I pushes all codes to Heroku, I found there is an error that it couldn't find 'pg' (postgresSQL). Looks like it does not install into gem.

I found the answer that it might be problem with gem version. Need to run "bundle install" at local.  This will generate a new Gemfile.lock. Push this new file to Heroku might solve this problem

Ok, that's all?

Not sure if I missed anything (I might). Anyway, what I did is alive at "http://mysocialy.herokuapp.com/".

2011年9月26日 星期一

Social Network的 人、事、時、地、物

我們的生活周遭不外乎就是以人、事、時、地、物 所構成, 人與人之間的互動, 事件的發生 等等

每個Social Network Service正是在想辦法把我們的生活的縮影給數位化, 網路化

  1. 人: Personal profile, Friends, Lists, Group....虛擬著人與人之間互動的關係
  2. 事: What's on your mind? What's happening? 什麼事情即將發生或發生過(events)
  3. 時: 每個事件, 動作都會帶著時間
  4. 地: Check in是沒意義的動作, 只是好玩, 但如果事件或想法帶著地點就不同了, 那代表事情的發生地點, 或是你在啥地方激發了你的想法
  5. 物: 吃食物, 看電影, 聽音樂, 讀一本書...我們時時刻刻無不跟東西在互動

Google+對Social network的解答是隱私權(Circle), 是分享(Reshare, auto upload), 是溝通(Hangout), 但Facebook卻是從人出發(Profile, Timeline, 最早由Profile), 到Open Graph (與物的互動), 想盡辦法縮影我們的生活, 雖然有很多爭議點, 我認為, 現階段G+還是無法抗衡, 比較起來, Facebook目前還是比Google懂社群 (純個人意見抒發)

[筆記] Translate open graph activity

  1. Go to Facebook developer : https://developers.facebook.com/apps
  2. Select your app
  3. Click "Edit Setting"
  4. Choose "Translate your app" at left hand side
  5. You'll see a form as following. Select your language and translate all messages:

_2011-09-26_6

2011年9月25日 星期日

[筆記][測試] Facebook Open graph + Heroku + node.js

Open graph的確是個好物, 雖然說早在去年的f8就已經推出了, 但現在更加完備了, 其實也等不及看會有啥應用推出了, 當然自己也想來玩看看,  本想照Tutorial依樣畫葫蘆抄一個體驗看看, 又覺這樣太無聊, 又想說試看看heroku + node.js, 沒真的玩過node.js, 就拿這題目試試

今天剛好在Facebook上講到拉麵, 所以就拿我最愛吃的拉麵來當題目了.. :P

web.js和兩個views(index.ejs, men.js)的sources放在這

實作筆記:

  1. Tutorial裡的範例是拿Heroku + PHP, 但其實這跟拿哪一種來實作沒太大差異, 裡面的範例幾乎全部都是javascript辦到的, 所以就算把範例放到其他平台也適用
  2. Tutorial裡的範例比較靜態, 全部實作在html內就好, 我把它改成"/ramen/id"當一個物件, 但每一個物件都還是透過"men.ejs"去render
  3. heroku提供的node.js連結Facebook的範本是透過server side的everyauth+facebook-client, 我把這些都拿掉, 純用Facebook javascript api
  4. 在web.js裡實作兩個uri, "/" (index.ejs) 和 "/ramen/id" (men.ejs), 拉麵資料由web.js在render時傳給template, 目前先寫死
  5. Object debugger是蠻好用的東西, meta data寫錯一直post不出去, 剛開始沒用這抓錯還真不知道錯哪
  6. Social plugin的activity feed似乎不包含自己的

最後在Timeline上呈現的樣子:

用Graph API取得自己的Activities:

https://graph.facebook.com/me/[name_space]:[action_type]/ramen

ex. https://graph.facebook.com/me/soulogramen:eat/ramen

 

 

test

test

2011年9月22日 星期四

在Heroku上建立一個以Node.js開發的Facebook應用程式

這篇算筆記, 有可能會有一些失落環節在, 主要從create Facebook application到可以在local端執行

Facebook這月稍早時跟Heroku合作, 讓建立一個Facebook應用程式(含後端)更加方便: http://developers.facebook.com/blog/post/558/ (有些步驟可以從這看)

我選了Node.js當做開發的平台, 以下就是我的步驟:

建立Facebook application

首先到Facebook application page https://developers.facebook.com/apps/ 建立一個新的應用程式

跟以往有點不太一樣的是, 在Application settings裡面多了一個"Cloud Services" -

_2011-09-21_4

目前只有Heroku可以選, 我猜以後搞不好會有更多合作對象吧

選了Provider之後, 接下來就要選擇平台, 目前有PHP, Python, Ruby, Node.js可選, 選擇算蠻多的了, 這邊選Node.js

_2011-09-21_4

經過一些有的沒的之後, 就會有這畫面, 這邊已經完成這個應用程式的基本雛形了

_2011-09-21_4

設定你的heroku應用程式

到 https://api.heroku.com/myapps 去設定你的應用程式, 在這邊你可以修改應用程式名稱, 不過比較麻煩的是, 這邊的修改並不會同步回Facebok, 因此修改後還是需要回Facebook去更改相關設定:

_2011-09-21_4

在你的電腦執行

一般在程式沒完成前大多都不會想直接佈署上去, 能在自己電腦先執行驗證過是比較容易抓蟲的

以下是先需要安裝的

heroku command line -

heroku是用gem安裝的, 所以安裝前要先確認你電腦有沒安裝Ruby, heroku安裝方法很簡單, 只要執行 "gem install heroku"

安裝好後先用"heroku keys"看看有沒存在的key, 有的話可能會讓之後要用git抓資料有問題, 有的話用"heoku keys:remove"先移除, 這樣login會產生新的public key

用"heroku login"登入heroku, 第一次使用可能會要求產生public key

登入後就可以用"git clone git@heroku.com:ff8.git"抓下原始碼(ff8是heroku application name)

node.js -

這當然是必須安裝的(在這例子), 如果是在mac上, 又是brew的使用者, 那只要用"brew install node"即可

npm (node package manager) -

安裝方式很簡單, 只要"curl http://npmjs.org/install.sh | sh"

安裝好後, 在git clone下來的目錄下"npm install", 它自然會裝好所有所需的package

foreman -

文件裡面有建議裝, 不過由於這範例只是一個單純的web, 並沒其他worker, 可以不裝

 

設定Facebook application

因為要在本地端執行而不是heroku的雲, 所以要把url都指向本地端, 像這樣:

_2011-09-23_5
設定環境變數

export FACEBOOK_APP_ID=122348222122778

export FACEBOOK_SECRET=1ba1beed9f7b5be9192bf4540c231234

export PORT=5000

(我跑在5000)

如果使用foreman, 就把這些寫在.env中

 

執行

"node web.js"就可以將server跑起來(或是foreman start), 然後到http://localhost:5000/就可以看到結果 

My first "Timeline"

_2011-09-23_4
_2011-09-23_4

Facebook今天發表的Timeline真是令人興奮的功能呀

現在應該再也沒人說很難用Facebook當日記了(雖然我講日記這概念講很久都沒去實現他)...

剛剛我的Timeline也啟用了, 這真的會讓我花很多時間在上面的東西呀...

_2011-09-23_4

連Game都可以有Timeline... XD

開箱 : Razer Black Widow機械鍵盤... Mac layout!!!!

距離上次用機械鍵盤的時間大概應該有十幾年的時間了, 最近一直很想念那種敲擊鍵盤清脆的聲音...身為一個電腦從業工作者, 那種聲音才真是有爽度呀~~

自從換了Mac mini用之後, 一直想物色一個機械鍵盤, 不過無奈是, 這類的產品實在很少, Mac的藍芽鍵盤雖然很有科技感, 但畢竟缺了那種清脆的聲音還是差很多....而且台灣似乎很少有進這類的鍵盤, 後來在Razer的台灣網站上發現可以訂購Black Widow的mac layout版本, 後來就衝動的下手下去囉

本以為, 因為是台灣有進貨, 所以可以在台灣網站訂購的到, 但後來一看出貨訂單, 居然是用FedEx從新加坡出貨過來, 而且並沒跟我多收運費

沒多收運費並不表示沒另外額外的費用, 當貨物到了偉大的中華民國海關時, FedEx通知我要報關, 這...才一件鍵盤耶, 還要繳一百多塊的關稅, 沒辦法, 只好給他了, 又這樣多拖了一天, 今天終於拿到了

不過事情也沒那麼簡單, 今天回家去管理室看不到我的包裹, 跟管理員北北溝通半天, 發現原來他把英文住址搞錯成鄰居的, 呃...15和16是阿拉伯數字不是英文, 還搞錯, 反正, 最後還是拿到我的包裹:

P1060453

打開郵包驗名真身:

P1060454

確定一下, 真的是mac的:

P1060455

看到這兩個鍵, 沒錯了啦!!

P1060460

全身再照一次:

P1060458
 

這鍵盤看似黑壓壓的, 好像很純樸, 不過實際上相當沉, 質感也不錯, 敲起來相當的清脆, 一開始本來還用不太習慣, 因為鍵的大小間距跟我之前那個有點差別, 不過在打這篇開箱文的同時, 越來越習慣, 打起來就飛快了~~~真過癮... ^^

雖然沒注音標示, 我也第一次打全英文的鍵盤, 不過, 發現我也不太需要那標示, 打起來還蠻順手的, 鍵位很好拿捏

設定畫面很單純:

_2011-09-22_9

應該可以設定不少巨集吧, 等我想要玩Game時再來研究好了

2011年9月2日 星期五

很久沒寫開箱文 - ASUS RT-N56U

由於之前用的EdiMax BR-6424N實在是爛到有剩, 不時的當機, WiFi突然連不上internet, 甚至在我去美國出差期間還發生了整台設定被reset, 氣都氣死了, 所以心一橫, 買下了這台ASUS RT-N56U, PCHome 24HR購物真是邪惡, 半夜下單, 晚上回來我就去管理室把它拿回來了

外包裝 - 

Imag0164
Imag0165

內包裝 - 

Imag0166

會買這台, 有很大一部分的原因是被外型所吸引, 隱藏天線, 平面設計且有點華麗的菱形格紋表面, 感覺就是想當精品賣, 但說實在的, 台灣廠商都差不多, 做半套, 這包裝實在沒有啥精品的感覺, 一拿到讓我的期待少一大半

Imag0167

4LAN 1WAN還算普通, 但兩個USB就比較少見了

Imag0168
Imag0169

這就是它的外觀了, 還蠻好看的, 跟原先那台那傳統的鳥樣當然差很多啦!

不過光好看也沒用, 實際效能好才有用, 剛剛把它設定好, Wifi部分因為同時支援了2.4GHz和5GHz, 可以搜尋到兩台, 用了mac mini, iPhone4 (iOS5), iPad2 (iOS5), 還有一支Android phone去測, 只有iPhone4掃不到5GHz的(!!!), 連網頁都還順利沒啥特別感覺, 倒是拿iPad2連5GHz看PPTV和Youtube, 似乎挺順暢的呀, 也沒啥loading的等待時間

才開始用, 沒辦法評論這台是不是真有其價值, 不過也好久沒寫開箱文了.... :P