ãã®ã¬ã€ãã®ç®çã¯ãããªãæ©èœçãªãã€ã¯ãããã°ã¢ããªã±ãŒã·ã§ã³ãéçºããããšã§ãããªãªãžããªãã£ãå®å šã«æ¬ åŠããŠããããããã€ã¯ãããã°ã¢ããªã±ãŒã·ã§ã³ãšåŒã¶ããšã«ããŸããã
ç®æ¬¡
ããŒã1ïŒHello WorldïŒ
ããŒã2ïŒãã³ãã¬ãŒã
ããŒã3ïŒãã©ãŒã
ããŒã4ïŒããŒã¿ããŒã¹
ããŒã5ïŒãŠãŒã¶ãŒãã°ã€ã³
ããŒã6ïŒãããã£ãŒã«ããŒãžãšã¢ãã¿ãŒ
ããŒã7ïŒåäœãã¹ã
ããŒã8ïŒãã©ãã¯ãŒãé£çµ¡å ãåé
ããŒã9ïŒããŒãžããŒã·ã§ã³
ããŒã10ïŒå šææ€çŽ¢
ããŒã11ïŒã¡ãŒã«ãµããŒã
ããŒã12ïŒåæ§æ
ããŒã13ïŒæ¥ä»ãšæå»ïŒãã®èšäºïŒ
ããŒã14ïŒI18nããã³L10n
ããŒã15ïŒAjax
ããŒã16ïŒãããã°ããã¹ããããã³ãããã¡ã€ãªã³ã°
ããŒã17ïŒLinuxã«ãããã€ïŒRaspberry Piã«ãïŒïŒ
ããŒã18ïŒHeroku Cloudã§ã®ãããã€
ããŒã2ïŒãã³ãã¬ãŒã
ããŒã3ïŒãã©ãŒã
ããŒã4ïŒããŒã¿ããŒã¹
ããŒã5ïŒãŠãŒã¶ãŒãã°ã€ã³
ããŒã6ïŒãããã£ãŒã«ããŒãžãšã¢ãã¿ãŒ
ããŒã7ïŒåäœãã¹ã
ããŒã8ïŒãã©ãã¯ãŒãé£çµ¡å ãåé
ããŒã9ïŒããŒãžããŒã·ã§ã³
ããŒã10ïŒå šææ€çŽ¢
ããŒã11ïŒã¡ãŒã«ãµããŒã
ããŒã12ïŒåæ§æ
ããŒã13ïŒæ¥ä»ãšæå»ïŒãã®èšäºïŒ
ããŒã14ïŒI18nããã³L10n
ããŒã15ïŒAjax
ããŒã16ïŒãããã°ããã¹ããããã³ãããã¡ã€ãªã³ã°
ããŒã17ïŒLinuxã«ãããã€ïŒRaspberry Piã«ãïŒïŒ
ããŒã18ïŒHeroku Cloudã§ã®ãããã€
GitHubããŒã
æ°ä»ããŠããªã人ã®ããã«ãæè¿ãã€ã¯ãããã°ã®ãœãŒã¹ã³ãŒããgithubã«è»¢éããŸããã ãªããžããªã¯æ¬¡ã®ã¢ãã¬ã¹ã«ãããŸãã
https://github.com/miguelgrinberg/microblog
ãã®ããã¥ã¢ã«ã®åã¹ãããã«ã¯ãé©åãªã¿ã°ãè¿œå ãããŠããŸãã
ã¿ã€ã ã¹ã¿ã³ãã®åé¡
é·ãéç¡èŠããŠããã¢ããªã±ãŒã·ã§ã³ã®æ©èœã®1ã€ã¯ãæ¥ä»ãšæå»ã®è¡šç€ºã§ãã
ãããŸã§ãPythonãä¿¡é ŒããŠããŠãŒã¶ãŒãªããžã§ã¯ããšãã¹ããªããžã§ã¯ãã«ä¿åãããŠããã¿ã€ã ã¹ã¿ã³ããé©åã«è¡šç€ºããããã«ããŠããŸãããããã¯å®éã«ã¯è¯ã解決çã§ã¯ãããŸããã
次ã®äŸãèããŠã¿ãŸãããã 2012幎12æ31æ¥15æ54åã«ãããæžããŠããŸãã ç§ã®ã¿ã€ã ãŸãŒã³ã¯PSTïŒãŸãã¯ãããããã£ãšå¥œããªãUTC -8ïŒã§ãã Pythonã€ã³ã¿ãŒããªã¿ãŒãå®è¡ãããšã次ã®çµæãåŸãããŸãã
>>> from datetime import datetime >>> now = datetime.now() >>> print now 2012-12-31 15:54:42.915204 >>> now = datetime.utcnow() >>> print now 2012-12-31 23:55:13.635874
nowïŒïŒãåŒã³åºããšãã¿ã€ã ãŸãŒã³ã®æ£ããæéãè¿ãããutcnowïŒïŒãåŒã³åºããšGMTæéã衚瀺ãããŸãã
ããã§ãã©ã®é¢æ°ã䜿çšããã®ãè¯ãã§ããïŒ
nowïŒïŒã䜿çšããããšã«ããå ŽåãããŒã¿ããŒã¹ã«ä¿åããäºå®ã®ãã¹ãŠã®ã¿ã€ã ã¹ã¿ã³ãã¯ãµãŒããŒã®å Žæã«äŸåãããããåé¡ãçºçããå¯èœæ§ããããŸãã
ããæ¥ããµãŒããŒãå¥ã®ã¿ã€ã ãŸãŒã³ã«ç§»åããå¿ èŠãããå ŽåããããŸãã ãããŠãã®å ŽåãããŒã¿ããŒã¹ã«ä¿åãããŠãããã¹ãŠã®ã¿ã€ã ã¹ã¿ã³ãã¯ããµãŒããŒãèµ·åããåã«æ°ããããŒã«ã«æéã«åŸã£ãŠä¿®æ£ããå¿ èŠããããŸãã
ãããããã®ã¢ãããŒãã«ã¯ããã«æ·±å»ãªåé¡ããããŸãã ç°ãªãã¿ã€ã ãŸãŒã³ã®ãŠãŒã¶ãŒã®å Žåãæçš¿ãPSTã¿ã€ã ãŸãŒã³ã§è¡šç€ºãããŠããå Žåãæçš¿ããã€å ¬éãããããæ£ç¢ºã«å€æããããšã¯å°é£ã§ãã 決å®ããããã«ããŠãŒã¶ãŒã¯æå»ãPSTã«çžå¯Ÿçã§ããããšãç¥ã£ãŠããå¿ èŠããããŸãã
æããã«ãããã¯æè¯ã®ãªãã·ã§ã³ã§ã¯ãªããããããŒã¿ããŒã¹ãäœæãããšãã«GMTã«ã¿ã€ã ã¹ã¿ã³ããä¿åããããšã«ããŸããã
ãã ããã¿ã€ã ã¹ã¿ã³ããç¹å®ã®æšæºã«åããããšãæåã®åé¡ïŒãµãŒããŒãå¥ã®ã¿ã€ã ãŸãŒã³ã«ç§»åããããšïŒã®ã¿ã解決ãã2çªç®ã®åé¡ã¯æªè§£æ±ºã®ãŸãŸã§ãã-ã¿ã€ã ã¹ã¿ã³ãã¯çµ¶å¯Ÿã«ãã¹ãŠã®ãŠãŒã¶ãŒGMTã«è¡šç€ºãããŸãã
ããã§ããŠãŒã¶ãŒãæ··ä¹±ãããå¯èœæ§ããããŸãã ååŸ3æé ã«ããã°ãšã³ããªãæçš¿ããPSTã¿ã€ã ãŸãŒã³ã®ãŠãŒã¶ãŒãæ³åããŠãã ããã ã¬ã³ãŒãã¯ããã«ã¡ã€ã³ããŒãžã«è¡šç€ºãããŸããã23ïŒ00ã®äœææéã瀺ããŠããŸãã
ãããã£ãŠãä»æ¥ã®èšäºã®ç®çã¯ããŠãŒã¶ãŒãæ··ä¹±ãããªãããã«ãæ¥ä»ãšæå»ã衚瀺ããåé¡ãæ確ã«ããããšã§ãã
ãŠãŒã¶ãŒã®ã¿ã€ã ã¹ã¿ã³ã
ãã®åé¡ã®æãããªè§£æ±ºçã¯ããŠãŒã¶ãŒããšã«GMTãçŸå°æéã«åå¥ã«å€æããããšã§ãã ããã«ãããããŒã¿ããŒã¹ã§GMTã䜿çšãç¶ããããšãã§ããåãŠãŒã¶ãŒã®ãã®å Žã§å€æãããæéã«ããããã¹ãŠã®ãŠãŒã¶ãŒã®æéãäžå®ã«ãªããŸãã
ãããããŠãŒã¶ãŒã®äœçœ®ãã©ã®ããã«ããŠç¥ãã®ã§ããããïŒ
å€ãã®ãµã€ãã«ã¯ããŠãŒã¶ãŒãã¿ã€ã ãŸãŒã³ãæå®ã§ããèšå®ããŒãžããããŸãã ãããè¡ãã«ã¯ãæ¢åã®ã¿ã€ã ãŸãŒã³ã®ããããããŠã³ãªã¹ããå«ããã©ãŒã ã§æ°ããããŒãžãè¿œå ããå¿ èŠããããŸãã ç»é²ã®äžéšã¯ããŠãŒã¶ãŒã®ã¿ã€ã ãŸãŒã³ã«é¢ãã質åãžã®åçã«ãªããŸãã
ãã®ãœãªã¥ãŒã·ã§ã³ã¯éåžžã«å®çšçã§ãããåââé¡ã解決ãããšããäºå®ã«ãããããããOSã«æ¢ã«èšå®ãããŠä¿åãããŠããæ å ±ããŠãŒã¶ãŒã«å ¥åããããæ±ããããšã¯ãããã¶ãåé·ã«æããŸãã ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒããã¿ã€ã ãŸãŒã³èšå®ãååŸããæ¹ãã¯ããã«å¹ççã§ããããã§ãã
ãã ããã»ãã¥ãªãã£äžã®çç±ããããã©ãŠã¶ã¯ãŠãŒã¶ãŒã®ã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããªããããå¿ èŠãªæ å ±ãååŸã§ããŸããã æè¡çã«å¯èœã§ãã£ãŠããWindowsãLinuxãMacãiOSãAndroidã®ã¿ã€ã ãŸãŒã³ã®çŸåšã®èšå®ãæ¢ãå Žæãæ£ç¢ºã«ç¥ãå¿ èŠããããŸãïŒããã¯ããŸãäžè¬çã§ã¯ãªãOSãã«ãŠã³ãããŸããïŒã
ãã©ãŠã¶ãŒã¯ãŠãŒã¶ãŒã®ã¿ã€ã ãŸãŒã³ãèªèããŠãããæšæºã®JavaScriptã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠã¢ã¯ã»ã¹ã§ããããã«ãªã£ãŠããŸãã ä»æ¥ã®Web 2.0ã®äžçã§ã¯ããã©ãŠã¶ã§JavaScriptãæå¹ã«ãªã£ãŠããããšãæåŸ ã§ããŸãïŒå®éã«ã¯ãJavaScriptãç¡å¹ã«ãªã£ãŠãããšçŸä»£ã®ãµã€ãã¯æ£ããåäœããŸããïŒã
javascriptã«ãã£ãŠæäŸãããã¿ã€ã ãŸãŒã³æ å ±ã䜿çšããããã®2ã€ã®ãªãã·ã§ã³ããããŸãã
- åŸæ¥ã®ïŒæ§åŒã®ïŒã¢ãããŒãã¯ããŠãŒã¶ãŒãæåã«ãµã€ãã«ã¢ã¯ã»ã¹ãããšãã«ããŠãŒã¶ãŒã®ã¿ã€ã ãŸãŒã³ã«é¢ããæ å ±ããã©ãŠã¶ã«éä¿¡ããããæ±ããããšã§ãã ããã¯ãAjaxã䜿çšããããã¯ããã«ç°¡åã«ã¡ã¿æŽæ°ã¿ã°ã䜿çšããŠå®è¡ã§ããŸãã ãµãŒããŒã¯ã¿ã€ã ãŸãŒã³ãèªèãããšããã«ããã®æ å ±ããŠãŒã¶ãŒã»ãã·ã§ã³ã«ä¿åããã¬ã³ããªã³ã°äžã«ãã³ãã¬ãŒãã®ãã¹ãŠã®ã¿ã€ã ã¹ã¿ã³ãã調æŽã§ããŸãã
- ææ°ã®ïŒæ°ããåŠæ ¡ã®ïŒã¢ãããŒãã¯ããã®ããã»ã¹ã«ãµãŒããŒãé¢äžããããGMTã§ãŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã«ã¿ã€ã ã¹ã¿ã³ããéä¿¡ã§ããããã«ããããšã§ãã ãŸããã¯ã©ã€ã¢ã³ãã®javascriptã䜿çšããŠããŠãŒã¶ãŒã®ã¿ã€ã ãŸãŒã³ã«å¿ããæéå€æãè¡ãããŸãã
ã©ã¡ãã®ãªãã·ã§ã³ãæ£ããã§ããã2çªç®ã®ãªãã·ã§ã³ã«ã¯å©ç¹ããããŸãã ãã©ãŠã¶ã«ã¯ããŠãŒã¶ãŒã®ã·ã¹ãã ãã±ãŒã«ã®èšå®ã«åŸã£ãŠæ¥ä»ãæ£ããã¬ã³ããªã³ã°ããããã®ãªãã·ã§ã³ãããã«ãããŸãã AM / PMïŒ12æéïŒãŸãã¯24æéã®æå»åœ¢åŒãªã©ã®è©³çŽ°ã䜿çšãããŸããDD/ MM / YYãŸãã¯MM / DD / YYæ¥ä»åœ¢åŒãåªå ããããã®ä»ã®å€ãã¯ãã©ãŠã¶ã§å©çšã§ãããµãŒããŒã«ã¯èªèãããŸããã
2çªç®ã®ãªãã·ã§ã³ãæ¯æãããããã®è°è«ãååã§ãªãå Žåããã®ã¢ãããŒãã«ã¯å¥ã®å©ç¹ããããŸãã ãã¹ãŠã®äœæ¥ããã§ã«å®äºããŠããããšãããããŸããïŒ
moment.jsã«äŒã
Moment.jsã¯ãæ¥ä»ãšæå»ãæ°ããã¬ãã«ã«ã¬ã³ããªã³ã°ããã³ã³ãã¯ããªãªãŒãã³ãœãŒã¹javascriptã©ã€ãã©ãªã§ãã ããããçš®é¡ã®æžåŒèšå®ãªãã·ã§ã³ãªã©ãæäŸãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã§moment.jsã䜿çšããã«ã¯ããã³ãã¬ãŒãã«ããªãã®JavaScriptãè¿œå ããå¿ èŠããããŸãã ISO 8601圢åŒã®æéããç¬éãªããžã§ã¯ããäœæããããšããå§ããŸãããšãã°ãäžèšã®äŸã§GMTã䜿çšããŠã次ã®ãããªç¬éãªããžã§ã¯ããäœæããŸãã
moment("2012-12-31T23:55:13 Z")
ãªããžã§ã¯ããäœæããããšãããŸããŸãªåœ¢åŒã®æååã«å€æã§ããŸãã ããšãã°ããã±ãŒã«ã·ã¹ãã èšå®ã«åŸã£ãããªã詳现ãªè¡šç€ºã¯æ¬¡ã®ããã«ãªããŸãã
moment("2012-12-31T23:55:13 Z").format('LLLL');
次ã«ãã·ã¹ãã ããã®æ¥ä»ã衚瀺ããæ¹æ³ã瀺ããŸãã
Tuesday, January 1 2013 1:55 AM
ããŸããŸãªåœ¢åŒã§è¡šç€ºãããåãã¿ã€ã ã¹ã¿ã³ãã®ããã€ãã®äŸã次ã«ç€ºããŸãã
æžåŒ | çµæ |
---|---|
L | 01/01/2013 |
LL | 2013幎1æ1æ¥ |
Lll | 2013幎1æ1æ¥1:55 AM |
Lll | 2013幎1æ1æ¥ç«ææ¥1:55 AM |
dddd | ç«ææ¥ |
ããŸããŸãªãªãã·ã§ã³ã®ã©ã€ãã©ãªãµããŒãã¯ããã§çµããã§ã¯ãããŸããã 圢åŒïŒïŒã«å ããŠãã©ã€ãã©ãªã¯fromNowïŒïŒããã³calendarïŒïŒãæäŸããã¿ã€ã ã¹ã¿ã³ãã®ã¯ããã«ãŠãŒã¶ãŒãã¬ã³ããªãŒãªè¡šç€ºãæäŸããŸãã
æžåŒ | çµæ |
---|---|
fromNowïŒïŒ | 2幎å |
ã«ã¬ã³ããŒïŒïŒ | 01/01/2013 |
æ瀺ãããŠãããã¹ãŠã®äŸã§ããµãŒããŒã¯GMTã§åãæéãæäŸããå¿ èŠãªå€æã¯ãŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã«ãã£ãŠæ¢ã«è¡ãããŠããããšã«æ³šæããŠãã ããã
ã¹ãããããjavascriptããžãã¯ã®æåŸã®éšåã¯ãã¢ãŒã¡ã³ããªããžã§ã¯ãã¡ãœããã«ãã£ãŠè¿ãããè¡ãããŒãžäžã«è¡šç€ºããããšã§ãã ãããå®çŸããæãç°¡åãªæ¹æ³ã¯ã次ã«ç€ºãããã«ãjavascript document.writeé¢æ°ã䜿çšããããšã§ãã
document.write(moment("2012-12-31T23:55:13 Z").format('LLLL'));
document.writeã®äœ¿çšã¯ãjavascriptã䜿çšããŠHTMLããã¥ã¡ã³ãã®ãã©ã°ã¡ã³ããçæããæ¹æ³ãšããŠéåžžã«ã·ã³ãã«ã§ç°¡åã§ããããã®å®è£ ã«ã¯ããã€ãã®å¶éãããããšã«æ³šæããŠãã ããã æãéèŠãªããšã¯ãdocument.writeã¯ããã¥ã¡ã³ãã®èªã¿èŸŒã¿äžã«ã®ã¿äœ¿çšã§ããèªã¿èŸŒã¿ãå®äºããåŸã¯ããã¥ã¡ã³ãã®å€æŽã«äœ¿çšã§ããªãããšã§ãã ãŸãããã®å¶éã®çµæãAjaxãä»ããŠããŒã¿ãããŒãããå Žåããã®ãœãªã¥ãŒã·ã§ã³ã¯æ©èœããŸããã
çµ±åmoment.js
ã¢ããªã±ãŒã·ã§ã³ã§moment.jsã䜿çšããããã«å¿ èŠãªããšãããã€ããããŸãã
ãŸããããŠã³ããŒãããã©ã€ãã©ãªmoment.min.jsã/ app / static / jsãã©ã«ããŒã«é 眮ããŠãéçïŒéçãã¡ã€ã«ïŒãšããŠã¯ã©ã€ã¢ã³ãã«æäŸããå¿ èŠããããŸãã
次ã«ããã®ã©ã€ãã©ãªãããŒã¹ãã³ãã¬ãŒãïŒapp / templates / base.htmlãã¡ã€ã«ïŒã«è¿œå ããŸãã
<script src="/static/js/moment.min.js"></script>
ããã§ãã¿ã€ã ã¹ã¿ã³ãã衚瀺ãããã³ãã¬ãŒãã«<script>ã¿ã°ãè¿œå ã§ãããžã§ããå®äºããŸããã ãããã代ããã«ããã³ãã¬ãŒãã§äœ¿çšã§ããmoment.jsã®ã©ãããŒãäœæããŸãã ããã«ãããã¿ã€ã ã¹ã¿ã³ãã衚瀺ããããã®ã³ãŒããå€æŽããå Žåã1ã€ã®ãã¡ã€ã«ã®ã¿ãå€æŽããã ãã§ååã§ãããããå°æ¥çã«æéãç¯çŽã§ããŸãã
ã©ãããŒã¯éåžžã«åçŽãªpythonã¯ã©ã¹ïŒapp / momentjs.pyãã¡ã€ã«ïŒã§ãã
from jinja2 import Markup class momentjs(object): def __init__(self, timestamp): self.timestamp = timestamp def render(self, format): return Markup("<script>\ndocument.write(moment(\"%s\").%s);\n</script>" % (self.timestamp.strftime("%Y-%m-%dT%H:%M:%SZ"), format)) def format(self, fmt): return self.render("format(\"%s\")" % fmt) def calendar(self): return self.render("calendar()") def fromNow(self): return self.render("fromNow()")
renderã¡ãœããã¯æååãçŽæ¥è¿ãã®ã§ã¯ãªãããã³ãã¬ãŒããšã³ãžã³ã§ããJinja2ãæäŸããMarkupã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ããããšã«æ³šæããŠãã ããã ãã€ã³ãã¯ãJinja2ã¯ããã©ã«ãã§ãã¹ãŠã®è¡ããšã¹ã±ãŒãããããã<script>ã¯ãã®åœ¢åŒïŒlt; scriptïŒgt;ã§ã¯ã©ã€ã¢ã³ãã«å°éã§ããããšã§ãã æååã®ä»£ããã«ããŒã¯ã¢ãããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãè¿ããã®ã§ãJinja2ã«ãã®æååããšã¹ã±ãŒãããŠã¯ãªããªãããšãäŒããŸããã
ã©ãããŒãã§ããã®ã§ããããJinja2ã«è¿œå ããŠããã³ãã¬ãŒãïŒapp / __ init__.pyãã¡ã€ã«ïŒã§äœ¿çšã§ããããã«ããå¿ èŠããããŸãã
from momentjs import momentjs app.jinja_env.globals['momentjs'] = momentjs
ããã«ããããã¹ãŠã®ãã³ãã¬ãŒãã§Jinja2ãã¯ã©ã¹ãã°ããŒãã«å€æ°ãšããŠæäŸã§ããããã«ãªããŸããã
ããã§ããã³ãã¬ãŒããå€æŽããæºåãæŽããŸããã ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãæ¥ä»ãšæå»ã衚瀺ãã2ã€ã®å ŽæããããŸãã æåã¯ãŠãŒã¶ãŒãããã£ãŒã«ããŒãžã§ãæåŸã«ã¢ã¯ã»ã¹ããæéã衚瀺ããŸãã ãã®ããŒãžã«è¡šç€ºããã«ã¯ãã«ã¬ã³ããŒïŒïŒãã©ãŒãããïŒãã¡ã€ã«ã¢ããª/ãã³ãã¬ãŒã/ user.htmlïŒã䜿çšããŸãã
{% if user.last_seen %} <p><em>Last seen: {{momentjs(user.last_seen).calendar()}}</em></p> {% endif %}
2çªç®ã®å Žæã¯ãã€ã³ããã¯ã¹ããŠãŒã¶ãŒãããã³æ€çŽ¢ããŒãžã§äœ¿çšãããæçš¿ãã³ãã¬ãŒãã§ãã æçš¿ãã³ãã¬ãŒãã§ã¯ãfromNowïŒïŒã®ãã©ãŒããããé©çšããŸããæçš¿ãäœæãããæ£ç¢ºãªæå»ã¯ãæçš¿ãäœæãããŠããã®çµéæéã»ã©éèŠã§ã¯ãªãããã§ãã ãªããªã å¥ã®ãã³ãã¬ãŒãã§æçš¿ã®ã¬ã³ããªã³ã°ãéžæããŸãããããã§ãæçš¿ã衚瀺ããŠãããã¹ãŠã®ããŒãžïŒãã¡ã€ã«ã¢ããª/ãã³ãã¬ãŒã/ post.htmlïŒãå€æŽããããã«1ãæã§å€æŽãè¡ãå¿ èŠããããŸãã
<p><a href="{{url_for('user', nickname = post.author.nickname)}}">{{post.author.nickname}}</a> said {{momentjs(post.timestamp).fromNow()}}:</p> <p><strong>{{post.body}}</strong></p>
ãããŠããã®ç°¡åãªå€æŽã«ãããã¿ã€ã ã¹ã¿ã³ãã«é¢ãããã¹ãŠã®åé¡ã解決ããŸããã ãŸããåæã«ããµãŒããŒã³ãŒããå€æŽããå¿ èŠããããŸããã§ããïŒ
ãããã«
æ°ä»ããªããã¡ã«ãä»æ¥ããŠãŒã¶ãŒã®ãã±ãŒã«èšå®ã«å¿ããŠæ¥ä»è¡šç€ºãå€æŽããããšã«ãããWebå šäœãããŠãŒã¶ãŒã®ã¢ããªã±ãŒã·ã§ã³ã®å¯çšæ§ãåäžãããéèŠãªäžæ©ãèžã¿åºããŸããã
ãã®ã·ãªãŒãºã®æ¬¡åã®èšäºã§ã¯ãè€æ°ã®èšèªã®ãµããŒããå«ãããããå€åœäººãŠãŒã¶ãŒãããã«åã°ããããšããŸãã
ããŠã³ããŒãïŒ microblog-0.13.zipã
ãŸãã¯ã GitHubã§ãœãŒã¹ã³ãŒããèŠã€ããããšãã§ããŸãã
ãã²ã«