八月 26, 2011

電腦做什麼事
pydoing
程式語言教學誌 is about »

tag cloud

» HTML DOM 快速導覽 - 元素物件 Node 的屬性 nodeType

Node.nodeType 回傳 Node 的型態。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 Node 的屬性 nodeName

Node.nodeName 回傳 Node 的名稱。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 Node 的屬性 nextSibling

Node.nextSibling 回傳 Node 的下一個元素 (element) 物件 (object) 。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 Node 的屬性 lastChild

Node.lastChild 回傳文件中 Node 的最後一個子代 (child) 元素 (element) 。
繼續閱讀


» Java 快速導覽 - 關於 compareTo() 的補充範例說明

補充範例如下
繼續閱讀


八月 25, 2011

PythonInsider
pythoninsider
Python 核心開發的新聞資訊
» Python 核心開發輔導計畫

原文網址 The Python Core Mentorship Program .

Jesse Noller 在最近公告了 Python核心輔導 計畫 ( the Python Core Mentorship Program ), 這個計畫要讓學生,以及其他的專案的開發者可以得到導師的指導來降低進入 Python 核心開發的門檻。 而導師將會由有貢獻過 Python 核心程式碼經驗的程式設計師來擔任。

需要你的貢獻

不論你的經驗是多是少,導師們都會盡快回答問題,以親切的態度來給予回應。 想要貢獻程式碼的人會在整個開發流程中全程得到指導。像是如何在 mailing list 中討論問題,使用 bug tracker, Mercurial, code review,以及其他各種幫助。

Early Success

這個計畫目前已經在成功運作之中,參加者已經活躍地提交了許多patch。 在 mailing list 中也有相當多有建設性的討論,帶領人們在各個議題之中往正確方向前進。

準則

當想要貢獻程式碼時,新手可能不知道該如何拿捏與導師互動的分寸,也不知道如何善用mailing list。 因此、我們在這個 website 擬定了一份準則來舒緩疑慮。 長遠來看,這不只是對 Python 核心開發有所幫助, Jesse 以及其他的導師更希望這個計畫可以成為其他專案的典範,也期待可以增加 Python 核心開發者的多樣性。

報名吧

整個計畫是運作在 mailing list 上,也有一個清楚又明確的 website 。 你可能是個正要加入社群開始貢獻程式碼的菜鳥,也可能是個老手但依然對各方面充滿疑問。 這是一個絕佳的好機會來深入Python核心。加入我們,開始問問題吧,你將會在實作中得到寶貴的經驗。


limodou的學習記錄
limodou
is about »
» uliormµ÷Ó÷ÇORM sqlÓï¾äµÄ×¢ÒâÊÂÏî

Ò»¾ä»°¼òµ¥Ëµ£¬ÔÚÖ´ÐÐview´¦ÀíʱʹÓÃdo_À´Ö´ÐзÇORMµÄÓï¾ä£¬È磺

from uliweb.orm import do_

result = do_(select(User.c, User.c.username=='limodou'))

¸´ÔӵĽâÊÍ

uliormÊÇ»ùÓÚsqlalchemy¿ª·¢µÄ¡£ËùÒÔ¿ÉÒÔÖ±½ÓʹÓÃsqlalchemyµÄºËÐÄsql¹¦ÄÜ£¬±ÈÈç³£¼ûµÄ£ºselect, update, insert, update¡£ÆäÖÐselect¿ÉÒÔµ¥¶Àµ÷Ó᣶øupdate, insert, updateÒ»°ãÊǺÍÒ»¸öTable¶ÔÏóÁ¬½ÓʹÓ᣶øʹÓÃuliormÄãÒ»°ãÒªÏÈ´´½¨Ò»¸öModel£¬È»ºóÕâ¸öModel¾Í»áÓÐÒ»¸ötableÊôÐÔ£¬Ëü¾ÍÊÇÕæÕýµÄTable¶ÔÏó£¬ËùÒÔֻҪʹÓÃModel.table¾Í¿ÉÒÔµ÷ÓÃTableÏà¹ØµÄ·½·¨ÁË¡£ÄÇôTableÖл¹ÓÐ.cÊôÐÔ£¬ËüÊÇËùÓÐ×ֶεÄÒ»¸öÀà×ÖµäÊôÐÔ¡£Äã¿ÉÒÔʹÓÃModel.table.c»òÖ±½ÓʹÓÃModel.c£¬ËüÃÇÊÇÒ»ÑùµÄ¡£

Òò´ËÎÒÃÇÒѾ­ÖªµÀÁË£¬ÈçºÎÕÒµ½ÏàÓ¦µÄTableºÍ×ֶμ¯ºÏ£¬ÕâÑùÎÒÃǾͿÉÒÔÖ´ÐÐsqlalchemyÌṩµÄ¸÷ÖÖ·½·¨¡£±ÈÈçÏȶ¨ÒåÒ»¸öUser±í£º

class User(Model):
    username = Field(str, max_length=80, verbose_name='Óû§Ãû³Æ', index=True, unique=True, required=True)

    email = Field(str, max_length=80, verbose_name='ÓÊÏä')

ÉÏÃ涨ÒåÁËÁ½¸ö×ֶΡ£ÄÇôÎÒÃDz»ÓÃuliormÌṩµÄ·½·¨£¬¶øÊÇʹÓÃsqlalchemyÌṩµÄsqlÓï¾äÀ´²Ù×÷һϣº

select(User.c, User.c.username=='limodou').execute() #²éѯ

User.table.insert().values(username='new user', email='newuser@abc.com').execute() #²åÈë

User.table.update().values(username='test').where(User.c.username=='new user').execute() #¸üÐÂ

User.table.delete(User.c.username=='new user').execute() #ɾ³ý

×¢Òâµ½ºóÃæµÄ'.execute'£¬ÕâÑù»áʹÓÃÊý¾Ý¿âÒýÇæ×Ô¶¯´´½¨µÄÁ¬½Ó¡£È»ºóÔÚ½á¹û´¦ÀíÍê±Ïºó×Ô¶¯¹Ø±Õ¡£Èç¹û½á¹û»¹Ã»Óд¦ÀíÍ꣬¿ÉÒÔÖ±½Óµ÷ÓÃresult.close()À´¹Ø±Õ¡£ÉÏÊöµÄÃèÊö¿ÉÒÔÔÚsqlalchemyµÄÎĵµ¡¶Working with Engines and Connections¡·ÖÐÕÒµ½¡£¶øÕâÀï×Ô¶¯´´½¨µÄÁ¬½Ó£¬ÆäʵȱʡÊÇÁ¬½Ó³ØµÄ´¦Àí¡£¹Ø±ÕÒ²Ö»ÊÇ·µ»Øµ½Á¬½Ó³ØÖС£µ«ÊÇÕâÑùÒ»À´£¬ÓпÉÄÜÎÞ·¨±£Ö¤¶àÌõsqlÓï¾äʹÓÃͬһ¸öÁ¬½Ó£¬²¢ÇÒ´¦ÓÚÒ»¸öÊÂÎñ֮ϡ£ËùÒÔ´øÊÂÎñµÄ´¦ÀíÒªÏÈ´´½¨Á¬½Ó£¬È»ºóÔÚÁ¬½ÓÉϵ÷ÓÃbegin()À´¿ªÆôÒ»¸öÊÂÎñ£¬È»ºóËùÓеIJÙ×÷¶¼ÔÚÕâ¸öÁ¬½ÓÉÏ£¬È»ºó¸ù¾ÝÊÂÎñµÄÌá½»»ò»Ø¹öÀ´µ÷ÓÃÏàÓ¦µÄcommit()»òrollback()¡£

ͬʱsqlalchemyÔÚ´´½¨ÒýÇæʱ»¹ÌṩÁËÒ»¸östrategyµÄ²ÎÊý£¬¶øuliorm¾ÍÊÇʹÓÃÁËËü£¬È磺

db=create_engine('mysql://localhost/test',strategy='threadlocal')

ÕâÑù£¬ËüµÄ×÷ÓþÍÊǵ±ÄãÖ´ÐÐ.execute()(ÔÚsqlalchemyÖнС°Connectionless¡±£¬¼´·ÇÏÔʾÁ¬½Ó´¦Àí)ʱ×Ô¶¯´´½¨Ï̼߳¶µÄÁ¬½Ó¡£ÕâÑùµÄºÃ´¦ÊDZ£Ö¤²»Í¬µÄsqlÓï¾ä¹²ÀëÒ»¸öÁ¬½Ó£¬´Ó¶øʹµÃÊÂÎñµÄ´¦Àí±È½Ï¼òµ¥¡£µ«ÊÇuliormÒ²ÊÇÔÚÕâ¸öµØ·½³öÁËÎÊÌâ¡£ËùÒÔ¾­¹ýÖع¹£¬uliormµ¥¶ÀÌṩÁËBegin(), Commit(), Rollback()À´±£³Ö×ÔÒÑά»¤µÄÏ̼߳¶µÄÁ¬½Ó¡£µ«ÊÇconnectionlessÔÚuliormÖл¹ÊÇ¿ÉÒÔʹÓã¬Ò²Òò´Ë»áÔì³ÉËüÃÇʹÓõÄÁ¬½ÓÓпÉÄܲ»ÊÇͬһ¸ö£¬ËùÒÔΪÁ˱£Ö¤ÔÚÒ»¸öÇëÇóµÄ´¦Àí¹ý³ÌÖÐʹÓÃͬһ¸öÁ¬½Ó£¬ÄãҪʹÓÃuliormÌṩµÄdo_()º¯ÊýÀ´Ö´ÐзÇORM²Ù×÷¡£È磺

do_(select(User.c, User.c.username=='limodou'))

Æäʵ¾ÍÊÇ°ÑsqlÓï¾ä×îºóµÄ.execute()È¥µô£¬ÓÃdo_()°üº¬ÆðÀ´¾ÍÐÐÁË¡£Ëü»á×Ô¶¯²éÕÒµ±Ç°Ïß³ÌÖÐÒѾ­´æÔÚµÄÁ¬½Ó¶ÔÏó£¬Èç¹ûûÓÐÔòʹÓÃÏß³ÌÁ¬½Ó¶ÔÏó£¨ÊÊÓÃÓÚÅúÁ¿´¦Àí³ÌÐò£©¡£ÄÇôÕâ¸öÏ̶߳ÔÏóÓ¦ÈçºÎ´´½¨ÄØ£¿ËüÊÇͨ¹ýBegin()À´´´½¨µÄ¡£¶øBegin()»áÔÚÿ¸öÇëÇó½øÀ´Ö®ºó£¬ÔÚÖ´ÐÐÄãµÄviewº¯Êý֮ǰ±»µ÷Ó㬴Ӷø±£Ö¤ÒѾ­ÓÐÒ»¸ö¿ÉÓõÄÏß³ÌÁ¬½Ó¡£²¢ÇÒÔÚ·µ»ØÏìÓ¦ºÍÅ׳öÒ쳣ʱ£¬ËüÒ²»á±»ÕýÈ·»ØÊÕ¡£

µ±È»£¬Èç¹ûÄã²»ÏëʹÓÃȱʡµÄÏß³ÌÁ¬½Ó£¬¶øÊÇ×ÔÒÑÀ´´´½¨ÐµÄÁ¬½Ó£¬Ä㻹ÊÇ¿ÉÒÔͨ¹ý£º

db = get_connection() #»ñµÃȱʡµÄengine¶ÔÏó

conn = db.connect() #»ñµÃеÄÁ¬½Ó

À´´´½¨ÐµÄÁ¬½Ó¡£×¢Ò⣬Õ⻹ÊÇÁ¬½Ó³ØµÄ´¦Àí¡£sqlalchemyÔÚȱʡÇé¿öÏ»á×Ô¶¯´´½¨5¸öÁ¬½ÓÊýµÄÁ¬½Ó³Ø¡£

Èç¹ûÄ㻹ÏëʹÓÃÏß³ÌÁ¬½Ó£¬µ«ÊÇͬʱÏë×ÔÒÑ¿ØÖÆÊÂÎñ£¬ÄÇô¿ÉÒÔÔÚÄãµÄviewÖÐÏÔʾµ÷ÓÃBegin(), Commit(), Rollback()À´¸´Óõ±Ç°µÄÏß³ÌÁ¬½Ó£¬²¢½øÐÐÊÂÎñ¿ØÖÆ¡£ÕâÀïBegin()»áÏȲéÕÒÊDz»ÊÇÒѾ­´æÔÚÒ»¸öÏß³ÌÁ¬½Ó£¬Èç¹û²»´æÔÚ£¬Ôò»áÏÈ´´½¨£¬Èç¹û´æÔÚÔò¸´Óá£


Àà±ð£ºUliweb ²é¿´ÆÀÂÛ

八月 24, 2011

PythonInsider
pythoninsider
Python 核心開發的新聞資訊
» 認識核心團隊:Benjamin Peterson

原文網址 Meet the Team: Benjamin Peterson

這篇文章是「認識核心團隊」系列文章的一部分,目的是對 Python 核心開發團隊的成員來個簡短的介紹

姓名:Bejamin Peterson
位置:美國明尼蘇達州 (Minnesota, USA)
首頁:http://benjamin-peterson.org
部落格:http://pybites.blogspot.com

你使用 Python 有多長時間了?

三年半

你成為核心開發者有多久了?

到今年三月二十五號剛好滿三年

你是如何開始成為核心開發者的?你記得你第一次的提交嗎?

我第一次提案被 Guido 本人否決了 。幸運的是,我繼續堅持了下去並且也有些 patch 被接受了。我想我第一份提交是調整 Misc/ACKS 檔案的順序。

你現在負責 Python 的哪些部分

我喜歡語法分析器、編譯器以及直譯器的核心部分,不過大家都知道除了Windows 相關之外,我涉足於幾乎每一個 Python 的核心開發部分。

當你沒有在處理 Python 核心開發相關工作的時候,你都用 Python 來做些什麼?

我用它來實作 Python 直譯器 (http://pypy.org)!說真的,我打從心裡就是一個 Python 的實作者。 我是 six (http://pypi.python.org/pypi/six) 的創造者,six 是一個處理 Python 2 和 Python 3 之間相容性的程式庫。

當你沒在寫程式的時候你都在做些啥?

做音樂,吹豎笛還有讀些數學書,另外有時也會跑去爬山。


電腦做什麼事
pydoing
程式語言教學誌 is about »

tag cloud

» HTML DOM 快速導覽 - 文件物件 Node 的屬性 previousSibling

Node.previousSibling 回傳 Node 的上一個元素 (element) 物件 (object) 。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 document 的屬性 preferredStyleSheetSet

document.preferredStyleSheetSet 回傳文件作者的樣式表 (style sheet) 。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 Node 的屬性 firstChild

Node.firstChild 回傳文件中 Node 的第一個子代 (child) 元素 (element) 。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 Node 的屬性 childNodes

Node.childNodes 用以取得子代 (child) 元素 (element) 的 NodeList 集合物件 (object) 。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 Node 的屬性 baseURI

Node.baseURI 回傳文件的網址。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 document 的屬性 plugins

document.plugins 回傳文件中所有 <embed> 元素 (element) 所集合成的 HTMLCollection 物件 (object) 。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 document 的屬性 location

document.location 回傳文件的 location 物件 (object) ,該物件有以下屬性 (attribute)
繼續閱讀



limodou的學習記錄
limodou
is about »
» UliormÁ¬½Ó´¦ÀíÖع¹

Õâ¸ö¸Ð¾õÓ°Ïì±È½Ï´ó£¬Ö÷ÒªÊÇÓ°ÏìÁ¬½Ó³Ø´¦Àí£¬²»¹ýËüÊÇÔڵײãµÄ´¦Àí£¬¶Ôapiµ÷ÓÃûÓÐÓ°Ïì¡£

 

ΪʲôҪ¸Ä£¬ÕâÊǺÍÎÒ·¢ÏÖµÄMysql server has gone away(¹ØÓÚÕâ¸öÎÊÌâÒѾ­¼Ç¼ÔÚÁË http://hi.baidu.com/limodou/blog/item/0ba35bafd4214ae0fbed508e.html)Óйء£Ô­À´ÈÏΪ´«ÈëÁËpool_recycle¾Í¿ÉÒÔÁË£¬µ«ºóÀ´·¢ÏÖ»¹ÊDz»ÐС£×îºó¶¨ÒåÊÇÒòΪÁ¬½ÓûÓлعé³É¹¦¡£Õâ¸öÒª´ÓÔ­À´uliormµÄʵÏÖ˵Æð¡£Ò»°ãµÄsqlalchemyµÄ´¦Àí¿ÉÄÜÊÇÕâÑù£º

 

db = create_engine(xxx, pool_recycle=7200)

conn = db.connect()

trans = conn.begin()

try:

    try:

        conn.execute(yyyy)

        trans.commit()

    except:

        trasns.rollback()

finally:

    conn.close()

 

ÕâÑù£¬ÏÈ´´½¨ÒýÇ棬Ȼºó´´½¨Á¬½Ó£¬Ã¿´´½¨Ò»¸öÁ¬½Ó¶¼»á´Ó³Ø×ÓÖÐÈ¡Ò»¸öÁ¬½Ó£¬È»ºóÔÚÕâ¸öÁ¬½ÓÉÏÖ´ÐÐÊÂÎñÖ®ÀàµÄ´¦Àí¡£´¦ÀíÍê±ÏºóÓ¦¹Ø±ÕÁ¬½Ó£¬ÕâÑù¾ÍʵÏֵĻØÊÕ¡£Èç¹ûÁ¬½Ó³Ø»ØÊÕʱ¼äµ½´ï£¬Ôòsqlalchemy»á×Ô¶¯Öؽ¨Á¬½Ó³Ø¡£

 

µ«ÊÇÎÒµÄÓ÷¨ÊÇΪÁË·½±ã£¬ÎÒʹÓÃÁËdbµÄĬÈÏÁ¬½Ó£¬²¢ÇÒÊÇ»ùÓÚÏ̵߳ģ¬Òò´ËuliormµÄ´¦ÀíģʽÊÇ£º

 

db = create_engine(xxx, pool_recycle=7200)

conn = db.contextual_connect()

db.begin()

try:

    try:

        db.execute(yyyy)

        db.commit()

    except:

        db.rollback()

finally:

    conn.close()

 

¶ødb.contextual_connect()ÓпÉÄÜ»ØÊÕÓÐÎÊÌâ¡£ÒòΪÎÒÖع¹ÁËÕâ¿éµÄ´¦Àí£¬¸ÄΪ£º

 

ÔÚuliormÌṩµÄBegin(), Commit(), Rollback()ÖнøÐиÄÔ죬ÒòΪËüÃÇ»áÔÚmiddleware_transactionÖб»µ÷Ó㬱£Ö¤ÔÚÇëÇó´¦ÀíÇ°¿ªÊ¼ÊÂÎñ£¬ÔÚ·µ»ØºóÌá½»£¬ÔÚÓÐÒ쳣ʱ»Ø¹ö¡£ËùÒÔÒ»µ©ÄãʹÓÃÁËÕâ¸ö²å¼þ£¬Ã¿¸öviewµÄ´¦Àí¾Í»á×Ô¶¯±£Ö¤ÊÂÎñµÄÒ»ÖÂÐÔ£¬µ«Êǵ±³ÌÐòÖÐÓÐÌØÊâÐèÒª£¬¿ÉÒÔÊÖ¶¯´¦ÀíÊÂÎñ¡£

 

ÔÚµ÷ÓÃBegin()ʱ»á´´½¨Á¬½Ó£¬Í¬Ê±½«Õâ¸öÁ¬½Ó´æÈëthreading.local()µÄ±äÁ¿ÖУ¬±£Ö¤Ïß³ÌΨһ¡£ºóÐøµÄÊÂÎñ´¦ÀíÒ²ÊÇ»ùÓÚÕâ¸öд´½¨µÄÁ¬½ÓµÄ¡£Í¨¹ýÕâÖÖ·½·¨¾Í½â¾öÁËÁ¬½Ó»ØÊÕµÄÎÊÌâ¡£ÔÚÎÒµÄÈÕÖ¾ÖУ¬Èç¹ûÁ¬½Ó»ØÊÕÁË£¬¿ÉÒÔ¿´µ½£º

 

2011-08-24 15:23:39,832 INFO sqlalchemy.pool.QueuePool.0x...a350 Connection <_mysql.connection open to 'localhost' at 266f898> exceeded timeout; recycling

 

ÕâÑùµÄÐÅÏ¢¡£ÄãÈç¹ûÏë¿´¿ÉÒÔÔÚsettings.iniÖÐÌí¼Ó

 

[ORM]

CONNECTION_ARGS = {'pool_recycle':7200, 'echo_pool':True}

 

ΪÁ˲âÊÔ·½±ã£¬ ¿ÉÒÔ°ÑÉÏÃæµÄ'pool_recycle'ʱ¼äŪ¶ÌЩ£¬±ÈÈç10ÃëÖÓ¡£

 

Èç¹ûÓÐÎÊÌâÇë·´À¡¸øÎÒ¡£


Àà±ð£ºUliweb ²é¿´ÆÀÂÛ

八月 23, 2011

limodou的學習記錄
limodou
is about »
» uliwebºÍplugsÑÝʾÍøÕ¾Ô´Âë

Ëü¾ÍÊDz¼ÊðÔÚdotcloudÉϵÄÔ´´úÂ룬ĿǰÎÒÊÇÔÚgithubÉÏ´´½¨µÄ²Ö¿â£¬¿ÉÒÔͨ¹ý£º https://github.com/limodou/uliwebzone À´·ÃÎÊ¡£dotclouldµÄµØַΪ£º http://www.uliweb.dotcloud.com

ÄãÒ²¿ÉÒÔÔÚ±¾µØÔËÐУ¬°²×°µÄ»°ÐèÒª£º

1. uliweb ¿ÉÒÔͨ¹ýpython setup.py develop·½Ê½°²×°£¬±È½Ï·½±ãÓëuliwebͬ²½´úÂë¡£ÏîÄ¿µØÖ·£º http://code.google.com/p/uliweb/

2. plugs ¿ÉÒÔͨ¹ýpython setup.py develop·½Ê½°²×°¡£ÏîÄ¿µØÖ·£º http://code.google.com/p/plugs/

ÉÏÃæÁ½¸öÄ¿Ç°¶¼ÔÚcode.google.comÉÏ£¨×î½ü»áͬ²½µ½githubÉÏ£©¡£

3. PIL ÓÃÓÚͼÏñ´¦Àí

°²×°ºó¾ÍÊÇÖ´Ðгõʼ»¯¹¤×÷£º

½øÐÐÏîÄ¿ÃüÁîÐУº

uliweb syncdb (´´½¨Êý¾Ý¿â)

uliweb dbinit uliweb.contrib.rbac »ò uliweb dbinit (½øÐÐȨÏÞ±íµÄ³õʼ»¯´¦Àí)

»ù±¾ÉϾÍÕâЩÁË¡£¿ÉÒÔÔËÐп´ÁË£º

uliweb runserver


Àà±ð£ºUliweb ²é¿´ÆÀÂÛ

八月 22, 2011

電腦做什麼事
pydoing
程式語言教學誌 is about »

tag cloud

» HTML DOM 快速導覽 - 文件物件 document 的屬性 links

document.links 回傳文件中所有連結所集合成的 HTMLCollection 物件 (object) 。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 document 的屬性 linkColor

document.linkColor 回傳連結 <a> 元素 (element) 文字顏色的物件,原本此樣式 (style) 由 CSS 的 :link 設定。
繼續閱讀


» HTML DOM 快速導覽 - 文件物件 document 的屬性 lastStyleSheetSet

document.lastStyleSheetSet 回傳文件最後的樣式表 (style sheet) 。
繼續閱讀


RTER

一頁新聞

A Django site.