顯示具有 django 標籤的文章。 顯示所有文章
顯示具有 django 標籤的文章。 顯示所有文章

星期三, 1月 27, 2010

Upcoming Django 1.2 & PostgreSQL 9.0

http://docs.djangoproject.com/en/dev/topics/db/multi-db/#topics-db-multi-db
Django 1.2 新功能: Multiple databases

PostgreSQL 9.0 新功能 Hot Standby跟Streaming Replication

http://wiki.postgresql.org/wiki/Streaming_Replication

http://developer.postgresql.org/pgdocs/postgres/hot-standby.html

還沒空試, 不過結合這幾個新功能的話似乎可以有效的分散django資料庫端的read/write, 將write-only database server上的WAL(write-ahead log) 即時streaming到read-only database server上的hot standby database, 感覺好像不錯~~

星期四, 12月 11, 2008

[tips] 針對特定model改變django ORM預設delete()行為的方法

Django ORM裡的預設delete行為是去模擬ON DELETE CASCADE, 主要是為了保證資料的一致性, 但是雖然在自帶的admin介面裡會提示是否要刪除其他相關聯的資料, 不過仍然可能會對某些需求帶來一些困擾, 而且到目前為止並沒有一個標準的方法來更改這個機制, 這邊我提供一個簡單的方法將model的ON DELETE CASCADE行為改為RESTRICT, 就是在需要不同機制的model裡去override orm原本的delete行為 :

 
def delete(self):
s = CollectedObjects()
self._collect_sub_objects(s)
if len(s.items()) == 1:
super(self.__class__, self).delete()
else:
pass



這可確保當沒有任何關聯物件時才會刪除, 否則只會安靜的pass,
this hack probably need django 1.0+.

星期一, 9月 29, 2008

[link] django-mako

mako template是我除了django預設的template之外,
唯一真的有在product上使用過的template,
mako對於我來說的優點是其簡單非XML的語法,
此外mako無需任何C/pyrex extension,屬於純python的實作,
非常適合在無需django及host上沒有C compiler時單獨安裝。

現在有網友替mako template做了一個django-mako的plugin,
使用mako跟django整合又更容易了。

連結:
mako:
http://www.makotemplates.org/ (LICENSE: MIT)

django-mako:
http://code.google.com/p/django-mako/ (LICENSE: apache 2.0)

星期一, 9月 15, 2008

Django有吉祥物囉!

今年9月6-7日的Django Conf 第一天的最後一個議程是Cal Henderson的Keynote: Why I Hate Django,其中提到很重要的一點: Django沒有吉祥物,Django需要一個具有"Awesome"跟"Magical Powers"特性的吉祥物來作代表。於是在全球Django愛好者的腦力激盪下,屬於Django自己的吉祥物出現囉! 就是avalonstar的Bryan Veloso所設計的這隻可愛的pony喔!






ponybadge

更多django pony的有趣資訊請參考:
http://avalonstar.com/blog/2008/sep/9/web-framework-ponies/

http://code.google.com/p/django-pony/


http://www.djangopony.com/



http://twitter.com/djangopony/

星期四, 9月 04, 2008

Django 1.0 released !!

http://www.djangoproject.com/weblog/2008/sep/03/1/

Django 1.0 released!

1.0是Django project一個很重要的里程碑,因為一直以來官方對於Django 1.0有個很重要的承諾,就是在1.0之後的所有版本都將維持向前相容性,就是不論是到1.x多少版,都將維持對1.0版本程式的相容性而不會再作任何會打破相容性的重大變動。這也是為什麼1.0版本會遲遲不推出的原因。

不過1.0 release的這一天終於來了,
根據Django官方網頁的說法,自從上一個穩定版Django 0.96.2以來,到這次的1.0版本發佈,已經有超過三十五萬行的Django程式碼被修正或改變,足見改變之大。(改動350000行的python, orz)

這次總算是讓我可以使用Django的新版本了,畢竟用了0.95.x跟0.96.x實在是很久了,而Django的SVN trunk對於真的要上線的系統畢竟還是個比較危險的使用方式。不過美中不足的是debian lenny似乎還是會來不及將Django 1.0包進debian linux系統,看來以後安裝上線系統又要多費一番功夫。

想知道更詳細的改變內容跟新增功能請看Django 1.0 release notes

星期五, 6月 13, 2008

[link] 有吵有糖吃... Django 1.0 is coming...

根據這篇Roadmap的說法, Django 1.0 會在7月alpha, 8月rc, 9月release. 雖然不知道到底準不準時, 但是"準備好了就會出來"這種話我已經聽膩了... XD

星期四, 6月 12, 2008

[link] django's problem.

http://metajack.wordpress.com/2008/06/11/the-problem-with-django/

基本上我還滿贊同這篇文章的觀點,
事實上我甚至覺得大部分正在開發中的軟體專案都應該建立一個以時程為主的release週期, (即regular release)
而非是現在主要是以功能完成度為主的週期.
因為開發者通常都過於樂觀還有自信太強,
常常低估了完成軟體的時間, 對於沒做過的功能不管聽起來再怎麼簡單都最好還是保守點比較好,
像django的1.0也實在是拖太久了 難怪ticket#2070會被拿出來鞭... 一個http streaming upload 的patch前前後後改了兩年多還是沒進trunk...真不知道是該說追求完美還是太龜毛了... :(

像Ubuntu這樣的release週期我就覺得滿不錯的, 儘管每次的新版變動不會太大, 然後或多或少都會有bug, 但是至少是在建立一個正向循環並且能鼓勵新的開發者投入.

當然還是要說Django真的很不錯就是了. :)

星期六, 7月 21, 2007

[tip] django + oracle on debian linux.

目前SVN裡最新版本django已經由官方直接支援oracle資料庫,
也因此我也花了點時間測試一下django跟oracle的配合.
用起來覺得還不錯, 所以跟大家分享一下我的簡易安裝心得.

首先我是直接安裝oracle 10g 的XE版本,
在debian linux上安裝oracle 10g xe其實很簡單, (我是用etch)
因為oracle連apt套件庫都幫你準備好了.

只要在你的sources.list加上這行:


deb http://oss.oracle.com/debian/ unstable main non-free

並安裝:

#wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
#apt-get update;apt-get install orcale-xe-universal

最後跑個/etc/init.d/oracle-xe configure即可作oracle的安裝設定.
如果想測試安裝oracle xe的結果可以連上Web的8080port看管理介面:
http://127.0.0.1:8080/apex/

這個版本的oracle除了有內定最大只能使用4G資料庫大小,1G Memory
跟只會使用單顆CPU的限制外,
並沒有限制其他特別嚴苛的條件, 連商業使用都在可允許的範圍.
而因為這個限制其實很夠用,且高階一點的機器可以跑個vserver還是memcache.
然後你要多跑幾個database也不在限制範圍內,
所以其實我個人覺得就是oracle資料庫大放送, 隨便你用.
再來這個版本又比我印象中的oracle好安裝的太多.
還送你一個web管理介面(而且oracle似乎有心要繼續維護10g XE,我安裝時有根據官網的說明順便升級到了目前最新的apex版本3.0.1),可以說是物超所值.

再來就是安裝python的oracle支援套件cx_oracle,
因為官方網站只有提供windows跟fedora的binary套件, 我就直接抓source回來安裝,

export ORACLE_HOME='/usr/lib/oracle/xe/app/oracle/product/10.2.0/server'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

python setup.py install


接下來當然就是安裝django的最新svn版本,
這點看官方網站的Installing the development version說明應該就很清楚了,
http://www.djangoproject.com/documentation/install/

安裝完之後其實就跟其他資料庫沒什麼太大的差異了,
就可以寫個小程式測試一下了,
不過我上次測試的時候遇到了一點小問題,
就是我在syncdb時出現了一個
TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode'
的錯誤訊息,
我推測應該是因為oracle這個branch剛好跟unicode這個branch同時進了svn trunk,
所以漏掉了這個,
可以暫時先依照我丟到http://code.djangoproject.com/ticket/4827的patch修正,
不過我想下一版release的django應該就會修正這個問題才對.

總算,oracle成為
django除了mysql,postgresql,sqlite之外的第四個直接支援的database.
也是第一個support的商業database.
雖然我目前用不大到(postgres還是不錯滴), 不過還是可喜可賀. :)

星期日, 6月 24, 2007

Thread dying problem may fixed in django/flup.

一直都耳聞django的apache+mod_fastcgi+thread mode在高負載狀況下有問題,
甚至也有人將之歸結於python的thread實作有問題,
所以我一直以來都是使用prefork的方式來啟動fastcgi/wsgi,
上禮拜在替django作負載調試的時候,
也發現thread mode在超高壓力測試的情況下,的確會停止運作造成service unavailable
(concurrency > 1000)
因此才花時間找出真正的原因(至少在我這邊的原因),
應該是django所採用(其實不止django, pylons跟turbogears也有採用)
的FastCGI to WSGI adapter -- flup,
在threadpool的實作上有些許的小問題, 沒有對運作異常的thread拋出例外的情形加以處理,
才導致了發生問題的thread沒有再次進入threadpool,所以運作一陣子後會讓所有thread悄悄死去.

在修正了這個問題之後, 即使在concurrency > 1000的情況下仍然保持順暢運作,
也擺脫了使用modpython或prefork mode的fastcgi大量耗用伺服器記憶體的情形,
thread mode + FastCGI/WSGI 果然才是王道!

已提交patch, 期待新版的flup收納之後, 讓python的web framework在thread mode下運作更順利.

星期五, 6月 15, 2007

[link] Generate django project API docs

http://wolfram.kriesing.de/blog/index.php/2007/generate-django-project-api-docs


這篇講到如何用epydoc產生比admin裡的doc更完整的django API文件.
當然會包含自己專案裡面API的doc string.
very useful.

星期二, 4月 24, 2007

[link] Add OpenID consumer support to any Django application

Simon Willison just release first version of django_openidconsumer.

As Simon says:
"""
I plan to keep the package under active development, with the aim of using it to demonstrate best practises in implementing OpenID (hence the support for multiple OpenIDs and simple registration out of the box). Next on the list is integration with Django's built in authentication system, including the ability to associate one or more OpenIDs with an existing user account.
"""

This is so cool if you need any openid support in django. :)

一些 OpenID 的連結:

How to use OpenID

Six cool things you can build with OpenID

The Future of OpenID

Web developer Simon Willison talks to Vitamin about OpenID


What is OpenID good for?

星期一, 4月 23, 2007

[link] Django dbmigration

MikeH在django mailing list上丟出了db migration的工具.

Django原本也有個schema-evolution的branch, 但是很可惜由於過於複雜, 野心又太大,Developer加入又離開,一直都沒有什麼太大的進展,到現在trunk仍然沒有一個可用來作scheme migrate的工具,基本上每次要新增欄位, 大家不是手寫SQL,就是自己寫script轉換舊資料,都在作重覆的事,沒有一個很pythonic的解決方案.(Actaully it's not really a big problem, since everything is so easy in python. However, I believe everyone who use django are all tired of keeping hear some newcomers yelling that rails 'already' had that. :P)

不過這次丟出的dbmigration看起來非常的不錯, 雖然版本只有0.1, 不過現在已經可以支援用django的ORM及SQL寫migration,如果繼續發展下去,應該會是非常有用的工具.

星期六, 4月 14, 2007

[link] django template utilities

James Bennett發佈了django-template-utils

django的template tags的使用跟抉擇一直是個藝術,
有些人嫌他功能過於強大(ex: guido),也有不少朋友覺得他功能過少,
James Bennett開發了一些template tags並整理了不錯的使用文件.有興趣的人可以參考看看.

星期二, 2月 20, 2007

[link] [screencast] 整合Django與PHP

http://showmedo.com/videos/video?name=pythonNapleonePyConTech2&fromSeriesID=54

ShowMeDo上放了有關這次PyCon2007網站架設的講題影片,
看了之後才發現原來PyCon2007的網站是由php的wiki跟django"合力"製作完成的. :)

這個影片示範了這次PyCon2007如何透過Django的Custom Template Loader
整合PHP的wiki pmwiki (恰好是Kalug的Wiki Engine :) )進入Django,

講者還示範了整合他老婆的Wordpress Blog進入Django的過程.

very cool!

星期一, 2月 19, 2007

[link] Satchmo -- 基於Django的電子商務商店架站軟體

應該不少人都有聽過osCommerce這個Opensource的PHP&GPL線上開店架站軟體.

那麼Django有沒有什麼對應方案呢?
答案似乎是有的, Chris Moffitt用BSD版權釋出了基於Django開發的電子商務開店軟體: satchmo

對於這類軟體, 大家總是有疑問, 它穩定嗎, 馬上能用嗎?
基本上這類軟體一定要經過客製化的程序,
而Satchmo還在先期開發中,雖然可用,但不見得符合你的需要.
如果你想要完全不修改就能使用那可能還是花錢買公司的Support比較妥當.
好處是satchmo以BSD版權釋出, 如果你有這類的需求, 多看看別人的程式碼也無妨.

你可以先看看Demo:
Demo站台在此

原作者在Mailing list上也有回答:
"""
1. I think Satchmo is ready with the caveat that it needs to be the
right kind of site. I do not believe any Satchmo sites are live in the
wild. I will say that the "Demo Store" is the current code and does get
a fair amount of activity (i.e. probably more then my real-life store ;)
and so far nothing has gone up in smoke. The features that Satchmo have
work and for me, they are > 90% of the features I need. My wife's store
would have < 50 items, some discounts, authorize.net integration and
possibly some other custom CMS type features. I am confident I could
put Satchmo in and it would work well for me. The only reason I haven't
is that my current site works and I haven't spent the time doing the
HTML/CSS re-design I'd like to do. In some ways, Satchmo already does
more for me than the stock OsCommerce site I'm running now. Of course,
Satchmo does not have the rich amount of modules available like OsCommerce.

I will say that OsCommerce becomes a real nightmare once you start doing
anything more than the stock store. It just feels crufty (partially
because I'm no PHP expert) and I just fear making changes to the store.
I never know how things will break.

I also think Satchmo is stable because it's based on Django. A lot of
the scary stuff around security and having different db support is
handled by the robust Django framework. There's also lots of experience
with how to scale Django that should apply directly to Satchmo.
"""

簡單來說只要有熟Python/Django跟Html/css的人持續修改維護就可以開店了.
大部分用Django開發的軟體,如果了解Django的基本架構就大概知道要怎麼修改而不會爛掉.
(有金主找不到的話, 就到Unofficial Python PlanetKalug灑大錢加上三顧茅廬大概就會有高手跑出來了 XD)

星期三, 2月 14, 2007

Django小抄

引用:
http://www.mercurytide.com/whitepapers/django-cheat-sheet/
http://digg.com/programming/Django_cheat_sheet

Mercurytide 製作了一份Django 0.95+svn 版的小抄,
裏面包含了Template的內建tags跟filters, ORM model裡的Field Type/Options,跟meta,
小抄裡用了圖型標示,讓人能一目瞭然, 分類很清楚, 製作也很精緻.
值得django user印出來參考.

下載:
pdf版本
png版本 (1600*1280 pixels)

星期六, 2月 03, 2007

[tip] Feedjack的兩個小問題

前陣子跟Shawnkalug上安裝了Feedjack, 我發現預設的Feedjack似乎有兩個小問題:

1. 使用IE瀏覽會整個亂掉. 這點我已經修復了 基本上只是調整一下CSS,
還有加了一個Check有沒有大頭照存在的filter, 因為一直都用firefox,
所以在這之前完全沒注意到有這個問題, 用了公司測試用的IE瀏覽器才發現,
Feedjack官方網站提供的Example Site除了一兩個有重新設計的之外, 也是全部都爛掉,
Feedjack居然預設完全沒考慮到IE的瀏覽, 這點實在是讓我出乎意料.

2. Tag Cloud顯示有問題:
用了一陣子之後突然發覺tag cloud的錯誤很大...
我blog上明明是django的項目最多, 但字體卻不是最大.
看了一下我的blog tag顯示計數, 再比對Feedjack上的:
In [1]: from feedjack.models import Site
In [2]: x = Site.objects.all()[0]
In [3]: from feedjack.fjcloud import cloudata
In [4]: cloudata(x)[1]
Out[4]:
[{'count': 2, 'weight': 2, 'tagname': 'ajax'},
{'count': 17, 'weight': 5, 'tagname': 'django'},
{'count': 4, 'weight': 2, 'tagname': 'humor'},
{'count': 2, 'weight': 2, 'tagname': 'link'},
{'count': 7, 'weight': 3, 'tagname': 'programming'},
{'count': 11, 'weight': 5, 'tagname': 'python'},
{'count': 3, 'weight': 2, 'tagname': 'talk'},
{'count': 8, 'weight': 4, 'tagname': 'tips'},
{'count': 1, 'weight': 1, 'tagname': 'translation'},
{'count': 5, 'weight': 3, 'tagname': 'web'}]

疑? count 跟weight都沒問題啊,
不過很明顯的Feedjack上的tag cloud跟我的blog上的tag cloud就是長的不一樣,
仔細再查了一下, 阿, style.css居然漏加了cloud_4跟cloud_5的定義:
那我就順便改了一下字體大小, 這樣就可以了.

.cloud_1 {
font-size: 80%;
}
.cloud_2 {
font-size: 90%;
}
.cloud_3 {
font-size: 100%;
font-weight: bold;
}

.cloud_4 {
font-size: 110%;
font-weight: bold;
}

.cloud_5 {
font-size: 120%;
font-weight: bold;
}


這樣就OK了.

[links] django search

http://djangosearch.com/
滿好用的一個網站,
可以隨時閱讀到最新有關django的文章以及source project,
左下角有個地方可以直接將google的django搜尋加入到firefox search engine裡面,
當然, 這個網站本身也是django作的.

[link/tips] add Trackbacks to Django

http://www.personal-api.com/train/2007/jan/31/how-add-trackbacks-django/

這篇文章介紹了如何將trackback加入到django中的作法,
同一位作者也寫了有關pingback在django裡的作法.
http://www.personal-api.com/train/2007/feb/01/pingbacks-xml-rpc-and-django/