Dropbox is a big user of Python. Itâs our most widely used language both for backend services and the desktop client app (we are also heavy users of Go, TypeScript, and Rust). At our scaleâmillions of lines of Pythonâthe dynamic typing in Python made code needlessly hard to understand and started to seriously impact productivity. To mitigate this, we have been gradually migrating our code to stati
æ¥æ¬èªã®èªç¶è¨èªã§æ¸ãããããã¹ãä¸ãããæ¥ä»ãæéãæéãé »åº¦ã¨ãã£ãæéã«é¢ãã表ç¾ãæ½åºããPythonã®datetime/timedeltaå½¢å¼ã«å¤æã§ããPythonããã±ã¼ã¸ ja-timexãä½ãã¾ããããã®è¨äºã§ã¯åºæ¬çãªä½¿ãæ¹ãåä½ã®ä»çµã¿ããã®ããã±ã¼ã¸ã®å®è£ æ¹éãç´¹ä»ãã¾ãã ja-timexã¨ã¯ çãããä¸åº¦ã¯ããã¹ãä¸ã«ç¾ããæ¥ä»ãæéãæ£è¦è¡¨ç¾ã§ãã¼ã¹ããçµé¨ãããã®ã§ã¯ãªãã§ããããï¼ãããã¯datetime.strptime(str, '%Y/%m/%d %H:%M')ã¨ãã£ãããã«ãdatetimeã«å¤æãããã¿ã¼ã³ãæ¸ããã¨ãããã§ããããããããããã°ã©ã ä¸ã§æ¥ä»ãæéãæ±ããã¨ã¯ãããã使¥ã§ãããã®ã®ãå ¥åããããã©ã¼ããããè¤éã«ãªã£ãããæ¥ä»ãããã¹ãã®ä¸ã®ä¸é¨ã«å«ã¾ãããããã¨ãé端ã«å¦çãé¢åã«ãªãã¾ããæ¥ä»ãæéã¯æ±ºã¾ã£ãã«ã¼ã«ã«å¾ã£ã¦ã
Pythonã«åãã³ããå ¥ã£ã¦ãããã°ããçµã¡ã¾ããåãã³ãã®ç«ã¡ä½ç½®ãããªãã§ãã§ããã¢ããã¼ã·ã§ã³ã¨ãã¦å°å ¥ããã¾ããããåãã³ã以å¤ã®ç¨éã¯ãã¾ãè²ãããåãã³ããä¸å¿ã«ãªããPEPã仿§ãããã«åããã¦å¤åããããããæ¸ããããããã«æ©è½ã追å ããã¦ãã¾ããã æ¬ã¨ã³ããªã¼ã§ã¯ãPython 3.9æç¹ã§ã®ææ°æ å ±ãå ã«ãç¾å¨ãµãã¼ãä¸ã®Pythonãã¼ã¸ã§ã³ï¼3.6以ä¸ï¼ã¨ã®äºææ§ã®æ å ±ãç¹ã交ããªãããææ°ã®åãã³ãã®æ¸ãæ¹ãç´¹ä»ãã¾ãã æ¬ã¨ã³ããªã¼ã®å·çã«ã¯ãPythonã®åã®æèè ã®@moriyoshiã@aodagã@tk0miya ã«ã¢ããã¤ã¹ããããã¾ããããããã¨ããããã¾ãã ç°å¢æ§ç¯Visual Studio CodeVisual Studio Codeã®å ´åã¯ãäºåã«ã©ã®ã¤ã³ã¿ããªã¿ãå©ç¨ããããè¨å®ãã¦ããã¾ãããã®ç°å¢ã«ã¤ã³ã¹ãã¼ã«ãã¾ããvenvã使ã
Pythonã§æ¨æºã©ã¤ãã©ãªã®ã¿ã使ã£ã¦ã·ã³ãã«ãªã¸ã§ããã¥ã¼ã·ã¹ãã ãä½ãã¾ããããã¥ã¼ã¯Redisã使ããã«ã¤ã³ã¡ã¢ãªã«ä¿åãã¾ãã ãã®è¨äºã§ã¯Queickã®ç¹å¾´ã¨ä½¿ãæ¹ãã¸ã§ããã¥ã¼ã·ã¹ãã ã«ã¤ãã¦ã®èª¬æããã使ããã¦ããã·ã¹ãã ã§ã®å®è£ ãQueickã®ã¢ã¼ããã¯ãã£ã¨å®è£ ã«ã¤ãã¦èª¬æãã¾ãã 0. ãã£ãã 以åRaspberry Piã¨NFCãªã¼ãã¼ã¨Slackã§ç 究室ã®å ¥é室管ç(æå»)ã·ã¹ãã ãä½ã£ãã®ã§ãããRaspberry Piã®ããããéåãã¦Slackã«æå»ãããªããã¨ã1-2é±éã«1åããã¾ããã moriokalab.com ããã§ã¸ã§ããã¥ã¼ã·ã¹ãã ãå°å ¥ãã¦éåæã«ãªãã©ã¤ããä»çµã¿ãçµã¿è¾¼ããã¨æãããã¤ãæ¢ããã®ã§ãããåºæ¬çã«ãã¥ã¼ã¨ãã¦redisã使ã£ã¦ããããã§ããã Raspberry Piã®ä¸ã«Rediså ¥ãã¦éç¨ããã®ãå«ã§ã¤ã³ã¡ã¢ãªã§éã
CPUã¯ã³ã³ãã¥ã¼ã¿ã¼ã®å¦çã³ã¢ã§ãè²´éãªãªã½ã¼ã¹ã«ãªãã¾ããCPUã®å®è¡æéãç¡é§é£ãããå©ç¨çãä½ä¸ãããã¨ãããã°ã©ã ã®å¹çãå¿ ç¶çã«ä½ä¸ãã¾ããä¸è¨ã®è¡¨ã示ããããã«ã1Gbpsã®ãããã¯ã¼ã¯ã§2KBã®ãã¼ã¿ãã¢ãããã¼ãããããCPUã®æè¦ã§ã¯14æéãéããããããªãã®ã§ããããã10Mbpsã®ãããã¯ã¼ã¯ã¨ãªãã¨ãæ´ã«100åãå¹çãä¸ããã¾ãããã®é·ãæéããCPUããã ãã å¾ ããã¦ä»ã®å¦çã«ç§»ããªãè¡çºã¯ã¾ãã«CPUã®ã鿥ãã®ç¡é§é£ãã«ãªãã¾ãã 2-2. ç¾å®ã®åé¡ç¹ ã³ã¹ã ããã°ã©ã ã¯ã³ã³ãã¥ã¼ã¿ã¼ã®è¨ç®ãªã½ã¼ã¹ãæå¹ã«å©ç¨ã§ããªãã¨ããã®ç©´ãåããããã«ãããå¤ãã®ã³ã³ãã¥ã¼ã¿ã¼ãå¿ è¦ã«ãªã£ã¦ãã¾ããä¾ãã°ãã¹ã¯ã¬ã¤ãã³ã°ã®ããã°ã©ã ãéåæããã°ã©ãã³ã°ã§è¨è¨ãç´ãã¨ããã¨ãã¨å¿ è¦ã¨ãã7å°ã®ãµã¼ãã¼ã3å°ã¾ã§æ¸ããã¦ãã³ã¹ãã57%忏ãããã¨ãã§ãã¾ããã¡
Pythonã¨ã®åºä¼ãã¨OSSã®ãã£ãã ã¯ããã¾ãã¦ãããªã¼ã©ã³ã¹ã¨ã³ã¸ãã¢ã®æé¨ï¼@hhattoï¼ã§ãã ç¾å¨ã¯ããããã¯ãã§ã¼ã³é¢é£ã®Webã¢ããªã±ã¼ã·ã§ã³éçºããã©ã³ãå¶ä½è²©å£²ä¼ç¤¾ã§ã®ç ç©¶éçºã»æè¡é¡§åããã¦ãã¾ãã æ¥åå¤ã§ã¯ãOSSã®éçºãè¡ã£ã¦ãããPython/PHP/C/Go/Rustã§ä½æããã©ã¤ãã©ãªããªã¼ãã³ã½ã¼ã¹ã¨ãã¦å ¬éãã¦ãã¾ããç¹ã«autopep8ã¨ããPythonã®ã³ã¼ãæ´å½¢ãã¼ã«ã¯3500以ä¸ã®Starãéãã¾ããã https://github.com/hhatto/autopep8 â²autopep8 ä»åã¯ãOSSã«æã¡è¾¼ãçç±ãã¡ãªãããä¸å¿ã«ãOSSãèµ·ç¹ã«ãããã£ãªã¢å½¢æã«ã¤ãã¦ç´¹ä»ã§ããã°ã¨æãã¾ãã Pythonã¨ã®åºä¼ã ç§ãPythonã«è§¦ãå§ããã®ã¯ã大妿代ããHow to Become a Hackerãã¨ãããµã¤ããè¦ã¦å½±é¿ã
Even if you write clear and readable code, even if you cover your code with tests, even if you are very experienced developer, weird bugs will inevitably appear and you will need to debug them in some way. Lots of people resort to just using bunch of print statements to see what's happening in their code. This approach is far from ideal and there are much better ways to find out what's wrong with
â»ææ°çï¼2021å¹´ãã¼ã¸ã§ã³ï¼ããã¡ãã«ããã¾ãã®ã§åããã¦ã覧ãã ããï¼ æ¯å¹´æä¾, Pythonæ¬ã¨å¦ã³æ¹ã®ç·ã¾ã¨ãã§ãï¼*1 ããã°ã©ãã³ã°, ã¨ã³ã¸ãã¢ãªã³ã°ã«æ©æ¢°å¦ç¿ã¨ä»å¹´ï¼2019å¹´ï¼ãPythonã«ã¨ã£ã¦è³ãããªä¸å¹´ã¨ãªãã¾ãã. ä»å¹´ãããããåºã¦ããPythonã®æ¸ç±ãäºä¾ãªã©ãå ã«, åå¿è åãã®æ¸ç±ã»å¦ã³æ¹ ä»äºã«ããæ¹ï¼ä¸ç´è ï¼ã¸ã®ãªã¹ã¹ã¡æ¸ç± ãããç®æãã»ãããããªäººã§ãã£ãªã¢ãã§ã³ã¸ãèãã¦ããæ¹ã¸ã®ãªã¹ã¹ã¡ ãä½ãæç¡ããç´¹ä»ãã¾ã. æ¥å¹´ï¼2020å¹´ï¼ã«åãã¦ã®æºåã®åèã«ãªãã°å¹¸ãã§ã. â»ã¡ãªã¿ã«éå»ã«2019, 2018, 2017ã¨3åã»ã©ãã£ã¦ã¾ã*2. ãã®ã¨ã³ããªã¼ã®èè &å 責äºé Shinichi Nakagawaï¼@shinyorkeï¼ æ ªå¼ä¼ç¤¾JXé信社 ã·ãã¢ã»ã¨ã³ã¸ãã¢, 主ã«ãã¼ã¿åºç¤ã»åæãæ å½. Pythonæ´ã¯ãããã9å¹´
ã¨ããå人ãããã¯ããä½ããã¨æãã¤ããæã«ãèªåã§æ¬²ãããªã¨æã£ããã®ããããPythonã§ã¨ããã©ã¤ãã©ãªã使ãã¦ã¿ã¾ããã ä»åéçºãããã®Jpndlpyã¨ããååã®å½ç«å½ä¼å³æ¸é¤¨ããæ å ±ãåå¾ããHTTPã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãªã使ãã¾ããã å½ç«å½ä¼å³æ¸é¤¨ã¯ãæ¸ç±ã¿ã¤ãã«ãèè ãªã©ã®å³æ¸æ å ±ãAPIã¨ãã¦å ¬éãã¦ãã¾ããå½ç«å½ä¼å³æ¸é¤¨ã®APIã¯ããããªãããã³ã«ã§APIãå ¬éãã¦ãããä»åã¯OpenSearchå½¢å¼ã®APIããHTTPã§å³æ¸æ å ±ãåå¾ããããã®Pythonãã使ããHTTPã¯ã©ã¤ã¢ã³ãã®ã©ã¤ãã©ãªã使ãã¾ããã GitHubå ãªã©ãæ¢ãã¦ã¿ã¦ãåããããªç©ãä½ã£ã¦ããæ¹ãããªãã£ããããèªåãæ¬²ããã£ãã¨ããã®ããããéçºãã¦ã¿ã¾ããã PyPiã«ãå ¬éãã¾ããã®ã§ãéæã¢ãããã¼ããã¦ããäºå®ã§ãã å½ç«å½ä¼å³æ¸é¤¨ã¨ã¯å½ç«å½ä¼å³æ¸é¤¨ã¨ã¯ãæ¥æ¬å½å ã§çºè¡ããã
Python 3.0 以éã§ã¯ã颿°ãå®ç¾©ããã¨ãã«ããã¼ã¯ã¼ãå°ç¨å¼æ° ãæå®ã§ããããã«ãªãã¾ããã def func(a, b, *, c=1, d=2): return a+b+c+d ãããªã®ã§ããã弿°ã®ãªã¹ãã« * ããã颿°ãå¼ã³åºãã¨ãã* ã®å¾ãã«ãã弿°ã®å¤ã¯ãããªãããã¼ã¯ã¼ã弿°ã¨ãã¦æå®ããªããã°ããã¾ããã âã®é¢æ°ã ã¨ã弿° c ã¯ãã¼ã¯ã¼ã弿°ã§æå®ããã°ã¡ããã¨åãã¾ãã >>> func(1, 2, c=10) 15 ãããããã¼ã¯ã¼ããªãã§å¼ã³åºãã¨ã¨ã©ã¼ã«ãªãã¾ãã >>> func(1, 2, 10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: func() takes 2 positional arguments but 3
夿¥ãPythonã§ã¯ãä»£å ¥ã¯æã§ããã¹ãï¼ãã¨ä¸è²«ãã¦ä¸»å¼µãã¦ãã¾ããã Cè¨èªãªã©ã§ã¯ãä»£å ¥ã¯è¶³ãç®ãæãç®ã¨åããå¤ãè¨ç®ãããå¼ãã§ããã¨ãã° a = (b=100) / 2; ã¨æ¸ãã¨ãb ã«ã¯ 100 ãä»£å ¥ããa ã« 100/2=50 ãä»£å ¥ãã¾ãã1+1 㯠2 ã¨ããå¤ã«ãªã å¼ ã§ãããb=100 ãåæ§ã«å¤ã 100 ã¨ãªã å¼ ãªã®ã§ãã Pythonã§ã¯ãä»£å ¥ã¯å¼ã§ã¯ãªãã®ã§ãããããæ¸ãæ¹ã¯ã§ãã¾ããã Pythonã®ä»£å ¥ã¯ãè¶³ãç®ãªã©ã®æ¼ç®åã®ä»²éã§ã¯ãªããif ã for ã®ãããªå¶å¾¡æã®ä»²éã§ããã¾ãèªç±ãªæ¸ãæ¹ã¯åºæ¥ãªãã®ã§ãã Python FAQ ã§ã¯ããã®çç±ã¨ã㦠Python ã®å¼ä¸ã§ã®ä»£å ¥ã許ããªãçç±ã¯ããã®æ§é ã«ãã£ã¦èµ·ãããä»ã®è¨èªã§ã¯ãããã¡ã§è¦ã¤ãã¥ãããã°ã§ã: if (x = 0) { // error handling } e
Python ã® GUI ãã¬ã¼ã ã¯ã¼ã¯ã§ãã Kivy ã¯ããã®ã¾ã¾ã ã¨æ¥æ¬èªã表示ã§ããªãã ããã§ãã¤ã³ãã¼ãããã ãã§æ¥æ¬èªã表示ã§ããããã«ããããã±ã¼ã¸ japanize-kivy ãä½ã£ãã github.com ç¥ã£ã¦ãã人ã¯ãã³ã¨æ¥ãã¯ãã ãã©ååãææ³ã¯ä»¥ä¸ã®ããã±ã¼ã¸ãã¤ã³ã¹ãã¤ã¢ãã¦ããã github.com 使ã£ãç°å¢ã¯æ¬¡ã®éãã ããã±ã¼ã¸ããµãã¼ããã Python 㯠3.6 以ä¸ãæ³å®ãã¦ããã $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G84 $ python -V Python 3.7.4 ããã ããã ã¤ã³ã¹ãã¼ã« 試ã ãã©ã³ãã®ã©ã¤ã»ã³ã¹ã«é¢ã㦠ã¤ã³ã¹ãã¼ã« pip ããã¤ã³ã¹ãã¼ã«ã§ããã $ pip install japanize-k
ãã®è¨äºã§ã¯ãååï¼ Python ã§ gRPC ã®åä½ãã¹ãï¼ã«å¼ãç¶ãã Python ã§ gRPC ã使ãéã®ç¥è¦ããç´¹ä»ãã¾ãã 主ã«ãã¡ã¿ãã¼ã¿ã¨ã¤ã³ã¿ã¼ã»ãã¿ã¼ã®å®è£ æ³ã¨ããã®ãã¹ãæ¹æ³ãã¡ã¤ã³ã«ãªã£ã¦ãã¾ãã ã¾ã experimental API ã ã£ããé public ã¯ã©ã¹ã ã£ãããã¦ããã®ã§ãå ¬å¼ã®ã¢ãã¦ã³ã¹ãããã¾ã§ã¯ãããã¯ã·ã§ã³å©ç¨ã¯é£ããããã«ãæãã¾ããã ç®æ¬¡ ã¨ã©ã¼ã®åæ± ã¡ã¿ãã¼ã¿ã«ã¤ã㦠ã¡ã¿ãã¼ã¿ãå©ç¨ããä¾ ãµã¼ãã¼ ã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãª ã¡ã¿ãã¼ã¿ãå©ç¨ããã¯ã©ã¹ããã¹ãããä¾ ãµã¼ãã¼ ã¯ã©ã¤ã¢ã³ãã©ã¤ãã©ãª ã¤ã³ã¿ã¼ã»ãã¿ã«ã¤ã㦠ã¤ã³ã¿ã¼ã»ãã¿ãå©ç¨ããä¾ ãµã¼ãã¼ç¨ ã¯ã©ã¤ã¢ã³ãç¨ ã¤ã³ã¿ã¼ã»ãã¿ãå©ç¨ããã¯ã©ã¹ããã¹ãããä¾ ãµã¼ãã¼ç¨ ã¯ã©ã¤ã¢ã³ãç¨ ã¾ã¨ã ã¨ã©ã¼ã®åæ± gRPC ã®ã¨ã©ã¼ã®æ¹æ³ã¯ã gRPC Errors ã
ãããã§æ¹è¡ããã»ãããã¬ã¤ã§è¯ãã¨æãã¾ãã ããããç§ã¯ãã¡ãã®ã»ãããã¬ã¤è¯ãã¨æãã¾ãã ã³ã¼ãã¬ãã¥ã¼ã§ããããè°è«ããããã¨ã¯ããã¾ãããï¼ å¤§åãªãã¨ã ã¨ã¯æãã¾ãããçç£æ§ã«ã¯ãã¾ãç´çµãã¾ãããè°è«ãé¿ããããã«æ¸ãæ¹ã決ããã»ããè¯ãã§ããã ï¼åã ã®åé¡ã«ã¤ãã¦é次è°è«ããã®ãã¨ãã«ã®ã¼ãç¡é§ã«ãã¦ãã¾ãã¾ããä¸åº¦æ±ºãã¦ãåå©ç¨ããããã«ããããã®ã§ãï¼ã 仿¥ã¯ãã®ããã«ä½¿ãã black ã¨ãããã¼ã«ãç´¹ä»ãã¾ã ï¼ãç§ã¯flake8ã使ã£ã¦ãããçµæ§ã§ããã¨æãããããããã¾ããããå°ãéã話ãªã®ã§èªãã§ã¿ã¦ãã ããï¼ã blackã使ãã Pythonã®ã³ã¼ããèªåã§ãã©ã¼ããããã¦ããã black ãç´¹ä»ãã¾ãã github.com blackã¯Pythonã®ã³ã¼ããã©ã¼ããã¿ã¼ã§ãèªåçã«Pythonããã°ã©ã ã®æ¸ãæ¹ãä¿®æ£ãã¦ããã¾ãã PEP8 ã¨
ããããã°ã©ãã³ã°åå¿è ã®æ¹ã«ãPythonã¨Rubyã®éããæãã¦ãã ãããã¨èãããã®ã§æ¸ãã¦ããã¾ãã å 責 ããã¾ã§åãããã°ã©ãã³ã°åå¿è ããã«èª¬æããã¨ãã«ãã®èª¬æã使ããã¨ããè¦ç¹ã§ããèªãã§ãæ¹ãæãè¦ç¹ã¨ãå¥ã®æè¦ã¯ãã²ãèªèº«ã®ããã°ã«æ¸ãã¦ãã ããï¼èªã¿ã¾ãã®ã§ï¼ã éãã¯ããããããã¾ããã5åã§ç°¡æ½ã«ä¼ããéããä¼ãããã¨æã£ã¦ãã¾ãã ãã¨ç§ã¯Pythonããã£ã¨10å¹´è¿ã使ã£ã¦ãã¾ãããRubyã¯ã¡ãã£ã¨ã ãã§ããã§ãRubyãã¨ã¦ãè¯ãè¨èªã ã¨æã£ã¦ãã¾ãã ï¼ã³ã¼ããµã³ãã«ã®è²å³ãèªã¿ã«ããã¦ããããªãããæ°ãåãããç´ãã¨ãã¾ãï¼ æ¬æ ããã°ã©ãã³ã°åå¿è ã«ç°¡åã«Pythonã¨Rubyã®éãã説æããå ´åãã¹ãã¯ãPythonã¯ããæç¤ºãã¾ããRubyã¯ããç¥ãã¾ããã ã¨æã£ã¦ãã¾ã ï¼ããã¾ã§ããã°ã©ãã³ã°åå¿è ã«5å以å ã«ä¼ããã¨èããã¨ãã®è¦ç¹ã§ã
ã²ãããªãã¨ããå ¨ææ¤ç´¢ã·ã¹ãã ãä½ããã¨ã«ãªãããããã調ã¹ããã¨ãåå¿é²çã«è¨é²ãã¦ããã èªåã¯ãã¤ãPython+Tornado+Nginx+MongoDBã®æ§æã§Webã¢ããªãæ¸ãã¦ãã¦ããã®ç°å¢ã§æè»½ã«å ¨ææ¤ç´¢ãã§ããããããªãã¨æã£ã¦è©¦è¡é¯èª¤ããçµæãæ¬ç¨¿ã®ãããªãã¨ãã§ãããã¨ãåãã£ãã®ã§å ¬éãã¾ããã ããããããã¨ã ã»å ¨ææ¤ç´¢ï¼åºæ¬çã«N-gramãã§ããã°è¨äºå ã®åèªãå ã«é¢é£è¨äºã®è¡¨ç¤ºãåèªã®ç·¨éãªã©ï¼ ã»ä¸»ã«.txtã®ãã¡ã¤ã«å ã®ããã¹ãæ¬æã対象ã¨ãã ã»ã¢ã«ã¦ã³ããçºè¡ãã¦å¤é¨ã«ãå ¬é ï¼ããã¯æ¬è¨äºã®è¶£æ¨ããå¤ããã®ã§é¤å¤ãããï¼ ãç°å¢ã ã»ãããVPS 2Core 1GBã¡ã¢ãª ã»CentOS 6.2 ã»Python 2.7.2 ã»Tornado 2.4.1ï¼ãã¬ã¼ã ã¯ã¼ã¯ï¼ ã»MongoDB 2.2.3ï¼ãã¼ã¿ãã¼ã¹ï¼ ã»Nginx 1.2.6ï¼W
ç ²æããèªèµ°ç ²ï¼PzH2000èªèµ°æ¦´å¼¾ç ²ï¼ãèªèµ°ç ²ã¯æ¦è»ã«ããä¼¼ã¦ãã¾ãããæ¦è»ã§ã¯ããã¾ãããï¼æ¬ç·¨ã¨ã¯é¢ä¿ããã¾ããã ããã«ã¡ã¯ãã¨ã ã¹ãªã¼åºç¤éçºãã¼ã å°æ¬ã§ãã Pythonã®ããã±ã¼ã¸ç®¡çå¨ãã§ã¯ã ãsetup.pyã§requirements.txtãèªã¿è¾¼ãã®ãæ®éãªãã§ãããï¼ã ãpipenv ãããã° venv ã¯ãªã¯ã³ã³ãªãã§ããï¼ã ãpyenvã¯è¦ããªããã§ãããï¼ï¼ã ãPythonã¯æ´å²ãå¤ãåãRubyãªã©ã«æ¯ã¹ã¦ã«ãªã¹ã ã¿ãããªæ··ä¹±ãããç®ã«ãã¾ãã å®éãè¤æ°ã®ãã¼ã«ããã£ã¦ï¼ä¸è¦ï¼è¤éã§ããã¾ãããªãããããç¶æ³ã«ããã®ãããããã¥ã¡ã³ãåããã¦ããããã§ãããã¾ããã ãªã®ã§ãç§ãªãã«æ´çãã¦ã¿ããã¨ã«ãã¾ããã â»ã追伸ãã追å ãã¾ããããã®è¨äºã§ã¯æ±ç¨ããã°ã©ãã³ã°è¨èªã¨ãã¦Pythonã使ãã±ã¼ã¹ï¼Webã¢ããªã¨ããCLIãã¼ã«ã¨ããã©ã¤ã
ã¯ããã« ã³ã¼ãã¯çè§£ãããããªããã°ãããªãã ãªã¼ããã«ã³ã¼ã âããè¯ãã³ã¼ããæ¸ãããã®ã·ã³ãã«ã§å®è·µçãªãã¯ãã㯠(Theory in practice) ä½è :Dustin Boswell,Trevor Foucherçºå£²æ¥: 2012/06/23ã¡ãã£ã¢: åè¡æ¬ï¼ã½ããã«ãã¼ï¼ ã³ã¼ãã®ä¿å®æ§ãå¯èªæ§ãé«ããããã«æã ã¨ã³ã¸ãã¢ã¯ã©ããªãã¨ãã§ããã§ããããï¼ ãã¹ããæ¸ã æ¨å¥¨ããã¦ããã³ã¼ãã¹ã¿ã¤ã«ã«æºæ ãã ã³ã¡ã³ããæ¸ã DRYååã«åã 夿´ã»æ¡å¼µããããè¨è¨ãã ãã°ãåºåããã»ç£è¦ãã é©åãªå½åããã etc... ã¾ã ã¾ã æèãã¹ããã¨ã¯ããã¨æãã¾ãããä¸è¨ã®é ç®ã¯ã¨ã³ã¸ãã¢ã§ããã°æããä¸åº¦ã¯ç®ã«ãããã¨ããããããªå 容ã§ãããæé»çã«äºæ¿ããããã«ã¼ã«ã§ãã ãããããããã¯ãã ã®å¿æ§ãã§ãããä½ç¾ããããã«å®éã«ã¯ä»¥ä¸ã®ãããªé ç®ã«è½ã¨ãè¾¼ãå¿ è¦
ãã®è¨äºã¯Python ãã®2 Advent Calendar 2018ã®é ãã¦ãã15æ¥ç®ã®è¨äºã§ãã æè¿ãã¯ãã¼ãªã³ã°ç¨ã®ããã°ã©ã ã®asyncioã使ã£ã並è¡å¦çã®ããã°ã©ãã³ã°ããã¦ããããasyncioã®ãã¹ããã©ã¯ãã£ã¹ãã¨ããè¶£æ¨ã®è¨äºãæ¸ããã¨æã£ã¦ããã®ã§ãããèªåèªèº«æè¦ãæ´ãã¦ãããããããï¼ããã£ã¦asyncioã®APIèªä½ãå¾®å¦ãªã®ã§ã¯ï¼ããããããasyncioã®ããã¥ã¡ã³ãã®ããã¥ã¡ã³ããèªãã§ããã©ã®æ©è½ãã©ãçµã¿åããã¦ä½¿ãã°ãããåãããªããã¨æã£ã¦ãã¾ã£ã¦ãã¦è¨äºãæ¸ãããã¦ãã¾ããã ãã ãç¥äººãããtrioã¨ããã©ã¤ãã©ãªã®APIè¨è¨ãç´ æ´ããããã¨è¦ãã¦é ããã®ã¨ããã¾ãã«ãå¾ ããã¦ãã¾ãã®ãç³ã訳ãªãã®ã§ã²ã¨ã¾ãã調ã¹ã¦ã¿ããã¬ãã«ã§ã¢ã¦ãããããåºãã¾ãã ç§ã¯ã¾ã 並å/並è¡/éåæå¦çã«è©³ããããã§ã¯ãªãã®ã§ã大ããªæãéãããã¦ããå¯è½
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}