九月 16, 2011

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

tag cloud

» HTML DOM 快速導覽 - 元素物件 element 的屬性 name

element.name 回傳元素 (element) 的 name 屬性 (attribute) 。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 element 的屬性 lastElementChild

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


» HTML DOM 快速導覽 - 元素物件 element 的屬性 innerHTML

element.innerHTML 用以設定或存取元素 (element) 的內容。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 element 的屬性 id

element.id 回傳元素 (element) 的 id 屬性 (attribute) 。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 element

元素物件 element 有以下的屬性 (attribute) 與方法 (method)
繼續閱讀


九月 15, 2011

marr's weblog
marrtw
marr weblog is about »

tag cloud

» pkg_resources.DistributionNotFound

執行 paster addcontent 時,遇到 pkg_resources.DistributionNotFound 訊息,處理方式是在搜尋哪個 .cfg 檔案包含 [zopeske] 設定區段,在裡面加上 ${instance:eggs} 設定值,例如:

[zopeskel]
recipe = zc.recipe.egg
eggs =
...
${instance:eggs}

重新執行 buildout 後,就能正常使用。


limodou的學習記錄
limodou
is about »
» uliwebÖÐtimezoneµÄ´¦Àí

ÔÚºÜÔçÒÔÇ°µÄ°æ±¾ÖУ¬uliwebÖоÍÒѾ­ÓÐÁËtimezoneµÄ´¦Àí£¬ÔÚuliweb/utils/data.pyÖУ¬ÒѾ­¶¨ÒåÁËÈô¸ÉÓëÈÕÆÚ¡¢Ê±¼äÏà¹ØµÄapi¡£ÄÇʱÎÒ²ÉÓõÄÊÇpytzÀ´½øÐÐʱÇøµÄ´¦Àí¡£ÔÚdefault_settings.iniÖÐGLOBAL/TIME_ZONEÖÐÉèÖÃÁËȱʡµÄʱÇø£¬È±Ê¡ÊÇNone¡£Í¬Ê±uliormÖеÄÈÕÆÚ¡¢Ê±¼äÔÚ×Ô¶¯Éú³Éʱ£¬Ò²ÊÇʹÓÃdate.pyÖеĺ¯ÊýÀ´Éú³ÉµÄ¡£Æô¶¯uliwebʱ£¬»á×Ô¶¯µ¼Èëpytz£¬È»ºó¸ù¾ÝTIME_ZONEÀ´ÉèÖÃʱÇø¡£µ«ÊǺóÀ´·¢ÏÖ£¬pytzµÄtzinfoÐÅϢ̫´óÁË£¬µ¼Èë·Ç³£Âý¡£ÓÚÊǾͰÑÕâ¸ö×Ô¶¯³õʼ»¯È¥µôÁË¡£ÒòΪpytzµÄʱÇøÊý¾ÝÌ«¶à£¬¶øÇÒÌ«¸´ÔÓ£¬±ÈÈçÏÄÁîʱµÄ´¦Àí£¬µÄȷʹÓÃÆðÀ´±È½ÏÂé·³¡£ÓÚÊÇÎÒ¾ÍÏëÖ»Òª¼òµ¥µÄʱÇø¾Í¹»ÁË£¬±ÈÈ磺UTCºÍGMT-12µ½GMT+12µÄʱÇø£¬ÎÒÏëʹÓÃʱÇøµÄÈËÓ¦¸Ã×ã¹»Á˽⣬ËûÏëҪʲôʱÇø¡£

²»¹ý´ËÊÂÒ»Ö±ÍÏ×Å£¬Ö±µ½Ç°Á½Ì컨ÁËЩʱ¼ä°ÑÕâ¸öÊ»ù±¾¸ã¶¨ÁË¡£Ê×ÏȲο¼ÁËpythonÊÖ²áÖйØÓÚdatetimeģʽÖеÄtzinfoµÄʾÀý£¨ºÃÏóÓв¿·ÖÊÇ´ÓpytzÖÐÀ´µÄ£©£¬±àдÁËUTCºÍGMT-12µ½GMT+12ʱÇøµÄÀ࣬²¢½øÐÐÁ˳õʼ»¯¡£È»ºóÓÖÐÞ¸ÄÁËdate.pyÖеÄһЩº¯Êý£¬Ê¹Æä¸üºÃÓÃһЩ¡£È»ºóÓÖÐÞ¸ÄÁËuliormÖеÄDatetimeProperty, DateProperty, TimePropertyµÈÊôÐÔÀ࣬ͬʱµ÷ÕûÁËuliormµÄvalidateµÄ´¦Àí¡£

ÕâÑù£¬ÔÚuliwebÖÐʹÓÃʱÇø¿ÉÒÔÓÐÁ½ÖÖ״̬£º1. ÎÞʱÇø״̬¡£2.ÓÐʱÇø״̬¡£

ÔÚuliwebÖеÄcontribÖУ¬ÐÂÌṩÁËÒ»¸ötimezoneµÄapp¡£Ò»µ©°üº¬Ëü£¬Ôò×Ô¶¯¸ù¾Ýsettings.iniÖеÄGLOBAL/TIME_ZONEÖеÄÉèÖóõʼ»¯date.pyÖÐʹÓõÄȱʡʱÇø¡£ÕâÑù£¬Ö»ÒªÄãµÄÈÕÆÚºÍʱ¼äº¯Êý¶¼Ê¹ÓÃdate.pyÖÐÌṩµÄ·½·¨£¬¾Í¿ÉÒÔ×Ô¶¯´¦ÀíʱÇø¡£ËùνÎÞʱÇø״̬£¬¾ÍÊÇTIME_ZONEΪNone¡£ÕâÑù£¬Æäʵ¶¼ÊÇ·þÎñÆ÷µÄʱ¼ä£¬Ã»ÓÐʲôʱÇøµÄ¸ÅÄ¿ÉÄܾÍÊÇÎÒÃÇƽ³£ËùʹÓõķ½Ê½¡£¶øÓÐʱÇø״̬£¬ÔòTIME_ZONE²»Îª¿Õ£¬±ÈÈçÉèÖóÉ'UTC'£¬ÔòËùÓÐdate.pyÖеĺ¯Êýȱʡ¶¼Ê¹ÓÃ'UTC'ʱÇøÀ´Éú³Éʱ¼ä¡£ÔÚuliormÖУ¬ÈÕÆÚºÍʱ¼äÊôÐÔÊÇ¿ÉÒÔͨ¹ýÌí¼Óauto_nowºÍauto_now_addÀ´×Ô¶¯ÔÚÐ޸ĺÍÌí¼Óʱ×Ô¶¯Éú³ÉÈÕÆÚÖµ£¬Ëü¾ÍÊÇʹÓÃÁËdate.pyÖеÄnow()º¯Êý¡£ËùÒÔ£¬Ò»µ©ÄãÉèÖÃÁËTIME_ZONE£¬Ôòuliweb»á×Ô¶¯°´Ê±ÇøµÄ·½Ê½½øÐд¦Àí¡£

¶ÔÓÚʱÇøµÄ´¦ÀíÎÒÃÇÒª¿¼ÂÇ·þÎñÆ÷ºÍ¿Í»§¶ËÓпÉÄܲ»Ò»ÖµÄÎÊÌ⣺

Èç¹ûÎÒÃǵķþÎñÆ÷ºÍÓû§µÄ»úÆ÷ÊÇÔÚÒ»¸öµØÇø£¬Õâ¸öÎÊÌâ×îºÃ°ì£¬¿ÉÒÔ²»Ê¹ÓÃʱÇø£¬Ö±½ÓʹÓñ¾µØʱ¼ä¡£ÕâÑùÖ»Òª²»ÉèÖÃTIME_ZONE»ò±£³ÖΪNone¾ÍºÃÁË¡£

µ«Èç¹û·þÎñÆ÷ºÍ¿Í»§¶Ë¿ÉÄܲ»ÔÚÒ»¸öµØÇø£¬±ÈÈçdotcloudµÄÓ¦Óã¬ÄÇô¾ÍÒª¿¼ÂÇÈçºÎ´¦Àí¿Í»§¶ËµÄʱÇø¡£ÕâÀïÎÒÃÇ¿ÉÒÔͳһ·þÎñÆ÷·½µÄʱÇø£¬Í¨¹ýÉèÖÃTIME_ZONE¡£µ«ÊÇ¿Í»§¶ËµÄʱÇø²»ºÃ´¦Àí¡£±ÈÈ磺ÓÐÓû§µÄÇé¿öºÍÎÞÓû§µÄÇé¿ö¡£ÓÐÓû§µÄÇé¿öÏ£¬¿ÉÒÔ¿¼ÂÇÈÃÓû§×ÔÐÐÉèÖÃËùÔÚµÄʱÇø¡£¶øÎÞÓû§µÄÇé¿öÏ£¬ÈçºÎ»ñµÃʱÇøÓв»Í¬µÄ×ö·¨¡£×î¼òµ¥µÄ£¬¾ÍÊÇĬÈÏ¿Í»§Ê±Çø¡£±ÈÈ磬uliwebÖпÉÒÔÉèÖÃGLOBAL/LOCAL_TIME_ZONE£¬È»ºóʹÓÃdate.to_local()À´½«Ò»¸öʱ¼äתΪLOCAL_TIME_ZONEËùÖ¸¶¨µÄʱÇø¡£ÁíÍâÔÚstackoverflowÕÒµ½ÓÐÀàËƵÄÎÊÌ⣬±ÈÈçÕâ¸ö£¬ËüµÄ°ì·¨¾ÍÊÇͨ¹ýä¯ÀÀÆ÷¶ËÖ´ÐÐÒ»¶ÎjavascriptÀ´±ÈÈçÓëUTCµÄ²îÒìÀ´»ñµÃʱÇø²îÒ죬ÕýºÃÒ²ÊÇʹÓÃGMT +|-nµÄÐÎʽ¡£Æä¹Ø¼üµÄjs´úÂëÊÇ£º

<scripttype="text/javascript">

    $(document).ready(function(){

        if("<?php echo $timezone; ?>".length==0){

            var visitortime =new Date();

            var visitortimezone ="GMT "+-visitortime.getTimezoneOffset()/60;

            $.ajax({

                type:"GET",

                url:"http://domain.com/timezone.php",

                data:'time='+ visitortimezone,

                success:function(){

                    location.reload();

                }

            });

        }

    });

</script>


ÕâÊÇphpµÄÀý×Ó£¬ºÜÈݸÄΪÆäËüµÄ³ÌÐòÐÎʽ¡£¹Ø¼üµÄµØ·½¾ÍÊÇ£ºvisitortime.getTimezoneOffset()/60 £¬²¢ÇÒÔڵõ½Ê±ÇøºóÔÙ×Ô¶¯Ë¢Ð£¬È»ºó½«Öµ±£´æµ½sessionÖС£

¼òµ¥×ܽáһϣ¬Í¨¹ýÉèÖÃGLOBAL/TIME_ZONE¿ÉÒÔÉèÖ÷þÎñÆ÷¶ËÈÕÆÚ¡¢Ê±¼äµÄÉú³É£¬±ÈÈçuliormµÄ×Ô¶¯ÈÕÆÚ¡¢Ê±¼äµÄÉú³É¡£ÆäËüµØ·½µÄÈÕÆÚ£¬Í¨¹ýʹÓÃdate.pyÖеÄAPI¡£½¨Òéºǫ́ͳһʹÓÃUTCÈÕÆÚ£¬¼òµ¥ÔÚuliwebÖÐÅäÖÃÈçÏ£º

[GLOBAL]

TIME_ZONE = 'UTC'

ͬʱҪ°²×° 'uliweb.contrib.timezone', ·ñÔò²»Æð×÷Óá£

¶ÔÓÚ¿Í»§¶ËµÄʱÇø´¦Àí£¬Óм¸ÖÖ·½·¨£º

1. ÏÈÉèÖÃGLOBAL/LOCAL_TIME_ZONEµÄʱÇø£¬È»ºóʹÓÃdate.to_local(datetime)À´×Ô¶¯×ªÎªLOCAL_TIME_ZONEµÄʱÇø£¬µ«ÕâÖÖÒ²ÊÇÏ൱Óڹ̶¨µÄʱÇø£¬²»ÄܺÜÁé»îµÄ×ÔÊÊÓ¦¡£

2. ÔÚÉè¼ÆÉÏ£¬ÎªÃ¿¸öÓû§Ìí¼ÓÒ»¸öʱÇøÑ¡ÔñµÄ×ֶΣ¬ÈÃÓû§×ÔÐÐÉèÖá£ÕâÑùÔÚչʾҳÃæÖУ¬¸ù¾ÝÓû§µÄʱÇøÖµÀ´×ª“QʱÇøÏÔʾ¡£

3. ²ÉÓÃjsÔÚÇ°¶Ë̽²âµÄ°ì·¨£¬½«Ç°¶ËµÄʱÇø̽²â³öÀ´£¬²¢±£´æÔÚsessionÖУ¬ºóÐø´¦ÀíÒÔ´ËΪ¿Í»§¶ËʱÇøµÄ´¦Àí¡£

ͬʱ»¹ÓÐÒ»¸öҪעÒâµÄ£¬ÄǾÍÊÇÓû§ÉÏË͵ÄÈÕÆÚÐÅÏ¢µÄ´¦Àí¡£ÒòΪËüÒ²ÊDz»´øʱÇøµÄ£¬ËùÒÔÒª¸ù¾ÝÇ°ÃæµÄ·½Ê½Ä¬ÈÏΪij¸ö¿Í»§¶ËʱÇøÔÙ½øÐд¦Àí¡£

 


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

九月 14, 2011

Thinker
heaven.branda
Thinker
» FreeBSD 的 Thread-Local Storage 實作

因為運氣不好,在試圖在 FreeBSD 上玩 B2G (Boot To Gecko) 時,遇到 core dump 的問題。 在細部分解之後,發現是 FreeBSD 的 TLS (Thread-Local Storage) 的實作有些 隱藏的問題。 使用 TLS ,你的程式能夠為每一個 thread 配置一塊專用的記憶體,每當程式向 thread library 要那一塊記憶體的位置時,就會傳回對應到目前 thread 的區塊。 因此,每一個 thread 都可以有自己一塊空間,而不會誤取其它 thread 的區塊。 TLS 最簡單的用法如下 {{{#!cpp __thread int count ...

» 拯救 FreeBSD 小惡魔

為了幫某個系統問題除錯,在等不及重新編釋/make world 的情況下,我直接用一個 新版本的 libc.so,蓋掉 /lib/libc.so.7。結果,很不幸的, copy 的動作並未完成, 並留下損毀的 /lib/libc.so.7。於是乎,系統無法執行任何新指令了,也無法重新 進行 copy。就此,我展開了拯救 FreeBSD 小惡魔大作戰。 甲計劃,我開始做開機用的 USB storage。先從另一台 notebook 上,重新 build world 並製作開機用的 image。 但這太慢了,又試著從網路上 download 現有的 binary。 這也不是這麼順利, memory ...

九月 12, 2011

limodou的學習記錄
limodou
is about »
» uliwebzone¸üÐÂÁËÒ»ÏÂ

ÐÞ¸´ÁËһЩbug£¬²¢ÇÒ·ÖÒ³js¿Ø¼þ»»³ÉsmartpaginatorÁË¡£Í¬Ê±uliwebºÍplugs¶¼Éýµ½×îеİ汾ÁË¡£·¢ÏÖÖ±½ÓÔÚdotcloudÉÏÓÃssh²¿Êð»¹ÊÇ×î·½±ãµÄ¡£ÏîÄ¿´úÂë·Åµ½codeĿ¼Ï£¬uliwebºÍplugs·Åµ½~Ŀ¼Ï£¬ÓÃsetup.py developÀ´°²×°¡£ÒÔºó¾ÍûÓÐͬ²½Ôì³ÉÎļþ¶ªÊ§µÄÇé¿öÁË¡£


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

九月 11, 2011

limodou的學習記錄
limodou
is about »
» ¹ú¼Ê»¯¸´ÊýÐÎʽµÄÖ§³ÖÓëpygettextµÄ²¹¶¡

½ñÌì°ÑplugsÖеÄÂÛ̳½øÐÐÁËһЩÓÅ»¯£¬ÆäÖÐÏëʹÓÃuliwebÖÐÔç¾ÍÄÚÖõÄtimesince.pyÄ£¿é¡£Õâ¿éÐèÒªi18nµÄÖ§³Ö¡£ÓÚÊÇʹÓãº

uliweb i18n -l zh_CN --uliweb

À´ÔËÐС£½á¹û±¨´í¡£ÆäÖ÷ÒªÔ­ÒòÊÇtimesinceÖÐʹÓÃÁ˸´ÊýÐÎʽµÄi18nº¯Êýungettext¡£¶øuliwebʹÓõÄpygettext.py²»Ö§³Ö¡£

pygettext.pyÊÇpythonÔÚtoolsĿ¼ÏÂ×Ô´øµÄÒ»¸öÄ£¿é£¬¿ÉÒÔÓÃËüÀ´´ÓpythonÔ´ÂëÖгéÈ¡·­Òë×Ö·û´®£¬ËüÖ§³ÖÃüÁîÐУ¬´úÂëÒ²²»ËãºÜ¸´ÔÓ¡£ËùÒÔÔÚuliwebÖÐÌṩÁË´¿pythonµÄÃüÁîÐй¤¾ß¡£²»¹ýuliwebΪÁËÈÃÆä¿ÉÒÔÖ§³ÖÄ£°åºÍiniÎļþ£¬ÐÞ¸ÄÁËpygettextÔ´Â룬ËùÒÔºÍpython×Ô´øµÄ»¹²»ÍêÈ«Ò»Ñù¡£Ðí¶àÆäËüµÄpythonÏîÄ¿ÊÇʹÓÃxgettext¹¤¾ßÀ´´¦Àí¡£ÒòΪpygettext.py²»Ö§³Ö¸´ÊýµÄ·­Òë´®£¬ÎÒ²éÁËһϣ¬Ö÷ÒªÇø±ð¾ÍÊǶÔÓÚ¸´Êý£¬ÔÚpoÎļþÖÐÊÇÕâÑùµÄ£º

msgid "month"

msgid_plural "months"

msgstr[0] "ÔÂ"

msgstr[1] ""
¶ø²»´ø¸´ÊýµÄÐÎʽÊÇÕâÑùµÄ£º

msgid "month"

msgstr "ÔÂ"

±¾À´Ïë×ÔÒÑÐ޸ĵģ¬²»¹ý»¹ÊÇÏÈgoogleһϰɣ¬ÍòÒ»ÓÐÈ˽â¾öÁËÄØ¡£½á¹û»¹ÕæÕÒµ½ÁË¡£ÓÐÈËÔÚpythonµÄbugsÍøÕ¾ÉÏÌá½»¹ýÕâÑùµÄÎÊÌ⣬ȻºóÓÐÈ˸ø³öÁËÒ»¸ö²¹¶¡¡£´Ópygettext.pyµÄÔ´Âë¿ÉÒÔ¿´µ½£¬ËüÒѾ­ºÜ¶à¿´Ã»Óб»Ð޸ĹýÁË¡£ÓÚÊÇÎÒÏÂÔØÁ˲¹¶¡£¬ÏÈÔÚpython´øµÄ°æ±¾ÉÏ´ò²¹¶¡£¬È»ºóʹÓôúÂë±È½Ï¹¤¾ß½«ÎÒÐèÒªµÄÐÞ¸ÄÔÙ¼Ó½øÈ¥¡£ºóÀ´»¹ÐÞ¸ÄÁËpo_merge.py³ÌÐò¡£×îÖÕ°ÑÕâ¸öÎÊÌâ»ù±¾ÉÏËãÊǽâ¾öÁË¡£


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

» ¾²Ì¬Îļþºó׺´¦Àí£¬±ÜÃâä¯ÀÀÆ÷»º´æ

Ôö¼ÓÁËÒ»¸öSTATIC_VERµÄÈ«¾ÖÅäÖÃÏ¿ÉÒÔÔÚʹÓÃurl_for_staticʱ×Ô¶¯¸ù¾ÝÕâ¸öÅäÖÃÏÔÚ¾²Ì¬Á´½ÓºóÃæÌí¼Ó?ver=xxxµÄÐÅÏ¢¡£×Ô¶¯ÊÊÓÃÓÚ{{use}}ºÍ{{link}}Ä£°åtag¡£Ö»Êǵ±Ç°´¦Àí»¹ÊDZȽϼòµ¥£¬ÎÞ·¨×öµ½Õë¶Ôij¸öÐ޸ĵÄÎļþµÄ°æ±¾¡£È±Ê¡ÎªNone£¬±íʾ²»Ìí¼Ó¡£


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

九月 10, 2011

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» 終於能在臺灣看到 NFL 例行賽轉播

筆者從小就是個不愛運動的小孩,一直覺得這是不動大腦、四肢發達的人才作的事,這個信念一直維持到大一時期。

我在唸大學時,已經是個只愛待在家裡鬼混的小孩,因為高中時大多把該玩的都玩過了。於是,我大學花在第四台的時間還不少,一開始看得當然是電影而已,而 ESPN 很少轉到,直到某天轉到舊金山淘金者的美式足球季後賽。過去只在電影中大略見識過,對其比賽規則當然是不懂,也因筆者對於不懂的事,就愛搞懂,也不管 EPSN 只有原音轉播,反正我就是一邊看一邊猜。看著看著也略知一二,就這樣一路看到 Brett Favre 帶著 Green Bay 拿下 '96 超級盃。

等到美式足球季結束後,我開始另尋它種運動比賽節目,而台灣大聯盟正巧於 '97 正式開打,一開始都是袁定文當球評的,而他剛開始作球評時,花了不少時間在解釋棒球比賽的門道,不像我以前看國際賽時,只專注在國家隊有沒有安打、有沒有得分上。於是,我開始對「運動比賽」改觀了,它不像我所認為的是「四肢發達」的人才搞的玩意,沒有腦袋還真是混不出局面。當時,我對棒球可是深深地著迷,不但看直播,也看重播,有時一場比賽我看了三遍。是的,你猜到了,我大學很少在唸書的。

對「運動」改觀後,我就百無禁忌了,冰球(Hockey)、足球(Soccer)、板球(Cricket)都看,就是不看籃球,因為我不喜歡跟風。甚至,我還買了 '97 NHL 的電腦遊戲,那個老闆還說:「真沒想到,這遊戲會有人買。」

因為袁博士當時也在年代台的 Catch the fever 節目擔任球評轉播美國大聯盟,所以我後來對美國棒球的了解反而比美式足球還深了。

然而,因為袁博士及王建民所帶來的美國職棒熱潮間接地讓 EPSN 臺灣台壓縮了其他球類比賽的預算,使得我看洋基比賽看到吐,也沒什麼機會再看到美式足球例行賽了。

直到今年(2011), ASN 運動台作到了「直播 NFL 例行賽」的服務,使用中華電信 MOD 只要多花 11 塊,就能升級到豪華特餐,這其中包含了 ASN 運動台。

剛剛我在 MOD 上看了 2011 NFL Kickoff 綠灣包裝工 V.S 紐奧良聖徒,喚起了十幾年前的記憶。我想我一定是又老了。

九月 8, 2011

marr's weblog
marrtw
marr weblog is about »

tag cloud

» Macro Expansion Failed

在 ZMI portal_skins 裡,想要客製 newsitem_view 時,看到一個訊息:

Macro expansion failed
<type 'exceptions.AttributeError'>: widget
這只是個煩人的訊息,直接修改內容並存檔,還是能夠運作。如果去處理它的話,會造成 page template 變得太複雜,在 Ticket #7173 被歸為暫不處理的項目。


limodou的學習記錄
limodou
is about »
» Ìí¼ÓdecoratorsÅäÖÃÏîºÍµ÷ÕûÁËrbacÏà¹ØµÄº¯Êý

½ñÌìÏòuliwebÖЉˆ¼ÓÁËÒ»¸öеÄÅäÖÃÏîDECORATORS£¬ÕâÑùÄã¿ÉÒÔÔÚsettings.iniÖÐÌí¼ÓÀàËÆ£º

[DECORATORS]

check_role = 'uliweb.contrib.rbac.check_role'

check_permission = 'uliweb.contrib.rbac.check_permission'

ÕâÑùµÄÄÚÈÝ¡£Í¬Ê±ÔÚuliwebÖÐÒѾ­Ìí¼ÓÁËÒ»¸ö½ÐdecoratorsµÄ¶ÔÏó£¬ÕâÑù£¬Äã¿ÉÒÔÈçºÎʹÓÃdecoratorº¯Êý£º

 

from uliweb import decorators

@expose('/test')

@decorators.check_role('superuser')

def test():

    return {}

 

Ä¿Ç°rbacÒѾ­Ìṩhas_role, has_permissionÓÃÓÚ¼ì²éÓû§ÊÇ·ñÓÐijЩ½ÇÉ«»òȨÏÞ£¬Í¬Ê±ÓÖÌṩÁËcheck_roleºÍcheck_permission£¬ËüÃÇÊÇdecorator¡£ÕâЩ·½·¨ÒÔÇ°Ö»½ÓÊܵ¥¸ö½ÇÉ«»òȨÏÞ£¬ÏÖÔÚ¿ÉÒÔ´«Èë¶à¸ö½ÇÉ«»òȨÏÞÖµ¡£


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

九月 6, 2011

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

tag cloud

» HTML DOM 快速導覽 - 元素物件 element 的屬性 firstElementChild

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



limodou的學習記錄
limodou
is about »
» ÔÚclass based viewÖÐʹÓÃdecoratorÓëexposeµÄ³åÍ»

ÔÚplugs.forumsÖÐͻȻ·¢ÏÖÉú³ÉµÄijЩ´øidµÄÁ´½Ó³öÏÖÁËÎÊÌ⣬±ÈÈ磺ԭ±¾ÊÇÏ£ÍûµÃµ½'forum_edit/<id>'µÄ½á¹ûµÃµ½ÁË'forum_edit?id=xx'¡£¶øÇÒ»¹±¨³öurlÔÚ´¦ÀíʱÉÙÁ˲ÎÊý£¬¶øforum_editµÄ¶¨ÒåΪ£º

@expose('/forum')

class ForumView(object):
    @_check_role('superuser')
    def forum_edit(self, id):

ºóÀ´Ñо¿·¢ÏÖ£¬µ±Ê¹ÓÃÕâÑùµÄÐÎʽ£º

@expose('/forum')
class ForumView(object):
    def forum_edit(self, id):

ÊÇÕýÈ·µÄ¡£Ô­Òò¾ÍÔÚʹÓÃÁËdecoratorµÄÔµ¹Ê¡£ÒòΪuliweb»áÀûÓÃfunctionµÄ²ÎÊýÀ´×Ô¶¯Éú³ÉurlÖеIJÎÊý£¨´ø<>µÄ¾ÍÊÇ£©¡£Òò´ËÏó forum_edit(id)Ö®ÀàµÄ»áÉú³ÉΪ'forum_edit/<id>'¡£µ«ÊÇÓÉÓÚʹÓÃdecorator£¬ÓпÉÄÜÔì³Éº¯ÊýµÄ¶¨Òå·¢ÉúÁ˱仯£¬ËùÒÔÎÞ·¨°´Ô­Ê¼µÄ·½Ê½»ñµÃÕýÈ·µÄº¯Êý²ÎÊý¡£Òò´Ë£¬¶ÔÓÚÀàÖдø²ÎÊýµÄ·½·¨£¬ÄãÒª¶îÍâÌí¼ÓÒ»¸öexpose()À´Ö÷¶¯¶¨Òåurl£¬È磺

@expose('/forum')
class ForumView(object):
    @expose('forum_edit/<id>')
    @_check_role('superuser')
    def forum_edit(self, id):

ÕâÀïforum_editǰûÓÐ'/'£¬ÕâÑù¾ÍÊÇÒ»¸öÏà¶ÔµÄurl£¬Ëü»áÓëclassÉ϶¨ÒåµÄ½øÐкϲ¢´¦Àí£¬×îÖÕµÄurl½«Îª£º'/forum/forum_edit/<id>'¡£Í¬Ê±Òª×¢Ò⣬exposeÒª·Åµ½ÆäËüµÄdecoratorÖ®ÉÏ£¬±£Ö¤Ëü×îºóÖ´ÐС£


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

九月 5, 2011
» PyHUG First Meeting Moves to September 19, 2011

我們大意了。PyHUG 原本訂於九月十二日的初次聚會適逢中秋假日。為了不要造成大家的兩難,我們把聚會的時間移到次週一,也就是九月十九日的同一時間:民國壹佰年玖月拾玖日週一晚間柒時參拾分。

詳細資訊請再次參見吾等的公告。

九月 4, 2011

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

tag cloud

» HTML DOM 快速導覽 - 元素物件 element 的屬性 clientTop

element.clientTop 回傳元素 (element) 所佔瀏覽器 (broswer) 視窗範圍中,上邊框的大小,單位為像素 (pixel) 。
繼續閱讀


» HTML DOM 快速導覽 - 元素物件 element 的屬性 clientLeft

element.clientLeft 回傳元素 (element) 所佔瀏覽器 (broswer) 視窗範圍中,左邊框的大小,單位為像素 (pixel) 。
繼續閱讀


RTER

一頁新聞

A Django site.