2014年10月17日 星期五

Django 佈署在ubuntu上 (EC2)

這篇記錄使用apache server 和 mod_wsgi 將django部署在ubuntu ec2 instance上的過程.

基本上不是在ec2上機器也可以使用,不過這篇我是開一個新的ec2 instance邊做邊寫的,理論上照著步驟走可以順裡跑起來.

當然通常這種事情不會跟著理論走就是了^.<

ubuntu使用aws ec2提供的的ubuntu image


目標:


在乾淨的機器上快速架設django網站的環境.

儘量簡化過程建立最基本的環境.


前置準備:


  1. 弄出一個ubuntu ec2 instance (記得security group要開port給tcp, 這裡我開80)
  2. 一團djnago的code ( 要已經可用python manage.py runserver 跑debug)
  3. 把那團django的code丟到 ec2 上的/home/ubuntu  (或是另外開一個專屬django得user更好)

步驟:



一. ssh 連線到ec2上並且使用下列指令安裝套件們:


  1. sudo apt-get update           //怒更新一下apt-get
  2. sudo apt-get install python-pip python-dev build-essential   //怒裝一發python相關套件
  3. sudo pip install virtualenv   //這雖然非必要但是很好用 怒用一發

二.使用virtualenv並且安裝django跟其他python套件


  1. virtualenv  venv           //建立virtual environment
  2. . venv/bin/activate    //使用這個env
  3. pip install django   
  4. pip install $你需要的套件們
     截至此刻, 已經可以使用 

     python manage.py runserver 0.0.0.0:8080 


三. 安裝與設定apache


  1. sudo apt-get install apache2 apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
  2. sudo apt-get install libapache2-mod-wsgi
  3. sudo adduser www-data ubuntu    #將apache所使用的www-data user加入ubuntu group(source code資料夾group為ubuntu的情況)

四.建立apache與django project 所使用的wsgi.py的連接


     1.在/etc/apache2/sites-available 下面建立一個新的設定檔, 注意新版apache在這邊            的設定檔案一定要是.conf 附檔名. 這先就先取 kerker.conf
         檔案內容如下:
   
     2. sudo a2ensite kerker.conf
          
     3.記得如果kerker.conf裡面使用的port是80的話要把用 a2dissite 把site-enable下其他port也是80的conf關掉不然會衝到, 如sudo a2dissite 000-default.conf



五. 大功告成打開瀏覽器連到這個ec2 instance的ip就可以看到網頁


















2014年4月3日 星期四

iOS: 製作 static library

把project包成static library有方便散播和隱藏source code等好處,

iOS系統現在有各種架構,包含device上的armv7, armv7s, arm64 和模擬器的x86,x86_64

直接建立library project所build出來的 .a檔案並不會包含所有架構的binary, 需要分別把各種架構的.a編出來以後用指令將它們包成一個fat library

以下為製作library的步驟:

1.建立一個project時選擇 Cocoa Touch Static Library

2. 編寫library

3. 在Build Phases中的 Copy Files 加入需要一同release的header檔案

如此在編譯的時候這些header檔案會被放入編譯出來資料夾下的include資料夾中

這些即為使用此library時所需include的header


4.在Build Setting -> Architectures -> Build Active Architecture Only 都設為NO


這一步很重要,如果不這樣設定編譯出來的 .a檔案只會有當下選擇的target




5.分別選擇device 跟simulator 為target各build一次 (按下run button也可,因為是library project所以只會build不會run)

這樣會分別編譯出device 跟simulator的.a檔案

6.對Products資料夾下的.a檔案按右鍵選擇show in finder,

在finder中往上找幾層會發現有兩個資料夾 Debug-iphoneos跟 Debug-iphonesimulator

兩個資料夾下都各有一個.a檔案


7. 使用以下指令將兩個.a 變成一個大.a  (此工具不用安裝mac本來就有)



lipo -create "Debug-iphoneos/xxxxx.a" "Debug-iphonesimulator/xxxxx.a" -output "xxxxx.a"


8.大功告成,將這個產生的.a檔案與Debug-iphoneos/include 資料夾中的檔案加入欲使用此lib的project即可使用!







2014年3月29日 星期六

Andorid animation: animator set 製作button閃爍效果

以下實作一組重複發生的  淡出-移動-淡入 動畫,


套用在半透明gradient drawable上面可以製造出原件閃亮亮的效果