1/10/2012

Custom user permissions in django




果然是盡信書不如無書(冏),在django的官網上提到custom user permission的方法,透過宣告一個新的model,設定它的meta data,最後透過django的manage.py syncdb就可以很容易的完成。所以範例相當單純只有下面幾行,但是就是這幾行試了老半天就是不行。
class Task(models.Model):
    ...
    class Meta:
        permissions = (
            ("view_task", "Can see available tasks"),
            ("change_task_status", "Can change the status of tasks"),
            ("close_task", "Can remove a task by setting its status as closed"),
        )
    ...

結果原來是官方範例上的permissions = (),要改成permissions = []
如下面光棒標示處:
class Task(models.Model):
    ...
    class Meta:
        permissions = [
            ("view_task", "Can see available tasks"),
            ("change_task_status", "Can change the status of tasks"),
            ("close_task", "Can remove a task by setting its status as closed"),
        ]
    ...



1/01/2012

Unicode字串轉為ASCII字串



今天在使用Python的ldap lib做帳號管理的介接, 發現使用ldap.add_s設置ldap的userPassword屬性時會發生問題, 後來將字串改為ASCII就解決了! 以下是將unicode轉為ASCII的方法:

title = u"this is a statement"
import unicodedata
print unicodedata.normalize('NFKD', title).encode('ascii','ignore')

'Kluft skrams infor pa federal electoral groe'

Reference from http://docs.python.org/library/unicodedata.html

12/26/2011

市場小觀察,免費 VS 付費



最近觀察網站上免費影片和付費影片的使用比率。我發現人們更傾向於使用完全免費的資源

即使免費資源的使用手續比較繁雜,像是可能會有一堆廣告、或是比較不穩定,提供的免費資源容易lag或是畫質較不清晰,但是願意掏錢出來的人依舊不多。而付費資源只需要一點點的cost,但是卻能更提供穩定的頻寬,穩定的畫質。但是願意掏錢出來的人依舊不多。


12/08/2011

從Google Analytic數據看程式化Robot自動刷瀏覽次數


最近我的網站遇到了一個奇怪的事情。應該是說,從Google Analytic的數據上面來看似乎有點奇怪。我的網站提供一個推薦網站獲取推廣獎金的方案,用IP當作辨識的依據,不同的IP表示不同的人瀏覽,我依據瀏覽的人數來決定要付多少錢給推廣網站的人。在這樣的情況下,前些日子我忽然發現某個推廣者(Promoter)的專屬網址,用Google Analytic找出的資料如下圖:




觀察其結果,可以發現

12/06/2011

Amazon S3 + Cloudfront 實現 RTMP 線上影音串流


最近在寫線上影音的網站,原本是將影片存在VPS server上,可是因為虛擬主機硬碟空間有限,如果允許使用者上傳影片的話,很容易就搞掛了。但是,要跟主機商買額外的硬碟空間,非常的貴($15.00 / 10GB),不太符合經濟效益。於是腦筋就動到了Amazon S3上面。Amazon S3 是一個Cloud的Storage pool,Cloudfront是一個Amazon提供的Content delivery network(CDN),網路上有很多說明,這裡不再贅述。


在Cloudfront上面,允許使用者透過http、https、rtsp等方式存取你存在Amazon S3的資料,並且你可以自訂Public/Private。以下簡單說明當資料上傳到Amazon S3以後,並且Cloudfront正確設定後,要怎麼透過Python Script設定上傳的檔案,讓上傳的影音檔案可以透過rtsp的方式發佈。

11/09/2011

GXT/GWT Data Flow

最近在用GWT和GXT開發程式,整理了一下GWT開發的重點:

  1. 它的Data flow怎麼透過RPC傳送
  2. 要宣告和實作哪些Interface

 


10/19/2011

dojango 安裝流程&遭遇的問題

安裝相當簡單,只要Python先安裝好,再安裝djagno,最後再把dojango資料夾copy到project裡面,並依照 dojango:gettting started的步驟對settings進行設定,就可以在你的專案中使用dojango.forms裡面的相關物件。

只是看起來簡單的過程中,竟然出現了意外的錯誤信息,錯誤如下:
AttributeError at /UserRoleManage/User/Delete
    'module' object has no attribute 'DEFAULT_DATE_INPUT_FORMATS'     Request Method: GET     Request URL: http://127.0.0.1:8000/     Django Version: 1.3.1     Exception Type: AttributeError     Exception Value:     'module' object has no attribute 'DEFAULT_DATE_INPUT_FORMATS'     Exception Location: Your-Project\dojango\forms\__init__.py in , line 3


後來是我把dojango\forms\fields.py裡面的這兩行移除,
'Field', 'DEFAULT_DATE_INPUT_FORMATS', 'DEFAULT_TIME_INPUT_FORMATS', # original django classes
'DEFAULT_DATETIME_INPUT_FORMATS', 'MultiValueField', 'ComboField', # original django classes

目前程式跑起來是沒有什麼問題。可以看到dojo的UI很完美的呈現在畫面上。如果有問題再跟大家報告吧~:>