ãã®è¨äºã¯Pythonã®AdventCalandar2016ã®15æ¥ç®ã®è¨äºã§ãã Goã§ãããã¯ã¼ã¯ããã°ã©ãã³ã°ã®æ稿ã«å¼ãç¶ããPythonã§ãããã¯ã¼ã¯ããã°ã©ãã³ã°ã® ããã¤ãã®ãã¿ã¼ã³ãå®è£ ãã¦ã¿ã¾ããã®ã§ãµã³ãã«ã³ã¼ãã¨ç°¡åãªè§£èª¬ããããã¨æã£ã¦ã¾ãã 以åããã®Linuxãããã¯ã¼ã¯ããã°ã©ãã³ã°ãã¤ãã«ãèªã㧠第5ç« ã®IOã®å¤éåã®é¨åãé常ã«èå³æ·±ããã³ãºãªã³ãã¦ãã¡ãã¨ç解ãããã¨æã£ã¦ãã®ã§ Cè¨èªã§æ¸ããã¦ãããã¸ãã¯ãPython3.5.2ã§æ¸ãç´ãã¦ã¿ã¾ããã ã¾ããæ稿ã¿ã¤ãã«ã®ãããã¯ã¼ã¯ããã°ã©ãã³ã°ã«ã¤ãã¦ã¯ã TCPãããã³ã«ãå©ç¨ãããµã¼ãå´ã®Socketéä¿¡ã®å®è£ ãæãã¦ã¾ãã Socketéä¿¡ã«ã¦ãã·ã³ãã«ãªéä¿¡ããI/Oå¤éåãéåæI/Oããã³ããããã³ã°I/Oãå©ç¨ãããã¿ã¼ã³ãç´¹ä»ãã ãããã®å®è£ ãå®ç¾ããããã®æè¡ã¨ãã¦ãsele
ãã¨ãã¨ä¸¦è¡ããã°ã©ãã³ã°ã¯Goãªã©ãå«ãåå¼·ãããã¨ãããã¾ããããã´ã«ã¼ãã³ããã£ãã«ãªã©ã®ç解度ãä½ãã¾ã¾æ±ã£ã¦ãããä»èªãã§ãã³ã¼ããæ¸ãã¦ããã³ã¼ããã©ããã並è¡ãã¸ãã¯ãã¿ã¼ã³ã«å ã¥ãã¦å®è£ ãã¦ãã®ããã¸ãã¯åãæ´ã¿ãããæéãåã£ã¦ãã¾ãç¶æ³ã§ããããã®ããããã®ä¸¦è¡ãã¸ãã¯è¾ºãã®ãã¿ã¼ã³ãããç¨åº¦ã¾ã¨ãã¦ã¿ããã¨ã«ãã¾ããã å®è£ ãã¿ã¼ã³ã¯æ¬¡ã®ããã«æ´çãã¦ã¿ã¾ããã åºæ¬çãªä¸¦è¡ãã¿ã¼ã³ ãããã¡ãªããã£ãã«ãã¿ã¼ã³ ãããã¡ãããã£ãã«ãã¿ã¼ã³ 並åforã«ã¼ããã¿ã¼ã³ ã¿ã¹ã¯çæã¨å¦çãåãããã¿ã¼ã³(Producer-Consumerãã¿ã¼ã³) ãã¤ãã©ã¤ã³ãã¿ã¼ã³(fan-outãã¿ã¼ã³) selectãå©ç¨ãããã£ãã«å¤éåãã¿ã¼ã³ selectã¨ã¯ã¼ã«ã¼ãã¼ã«ãçµã¿åããå¤éåãã¿ã¼ã³ Feture/Promiseãã¿ã¼ã³ åºæ¬çãªä¸¦è¡ãã¿ã¼ã³Goã§ã¾ãä¸çªæ
èå¼±æ§è¨ºæã«ããã¦Apacheã®ãã¼ã¸ã§ã³ãå¤é¨ãã調ã¹ãæ¹æ³ãè¤æ°ã®å°é家ãããã°è¨äºã«æ¸ãã¦ãããã¾ãã Apache HTTP Serverã®ãã¼ã¸ã§ã³ãå½ã¦ãæ¹æ³ åã調ã¹ãApacheãã¼ã¸ã§ã³å¤å®ã®å°ãã¿ ãããã大å¤èå³æ·±ããã®ã§ãããApacheã§ã§ããã®ã§ããã°PHPã¯ã©ãã ãããã¨æ°ã«ãªãæ¹ãå¤ãã¨æãã¾ããããã¯äººéã®èªç¶ãªææ ã ã¨æãã®ã§ãã ãã®ããããå診æä¼ç¤¾ã®ãç§ä¼ã®ã¿ã¬ãã¿ãããªã¨ãããããã®ã§ãããããç§ãããå°ãç¥è¦ãæ«é²ãããã¨æãã¾ãã ã¿ã¤ãã«ã«ãæ¸ããããã«ã診ææååãæã¡è¾¼ã¾ãã«ãè¨ãæããã°ãé常ã®ã¦ã§ãé²è¦§ã®ç¯å²ã§åãããã¨ãããã«è¨ãã°HTTPã¬ã¹ãã³ã¹ãããããåãããã¨ã«ã¤ãã¦æ¸ãã¾ããããããã¨ããX-Powered-Byããããè¦ãã°ä¸ç®çç¶wwwãã¿ãããªåå¿ãèãããã¾ãããããããèªæãªãã®ã¯å¯¾è±¡å¤ã¨ãã¾ãã (1) ã
ã¨ã»ã»ã®ï¼·ï¼·ï¼·å ¥é æ¡å¼µåä¸è¦§ List of file formats æ¡å¼µåããã®ãµã¤ãã¯.htmlã.php以å¤ã®ãµã¤ãã¯æè¿ãã¾ãè¦ãããªããªã£ã¦ãã¦ããã æ¡å¼µåå¥ã«ã©ããªãµã¤ãããããã¯Google㧠inurl:index.jspãã¿ããã«æ¤ç´¢ããã¨è²ã è¦ã¤ãããinurl:ã¯å¤§éã«å®è¡ããã¨Googleã®Capchaç»é¢ãåºã¦ä¸æ£ãªéä¿¡ã¨è¦åãããå ´åãããã®ã§æ³¨æã å¾è¿°ã®http ãããã¼æ å ±çããServerã¯nginxã§cookieã«JSESSIONãããã®ã« æ¡å¼µåã.aspã¨ãããã¼ã¸ãããã®ã§ãå¥ã·ã¹ãã ã«ç§»è¡ãããã©ãURLã¯ãã®ã¾ã¾ã«ããããæ¡å¼µåãé£ãéãã±ã¼ã¹ãããããã ã RubyãPythonã¯MVCãã¬ã¼ã ã¯ã¼ã¯ã話é¡ã«ãªãåºãã¦ããWEBã§æ¡ç¨ããåºããããããæ¡å¼µåã¤ãã¯è¦ããããã¨ããªãã http ãããã¼æ å ±ãã調ã¹ã ãã©ã¦ã¶ã®ãã£ã
æè¿ãTreasureDataã¨èªç¤¾ã®DBã®ãã¼ã¿ãåãããéè¨ããããå¦çãããã¨ãå¤ãpythonã§ãã£ããcsvã«æ¸ãåºãã¦Embulkã§ã¢ãããã¼ããã¦ãã¾ãããããã¼ã¿ã½ã¼ã¹ãå¢ããã¨é¢åã«ãªã£ã¦ããã®ã§ããç°¡åã§æ±ç¨åããæ¸ãæ¹ãèãã¾ããã çµå±ã¯WF使ã£ã¦ãã£ãããã話ãªã®ã§éè¦ããããä¸æã§ãããWFåå¼·ããã®ãæéããããã®ã§æ £ãã¦ãè¨èªã§ã¦ã£ã¨ãæ©ãETLãä½ããã人åãã®å 容ã§ãã åææ¡ä»¶ ãã®è¨äºãé©ãã¦ãã人 æ®æ®µã¯pythonãæ¸ãã¦ããã®ã§ãªãã¹ããã®ç¯å²ã§ETLããã pandas-tdã®åããä¸å®å®ããã¦ä½¿ããªã ã·ã§ã«ã§ã®å®ç¾æ¹æ³ã調ã¹ãæéããªã éæãããæ©è½ SQLããä½ãã°ãããã追å ã§ããETLã®ç®±ãä½ã å ¥åºåã®ãã¼ãã«ãå¤ãã£ã¦ãæéãããããªã è¨è¿°ããé çªã«å¦çãå®è¡ãããé²æãéç¥ããã ç°å¢ã®æºå Embulkã®ã¤ã³ã¹ãã¼ã« ã
ã¯ããã« æ¨å¹´æ«ã«Airflowãããã£ã¦ã¿ã¦ãªããªã便å©ã ã¨æãã¾ããã ãAirflowãæè¿ããèãAirflowã«å ¥éï¼EC2ã§åããã¦ã¿ããCI/CDã ããã§æ¬¡ã®ã¹ãããã¨ãã¦Kubernetesã¨ã®é£æºã«ææ¦ãã¦ã¿ã¾ãããæ¤ç´¢ãã¦ã¿ãã¨ãAirflow on Kubernetesãã¨å¼ã°ãã¦ããããã§ãã調ã¹ãããããæ¥æ¬èªã®è¨äºããã¾ããªãã£ãã®ã§ãã®è¨äºãå½¹ã«ãã¦ã°ãããªã¨æãã¾ãã =====2020.1.7 追è¨===== é¢é£è¨äºããªã³ã¯ãã¾ãã ãAirflow on KubernetesãDockerã¤ã¡ã¼ã¸ã®buildã¨Podã®deployã®ä»çµã¿ã«ã¤ã㦠ãAirflow on KubernetesãKubernetesPodOperatorã®ä½¿ãæ¹ Airflow on Kubernetesã¨ã¯ãï¼ ã¿ã¹ã¯ã¹ã±ã¸ã¥ã¼ãªã³ã°ãGUIã§ã®å®è¡ç®¡çãå¯è½ãªAir
Airflowã«ã¯Executorã¨ãããã®ããã£ã¦ã 使ç¨ããExecutorã«ãã£ã¦å¦çã®æ¹æ³ã並åã«ãªãã®ãç´åã«ããããé¸ã¶ãã¨ãã§ãã¾ãã ä»åã¯Celeryã使ç¨ããExecutorãé¸æãã¦ãã¾ãã ä¸è¨ã®ã³ãã³ãã ãã§ä»¥ä¸ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã Airflow管çç»é¢: localhost:8080 Flower: localhost:5555 å®è£ ã¾ãã¯åå¥ã®å¦çãæ¸ãã¾ãã ä¾ã¨ãã¦1æ¥åã®ããã«æ å ±ãDBããåå¾ãã¦ãã¦CSVã«ä¿åããå¦çãæ¸ãã¦ãã¾ãã import pandas import datetime from jinja2 import Template def make_hotel_table(**kwargs): # ãã¼ã¿åå¾ããsqlã®å®è¡ #å®è¡æ¥æã®åå¾ execution_date = kwargs.get('execution
å ¬å¼ã®æ訳ã«é©å½ã«å ç(æ¸ç?)/ä¿®æ£ãããã®ã§ãã(ã¡ãªã¿ã«èè ã®è±èªã®åå·®å¤ã¯30å°ã§ãã) 2019-12-28 è¿½è¨ ä»¥ä¸ã¯Hanamiã®ãã¼ã¸ã§ã³ã1.1ã®é ã®ãã®ã§ãã URLã404ã«ãªã£ã¦ãã¾ãã¾ããã URLã ãã¯ææ°ã®ãã®ã«æ¸ãæãã¾ãã(Thanks @topstone)ãå 容ã¯å¤ããªã£ã¦ããå¯è½æ§ãããã¾ãã ã¤ã³ã¿ã©ã¯ã¿ã¨ã¯ Hanamiã«ã¯ã³ã¼ããæ´çããããã®ãªãã·ã§ã³ã®ãã¼ã«ãæä¾ãã¦ãã¾ããããã¯ã¤ã³ã¿ã©ã¯ã¿ã¨ããããµã¼ãã¹ãã¦ã¼ã¹ã±ã¼ã¹ããªãã¬ã¼ã·ã§ã³ãªã©ã¨ãå¼ã°ãã¾ãã 以ä¸ãäºä¾ãéãã¦ä½¿ãæ¹ãè¦ã¦ããã¾ãã æ°ããè¦æ±: ã¡ã¼ã«éç¥ (A New Feature: Email Notifications) ãããªè¦æ±ããã£ãã¨ãã¾ãã 管çè ã¯æ¬ã追å ãããã¨ãã«ã¡ã¼ã«éç¥ãåãåãããã ã¢ããªã±ã¼ã·ã§ã³ã«ã¯èªè¨¼ããªããããã ãã§ãæ¬ã追å ã§ãã¾
ã¯ããã« ããä¸å¹´ããããã£ã¨ Rails ã®ä½ããã¡ã§ã©ãããã°è¯ããªãã®ããèãã¦ãã¾ããã Rails ã使ã£ã¦ãããªãã®è¦æ¨¡ã®ã¢ããªã±ã¼ã·ã§ã³ãä½ã£ããã¨ããã人ãªããã¡ã³ããã³ã¹ã®ãã¥ãããæãããã¨ãããã®ã§ã¯ãªãã§ããããã ã¡ã³ããã³ã¹ã®åé¡ã¯ Rails 以å¤ã®éçºã§ãçºçãããã¨ã§ãããå®ã®ã¨ããã¡ã³ããã³ã¹ããããã¢ããªã±ã¼ã·ã§ã³ã¯ã©ãããã°ä½ããã®ã§ããããï¼ ãã®é£åã«å¯¾ãã¦ç§ãçããæã£ã¦ãã¾ããããèãç¶ãã¦ãã¾ãã å°ãªãã¨ãã Rails Way ã Rails Tutorial ããã¼ã¹ã«ããã¢ããªã±ã¼ã·ã§ã³éçºã¯ãæ¥åã§ç¨ããã«ã¯ç°¡åãããããã«æãã¾ãã ãã¬ã¼ã«ã«ä¹ããã¨ããè¨èãããã¾ãããç§ã¯èãæ¹ãå¤ãã¾ããã Rails ã¯è¦æ¨¡ã®å¤§ãããã¬ã¼ã ã¯ã¼ã¯ã§ãããåå°ã«éãã¾ããã Rails Way ã®è¨è¨æ¹éã¯å°è¦æ¨¡ãªéçºã§ã¯æå¹ã§ãããè¦æ¨¡
Tokyo Rubyist Meetup 㧠Hanami ã«ã¤ãã¦çºè¡¨ãã¦ããããã®ã³ãã¥ããã£ã¯æ¥æ¬ã«ããå¤å½äººã¨ã³ã¸ãã¢ãå½¼ãã¨äº¤æµãããæ¥æ¬äººã®éã¾ããªã®ã§ãè±èªãå ¬ç¨èªã¨ãªã£ã¦ãããçºè¡¨ãè±èªã§ããã trbmeetup.doorkeeper.jp 11/29 ã§ãããã«ããã®æ¥ã ã£ããããã飯ã豪è¯ã ã£ããã§ãçºè¡¨ãã¦ãããããããªã«é£ã¹ããã¦ãªã...ãæ®å¿µã ä¼å ´ã¯ cookpad ã®ãªãã£ã¹ã ã£ãã®ã§ãããã³ãå å®ãã¦ãã¦ãæçãç¾å³ããã£ãããã¼ã¹ããã¼ããç¹ã«ããã£ãã åã®çºè¡¨: The Pragmatic Hanami çºè¡¨è³æ: speakerdeck.com çºè¡¨å 容ã¯ä»¥å Rubyist Magagine ã«å¯ç¨¿ãã ãã³ã¾ ã¨åãã Hanami ã®ã¢ã¼ããã¯ãã£ã®èª¬æãªã©ããããã¨ãå¤å°å®éã«éçºãããæå¿ è¦ã¨ãªãTipsãç´¹ä»ããã è±èªã§çºè¡¨ããã®ã
ããã«ã¡ã¯ãã¹ã¼ãã§ãã EdTechãã¸ãã¹ã®ãã©ãããã©ã¼ã ãã¼ã ã§ã¨ã³ã¸ãã¢ããã¦ãã¾ãã Clean Architectureã§Todoã¢ããªã®Frontendã試ä½ãã¾ããã è¯ããã°å®è£ ãã¿ã¦ãã ããã æ¦è¦ Clean Architectureã§ã¯ãUIãDBãFWã¨ãã£ãã¢ããªã±ã¼ã·ã§ã³ã®è©³ç´°ãããã¸ãã¹ã«ã¼ã«ããåãé¢ãããã©ã°ã¤ã³ã¨ãã¦å®è£ ãã¾ãã ããã«ã¯ããã¹ã¿ããªãã£ãã³ã¼ãã®ãªã¼ãããªãã£ãé«ãä¿ãããçã®ã¡ãªãããããã¾ãã ã¨ã¯ããæ大ã®ã¡ãªããã¯ã詳細ã®æ±ºå®ãé 延ã§ãããã¨ããããã¾ããã 詳細ã®æ±ºå®ãé 延ã§ããã¨ããã㨠éçºåæã«ã¯ããã¹ã¦ã®ã¦ã¼ã¹ã±ã¼ã¹ãææ¡ã§ããªããããé大ãªæ±ºå®ã¯é 延ã§ããã®ãæã¾ããã§ãã éçºãé²ãã«ã¤ãã¦ãé©åãªæ±ºå®ãä¸ãããã®æ å ±ãæ°å¤ãæã«å ¥ããããå¾åãã«ã§ããã¡ãªããã¯å¤§ããã ã¾ããæ°å¤ãã®å®é¨ãããä½è£ãç²å¾ãã
ãã®è¨äºã¯ä¸ä¼.comã¢ããã³ãã«ã¬ã³ãã¼2017ã®10æ¥ç®ã§ãã ã·ã¹ãã æ¬é¨ CTO室 ã¨ã³ã¸ãã¢ã® @yu-sa ã§ãã ä»åã¯ã¨ããéçºã§ããã¡ã¤ã³é§åè¨è¨ã§,ã¤ã³ã¿ã¼ãã§ã¼ã¹æåãæèããç°å¢ã§ã®éçºã«æºãã£ãéã®ç¥è¦ãè¨äºã«ããã¦é ãããã¨æãã¾ãã èªåã¯ä»ã¾ã§ãSmartUIãªéçºã°ãããã¦ãããããä»åã®éçºã§ã¯å¤ããåå¼·ããã¦ããã ãã¾ããããããªçµé¨è«ã調æ»å 容ãã¾ã¨ãã¦å ±æãããã¨æãã¾ãã åèè¨äº ãã¡ã¤ã³é§åè¨è¨ã®éæ¨ Python ã«ããããã¡ã¤ã³é§åè¨è¨(æ¦è¡é¢)ã®åã©ãã [DDD]ãã¡ã¤ã³é§åè¨è¨ã§å®è£ ãå§ããã®ã«ä¸çªã¨ã£ã¤ããããã¢ã¼ããã¯ãã£ã¯ä½ã ã¼ãã®ããããããããããã®ããã¶ãã·ããã¼ããããµãã¼ããã¼ã æå¾ã®ã¾ã¨ããã¯ããã« ã¢ã¼ããã¯ãã£ã¨å®è£ ä¾ãè¦ã¦ããã¡ã¤ã³é§åè¨è¨ã®ã¤ã¡ã¼ã¸ãç解ã ã¦ããã¿ã¹è¨èªã«ã¤ãã¦ã®ç解ãæ·±ããã ãã¡ã¤
ãã®è¨äºã§ã¯ãã¢ã¼ããã¯ãã£ãæ¡ç¨ããçç±ã次ã«Clean Architectureã®æ¦è¦ãæå¾ã«ã¢ããªã±ã¼ã·ã§ã³ã®æ§ç¯ããã¦ããã¾ãã ãã®å¾è©³ããè¦ã¦ããã¾ãããClean architectureã®æ¦å¿µã¯æ¯è¼çã·ã³ãã«ã§ãããããããã®ã ã¨æãã¾ãããããå®éã³ã¼ãã«è½ã¨ãè¾¼ãã æãããã£ã¦ã©ãå®è£ ããã°ããã®ããªï¼ã¨è¿·ããã¨ããã£ãã®ã§ãèªåã®ç解ãæ·±ããããã«å®éã«API Serverãæ§ç¯ãã¦ããããã¨æãã¾ãã ã¾ãããµã¼ãã¼ãµã¤ãã§ã®æ¡ç¨äºä¾ããã¾ãã¿ãªãã®ã§èª°ãã®åèã«ãªãã°ããããªã¨æãã¾ãã ãµã³ãã«ã³ã¼ãã¯ãGoè¨èªã§ãã ã¢ã¼ããã¯ãã£ãæ¡ç¨ããçç± ã¢ã¼ããã¯ãã£ã«æå¾ ãããã¨ã¯ãé¢å¿ã®åé¢ã§ãã é¢å¿ã®åé¢ãæ£ããè¡ããã¨ã§ã次ã®ãããªã¡ãªãããããã¨æãã¾ãã åå©ç¨æ§ã®é«ãè¨è¨ã«ãªãçç£æ§ãåä¸ãã ã³ã¼ãã®å¯èªæ§ãä¸ãããã¡ã³ããã³ã¹ã容æã«ãªã å¤åã«
xargs ã§è¤æ°è¡ã®ã³ãã³ããå®è¡ãããã åºæ¥ãªãã»ã»ã» ls *.txt | xargs -I@ echo @ ; sleep 1 forã«ã¼ããªãã§ãããã ãã©ãfor ã«ã¼ãã ã¨ã©ããã¦ãä¸ä¾¿ã xargs ã§ã·ã§ã«ã³ãã³ããä½ã£ã¦æ¸¡ã. xargs ã ã¨éçãããã®ã§ãããã·ã§ã«ã®æååã«ãã¦æ¸¡ããããä»ã«é¸æè¢ããªãã ls *.txt | xargs -I@ sh -c 'echo @ ; sleep 1' ãããªãåããã§ããåããã§ãã xargs ãï¼ã¤å®è¡ãããã³ã«ã sh -c 'echo @ ' ã®@ ã®é¨åã«ãã¡ã¤ã«ãæååã¨ãã¦å ¥ãã¦æ¸¡ãã¦ãããã bash ã§ããã sh ã ã¨æ©è½ãå°ãªãã®ã§ãbashã«ãã¦ããã¨ããæ段ãåããã ls *.txt | xargs -I@ bash -c 'echo @ ; sleep 1' æ¡ä»¶åå²ã ããããã¾ã§ãã
大éã®ãã¡ã¤ã«ãæ±ãéã«ããµã¼ãã¼è² è·ãæ¸ããããã«sleepã§ã¦ã§ã¤ãããªãã移åããããæãªããã«ã find ./src/*.zip -print -exec sleep 0.5 \; | xargs -n1 -I%% mv -v %% ./dest/
ãã¡ã¤ã«ãè¤æ°ã®ã¢ã³ãã¦ã£ã«ã¹è£½åã§ãã§ãã¯ããã®ã« VirusTotalã¯ä¾¿å©ã ããã©ãè¤æ°ãã¡ã¤ã«ãæä½æ¥ã§æ¤æ»ããã®ã¯ããã©ãããâ¦â¦ åºæãä¸æãªãã¡ã¤ã«ã®å®å ¨æ§ã確èªããã®ã« VirusTotal ã使ãã®ã¯æ®éã®ä½æ¥ã ã¨æãã¾ãããã¾ãä¸è¬åãã«ãªãªã¼ã¹ãããã¤ããªãè¤æ°ã®ã¢ã³ãã¦ã£ã«ã¹è£½åã§äºåã«ãã§ãã¯ããå ´åã«ã大å¤ä¾¿å©ã§ããVirusTotal ã¯ãªã³ã©ã¤ã³ã®ãµã¼ãã¹ã«ãã©ã¦ã¶ããã¢ãããã¼ãããã ãã§60種é¡ä»¥ä¸ã®ã¦ã£ã«ã¹å¯¾çã½ããã§æ¤æ»ããçµæãä¸è¦§ã§è¦ããã®ã§ããããããã¯ã¨ã¦ã便å©ã§ãã https://www.virustotal.com/ja/ VirusTotalèªä½ã¯2012å¹´ã«Googleã®åä¸ã¨ãªãã¾ããããããµã¼ãã¹èªä½ã¯ä¿¡é ¼ãã¦ããã¯ãã§ãã(ãã ã社å¤ç§ã¨ããé¢ä¿è å¤ç§ã®ãã¡ã¤ã«ãããããã¨ããã«ã¢ãããã¼ããã¦ã¯ã ããªãã¨ã¯è¨ãã¾ã§ãããã¾ã
ã¦ã¤ã«ã¹ã¹ãã£ã³botãä½ã ãªãã¨ãªãæãã¤ããã®ã§ä½ãã¾ã VirusTotalã¨ãããµã¤ããAPIå ¬éãã¦ãã®ã§ãã使ãã¾ãã ãã ã1åã«4åã¨ããå¶éãããã®ã§ãµã¼ãã¼ã«ãã£ã¦ã¯ä½¿ããã®ã«ãªããªããããããªãã§ãã ã©ããªã® ãã¡ã¤ã«ãã¢ãããã¼ããããããã®ãã¡ã¤ã«ã®ã¹ãã£ã³ãªã¯ã¨ã¹ããæãã ã¹ãã£ã³ãçµãã£ãããã®ãã¡ã¤ã«ã®çµæããã¡ã¤ã«ãéããããã£ã³ãã«ã«éä¿¡ããã 注æç¹ã¨ãã¦ãVirusTotal Intelligenceã使ãã¨ã¹ãã£ã³ãããã¡ã¤ã«ãé²è¦§ãããã¨ãã§ããããä»äººã«è¦ããããå°ããããªãã¡ã¤ã«ã¯ä¸ããªãã§ãã ããã ãã£ããè¯ãããã ãã©ç¾å®çãããªãã㤠ãã¡ã¤ã«ãã¢ãããã¼ããããããã®ç¬éã«ã¡ãã»ã¼ã¸ãç·¨éãã¦ã¹ãã£ã³ä¸ã®æ¨ã表示ããã URLãã¹ãã£ã³ãã ãªãç¾å®çã§ã¯ãªããã¨è¨ãã¨APIå¶éããããã 1ã«é¢ãã¦ã¯ 1åéã«5å以ä¸ã®ãã¡
While dependency injection is easy to do in Python due to its support for keyword arguments, the ease with which objects can be mocked and its dynamic nature, a framework for assisting in this process can remove a lot of boiler-plate from larger applications. That's where Injector can help. It automatically and transitively provides dependencies for you. As an added benefit, Injector encourages ni
ååã®è¨äºã§ç´¹ä»ããã®ã¯ãGoogle Guiceã®DIæ©è½ã®ãã¡ã®ä¸ã¤ãLinked Bindingsã ãã§ããããã®è¨äºã¯ãã®ç¶ãã§ãã ãµã³ãã«ã¯Scalaã§æ¸ãã¾ããããä¾ã«ãã£ã¦Scalaã£ã½ãã³ã¼ããåºã¦ããããã§ã¯ãªãã§ããâ¦â¦Guiceãã©ã使ãã°Scalaã¨ããããé£æºã§ããããã«ãªããã¯ãã¾ã ããåãã£ã¦ãã¾ãã1ã ãã¦ãGuiceã¯ããã¡ãã£ã¨è²ã ãªæ¹æ³ã§DIãã§ããã®ã§ãããã«ã¤ãã¦ã調ã¹ã¦ç´¹ä»ãã¾ãã 以ä¸ã§ã¯ä¾ç¤ºã®ããã«ãååã使ç¨ããServiceã¨ãã®å®è£ ã¯ã©ã¹2ã¤ã使ãã¾ãã trait Service { def doSomething(): Unit } class FakeService extends Service { def doSomething() { println("FakeService") } } class RealServic
Pythonã§DIãã éè¦ã¯ãªãããã§ããããã¾ãã¾Pythonã§DIããæ¹æ³ã調ã¹ãã®ã§ããã ããã¤ãã®é¸æè¢ Injector (ããã¥ã¡ã³ãã¯ãã¡ã) Inject (æ¥æ¬èªã®è¨äºãããã¾ãã) siringa(ããã¥ã¡ã³ãã¯ãã¡ã) di-py Injectã¯ï¼ï¼ï¼ï¼å¹´ã§éçºãæ¢ã¾ã£ã¦ããããã§ãã di-pyã¯ãã¾ãããã¥ã¡ã³ããå å®ãã¦ããªãããã§ãã siringaã¯åãã³ãããã«ããã«ããã¦Injectããã¡ãã£ã¨å¤æ ããã¯ãªããæ¹ã ã£ãã®ã§é¿ãã¾ããã æ¶å»æ³ã§Injectorã試ãã¦ã¿ã¾ããã Injectorã®ç¹å¾´ ããã¥ã¡ã³ãã§ã説æããã¦ã¾ãããGoogle Guiceã©ã¤ã¯ãªãã¬ã¼ã ã¯ã¼ã¯ã«ãªã£ã¦ãã¾ãã Google Guiceã®èª¬æã¯ãã®æ¹ã®è¨äºãããããããã£ãã§ãã Google Guice 使ãæ¹ã¡ã¢ InjectãModuleãProviderãª
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}