prism

2011-12-31

django-pipeline

一個簡單,好用的 django plugin


https://github.com/cyberdelia/django-pipeline

用途,用來產生,壓縮處理, css ,javascript 或是圖片,也可以自動處理 version (也有支援 git 喔) 可以搭配的工具很多,SAAS,LESS,或是 Coffee Script 都 OK,有沒有開始傻笑了 ;-)


Compressors

YUI Compressor compressor (這個是預設的)

Closure Compiler compressor

UglifyJS compressor

JSMin compressor

CSSTidy compressor

Write your own compressor class

Compilers

Coffee Script compiler

LESS compiler

SASS compiler

Stylus compiler

Write your own compiler class


拜託,要用時,還是看一下文件,及 source code

 文件 http://django-pipeline.readthedocs.org/en/latest/index.html

 EXAMPLE: 我先假設,用的是

Django 1.3.1
settings.py INSTALLED_APPS 有 'django.contrib.staticfiles',把 'pipeline',也加到 INSTALLED_APPS 裡

yuicompressor-2.4.7.jar 我放到 project 資料夾的 pkgs 目錄下面

在 Debian 上面有安裝 openjdk-7-jdk

PIPELINE_JS 的部份,依此類推

settings.py 部份
PROJECT_ROOT = BASE_DIR = os.path.abspath(os.path.dirname(__file__))

INSTALLED_APPS = (
                  'pipeline', # 這個要有,當然還有其他你要的
)

# django-pipeline 
PIPELINE_YUI_BINARY = 'java -jar ' + os.path.join(PROJECT_ROOT, 'pkgs/yuicompressor-2.4.7.jar')
PIPELINE_VERSION = True
PIPELINE_CSS = {
    'main': {
        'source_filenames': (
          'css/style.css', # 後面可以加很多
        ),
        'output_filename': 'css/pipeline_r?.css',
        'extra_context': {
            'media': 'screen,projection',
        },
    },
    # other CSS groups goes here
}

我的 base.html 裡的部份
......
{% load compressed %}
......
.....
{% compressed_css 'main' %}
.....
...
..

覺的不合用,看更多 Django asset-managers
http://djangopackages.com/grids/g/asset-managers/

[政黑]新年希望台灣更好


覺得上一篇,應該 fork 一篇,比較有禮貌一點

新年希望

1. 這個國家不要分公保,勞保,農保,漁保,就一種人就好了,大家都週休二日,退休所得替代率都一樣,孩子上大專以上,學雜費都可以像是公務人員的子女一樣減免

2. 福利政策,不要分天龍國,和外縣市不同 (例如:殘障福利,祝你好孕,等....)

3. 不要在搞什麼奢侈稅,新的把戲,就房屋稅實價課稅,例如:市價兩百萬的房屋,稅率假如是千分之一,應繳房屋稅 2000000 x 0.001 = 2000 元,那 兩億的房子,200000000 x 0.001 = 200000 元,政府這一點作不到,不是劫貧濟富是什麼

4. 網路,可不可以不管誰當選,都可以直追南韓,目前 台灣 37 名 ,南韓第 1 名 http://netindex.com/upload/allcountries/

5. 公務機關,什麼時候可以停止那一種,每年預算花光光的作為

6. ETC 這種吃像這麼噁心,官商相愛的現象,什麼時候停止,擺明違法,當初設計不良,紅外線槓微波,最後說賠錢作的老闆得標後,現在也要換成微波系統了,這不是裝孝為嗎?交通部給什麼寬限期

7. 政府可不可以停止詐騙集團化
   
    政府詐騙集團化的具體作為

     a. 以前,勞保,包含健康保險,另立名目,增加全年健保,保障不加,保費加倍

     b. 原本實施老人年金後,發現財政會透支,所以改成國保,只要你沒有繳錢國家 (勞保等等) 就強制要繳交國民保護費,只要成年,一定繳錢,管你失業,還是生病

     c. 健報一代,不如一代,政客獻金,醫師,藥廠要的一個子都不能少, 自費項目越來越多,繳的保費越來越高

      d. 說一句,國人平均壽命變高,所以退休延長由 60 歲改為 65 歲退休

8 .... 待續


[政黑]執業二十五年律師,踢爆司法黑幕

執業二十五年律師 踢爆司法黑幕 
台灣司法真不是普通的黑,看了,好友的官司,還有,已故很久三舅的勞保官司 

法院裡是恐龍的地盤,不是一般人可以去的,那裡的進步可以說是和社會脫節得很嚴重

說一下,三舅的例子好了,這大概是 7,8 年前的事了(官司通常要打很多年,這樣法官才有事情作,律師也有錢拿)

1. 三舅,先是失業一段時間後,勞保自動失效(我國的勞保,是保有工作的勞工,只要沒了工作, 勞保局會自動把你踢出去,所有的保障都自動消失)

2. 後來三舅找了新工作,一家小公司,幫忙送貨

3. 一次工作中,心肌梗塞,造成促死

4. 請領勞保死亡給付

5. 勞保局,不給付,說是,你已經退保,超過4 個月,還是六個月,就不可領了,新工作的老闆,沒有幫他續保 (哪有人保了二,三十年沒有領退休金,自己退保的)

6. 這一種情形,必須要你以前有心臟病史,才可以給付(就是說,生前要常看病,所有的科都要掛過)

7. 三舅,就這樣,保了二,三十年勞保,一毛錢也沒有拿,平常身體不舒服,也不常看病,都是止痛藥吃一下,就繼續工作,有三個唸大學的孩子要栽培

8. 這一個官司,當然還是勞保局贏 (幹有沒有天理壓)

所以法院只是浪費生命也是剝奪生命的地方真是一點也不為過

新年新希望

1. 這個國家不要分公保,勞保,農保,漁保,就一種人就好了,大家都週休二日,退休所得替代率都一樣,孩子上大專以上,學雜費減免 ( 不然誰要生小孩)

2. 不要再搞甚麼奢侈稅,就房屋稅實價課稅這麼難嗎?( 我外縣市的公寓,房屋稅,繳的比新北市的透天還高,是那招,這一個政府還說暫時不考慮實價課稅,什麼時候報假的價格變對的,現在大家都做兩套帳才正常)

3. 網路,可不可以不管誰當選,都可以直追南韓,目前 台灣 37 名 ,南韓第 1 名 http://netindex.com/upload/allcountries/

4. 哈哈,最後,我的 VPS 經銷服務,快要開張了,希望可以順利

ps: Happy New Year

2011-12-28

It's all Text

https://addons.mozilla.org/zh-tw/firefox/addon/its-all-text/

這一個是一直愛用的 firefox 元件 也是目前在 Chrome 上面,我一直找不到的替代品 

最近流行用靜態網頁的方式,來 host 部落格網站,要得就是簡單,還有就是,可以自由自在的編輯

 不需要在網頁的 text area 裡編輯,這一 firefox 外掛就是解決這一個問題用的,可以用你超高效的 VIM 打開你的 textarea ,自由自在的編輯 也是目前偶爾回來用用 firefox 的原因之一 :-)

uWSGI --vhost



用 uWSGI 來啟動 wsgi 的服務,除了傳統的方式,還可以一次管理多個 wsgi 的服務

還有另外一種作法 Emperor 可以對特定資料夾裡所有的設定檔,個別管理,更適合作 PASS 服務的人, http://projects.unbit.it/uwsgi/wiki/Emperor

我的需求沒有這麼大,只是一起跑多個 wsgi ,省一些記憶體,就可以了


用 daemontools 來啟動,這裡面的 buffer-size 有要吃外部的 post back 要加大,不然,預設的實在是太小,最重要的是預設值 PayPal
IPN callback 吃不下,收到錢還不知道,夠重要了吧

#!/bin/bash
# default buffer-size is 4k 4096
exec setuidgid yourname uwsgi --buffer-size 32768 -s 127.0.0.1:3031 -p 3 -M --vhost

以在 Debian 上面的 nginx 裡面的設定範例

 server {
listen   80;
server_name  yourcoolsite.com;
location /static {
    alias /yourstatic/folder/;    
}
location / {
    include     uwsgi_params;
    #uwsgi_pass   unix:/tmp/digez.sock;
    uwsgi_param UWSGI_PYTHONPATH /home/yourname;
    uwsgi_param UWSGI_CHDIR /home/yourname/yourcoolsite;
    uwsgi_param UWSGI_ENV DJANGO_SETTINGS_MODULE=yourcoolsite.settings;
    uwsgi_param UWSGI_MODULE application;
    uwsgi_pass   127.0.0.1:3031;
 }


放在 /home/yourname/yourcoolsite/ 的 wsgi application.py script 範例
sys.path.append 那兩行,在 Django 1.4 以下,也就是 1.3.1 (含) 以下,都要加,比較不會有路徑的問題

Django 目前的 Dev(或是 trunk 或是 github 上面 master) 開發版,已經改變 project 的路徑,所以不用再加了

# coding: utf-8
import sys
import os
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append('..')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
                                                                                                                                     
import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

2011-12-14

最近流行小而美

此篇算是感恩文 (我知道感恩節過很久了)

Bottle

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 的前輩,可以這樣無私的和大家分享,不求回報,讓想法可以自由的世界的每一個角落激盪出更多的火花,讓我也可以撿拾前輩的一點點牙慧,增加一點點自己的力量,讓日子過得更美好,由衷的感恩

2011-12-13

又當小白了

上一篇,才說,uWSGI 見鬼了

追根究底,就是程式裡沒有鬼,只有 bug

自己的系統裡,有很白目的區塊,用到 from xxx import *

這一行造成了兩的檔案互相參照,複寫了部份模組

所以還一下 uWSGI 清白,黑鍋和小白,就是自己

2011-12-05

見鬼了 uWSGI


非常誇張,裝 uWSGI 遇到鬼打牆的情形,native Debian 可以, XEN VM 下面也可以,就其中一個 OpenVZ 的 Debian 裝不起來,老是跟我說 sys.path 有問題 Desktop Debian testing 和 XEN 裡面的 VM,都沒有問題 啟動的指令用 daemontools 來控制
#!/bin/bash
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()"
PS: 只好先用獨角馬 gunicorn

2011-11-27

城鄉差距

10 月底時到台南參加二表哥的婚禮,看到活動廣場的公廁



真是有個性,不知道,這樣的公廁在台北市,要花多少錢來整理

2011-10-04

一石四鳥 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.



四鳥

learn Java

learn Scala

重新感受深度 OO 的 Java programming

全新感受 Scala 的 functional programming

所以,越看別人的作品,真的覺得的自己寫的很鳥,很多的東西,沒有深入了解,學海無涯壓,大師,我來拜了

連結

Let's Play http://www.playframework.org/

Follow Play on GitHub https://github.com/playframework/play

2011-09-30

Debian 下的中文輸入

桌機用 Debian testing 好些年了,一直都沒有什麼問題,最近一些 GTK3 , gnome-terminal 3.0.1 的更新, scim 掛了,一直都是把頭放到沙裡的方式面對他,把 gnome-terminal 綁在 2.30 ,今天想說來試試看,有沒有其他的輸入法,可以在 GTK3 下面用,還真的沒有好用的中文輸入法耶,ibus 不太會用,搞不懂,為什麼我新開一個 tab 他就自動切成中文輸入模式,scim 只能在舊的 gnome-terminal 裡用,gcin 看不太出來有維護的樣子,真要深深地吸一口氣,都已經 2011 年了,怎麼這麼基礎的東西,在 Linux 上面還是這樣,看來,這種吃力不討好的東西,又沒有實質商業利益的東西,都沒有人要碰,感嘆壓

2011-08-03

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

2011-07-31

拼裝的藝術: 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 ?),您要精通一種語言(往往不只有一種),工具,函式庫,處理問題的細節,到了有一天,您遇到瓶頸的時候,您還是需要去敲一下,這一道知識的門,除非您寫得軟體,一直只解決特定的問題

2011-06-28

Google 要怎麼不低頭,又讓台北市政府沒話說

這年頭,大家爭的面紅耳赤,都是為了文字上面怎麼解釋,又愛玩弄法律,早就忘了法源的立意了

Google 只要在台灣 Andriod Market 的收費軟體網頁的範本改一下,把那個付費的字眼改成

"試用費" 就可以了,用試用的次數來收費,第一次,要錢,之後不用錢,試用費反悔期,15分鐘


PS: 沒有法律規定,試用一定要免費吧!反正大多價格比你一杯咖啡還便宜,算試用費不為過吧,再腦筋轉不過來,有一種就做試用期總有聽過吧

2011-06-27

台北市政府可以幫我退 windows 嗎?

最近看到北市政府打 Google Market 的新聞很好笑,可以請政府大大,也順便幫我討一下公道,我每次買筆電,都不能退內含的 windows 耶,我連鑑賞期都不需要,為什麼不能退壓,台北市政府可以幫我退 windows 嗎?

PS: 感覺這個分明是官商勾結,要不要解釋一下,這麼多年,怎麼沒有人為百姓發聲說 windows 也要可以退壓,是不是,拿了微軟什麼好處,幫忙打狗一下

2011-06-14

省錢一哥和你我不一樣

今天因為公車司機開得比較快,早到公司,看到公司內的機房門沒有關,問了一下同事

原來是,老闆要節省冷氣,所以下班以後,開門用電風扇代替散熱

真是省壓

Blog 終於有行動版了

今天登入後,有提醒訊息,終於總算是孵出來了

2011-06-08

公視有話好說不能說了

不知道,你有沒有發現,最近他的節目,都是在說健康(香港腳,鼻竇炎...),或是無關政治議題,或重大新聞事件的議題,像是 江國慶 被刑求,槍決的議題,刑求的人,拿令箭亂殺人的人沒事,真兇,逍遙法外多年,一個掃地的二兵,被刑求抓來當替死鬼,由後背朝心窩開了一槍 (我要是當事人的父母,大概沒辦法這麼鎮定),整個路線說改就改,感覺台灣,越來越像大陸了,哪天也出現那種人民幸福感指數 100 分的民調,也不會奇怪了,

http://talk.news.pts.org.tw/ 公視有話好說


PS: 可能是之前預算被檔,又有 NCC 等等,太多長官的壓力吧,一個感覺蠻中立的公共電視台也要這樣搞,邁向,官不官,也就是說要等,民不民了 !

Scalability panel (djangocon.eu)

一偏有關於,可擴展能力的基礎說明文章,內容簡潔,觀念不見得只是用在大型的 Web 開發,大多的 AP 都算可以適用


http://reinout.vanrees.org/weblog/2011/06/08/scalability-panel.html


PS: 如果,這些你完全都沒需求,表示可能你沒有開發過大型的應用 XD

2011-06-07

AutoMan 更新測試

由於有網友,反應,康和 API 更新後,有問題,所以這是一版新的更新,針對,康和新版的 OCX 元件

詳細 API 我也沒有下單測試,除非,康和變更 API 介面,不然,應該都沒問題才對 (都下單這麼久了 XD)

記得,您有更新康和新版的 OCX API 元件 才需要,不過,一樣自己要測試一下

軟體時限,延到 201312 月

下載點 http://dl.dropbox.com/u/14137697/20110608/automan.exe


這是程式更新的兩個變動,幾乎沒有改什麼

https://github.com/terryh/automan/commit/631921a41e80e43b12b0fc9f4e456e87fa68d853

https://github.com/terryh/automan/commit/7795066f847672cf3d4ed7c33b3220ae29946f39

關於 AutoMan 可參考以前文章 AutoMan

2011-05-29

新的副駕駛

有時候,必須自己一個人帶著他

放在後面,怕他自己給我在後面玩瘋了,雖然,好像坐前面更危險
放心,這一張,媽媽,還沒下車



今天騎腳踏車載小寶寶兜兜風


公園



山洞



船老大和魚工準備出航

Tornado Gunicorn uWSGI 大亂鬥

最近因為有個屬於幫忙性質的案子,這一個專案的主角,有一些堅持,所以也算讓我可以多用一些東西 XD

在這一專案,我是屬於打工的角色,所以一般,主角決定了什麼,打工的做就對了,原本原型,是 Django 搭 MySQL 的專案,要改成 TornadoMongoDB , 但是,好歹多年前,也看過

Nicholas Piël 的 WSGI Server 大亂鬥 http://nichol.as/benchmark-of-python-web-servers

知道其實 Tornado 也沒有多佔便宜,但是口說無憑,當然秉持科學的精神(當然這樣也沒什麼科學),利用一下,小寶寶午休時間,中年老爸,趕快來作一下, benchmark 來驗證一下,就不 post 詳細的數據啦,我只是給自己驗證的結果,所有的軟體,都是安裝最新穩定版,用 pip install 的方式,在 debian 上面測試,官方的文件是說 nginx 只要是大於等於 0.7.63 版,都有將 uWSGI 包含進去,所以不需要重新編譯安裝 nginx , 想用新一點的人要自己再編譯 nginx ,測試用的工具是 Apache 的工具 ab -c 500 -n 2000

uWSGI 效能第一 (100%),穩定,但是,設定的選項很多,對 Linux 沒有概念的,可能比較不會發揮,適合 Linux 熟的

Tornado 效能第二 (93%),回應時間,落差比較大,適合,喜歡自己打造東西的人

Gunicorn 效能第三 (84%),穩定,設定非常的簡單,回應時間穩定


百分比,只是,回應速度,在加權一點回應時間,測試的程式,就只是基本的 Hello World or Ping Pong 的方式,以上三個,都足以應付 production 的需求環境


測試條件

uWSGI 基本上都是參考 Nicholas Piël 方式,不過有些系統的對應參數,必須先用 sysctl 調好,也要懂 -l 的數字一定要大於等於你的 concurrency 數,都是透過 nginx

sysctl -w net.ipv4.tcp_keepalive_time=300
sysctl -w net.core.somaxconn=250000
sysctl -w net.ipv4.tcp_max_syn_backlog=2500
sysctl -w net.core.netdev_max_backlog=2500


uwsgi --gid www-data --uid www-data -z 30 -l 500 -L -M -s 127.0.0.1:3031 -p 4 --env DJANGO_SETTINGS_MODULE=bench.settings -w "django.core.handlers.wsgi:WSGIHandler()" # django app

uwsgi --gid www-data --uid www-data -z 30 -l 500 -L -M -s 127.0.0.1:3031 -p 4 -pythonpath `pwd` -w myapp # 單純 wsgi app


Tornado 參考 Nicholas Piël 直接打,還有就是用 https://github.com/bdarnell/django-tornado-demo 的 testsite 測試


Gunicorn 直接用 gunicorn_django --worker=2 ,其實這樣對他有一點不公平,也應該直接接 wsgi app 才對,不過,他的設定最簡單,可以直接上,這就是他的好處


PS1: 專案的架構,一般都是見仁見智,很難有一定的評斷,但是連正式上線,都還沒有上線,就將原型完全換掉,也是一種神人級的豪賭,一種情形是,這些東西神人都可以自己生出來,所以不在乎原型,一種是,神人不喜歡,別人寫得東西,喜歡自己來,一般決定一個專案的架構的時候,第一點,一定是,時間,人力,還有成員的熟悉度,絕不是,盲目的追求效能,或是熱門的話提,要跨入 nosql 之前,先看看自己作過幾個大型的 SQL 專案,能發揮到什麼程度,可以先由一些小型的專案,驗證熟悉

PS2: 這個原型,是我看過非常乾淨的 Django project 不管是自身的架構或是重用別人的部份,都算是非常的漂亮 ( 原作者還呼隴我說寫的很丑很髒 )


PS3: 其實用 Django 外,Python 不像 Ruby 那樣,選擇不多,相反地,我的媽壓,還真不好選, http://wiki.python.org/moin/WebFrameworks ,不同專案有不同需求,找自己愛用的吧,玩得開心最重要,喜歡套件 AP 多,可以直接上,就 Django ,喜歡自己打造,選擇有一大票

2011-05-16

GDM3 的鳥問題

開發的桌機,一直都是跟 debian testing

最近,更新完,發現爛了,原本的 auto login 沒辦法用了( 我一直都是這樣設得,沒辦法,這一台是自動下單用的 )


找了半天,才看到解法,只是還蠻鳥的

編輯 /etc/gdm3/greeter.gconf-defaults 加一下,上面有一行, comment 掉的,可以 copy

/apps/gdm/simple-greeter/disable_user_list true


炒翻了

看完後,沒錯我是名副其實的 end user ,感覺還蠻幹的,浪費一堆時間

2011-04-14

Install Dropbox on Debian



小筆記安裝 ubuntu 的 Dropbox 安裝包,到 Debian testing 上面

照往例,一定不是很乾淨的作法,我才寫筆記



到 Dropbox 下載 Linux 64(OR 32) 下面的安裝包

http://www.dropbox.com/downloading?src=index

下面就是指令筆記,因為 Ubuntu 和 Debain 這一個相依關係名稱不同

假設我們下載的名稱是 nautilus-dropbox_0.6.7_amd64.deb


以此為範例,安裝要有 root 權限

dpkg-deb -x nautilus-dropbox_0.6.7_amd64.deb tempdir # 解開到 tempdir

dpkg-deb --control nautilus-dropbox_0.6.7_amd64.deb tempdir/DEBIAN # control 放到 tempdir/DEBIAN 下面

vim tempdir/DEBIAN/control # 編輯 control 檔,將安裝的時候抱怨的 libnautilus-extension1 (>= 1:2.22.2) 改成 libnautilus-extension1 (>= 2.22.2)

dpkg-deb -b tempdir nautilus-dropbox_0.6.7-terry_amd64.deb # 重新包一包,取一個名字

dpkg -i nautilus-dropbox_0.6.7-terry_amd64.deb # 安裝自己包的那一包,就可以了



接下來,看看,自己的應用程式選單裡,應該就有 Dropbox 了

2011-04-11

uWSGI

uWSGI

http://projects.unbit.it/uwsgi/wiki 是完全用 C 來實做的 wsgi server ,wsgi 就是目前 Python web 配置方式中最為通用的方式

現在 nignx 預設已經有支援了

我覺得最棒的是,哈哈看看安裝方式 http://projects.unbit.it/uwsgi/wiki/Install, 喔耶

pip install uwsgi

# OR

pip install http://projects.unbit.it/downloads/uwsgi-lts.tar.gz


你說,有沒有想按個讚壓,以後就不能說, uWSGI deploy 麻煩,綠角馬 ( gunicorn) 比較方便了

試試看才知道真實力, session 搬到,記憶體,或是 cache 後, C10K 應該可以輕鬆一些

PS 給新手,老手可跳過: 鄉親壓,當然還是要設定檔地,請參考 http://projects.unbit.it/uwsgi/wiki/Exampl ,記得可以搭配 daemontools ,或是 Upstart 一起服用喔 ,千萬不要天真又善良的由 source 安裝喔,各大 Linux distribution 都有販售

PyCon US 2011

有太多的理由,不能參加,要工作,要帶小孩,要陪父母親,要掃墓,要去玩,太宅,不喜歡在一個很多人的空間裡

線上看吧

http://pycon.blip.tv/posts?view=archive

順便廣告一下 http://wiki.python.org.tw/PycTW2011

PS: 不知道自己能不能去的成

2011-04-08

Play with Appcelerator Titanium

Titanium

體驗一下, cross platform mobile app 的開發工具 Appcelerator Titanium

Appcelerator Titanium

在 Debian testing 下面,會有一點點小問題,可以這樣解,分享的連結檔,有一些相依性的問題

http://developer.appcelerator.com/question/14471/symbol-lookup-error-usrliblibgdk-x11-20so0-undefined-symbol-gmallocn-solved


DUMMY STEP

1. download http://www.appcelerator.com/products/download/ , for me is 64bit Linux http://www.appcelerator.com/download-linux64

2. tar zxvf Titanium Developer-1.2.2 ; cd Titanium\ Developer-1.2.2/ ; ./Titanium\ Developer # will auto download SDK

3. git clone https://github.com/appcelerator/KitchenSink.git

3. ./Titanium\ Developer # import project KitchenSink

4. now you can build this app to your emulator or device

PS1: 也有 PhoneGap 可以玩,都很容易上手,還有 Andriod SDK ,或是 IOS 的 SDK 是一定要裝得啦, Mac OS 可以放在 VirtualBox 裡面跑

PS2: 如果要真的要 mobile development 也可以,把 ~/.titanium/ ,及整個 Titanium\ Developer-1.2.2 資料夾都放 Dropbox,再用 symbolic link 的方式連 ~/.titanium ,所以只要有無敵的 editor 就可以了

PS3: 真的不喜歡 GUI , 要用 command line http://guilherme.pro/2011/04/06/titanium-mobile-hack-execute-your-projects-from-the-command-line-using-make/ ,他的 test project 也蠻酷的 https://github.com/guilhermechapiewski/titanium-jasmine

騙人奢侈稅

最近房地產很大的假議題,我的想法比較像是,這只是一個假的名義,可增加稅收,又可以賺民意的議題,人人喜歡超人,喜歡科學小飛俠打擊惡魔黨,喜歡 naruto 總是可以逆轉勝,繼續追尋他的忍道,拯救夥伴。

所以政府,一發現政府聲望下降,就找一個民眾厭惡的名稱來加稅就可以了,大眾,也不覺得權益又被剝奪了,為什麼他要叫奢侈稅呢?其實是因為,貧富差距大,要立一個名目,來讓大家發洩,就像是已經不執行共產主義很久的共產黨,以前革命的時候一樣,把地主拉出來,讓大家批鬥,換得人數上的支持,有時候,看實情,可以多看一些不同的面向,就會覺的,我們其實還有些進步的空間

土地或是房地產的增值,在資本社會,不像共產主義,土地國有,原本就有很好的稅制方式來取得平衡,就是房屋稅,及地價稅,也算是相當程度的土地國有,比如每年市價 2% 的話,代表 50 年後,你必須負擔 100% 的市值回饋給國家, 但是在長年背離市場價格,及違反大多數金字塔頂人權益時,政府,會選擇,把眼睛閉上,造就了,可能,你在外縣市,市價 300 萬的新透天,可能房屋稅,地價稅,繳起來,比上台北市 20 年千萬的 30 坪公寓貴上許多

所以,不斷地劫貧濟富,這才是稅制偏離現實,造成的差距,而且是用制度,請你把錢拿出來把貧富差距再拉大,像是芬蘭的交通罰款用的是收入的比例,就是要讓大家一樣痛一樣

真的有興趣,可以看看 01 上面的討論 http://www.mobile01.com/topicdetail.php?f=356&t=2093369&m=f&last=27060152

PS: 所有的稅制都只是要把你口袋裡的錢拿出來的戲法,說真的,要說奢侈,對很多失業的人來說要繳國民年金,也算是奢侈

無人在意的網路建設

這是黑內 (HINET) 假民營化後,我們基礎建設不思進步的地方


http://netindex.com/upload/allcountries/

台灣第 48 名 2.08 Mbps


PS: 落後不可恥,也不丟臉,如果一點都不覺的自己落後,才是真的問題,假民營後,所有的問題,都丟給,他是民營公司,政府就沒有責任,那政府的存在感覺像是多餘的,也可以將政府民營化,或是外包

2011-04-01

DJANGO-USERENA

其實跟以前的 django-registration 幾乎是一樣的東西,不過就是比較有在更新就是了

SOURCE CODE https://github.com/bread-and-pepper/django-userena


WEB SITE https://django-userena.org/


PS: Open Source 用久了,真是非常的感恩,有這麼多套件可以用,尤其是一堆都寫得暴讚的,比自己刻還好,由心感激

2011-03-30

LG-P500

設定 Udev rules

$ sudo vim /etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"

$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules # In theory not necessary.

然後把手機開 Debug Mode 用 USB 連接線接上

2011-03-22

Django 1.3 cheat sheet

整理的粉讚


SOURCE
http://www.revsys.com/django/cheatsheet/


PDF 連結 http://media.revsys.com/images/django-1.3-cheatsheet.pdf

對 Django 快速開發者來說,http://djangopackages.com/ 有點像是套件的 App 及集散地, 分析 githubbitbucket 的結果



PS: 在你可以看懂開發者的 code base 之前 , 千萬不要以為自己就了解了什麼是,快速開發,絕對不是把,需要的功能,寫成幾萬行的函式庫,然後,就以為,這輩子,就只靠,這一套來快速開發

2011-03-21

手機上網眼睛不酸

有時候,非不得已,用手機上網,遇到沒有 mobile 版的網頁,看到眼睛很酸

可以試試看 Google Mobile Proxy

http://www.google.com.tw/gwt/n



PS: 其實,我是在自首,自己的站都還沒有手機版

2011-03-18

可憐可憐我壓

template 的 code 有 20256 行


======================================================
terry@terry:~/Dropbox/Fly/fb32/webdoc$ wc *.htm
45 152 1280 add2mysdi.htm
25 89 840 admeditmenusecond.htm
210 462 5372 admincontrol.htm
19 64 637 admin.htm
75 168 1595 adminitmodule.htm
1 1 14 adminmain.htm
469 1258 16209 adminmenu.htm
36 98 812 advdbdownrec.htm
66 220 2013 advdbdownrecresult.htm
9 17 186 ajaxlog.htm
0 0 0 _ajxaction.htm
347 1068 11331 _alloutputoptions.htm
188 618 7273 allsitelist.htm
105 300 3873 authautocomplete.htm
60 164 1421 authcontentbrowse.htm
17 68 483 _authlimitgroup.htm
48 130 1283 authoritybrw.htm
63 176 1647 authorityfolderhead.htm
8 22 163 authorityfoldertail.htm
93 271 2533 authoritynewrec.htm
42 98 857 authorityresult.htm
120 468 4475 _mysdibrwlist.htm
142 493 4776 _mysdihist.htm
.
..
...
...
略,共 318 個 template file , 不包含已經為各單位客製化的部份
...
32 108 1145 usercommand_score.htm
13 31 245 usercommand_share.htm
14 51 439 userinfo.htm
26 50 1573 webdescription.htm
6 22 142 webmged.htm
11 35 210 webmgedredirect.htm
10 34 265 webmge.htm
5 7 72 windowclose.htm
20256 62906 638262 總計
======================================================

PS: 這還能叫是 template 嗎?

2011-03-16

Solr with django-haystack

Solrdjango-haystack 的組合,真是強大,全文檢索真是太優了,交給專業的就是沒錯,多得是一大堆東西,還要自己蠻幹


這樣可以解決,用 RealTimeSearchIndex 的 ManyToManyField 不更新的問題,不過變成更新資料重複 update Solr ,的 over head ,以後,應該有更好的做好

Google Group 的討論 http://groups.google.com/group/django-haystack/browse_thread/thread/a274b5aeb121b1d4/5f4c4f7632aa1dfc?pli=1




PS: 為什麼 Solr 而不是 Xapian 或是直接用 Sphinx ,考量原因是 Apache 及 GPL license 還有就是成熟度,及 Solr 提供 API ,算是一個很方便 Lucene 接口,不單可以只做資料庫的全文檢索,可以應用的範圍相當大,這就給大家自由發揮了

2011-03-15

美好時光

利用一點點下班前的時光,Paul 找我去茶水間,煮咖啡




這倒是,我人生,第一次看到煮虹吸式咖啡,非常的讚

記者羞恥牆

轉一下,大大的文章

記者羞恥牆

這幾天的大新聞,昨天台股,也經過一天的震撼教育,不過,日本可以放到停止交易,台灣的媒體,很準時,一下子,就會圍著財經首長,"請問部長,國安基金什麼時候進場?" 官員們,也會回答,我們隨時準備好了。

正解難道不是,"有必要的時候進場壓,辦嘛告訴你,市場機制喊假的嗎?"

2011-03-07

自勉之




最近進入一家非常傳統,歷史算是悠久的軟體公司,我們最強最強的是,有一個多年前用 BSDDB 在加值開發的全文檢索系統,還有一個自己刻的 Web Frame Work ,主要的功能,就像是 Django Admin 的功能,來簡化開發,用無數 template ,不斷的 include and include more template,這一種方式,和一般我們用的 template ( Django , Jinja , Mako )很不同,因為,總不知道,下一個 include file 又 include 了多少的 files ,在 template 裡也混用了一大堆的 code

系統越是了解,我越是疑惑,以前學的,不要亂擺程式邏輯,可以和 UI 設計師,完美合作, TDD,真的在業界適用嗎? 更另我震驚是

1. 沒有任何一個單元測試的程式,一行也沒有,所以當然 CI 也是沒有的 (雖然測試不是萬能,不過,一點也沒有,驚)

2. 沒有版本控制,由於,每個專案,都需一點客製化,不過,none version control 也是令我震驚 ( 難道這才是 Agile software development 的終極奧義)

3. Python version 2.2 and 2.4 對不同的產品版本 ( 內心 OS 真虧還有保留下來,我都 download 不到了,原來,這才是愛壓,真正的不離不棄 )

4. C 和 Python 裡,混用 tab 及 space 做縮排 ( 前輩,我知道,這就是考驗我 "火的意志" )

5. 我們用 RedHat , Fedora , CentOS , Solaris ( Debian user 內心 OS ,馬的,現在最通用的不是 ubuntu 和 debian 嗎? 不要跟我說,以前的人寫文件,寫的是 RedHat ,我以前的 server 還都是 FreeBSD 和 RedHat 壓,十年前,那時候,他們是最好的選擇壓 )

6. 由於,自己 rebranding 客製的 BSDDB 的 C extension 是在 unix 平台的,所以開發,都是用 ssh 連到內部伺服器,開 vim 開發,哈哈,可是第一次見到,這麼多人用 vim 來寫東西,不過,我想同仁應該也是迫於無奈 ;-)

是我一直都自以為是,什麼都要 do it right , do it simple ,也不竟,懷疑起來,台灣軟體發展現況真是這樣嗎? 我怕,不知道,我去說服同事,我們也可以這樣做,更簡單,可以快十倍,可以像葉問一樣,一打十,到底是對得,還是? 只是滿足自己,固執的個性,或是,好好把時間,花在自己想玩的東西上面,最需要自勉的是,在傳統的軟體,如果不是走消費端的服務,開發,只是,小小的一小塊,可能只佔整個公司不到 1/10 ,所以不要把自己過度的放大,還有第一線的客服,業務,企劃,系統,專案經理,產品經理,還有一大群協同運作的長官,及成員

另一點,最大的覺醒是,90% 的學校單位是我們客戶,還有無數多政府單位,只要和知識有關的,幾乎都是我們的客戶

PS: 最令人欣慰的是,同事人都超好,不厭其煩的向我解釋,這一個複雜的系統,要如何使用, code 要由哪裡 copy and rewrite ,光是,資深主管,資深同事,帶我的時間,還有內部溝通的訓練,加起來,短短來 2 個月,就應該超過一,兩個星期,這可是台灣老闆,最不願花的成本,連生日派對都是上班時間喔,是我待過教育訓練,最好的公司,前些時候,面試的一些公司,心裡也有許多心得,改天分享

2011-02-26

抓到一個 VirtualBox 很奇怪的問題

心血來潮,測試一些交易策略,把 TS 下的作好的測試要移到 HTS 後,發現點了 4000 程式語言的功能,居然整個 windows 當住了,我的交易環境,一直都是放在 VirtualBox 裡的 windows 跑得,找到最後居然是,最近, Debian 更新到新版的 VirtualBox 4.0.2 後, Guest OS 也跟著裝 4.0.2 的

VBoxGuestAdditions_4.0.2.iso 這個就是重點,詳細禍首,是 VBoxGuestAdditions 還是 HTS 我也不是很確定(當然 HTS 有問題的機會很大,依歷史經驗來說),但是確實可以把 windows 搞掛,所以 GuestAdditions 還是保守一點,裝 3 系列的就很穩了

http://download.virtualbox.org/virtualbox/

2011-02-22

Lucene 筆記

Lucene Apache 組織下的一的專案,專做檢索搜尋的功能

筆記一下

Solr http://lucene.apache.org/solr/


elasticsearch http://www.elasticsearch.org/

Haystack http://haystacksearch.org/


PS: 現在公司產品的核心就在檢索,所以最近都在研究這些東西

2011-02-20

新玩具LG-P500



沒有太多原因,單純就是太超值了,比HTC的快便宜一半,這些3C的東西花大錢買等於幫人家發股票,或是把錢丟水裡一樣,跌價,只比情人節的花慢一點而已,手機非常的強大,以後開發 application , Mobile version 應該是不可缺的一項了,android 就是對工程師的味

就連在 APPLE STORE 上面很貴的 ssh client,也有類似的 ConnectBot,免費,真是讚

2011-02-14

不知道 Nokia 會不會也玩完了

雖然目前市佔還是第一,不過正以飛快的速度,被別人追過去,目前看起來,iphone 和 andriod 會贏的原因,不外呼就是 application ,而 application 代表的就是 developer ,要看看 Nokia 這麼搞有多少 developer 會跟下去

http://chinese.engadget.com/2011/02/11/nokia-notifies-developers-that-qt-is-out-for-windows-phone-devel/

2011-02-04

Jenkins 新的 hudson

有用 hudson 的記得更新一下,這是奇蹟公司(oracle) 併了太陽公司後,又一個 Java 下面的開發專案,選擇分支出來的專案,畢竟他本來就是一個完全的 open source project,所以名字也不希望被奇蹟公司控制商標權


http://jenkins-ci.org/

source link:

http://pythontestingcookbook.posterous.com/jenkins-download-available

2011-01-27

jquery carouse tools

一些,可以用來做 carousel 效果的 plugins

JQuery carousel plugin


1. http://www.gmarwaha.com/jquery/jcarousellite/

2. http://www.ferretarmy.com/files/jQuery/ImageCarousel/ImageCarousel.html

3. http://sorgalla.com/projects/jcarousel/

4. http://thomlx.free.fr/jquery/jquery_carousel.htm

5. http://www.gougouzian.fr/projects/jquery/carrousel/

JQuery tabs plugin

1. http://flowplayer.org/tools/index.html

2011-01-10

難得的面試

最近再看一些工作,看到各種不同的工作環境,有充滿藝術氣息的,也有一板一眼,制式的格子辦公室

今天,去的這一間公司主管,我平常就有訂閱他的 Blog,還蠻有趣的,聊了很多的技術的東西,好像,在台灣的公司,有稍微有多一點人用 Python 了,所以蠻有收穫的,我想到了一定年紀後,工作對我來說,到底追求的是什麼呢?或者什麼樣的工作可以滿足你

一份非常穩定的收入(這一項應該每個人都一樣)

一點生活的調劑

求知慾的滿足

成長有分享空間

有新的東西可以挑戰

PS: 各位加油摟,不管是生活還是工作

2011-01-05

18 啪代表什麼

18 % 就是跟你說,對啦,我就是要你們勞工,農民,軍,公,教,以外的人去死啦,反正,每次選舉,隨便加一加,還不是一樣當選


PS: 記得,在求學時最深刻的一件事,就是在辦理助學貸款的同一天,我排隊的那一排,是申請助學貸款,可以貸款學雜費,旁邊的那一排,是軍公教,子女,申請的叫做,學雜費補助,就是國家幫你出,當下,覺得怎麼一樣是中華民國的國民,好像,我父母是保勞保的,就該死一樣,福利天壤之別,軍公教是超英趕美的社會福利,士,農,工,商,像是難民一樣,這個時候,就會覺得,有關於法律,公民與道德的教育,非常的可笑,憲法所保障的公平,法律之前人人平等,也只是一個笑話,指的是殺了犯法之後的保障,犯法之前,人還是有分類的,真正弱勢,恐怕是,連電腦也沒有,沒法像我一樣無病呻吟的人,也許正在翻著垃圾桶,找尋資源回收的標的,也是現在正安安份份的在育幼院,等不及長大,可以看看花花綠綠地世界