InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example
2æ¥é£ç¶ã§åå¼·ä¼ã«åºå¸ãããã¨èªä½ã«æ義ãè¦ãã ããã®ã¯ã¯ããã¦ãèªåã®ä¸ã§ã¯äºã¤ã®åå¼·ä¼ãææ©çã«ã¤ãªãã£ãæãã ã£ãã®ã§ Railsã®äººãã¡ã®å ±éèªèã¨ãã¦ã¯ãã¸ã§ãã¬ã¼ã¿ã¯éè¦ãããªãããscaffoldã¯æåã®ãã£ããã¨ããæãã§å®éã«ã¯ä½¿ããªã ååã®åå ã»ãã·ã§ã³ï¼DHHãµããã³ èªåãé²é³ããé³å£°ã¨åçãæ®ã£ãã¹ã©ã¤ãã§RubyKaigiã®DHHã®è¬æ¼ãåç¾ãåçã®ã¹ã©ã¤ããæãã¦è¦ã«ããã£ãã®ã¨åçãåãæ¿ããã¿ã¤ãã³ã°ããã ãã ã§ãé³å£°ã¯ã¨ãããã¹ã©ã¤ãã¯ãã¾ãå½¹ã«ç«ããªãã£ããå¿ããæ¥ãã DHHãè¬æ¼ä¸ã¯RESTã¨ããè¨èã使ã£ã¦ããªãã®ã¯ æ£ç¢ºãªå®ç¾©ã§ã®RESTã§ã¯ãªããã¨ãããã£ã¦ããï¼ RESTã®å®æè«äºã«å·»ãè¾¼ã¾ããã®ãããã ã£ãï¼ ogijunããããããã¹ã©ã¤ãã®æ¥æ¬èªè¨³ã¯YAPCã®ãè¦ã¦ãããã¨æã£ãã¨ã®ãã¨ããã©ã³ãã¯æ ç»ã®åå¹ã§ä½¿ããããã¤ããã å¾
'livepatch' is a command to apply binary patches on running process. I wonder this is practical, but it seems to be required in teleco area, according to Pannus project page (AVL.14.0 of OSDL CGL v3.0). I just wrote it just for hacking with ptrace(2) and bfd library in a day. It was very fun! "livepatch" is just a small userland program which provides functionalities of dynamic loading and overwri
å°å· æ彦, éªäº èª : ãã±ããé§åéçº æ¥æ¬ã®ã½ããã¦ã§ã¢éçºã®ç¾å ´ã§çã¿åºãããããã±ããé§åéçºãã¨ããæ¦å¿µããæ°å¤ãã®å®ä¾ãå ã«ã¢ãã«åã»ä½ç³»åã試ã¿ãæåã®æ¬ã å°å· æ彦, éªäº èª : Redmineã«ããã¿ã¹ã¯ããã¸ã¡ã³ãå®è·µææ³ Redmineã«ãããã±ããé§åéçºã®å®è·µææ³ã«é¢ããæåã®æ¬ãã¢ã¸ã£ã¤ã«ãªã½ããã¦ã§ã¢éçºã¸ã®é©ç¨æ¹æ³ãTestLinkã«ãããã¹ã管çææ³ã«ã¤ãã¦ãè¨åã æ¸ æ°´ åç·: ãæ´¾çéçºããæåãããããã»ã¹æ¹åã®æè¡ã¨æ¥µæ çµè¾¼ã·ã¹ãã éçºããã¼ã¹ã¨ãã¦ãã½ããã¦ã§ã¢éçºç¹æã®ã¹ã¿ã¤ã«ã§ããæ´¾çéçºãç¹ã«XDDPã«ã¤ãã¦è§£èª¬ããä¸çã§ãç¨ãªæ¬ãæ¢å製åãä¿å®ããã®ã§ã¯ãªãç¶ç¶çã«æ©è½è¿½å ãã¦ããæ¨ä»ã®éçºã§ã¯ãæ´¾çéçºç¹æã®åé¡ãæèããªããã°ãªããªããXDDPã¯ããã»ã¹è«ã ãã§ãªããè¦ä»¶å®ç¾©ãªã©ã®ä¸æµå·¥ç¨ã®å質æ¹åã«ãå½¹ç«ã¤ã®ã§æ³¨æã Le
å®ã«360人ãã®äººãããã¯ãã¼ã¯ããã·ã¥ã¬ã¼ãã£ã³ã¬ã¼ã®ç«ã®æ ¸å¿ã¨ããè¨äºãããªããã³ãããã®ãã³ãã¢è¨äºãªã®ãããå°éç¨èªãä¸å使ããã«èª¬æãã¦ã¿ã¾ããæç³»ã®äººã©ããããä¸å¦çã«ãã·ã¥ã¬ãã£ã³ã¬ã¼ã®ç«ã®æ ¸å¿ãããããã㫠説æãã¦ã¿ã¾ãã*1 éåã¨ã¯ä½ã ããããé»åãå ã¯ãç²åã§ãæ³¢ã§ããªããéåãªã®ã ãã¨è¨ããã¾ãã ã§ãããã®éåã£ã¦ããä½ããªãã§ãããï¼ ä¸è¬äººã®çæ´»æè¦ããããã¨ãéåã¨ããã®ã¯ãããããç°è³ªãªãã®ã®ä¸ã§ããã£ã¨ãç°è³ªãªãã®ã§ãã ã©ã®ãããç°è³ªãã¨ããã¨ããã¾ãã«ç°è³ªããã¦ãåãã¡ãæ¥å¸¸ç¥ã£ã¦ãããããªããã®ã¨ããå°ããä¼¼ã¦ããã¨ãããç¡ãã»ã©ã§ãã ã ããããéåã¨ããã®ã¯ãè¦ããã«ââã¿ãããªãã®ã ãã¨ãããã¨ã¯åºæ¥ã¾ããã ã ã£ã¦ä½ã«ãä¼¼ã¦ããªããã ãã®ã éåã¨ã¯ãæ¥å¸¸ç¥ã£ã¦ããä½ãã«ä¾ãã¦èª¬æãããã¨ãã§ããªããä½ãããªãã§ãã ããããã£ã¨ããã¨
ãmixiã§ããã¤ãã®ã³ãã¥ããã£ã«å ±éãã¦å ¥ã£ã¦ãã¡ã³ãã¼ãç°¡åã«æ¤ç´¢ã§ããããæãã¬ã¨ãã§ããã¢ãã¯ãªè¶£å³ãå ±éãã¦ãããçºè¦ã§ããããã¦ãªã¢ã·ããããªã®ã«ãã¼ãã ã£ã¦ãã¨ã1å¹´ãããåããæã£ã¦ã¦ããããªãã¼ã«ãã¼ããªã¼ãã¨ãæ¢ãã¦ããã ãã©ãªããªãè¦ã¤ãããªãã®ã§ï¼ããããããããã®ãããããã¼ãã©ï¼ã俺ãå¾æã®ãå¢ããã§ãä»åããªããä½ã£ã¡ããã¾ãããååãã®ã¾ã¾ãmixiã³ãã¥ããã£å ±éã¡ã³ãã¼æ¤ç´¢ãã¼ã«ã mixiã³ãã¥ããã£å ±éã¡ã³ãã¼æ¤ç´¢ 使ãæ¹ã¨ãããåããç°¡åã«èª¬æããã¨ãæ°ã«ãªãã³ãã¥ããã£ã®URLãå ¥åãã¦ãã¡ã³ãã¼æ¤ç´¢ãã¿ã³æ¼ãã ãããã®å¾ã¯æ½åºãããã¡ã³ãã¼ãè¦ã¤ã¤ãæ½åºè¿½å ãã¿ã³æ¼ãã¦ããããã®ã³ãã¥ããã£ã¡ã³ãã¼ã®æ½åºçµãã£ããã次ã«å ±éãã¦ãã¡ã³ãã¼ãæ¢ããã対象ã®ã³ãã¥ããã£ã®URLãåãããã«å ¥ãã¦ã¡ã³ãã¼æ¤ç´¢ãã¿ã³ãæ¼ããã¾ããã¡ã³ãã¼æ½åºãé²ã
* ãã³ãã¤ãã¸ã£ã³ã±ã³ã¨ããã¹ãå¶å¾¡ [tech] 6 users A ãã㨠B ãããã¸ã£ã³ã±ã³ããã¾ãï¼ãã ãï¼A ããã ãã¯ã°ã¼ã¨ãã§ãããåºããªãã¨ãããã³ãã¤ãã®ã«ã¼ã«ã ã¨ãã¾ãï¼ããªãã B ãããªãï¼ä½ãåºãã¾ãã? æ±å¤§ã® å辰次 å çãï¼ã¨ããè¬æ¼ ã®ä½è«ã¨ãã¦è©±ããããã¿ï¼ (å®ã¯è¬æ¼ä¼èªä½ã¯èªåã®è¬ç¾©ã¨éãªã£ã¦åºå¸ã§ããªãã¦ï¼ãã®è©±ã¯ãã®å¤ã®é£²ã¿ä¼ã§èãã) ãããå°ããã¨ã»ã¨ãã©ã®äººããã°ã¼ãåºããã¨çããï¼å®ã¯ï¼ããã¯å¿ ãããæé©ãªè§£ã§ã¯ãªãï¼ã°ã¼ãåºãã®ã¯ãææªã§ããããã«æããããã¨ãããããã¹ãå¶å¾¡ãã§ããã¨ãããè©±ï¼ ã°ã¼ãå¿ ãããæé©ã§ã¯ãªãã£ã¦ã®ãã©ãã«ããã³ã¨æ¥ãªãã£ãã®ã§ï¼å®¶ã«å¸°ã£ã¦ããé ã£æã£ãé ã§è¨ç®ãã¦ã¿ãï¼ã²ã¼ã çè«ã¯ä¸è¬æ¸ãæµãèªã¿ãããããã®ç¥èãããªãã®ã§ï¼ä½ãééã£ã¦ããæãã¦ãã ããï¼ ã¸ã£ã³ã±ã³ã®åæã«ããå©å¾ãï¼åã¡: +
ãMarkeZineãã主å¬ãããã¼ã±ãã£ã³ã°ã»ã¤ãã³ããMarkeZine DayããMarkeZine AcademyããMarkeZine ãã¬ãã¢ã ã»ããã¼ãã® ææ°æ å ±ãã¯ãããæ§ã ãªã¤ãã³ãæ å ±ãã¾ã¨ãã¦ãç´¹ä»ãã¾ãã MarkeZine Day
ãé¡ã¯ã100ã¾ã§ã®æ´æ°ããç´ æ°ãåæãããã§ãï¼ ãã²ï¼ã¿ãªããã®è§£çãã³ã¡ã³ãããã©ãã¯ããã¯ã§ãå¯ããã ããï¼ ãããªãã©ãæ¸ã 2.0 - ROUND 1 - ? Lightweight Language Ring ã¨ã®äºãªã®ã§ãåã®å·®ã«ãããã¿ããªãããåæ¦ãã¦ã¿ããã¹ãã æè§ãªã®ã§ä»åå¼·ä¸ã® Io(iolanguage) ã«ã¦ã*1 *2 ã¨ããããä½ãèããã«ãã¨ã©ãã¹ããã¹ã®ãµããã (06/06/17) prime.io Range clone setRange(2, 100) asList do( while(0 < size, write(s := m := removeFirst, " ") while(s = s + m; s <= max, remove(s)) ) ) çµæ $ io prime.io 2 3 5 7 11 13 17 19 23 29 31
çªå¤ç·¨ãProlog ã§ãç´ æ°åæãã¦ã¿ãã*1 *2 prime.pl :- dynamic prime/1. non_prime(N) :- prime(P), P < N, N mod P =:= 0. gen_prime(N) :- not(non_prime(N)), format("~d ", N), assert(prime(N)). gen_prime(_). gen_prime(P, MAX) :- MAX < P, !. gen_prime(P, MAX) :- gen_prime(P), P2 is P + 1, gen_prime(P2, MAX). çµæ 1 ?- ['prime.pl']. % prime.pro compiled 0.00 sec, 1,724 bytes Yes 2 ?- gen_prime(2, 100). 2 3 5 7 11 13 17
ã100ã¾ã§ã®æ´æ°ããç´ æ°ãåæãããããè²ã ãªäººã®ã³ã¼ããè¦ã¦ãããã brainfuckãwhitespaceã§ä½ã人ãåºã¦ããªãããª. ä»äººã®Haskellæ¥è¨ ãªãã¦ãã¨ãè¨ã£ã¦ãã人ãçºè¦ã äºè§£ã§ããã§ãã¾ããã½(â§ââ¦)ã prime.ws å®è¡çµæ $ perl whitespace.pl prime.ws 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 å ¨ãè¦ãã¾ããããåè§ã¹ãã¼ã¹ï¼åããå§ã¾ãæ¹è¡ï¼åã§çµããããã°ã©ã ã§ãã ããä½ããªãã ã (ç¬) WhiteSpace ã LL ãã©ããã¯ç¥ãã¾ããã*1ããªãã¨ãªãè¨å¿µã«ã¨ã³ããªã¼ (;´âï½) éåæãé£ããã¨æãã¾ããã©ã。・ï¾ï½¥(ï¾Ð`)ï½¥ï¾ï½¥ï½¡ ã¨ãããä»æã£ã¦ã¿ãã°ãããã£ã¦ ãããªãã¯ã©ãæ¸ãã¾ããï¼ã ã®è¶£
ç¾½çããã®ABD(Activity Based Datamodel)ã§ããããããç¥ã£ãææ³ãèªåãªãã«ãããä¹±æ´ã«ã¾ã¨ããã¨ãDBãã¤ãã³ãç³»ã¨ãªã½ã¼ã¹ç³»ã«ãããä¸ã§ãä»äºã£ã¦ããã®ã¯ãªã½ã¼ã¹éãã¤ãã³ãã¨ãªã½ã¼ã¹ã®éã«ãªãããã®é¢ä¿ãçºçãããæãããã¨ããèãæ¹ããªããã¨ã ã¤ãã³ãã¨ãªã½ã¼ã¹ 売ä¸ããç«ã¤ãã¨ããã¤ãã³ãã¯ã¤ã¾ãã客ãã(ãªã½ã¼ã¹)ã¨åå(ãªã½ã¼ã¹)ã¨ã®éã«è³¼å ¥/å ¥éã¨ããé¢é£ãçºçããã¨ãããµãã«æãããã¾ããã¨ã ããã¾ãä¾ããè¯ãããã¾ãããããã¸ãã¹ä¸ã®ã§ããã¨ï¼ã¤ãã³ãã«çç®ããã¤ãã³ããé¢é£ãã¼ãã«ã®ã¨ã³ãã£ãã£ãç´ ç´ã«createãããã¨ã§è¡¨ç¾ããã¨ããæ¹æ³è«ã ã¨èªãã§ãã¾ãã ããã«DBãè¨è¨ããã¨ãããã¨ã¯ããããã£ãã¤ãã³ããããªãã¡ãã¸ãã¹ä¸ã®ã¢ã¯ãã£ããã£ãã©ãè¨é²ããããã¨ãã観ç¹ã§ãã¼ã¿ã®æã¡ãããè¨è¨ãã¦ããã¨ãããã¨ãªããããªãã§ãã
æ¨æ©ã®ç¶ãããããä»åãç´ãã¦ãªãã§Railsã£ã¦çç£æ§ãé«ãã£ã¦ããã®ï¼ã¨ããã話ã§ãã DBè¨è¨ã¯ãã£ã±ãå¿ è¦ã§ãUIãèããªãã¡ããããªããããèªåçæã¯å®¢å¯ãã§ãã¯ã¼ã¯ããã¼ã¨ã³ã¸ã³ããªãããã©ããRailsã®å¼·ã¿ã£ã¦è¨ãã®ã¯ä¸ã¤ã¯ã¾ãã«Rubyã§æ¸ããã¨ãããã¨ãäºã¤ç®ã¯ã·ã³ãã«ãªå²å¦ã«åºã¥ãããã«ã¹ã¿ãã¯ãªãã¬ã¼ã ã¯ã¼ã¯ããã¾ãããã¨ãããã¨ã è¨èªéè¦ ãã£ã¨ãã¾ãäºé²ç·ããJavaã¯ãã¡ã§Rubyæé«ãã¨ããããããã§ã¯ãªãã Railsã®å¼·ã¿ã¯Rubyã®ã·ã³ã¿ãã¯ã¹ã®æè»ãããæ¥ãDSLã£ã½ãè¨æ³ããRubyã®åçãªå´é¢ããæ¥ãå¾¹åºçãª(èªåçæãããªãé¨åãæåã§æ¸ãã¹ããã¸ãã¯ã®)ã³ã¼ãã®åæ¸ã ã£ããããããããªããã¨ããããã¯ã¨é 延è©ä¾¡ã ã£ãããæ¬å¼§ãçç¥ã§ãããã¨ã§ãã£ãããã¯ã©ã¹ãã¤ã³ã¹ã¿ã³ã¹ã§ãã£ããåçã«ã¡ã½ãããå®ç¾©ã§ããããã£ã¦ããã®ã¯ãã¹ã¦æ¸ãããã³ã¼
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}