此篇算是感恩文 (我知道感恩節過很久了)
Bottle
現在時代不同,講求的是敏捷開發,一個人,當多個用,產生多個 thread 在不同專案,共用同一個大腦,開發人員進步的很快,工具也相當的進步,對函式庫的了解熟悉後,進行拆解
依照專案類型的不同,合併成最佳的組合,感覺,現在寫軟體,花一大堆的時間,看別人的函式庫,或是原始碼,要越高的彈性,及效能,就必須由越底層來切入
想想懶惰真是進步的原動力,這些工具,都是為了解決新問題與挑戰,想想身處在這個時代還蠻幸福的,有這麼多的東西可以玩
真不敢想,再過 10 年以後,軟體開發的進步,不知道可以到達什麼樣的境界,現在不管是 WEB 或是 Mobile 的應用都有長足的進步,想想10 年前的手機,在看看現在手裡的 iPhone 或是 Andriod 手機的運算能力,不可同日而語
自己比較熟的 Web 應用開發
CSS 工具有 SAAS 不過我喜歡 LESS
microjs 的一大堆 javascript 工具,還是自己來包 javascript 的工具
ender.js,還是用 coffee script 當成 Ruby 和 Python 合體來快速開發,我自己是只能算是 javascript 的幼幼班學生,所以只能用些基礎的
常用的 Web Framework,順便附一下,benchmark ,我知道,這一點都不科學,也不切實際,算是一個紀錄
硬體,都是同一台機器 Intel(R) Celeron(R) CPU E3400 @ 2.60GHz (真可憐用 Celeron), JVM 有暖身了
Node v0.6.1 (我知道他不是 framework,只是可以解決一樣的問題)# Hello World benchmark
# all python framework under nginx 1.1.8 uwsgi 0.9.9.3, python2.6.7
# playframework under production mode java -version Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
# node -version v0.6.1
# ab -c 100 -n 1000 TO_TEST_URL
# bottle 0.11.dev
uwsgi –socket 127.0.0.1:3030 –module terry –processes 4
# ~1550 Requests/second
# flask 0.8
uwsgi –socket 127.0.0.1:3030 –module fsk –callable app –processes 4
# OR
uwsgi –socket 127.0.0.1:3030 –module fsk:app –processes 4
# ~1100 Requests/second
# django 1.3.1
# return HttpResponse(“Hello World”)
uwsgi –socket 127.0.0.1:3030 –pp .. –env DJANGO_SETTINGS_MODULE=hello.settings -w “django.core.handlers.wsgi:WSGIHandler()” –processes 4
# ~910 Requests/second
# playframework 1.2.4
# renderText(“Hello World”)
# ~1700 Requests/second
# node 0.6.1
#var http = require(‘http’);
#http.createServer(function (req, res) {
# res.writeHead(200, {‘Content-Type’: ’text/plain’});
# res.end(‘Hello World’);
#}).listen(1337, “127.0.0.1”);
#console.log(‘Server running at http://127.0.0.1:1337/’);
#
# ~2500 Requests/second
#
連結(順序無關喜好,不同的地方,不同的規劃,自己看著辦,Hello World 只是起點,大家的終點不一樣)
Bottle
Flask
Django
PlayFramework
Node.js
PS: 最重要是,由衷的感謝這麼多 Open Source 的前輩,可以這樣無私的和大家分享,不求回報,讓想法可以自由的世界的每一個角落激盪出更多的火花,讓我也可以撿拾前輩的一點點牙慧,增加一點點自己的力量,讓日子過得更美好,由衷的感恩
又當小白了
上一篇,才說,uWSGI 見鬼了
追根究底,就是程式裡沒有鬼,只有 bug
自己的系統裡,有很白目的區塊,用到 from xxx import *
這一行造成了兩的檔案互相參照,複寫了部份模組
所以還一下 uWSGI 清白,黑鍋和小白,就是自己
見鬼了 uWSGI
非常誇張,裝 uWSGI 遇到鬼打牆的情形,native Debian 可以, XEN VM 下面也可以,就其中一個 OpenVZ 的 Debian 裝不起來,老是跟我說 sys.path 有問題 Desktop Debian testing 和 XEN 裡面的 VM,都沒有問題 啟動的指令用 daemontools 來控制
#!/bin/bashPS: 只好先用獨角馬 gunicorn
cd /home/terry/webapp
exec setuidgid terry uwsgi -s 127.0.0.1:3031 -p 2 –pp .. –env DJANGO_SETTINGS_MODULE=webapp.settings -w “django.core.handlers.wsgi:WSGIHandler()"

城鄉差距
10 月底時到台南參加二表哥的婚禮,看到活動廣場的公廁
真是有個性,不知道,這樣的公廁在台北市,要花多少錢來整理
一石四鳥 at playframework
最近有專案,用 Java 的函式庫,及工具,偶然機會下發現, Play FrameWork 還蠻受歡迎的,所以不免當個好奇寶寶,邊看文件,及 source code ,試作一些東西,並且評估,專案進行的可能性
還蠻歡樂,真的還蠻好玩的,簡單,清晰,讓我對 Java 刮目相看,以前,看看同事的 xml 設定檔,我就昏了,這個工具,還包的蠻乾淨的,試了一下,一個簡單的 Application 居然 Java source code 用這麼少 (害我以為這一定是假的 Java framework)
話說,一石四鳥是為什麼呢? 寫程式,往往會為了快,沒有好好的由底層的角度看自己的成果,Play 可以用 Java ( OO programming )開發,也可以用 Scala (體驗 functional programming ),更可以由底層的 source code 學學,別人 Java 及 Scala 的技巧
A web app in 10 minutes using Play framework from zenexity on Vimeo.
Debian 下的中文輸入
桌機用 Debian testing 好些年了,一直都沒有什麼問題,最近一些 GTK3 , gnome-terminal 3.0.1 的更新, scim 掛了,一直都是把頭放到沙裡的方式面對他,把 gnome-terminal 綁在 2.30 ,今天想說來試試看,有沒有其他的輸入法,可以在 GTK3 下面用,還真的沒有好用的中文輸入法耶,ibus 不太會用,搞不懂,為什麼我新開一個 tab 他就自動切成中文輸入模式,scim 只能在舊的 gnome-terminal 裡用,gcin 看不太出來有維護的樣子,真要深深地吸一口氣,都已經 2011 年了,怎麼這麼基礎的東西,在 Linux 上面還是這樣,看來,這種吃力不討好的東西,又沒有實質商業利益的東西,都沒有人要碰,感嘆壓
Customize Django Admin actions
雖然,大大說這是一個 Design decision
也說行為不會改變
https://code.djangoproject.com/ticket/10768
http://stackoverflow.com/questions/4500924/django-admin-action-without-selecting-objects
有些時候,想簡單的整合在一起,還是要找一些洞來繞
https://github.com/django/django/blob/master/django/contrib/admin/options.py#L856
純筆記
http://ftp.tw.debian.org/ 不穩定
一直都是用這一個 mirror 站, http://ftp.tw.debian.org/ 偶爾連不上
加油,這可是掛了人家的名號
SQL like in pymongo
在 MongoDB 的網站上面,看到用 javascript query 的語法 LIKE 對應的語法,在 pymongo 不知道怎麼對應
筆記一下
這是 文件的範例
SQL
SELECT * FROM users WHERE name LIKE “%Joe%"
MongoDB 文件
db.users.find({name:/Joe/})
pymongo 的操作
db.users.find({’name’:re.compile(‘Joe’)})
依此類推,當然記得要 import re
http://www.mongodb.org/display/DOCS/Advanced+Queries
http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
拼裝的藝術: vim 之 IDE 進化實錄
全文 PDF 檔連結
http://ishare.iask.sina.com.cn/f/17541081.html
在別人 Blog 看到的,簡體的文件,說得不錯
使用 IDE 可以讓您的效率提昇不少,不過,老手,也可以用拼裝得方式,來達到自己的目的
IDE 簡化的細節,可以讓新手,很快變得有效率
傳統的編輯器,整合 PlugIn 可以讓老手,完全的組裝自己的 IDE ,但是細節卻也是一清二楚
另一點,我覺的站在學習的立場,IDE 一定要會,不過,如果對軟體真的很有興趣的話,那傳統的編輯器自組 IDE ,更是非要會不可,覺的寫軟體的動力,往往除了解決問題,讓日子過得更好外,也常常會看別人怎麼解決問題,當所有的細節被 IDE 包的好好地,可以快速開發,在當下,你只能是一個很好的員工,如果您要的不只是一個好員工( wana be a better man ?),您要精通一種語言(往往不只有一種),工具,函式庫,處理問題的細節,到了有一天,您遇到瓶頸的時候,您還是需要去敲一下,這一道知識的門,除非您寫得軟體,一直只解決特定的問題