2014年6月26日 星期四

[Go] Docker x Golang x OSX

稍微完了一下Golang之後寫了個TCP的小程式,就順便來玩玩最近蠻夯的Docker

跟寫Go的時候比起來,真的是遇到不少挫折XD

1.Install

到 Docker ( http://www.docker.com/ ) 找到OSX的版本下載安裝就完成了

2.Run

這裡我什麼都不會,所以我直接使用Google提供的Image\
google / golang ( https://registry.hub.docker.com/u/google/golang/ )


先在Go的專案資料夾底下建立一個叫做Dockerfile的檔案
裡面鍵入
FROM google/golang

WORKDIR /gopath/src/app
ADD . /gopath/src/app/
RUN go get app

CMD []
ENTRYPOINT ["/gopath/bin/app"]
在終端機中移到專案資料夾下執行
docker build -t my/app .
這樣就成功產生了一個image

接著把剛剛產生的image建立起來
docker run -t -p 8080:8080 my/app
理論上,這樣應該就大功告成了

But,有這麼單純就好了,嘗試連接localhost:8080會發現沒辦法連到程式
這裡我弄了好久,最後發現在OSX上Docker是跑在VM上的
我們只有在run的時候把Docker跟程式的Port接上
但是在OSX下還有一層VM,接下來要做的就是把VM的Port接上

先停止boot2docker的運作
boot2docker stop
接著執行
VBoxManage modifyvm "boot2docker-vm" --natpf1 "guestnginx,tcp,,8080,,8080"
在運作boot2docker
boot2docker start
再度嘗試連結到localhost:8080,應該就可以正常的與程式連線了

PS.
如果出現以下類似的訊息,代表你沒有export DOCKER_HOST
Get http:///var/run/docker.sock/v1.12/containers/json: dial unix /var/run/docker.sock: no such file or directory
往上翻翻啟動boot2docker的時候,應該有出現像是export DOCKER_HOST=tcp://:2375的字串,輸入他就可以正常運作了


參考資料:
DOCKER ON OSX: PORT FORWARDING ( http://fogstack.wordpress.com/2014/02/09/docker-on-osx-port-forwarding/ )

[Go] Golang on OSX

最近上班有點無聊,所以有時間玩點新東西(噓)


1.Install

到 http://golang.org 把 Mac OS X package installer 抓下來安裝就結束了


2.IDE

Sublime Text 2 ( http://www.sublimetext.com/2 )

網路上有說要抓插件之類的,我試過了一下覺得不太適合我就沒裝了

3.Run
go run helloworld.go

就這樣,意外的簡單XD

2014年3月5日 星期三

[iOS] Apps must follow the iOS Data Storage Guidelines or they will be rejected

最近公司的APP被退了,原因"Apps must follow the iOS Data Storage Guidelines or they will be rejected"

稍微查了一下,是違反了iCloud相關的使用規定
https://developer.apple.com/icloud/documentation/data-storage/

簡單的說

<Application_Home>/Documents  會自動備份
<Application_Home>/Library/Caches 會自動備份,但是空間不足是可能會被清除

<Application_Home>/tmp 不會自動備份,但是應該在程式結束時清空


 被退件的原因就是,什麼東西都放在Documents底下,然後iCloud自動備份使用的空間過大


解法其實也蠻簡單的,就是設定特定的資料夾不去備份就好了
https://developer.apple.com/library/ios/qa/qa1719/_index.html

不過這裡有個很重要的小地方,要對不同版本使用不同的方法

尤其在取得資料夾路徑的地方
[NSURL urlWithString:path] - 5.0.1
[NSURL fileURLWithPath:path] - 5.1 and higher


使用不對是不會回傳正確的東西的,切記切記


2014年2月21日 星期五

Webp 批次轉換

無聊亂寫的東西,這個東西有點冷門
找不到現成的東西可以用,所以就亂寫一個出來

https://github.com/Serisu/BatchWebP

2014年2月20日 星期四

Webp Speed Test on Cocos2dx

最近開始用Google推行的Webp新格式
因為功能越加越多,空間越來越小只能想辦法壓縮圖片

直接說結論好了

在Google Nexus 7 (2012)上
使用Webp會比使用Png多上兩倍以上的時間

所以使用這個新格式的時候請小心


不過有個現象很有趣
在Mac Mini(2012)上
使用Webp只花了Png一半的時間

這其中的差異,大概是CPU指令集的專長不同吧


測試的相關code
https://github.com/Serisu/WebpSpeedTest

2013年8月22日 星期四

[RoR] Nginx + Passenger on OSX

先安裝Passenger

gem install passenger

在安裝Nginx

passenger-install-nginx-module


這樣就安裝好了

不過配置的部份可能是裝的版本比較新跟網路上其他的人有些不一樣

使用vim編輯 nginx.conf
vim /usr/local/nginx/conf/nginx.conf
 
在server{}中加入 rails_env development
在location / {}中設定root到專案的public資料夾
然後加入passenger_enabled on
 
這樣基本設定就結束了
 
使用sudo nginx -t測試
使用sudo nginx運行
使用sudo nginx -s reload重讀配置
使用sudo nginx -s stop停止 
 

2013年8月13日 星期二

[Android] Launch Mode

在談Launch Mode之前先談談Task

Android中有所謂的Task系統
再啟動一個App的時候,同時也會產生一個新的Task

如果在其中呼叫任何Activity的時候,他會在Task中以"堆疊"的方式呈現
畫面上會顯示Task中最上層的Activity

現在來談Launch Mode中的四個選擇,在startActivity的回應

standard:不管如何,一律產生新的實體
singleTop:如果Activity在Task的最頂端會使用原本的實體,除此之外會產生新實體
singleTask:在Task中只會有唯一一個實體
singleInstance:這個Activity會存在於別的Task,而且為唯一