July Tech Festa 2018 (https://2018.techfesta.jp/)
åçã®ãããªæãã§RubyKaigi2018ã§ç»å£ããRubyKaigiãçµã¦ãããããngx_mrubyã®v2ããªãªã¼ã¹ãã¾ãããåºæ¬çã«v1ã¨äºææ§ãããã¾ãã®ã§ãä»å¾ã¯v2ãéçºãã¦ãããã¨ã«ãªãã¾ãã github.com ngx_mruby v2ã®ç®çæ©è½ã¨ãã¦ã¯ãRubyã¹ã¯ãªãããããã³ããããã³ã°ã®sleepã¨http[s]ã¯ã©ã¤ã¢ã³ãã使ããããã«ãªã£ããã¨ã§ããå®è£ çã«ã¯ãnginxã®sub requestã¨ããæ©è½ããã¾ã使ã£ã¦ããã³ããããã³ã°ã®http[s]ã¯ã©ã¤ã¢ã³ããæ±ç¨çãªsub_requestã¡ã½ããã¨ãã¦å®ç¾ãã¦ãã¾ãã ã§ã¯ãæ¬ã¨ã³ããªã§ã¯ãã®ãã³ããããã³ã°httpã¯ã©ã¤ã¢ã³ããã©ã®ç¨åº¦é«éå¦çå¯è½ã«ãªã£ãããå®é¨ãã¦ã¿ã¾ããããã¾ãæå¾ã«ã¯ãRubyKaigi2018ã®ææ³ãè¿°ã¹ã¾ãã å®é¨ proxyãµã¼ãã®blockingã¨non-blocki
ããã«ã¡ã¯ï¼ã¤ã³ãã©ã¨ã³ã¸ãã¢è¦ç¿ãã¤ãã¹ã¼ã§ãã ä»åã¯ãmrubyã¨ããçµè¾¼ã½ããã¦ã§ã¢åãã®è»½éãªRubyè¨èªã使ã£ã¦ãkè¿åæ³ã«ããç°å¸¸æ¤ç¥ãè¡ãã¹ã¯ãªãããæ¸ãã¦ã¿ãã®ã§ããã¡ãã®ç´¹ä»ã§ãï¼ ç®æ¬¡ ãªãä½ã£ãã®ã ä½ã£ããã® ã½ã¼ã¹ã³ã¼ã ä½¿ãæ¹ mrubyã«å ¥éããã«ã¯ Changefinderã¨ã®æ¯è¼ããè¦ãKNNã®ç¹å¾´ ä»å¾ããããã㨠ãªãã±ï¼kè¿åæ³(K-Nearest Neighbor :KNN)ã«åºã¥ãç°å¸¸æ¤ç¥ã®çè« ãªãä½ã£ãã®ã ä»åã¯ããä½ãã®åé¡ã解決ããããã¨ããããã¯ããRubyã®åå¼·ãã¦ãã«ä½ãä½ã£ã¦ã¿ãããã¨ããåæ©ã§ä½ãã¾ããã ãã ãä¸è¬çãªRubyï¼CRubyï¼ã§ã¯ãªãmrubyã鏿ããã®ã«ã¯çç±ãããã¾ãã ç§ãå¤ãã¦ããGMOãããã§ã¯ãmrubyãå©ç¨ãã¦ããã«ã¦ã§ã¢ã®æ¯ãèããè¨å®ã»å¶å¾¡ããä»çµã¿ï¼ããã"Middleware Con
å æ¥ãæ¥ãä¸è¨ã®ã¤ãã³ãã®è³æã§mrubyã®æååçµåã«ãããã¡ã¢ãªããã©ã¼ãã³ã¹ã«ã¤ãã¦è¨è¿°ããããã社å ã§å ±æããã¨ããããããã¿ã @matsumotory ãmrubyã«ãããæååçµå㯠+ ã§ã®çµåãããç ´å£çã§ã¯ããã <<ã®ã»ããããã©ã¼ãã³ã¹ãè¯ãã¨ãããã¨ã«æ°ã¥ããã valgrindã§æ¸¬å®ããã¨ä¸è¨ã®ãããªå ·åã§ããã # new.rb a = "aaa" b = "bbb" 100000.times do |n| a += b end $ sudo valgrind ./mruby new.rb ... ==2374== HEAP SUMMARY: ==2374== in use at exit: 0 bytes in 0 blocks ==2374== total heap usage: 102,786 allocs, 102,786 frees, 15,002,
2018å¹´4æã«ngx_mrubyã®ãã³ããããã³ã°HTTPã¯ã©ã¤ã¢ã³ãã¨ãã³ããããã³ã°sleepç¸å½ã®ã¡ã½ããã«å¯¾å¿ããã¦ngx_mruby v2.0.0ããªãªã¼ã¹ããã¨ããç®æ¨ãç«ã¦ãâ æ¾æ¬ äº®ä» / ã¾ã¤ãã¨ãã¼ (@matsumotory) 2018å¹´2æ13æ¥ ngx_mrubyã®v2ã®4æãªãªã¼ã¹ã«åãã¦ãHTTPãªã¯ã¨ã¹ãåä½ã§å®è¡ãããRubyã®ã³ã¼ãããFiberã¨Procã§å ãã ãªãã¸ã§ã¯ãçµç±ã§å®è¡ããå®è¡æ¹å¼ã«å®è£ ããªããã¦ãã¾ããããã¾ã§ã®ngx_mrubyã®v1ç³»ã¯ãRubyã®ã³ã¼ããnginxèµ·åæã«struct RPocã«ã³ã³ãã¤ã«ãã¦ããããªã¯ã¨ã¹ãæ¯ã«ãã®ãã¤ãã³ã¼ããå®è¡ãã¦ãã¾ããã 䏿¹v2ã§ã¯ãnginxèµ·åæã«ã³ã³ãã¤ã«ãããstruct RProcããHTTPãªã¯ã¨ã¹ãæã«procãªãã¸ã§ã¯ãã«å¤æããä¸ã§ããã®procãªãã¸ã§ã¯ããca
æ°ãã¤ããã2017å¹´ããã¨æ°æ¥ã§çµãã£ã¦ãã¾ãã®ã§ãä»å¹´1å¹´ãã²ãããæ¯ãæ¿ãã¦ã£ã¦ã¿ããã¨æãã¾ããä»å¹´ãæ¿ãã£ããªãã ããã©ãææï¼1ã3æï¼ å ã å¦ç¿æ¬²ã»ç¥è欲ããããã°ã©ãã³ã°ããã£ã¦ããã®ã§ãç¹ã«ä½ããããã®ãããããã§ã¯ãªãã£ããåç´çãå 輩ãã¹ããã®ã¢ããªã¨ãWEBã¢ããªã¨ãã§ä½ããããã®ãã¬ã³ã¬ã³ä½ã£ã¦ããã®ã羨ã¾ããã£ããå¨ãã¯ããããªãã®ãä½ããããã¨å¦ãã§ææç©ãä½ã£ã¦ããä¸ãèªåã¯ç¥èæ¬²ã§æ¼ ç¶ã¨æ¬ã«ãããµã³ãã«ãåçµãã¦æºè¶³ãã¦æ¬¡ã®æ¬ãåçµããã¨ãããã¨ããã¦ããã ç¥è欲ãå¦ç¿æ¬²ã¯æºãããã¦ãããã©ãå¨ãã¨ã®ã®ã£ãããæ£ç´è¦ããã£ããã¾ãåãå± ã大å¦ã¯ä½ãã¢ããçã¿åºãã¦ãããã¨ãå¼·ããé°å²æ°çã«ãææç©ãçã¿åºããã¨ãå¼·ãã§ããã¿ãããªé°å²æ°ããã£ã(å人çãªææ³)ããããã大å¦ã§è§¦ã£ã¦ããã®ã好ãã§å¦ç¿æ¬²ãç¥è欲ããããã°ã©ãã³ã°ãã¦ããã£ã¦ããã®ãå¨ãã¨
ãã ãã¬ã¹ãã³ã¹ãåçã«çµã¿ç«ã¦ãã ãã®è©±ã§ãã botã§ã¯ãªããåçºã®Slackã®ã¹ã©ãã·ã¥ã³ãã³ã(Slash Commands) ä¸å¿ç°¡åã«èª¬æãã¦ããã¾ããã¹ã©ãã·ã¥ã³ãã³ãã¨ã¯ã/foo [text]ã®ããã«ãSlackã®ãã£ã³ãã«ã§é ã«ã¹ã©ãã·ã¥ãã¤ãã¦å ¥åãããã¨ã§ãªã«ãããå¦çããã¦ãããããã®ã·ã³ã¿ãã¯ã¹ã§ãã Slash Commands | Slack ãã¦ãããä¸è¦Slack Applicationããbotãã¬ã¼ã ã¯ã¼ã¯ã®ç¥èãå ¥ãããã§ãããããªã»ããã®AppSlash Commandsã使ãã°æ¬¡ã®ãããªãããã仿§ã§åãæ±ããã¨ãã§ãã¾ãã plain/textã§ã¬ã¹ãã³ã¹ãæ¥ãããBodyããã®ã¾ã¾ãã£ã³ãã«ã«æç¨¿ããã application/jsonã§ã¬ã¹ãã³ã¹ãããããBodyããã¼ã¹ãã¦è¦å®ã®å½¢å¼ã§ãã£ã³ãã«ã«æç¨¿ããã HTTP 200 以å¤ã®ã¬ã¹
æ¬é¡ã«å ¥ãåã«ããã®è¨äºããè¦§ã®æ¹ã®ä¸ã« âMySQL HTTP Pluginâ ããåç¥ã®æ¹ã¯ããã£ãããã§ããããï¼ ï¼MySQL Casualãªæ¹ã ã¯ãã®è¾ºã§ãªãã®äºæ³ãã¤ããã¯ãï¼ MySQL HTTP Pluginã¯2014å¹´ããã« MySQL Labs ã§å ¬éããã¦ãããå®é¨å®¤çãã¨ãã¦é å¸ããã¦ãã¦ã MySQLãHTTPãããã¹ãããã«ãªããã©ã°ã¤ã³ ã§ãã
ãã®ã¨ã³ããªã¯ KLab Advent Calendar 2017ï¼å ¼ mruby Advent Calendar 2017ï¼ã® 12 æ¥ç®ã®è¨äºã§ãã ä»å¹´ã¯ï¼ååã¯ï¼Keepalived ã«ãã«ã¿ã¤ã ã§ã³ã³ããªãã¥ã¼ããã¦ãããï¼å¾åã¯ï¼ã²ããã mruby ãããã£ã¦ãããã¨ãå®ã« OSS å ãªä¸å¹´ã ã£ã @pandax381 ã§ãã ã¿ã¤ãã«ã«ãã試ã¿ã«ã¤ãã¦ã¯ã2015 å¹´ã®æç¹ã§æ±äº¬å¤§å¦ã®åå·å çããmruby ã Linux ã«ã¼ãã«å ã§åä½ããããã¨ããç´ æ´ãããè¨äºãæ¸ããã¦ãã¦ãKernel module ã«çµã¿è¾¼ãã mruby ãåä½ãããã¨ãå®è¨¼ããã¦ãã¾ãã mruby ãã«ã¼ãã«å ã§åä½ãããããã«å¤§ããåé¡ã¨ãªãã®ããæµ®åå°æ°ç¹æ¼ç®ã§ããmruby 㯠Float ãæ¨æºçãªã¯ã©ã¹ã¨ãã¦æä¾ãã¦ããã¨å ±ã« VM å é¨ã§ãæµ®åå°æ°ç¹æ¼ç®ãè¡ã£ã¦ãã䏿¹ã§ãKe
mrubyã使ã£ã¦ããã¨ãããããmrbgemãæã£ãéãã«åããªãã£ãã¨ãããããªãã¯ã¾ãçã£å ã«èªåã®ã³ã¼ããçããæ¬¡ã«mrbgemã®æåãçãã§ãããã ãããmrbgemã«ã¯ãã¹ããååã«æ¸ããã¦ããªããããããªããã®ã§ãèªåã§ãã¹ãã±ã¼ã¹ã追å ãã¦æå ã§èµ°ãããæ§åãè¦ããã¨æãã®ã人ã¨ãã¦èªç¶ãªæãè¡ãã§ããã ã¨ããã§mrbgemã®ãªãã¸ããªãªã©ãè¦ã¦ãã©ã®ããã«ãã«ãããã¹ããå®è¡ããã¦ããã®ããå ¨ã䏿ãªã±ã¼ã¹ãå¤ãããªã«ããã©ãããã®? ã¨ããçåãå½ç¶ã®ããã«æã¤ã¨æãã®ã§ããã®ãããªäººã®ããã®ã¡ã¢ããã®ã¨ã³ããªã ã¡ãã£ã¨èª¿ã¹ãã¨ä»¥ä¸ã®ãããªã¨ã³ããªãã²ã£ãããã¾ãããããã¯2å¹´åã®ãã®ã§ããã®éãã« build_config.rb ãæ¸ãã¦ä¸æ¸ããã¦èµ°ããã¦ãmrbgemã®ãã¹ãã¯å®è¡ããã¾ãããæ³¨æã mrubyã®ã¢ã¸ã¥ã¼ã«mrbgemãéçºããéã«ç°¡åã«Tra
ãã¹ãã£ã³ã°äºæ¥é¨ã® CTL(Chief Technical Lead)ã®@pyamaã§ããæ¬è¨äºã§ã¯å æ¥ç大ã«ãªãªã¼ã¹ãããã¾ããããªãããã®ç¡æç¬èªSSLæ©è½ã®è£å´ã«ã¤ãã¦é¢ãã£ãã¡ã³ãã¼ã®ãªã¬ã¼å½¢å¼ã§ç´¹ä»ãããã¨æãã¾ãã Let's Encryptæä¾ã®èæ¯ ããªãããï¼ã®ãã£ã¬ã¯ã¿ã¼ããã¦ãã¾ã@fuchinoã§ããããªãããï¼ã®ãªãã©ã³ãã£ã³ã°ããã¸ã§ã¯ããããã¢ã¼ã·ã§ã³ããããã¯ãå¨ããã¤ãã³ããªã©ãæ å½ããããã£ã¬ã¯ã¿ã¼ã¨ããåã®ä½ã§ãå±ã§ãã Let's Encryptæä¾ã®èæ¯ã«ã¤ãã¦ãå°ãæ¸ããã¦ããã ãã¾ãã 2014å¹´ãããããæ¥æ¿ã«ç¬èªSSLã®éè¦ãå¢å ãã¾ãããGoogleã常æSSLåã¸ã®åãçµã¿ãå¼·åããæ¨å¥¨ãããã¨ã大ããªçç±ã§ãã2016å¹´ãLet's Encryptãæ£å¼ã«æä¾éå§ããã¦ããã¯ããã®æµãã¯ä¸æ°ã«å éãã¾ãã ããªãããï¼ã§ã¯ããã¨ãã¨
ãããã«ã¦ã§ã¢ã«mrubyãçµã¿è¾¼ãæ¹æ³ãã«ã¤ãã¦ã¾ã¨ãã - Kentaro Kuribayashi's blogã®ç¶ãçãªè©±é¡ãCã®ããã°ã©ã ã«çµã¿è¾¼ãã mrubyã®ã³ã¼ããè©ä¾¡ããæã«ããã®ã³ã¼ãããªãããã®ã¨ã©ã¼ãèµ·ãããæã«ã©ããããã mrubyã®ã³ã¼ããè©ä¾¡ããAPI ã¾ããmrubyã®ã³ã¼ããè©ä¾¡ããAPIã«ã¯ãã³ã³ããã¹ãï¼å®è¡ããã³ã¼ãã®ãã¡ã¤ã«ãè¡ãªã©ãç¤ºãæ å ±ï¼ãããããªããã®ã¨ããããã®ã¨ã®2種é¡ãããã¾ãã ã³ã³ããã¹ããããããªããã® ä¾: mrb_value mrb_load_string(mrb_state *mrb, const char *s) ã³ã³ããã¹ãããããããã® ä¾: mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *c) ã¨ãããããã¾ãã¯m
以åãã¡ã¼ã«éä¿¡ï¼SMTPï¼ãµã¼ãã®æ¯ãèããå¶å¾¡ããããã«ãmrubyã§æ©è½æ¡å¼µã§ããpmilterã¨ããMilterãããã³ã«ãã¼ã¹ã®ããã«ã¦ã§ã¢ãä½ãã¾ããã hb.matsumoto-r.jp ãã®æµãã§ãã¡ã¼ã«åä¿¡ï¼POPãIMAPï¼ãµã¼ãã®æ¯ãèããåæ§ã«å¶å¾¡ãããã¨ã«ãã£ã¦ããã¼ã¿ã«ã§ã¡ã¼ã«éåä¿¡ã·ã¹ãã ã®æµéå¶éã ãã§ãªããã¢ã¯ã»ã¹å¶å¾¡ã䏿£ãªèªè¨¼ã®æ¤ç¥ãDoSã®ãããªã¢ã¯ã»ã¹ã大éã¡ã¼ã«ã®éåä¿¡ããã¾ãããã°ã©ããã«ãªè¨å®ãæ¸ããã¨ã«ãã£ã¦è§£æ±ºãã¦ããããã¨æãã¯ãããæ¨æ¥ããpmilterã ãã§ãªãã¡ã¼ã«åä¿¡ãµã¼ãã®éçºã«ãåãçµã¿ã¯ããã¾ããã ãããã®ã¡ã¼ã«ç³»ããã«ã¦ã§ã¢ãçµã¿åããããã¨ã«ãããæ¢ã«ä½¿ããã¦ããã¡ã¼ã«ã®å®çªããã«ã¦ã§ã¢ï¼Postfixãdovecotï¼ã¯ãã®ã¾ã¾ã«ãå¹³æã«å°å ¥ã§ãã¦ãæ§è½ãè½ã¨ããã¨ãªãèªç±ã«Rubyã§æ¡å¼µãã§ããããã«ãªãåºç¤ãä½
ã¿ã¤ãã«ã®éããngx_mrubyã®httpã¢ã¸ã¥ã¼ã«ã¨streamã¢ã¸ã¥ã¼ã«ä¸¡æ¹ã§ãmrubyã«ããåçListenerè¨å®ããµãã¼ããã¾ããã åçListenerã¨ã¯ãnginxã®listenã®è¨å®ãmrubyã§æ¸ãã¦ãèµ·åæã«åçã«è¨å®ãèªã¿è¾¼ããããã«ã§ããæ©è½ã§ãã以ä¸ã®ä¾ãè¦ãæ¹ãåããããããã¨æãã¾ãã # $ ulimit -n 60000 worker_processes 1; events { worker_connections 30000; } daemon off; master_process off; error_log logs/error.log debug; stream { upstream dynamic_server { server 127.0.0.1:8080; } server { mruby_stream_server_context_
2017-06-29è¤æ°ã®ã¢ããªã飿ºãã¦ãããã㪠Web ã¢ããªãéçºããå ´åãã¢ã㪠A ã localhost:3000 ã§ãB ã localhost:3001 ã§â¦ ã¨ãããããªæ§æã«ãã¦æå ã§ã¯éçºãããã¨ãããã ããã ç¾ã« Quipper ã§ã¯çå¾åããå çåãã管çè åããåé¡ä½æè åã etc ã¨ãã£ãããã«ã¢ããªãããã¤ããã£ã¦ããã¼ãä½çªã§åãã¦ããã®ãããããããªããªãã åã ãã Docker ç pow ã¿ãããªã®ã欲ãããªã¼ (pow 使ã£ããã¨ãªããã©) ã¨æã£ã¦ããã®ã§ããããã§ä½ã£ãã https://github.com/mtsmfm/yaichi ååã¯æãã ãããã®ããæ£å£«ããã docker run -v /var/run/docker.sock:/var/run/docker.sock -p XXXX:YYYY mtsmfm/yaichi
ã¡ã³ããã³ã¹
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}