2017/12/10 ã·ã¹ãã ãã¹ãèªååã«ã³ãã¡ã¬ã³ã¹2017-2 ãGebã¨Spockã§ã¯ãããã·ã¹ãã ãã¹ãèªååãRead less
JavaScript Advent Calendar 2011 (Node.js/WebSocketsã³ã¼ã¹)3æ¥ç®ã®hokacchaã§ããNode.jsã®ãã¹ããã¬ã¼ã ã¯ã¼ã¯ãmochaã«ã¤ãã¦æ¸ãã¾ãã mochaã¯TJãæ°ããä½ãå§ãã¦ãããã¹ããã¬ã¼ã ã¯ã¼ã¯ã§ããããã¥ã¡ã³ããè¦ãã°ã§ãããã¨ã¯å¤§ä½æ¸ãã¦ããã¾ãã®ã§ãããã¥ã¡ã³ããå ã«ã©ããããã¨ãã§ããã®ãã解説ãã¦ããã¾ããç¾æç¹ã§ã®ãã¼ã¸ã§ã³ã¯0.2.0ã§ãã http://visionmedia.github.com/mocha/ shouldã«ã¤ã㦠ã¾ãmochaã§ã©ããããã¨ãã§ãããã®åã«shouldã«ã¤ãã¦è§£èª¬ãã¦ããã¾ããmochaã®ããã¥ã¡ã³ãã«ã¯ç¹ã«èª¬æããªãshouldã使ããã¦ãã¦ãshouldã§ã©ããããã¨ãã§ãããããã£ã¦ãªãã¨ãããã¥ã¡ã³ããèªãã ã¨ãã«mochaã®æ©è½ãªã®ãshouldã®æ©è½ãªã®
çµåããã¹ããã¼ã«ã®PICTã®è§£èª¬ã§ã表é¡ã«ã¤ãã¦ããèãããã®ã§ã¡ã¢ã PICTã«ã¤ãã¦ã¯ãå°ç¨ã®ãã¤ããªãã¡ã¤ã«ã§é å¸ããã¦ãããã¨ããããä»ã¾ã§Windowsã§ä½¿ç¨ããã¦ããã ãã å»å¹´ããGithubã§ãªã¼ãã³ã½ã¼ã¹åãããgccãclangã§èªç±ã«ãã«ãã§ããããã«ãªã£ããããã«ä¼´ããMacãLinuxã§ãWindowsã¨åããããæ軽ã«å©ç¨ã§ããããã«ãªã£ã¦ããã ããã¦è¨ãã¾ã§ããªããããããªãããå°å ¥æ¹æ³ã¯ä»¥ä¸ã®éããæè¿ã®gccãclangã使ããmakeã§ããç°å¢ã§ããã°ãOSã¯åããªãã ãhttps://github.com/Microsoft/pictãã«ã¦ãDownload ZIPãããã¡ã¤ã«ãã¦ã³ãã¼ãã解å 解çãããã£ã¬ã¯ããªã§ãmakeãå®è¡ãåãã£ã¬ã¯ããªã«ãã¤ããªpictãã§ããã 使ç¨ä¾ ãã®ãã£ã¬ã¯ããªã«ãä¾ãã°ä»¥ä¸ã®ãããªãã¡ã¤ã«sample.
以ä¸ã®ããã«é¸æããå¾ã¯ãOKããé¸æãã¦ãã ããã å®äºå¾ãEclipseã®åèµ·åãæ±ãããã¾ãã®ã§ãåèµ·åãã¦ãã ããã â»æ¢åããã¸ã§ã¯ãã«å¯¾ãã¦Groovyãµãã¼ããæå¹åããã«ã¯ãããã¸ã§ã¯ãã¡ãã¥ã¼ãå³ã¯ãªãã¯ãã [Configure]->[Convert to Groovy Project]ãå®è¡ãã¦ãã ãã ãã¹ãã¯ã©ã¹ã®å®è£ ãã¹ã対象ã®ã¯ã©ã¹ã¨ãã¦ã以ä¸ã®ãããªPersonã¯ã©ã¹ããã³ãããæ±ãUtilã¯ã©ã¹ãJavaã§ä½æãã¾ããã public enum Gender { MALE, FEMALE, } public class Person { private String country; private String name; private Gender gender; // getter,setterçç¥ } public class PersonUt
ãããã¯ã¡ãã£ã¨æå°æªãããã ä¾ãã°ããããã¹ãã±ã¼ã¹ãæãã¤ããã¨ããï¼ãããããªãã®é«ç¢ºçã§ãã¾ãåããªãããªãã¤ï¼ããããããã¢ããåºæ¥ä¸ãã£ã¦èªåã®ç®ã§ã¡ããã¨åããã¨ï¼æ°æã¡çã«ã¯ã¡ããã¨åããªããã¨ï¼ãè¦å±ããã¾ã§ãããã°ã©ãã«è©±ããªãã*1 ã¨ããã¤ãã³ãã®ããã«ãã£ã¹ã«ãã·ã§ã³ãä½ã㧠@m_seki ãããããã¯æå°æªã ãªã¼ãã¨è¨ããã¦ãã¯ããã¦ãããæå°æªãªãã ã£ã¦ãã¨ã«æ°ãã¤ãã¾ããããããããã¹ããæãã¤ãããããã«è¨ã£ã¦ãï¼ã¦ãã¨ã¿ãããããããã°ã©ãããããèæ ®ããªãã§å®è£ ãã¦ãã¾ã£ãã確å®ã«ãã°ã«ãªãããã§ãé»ã£ã¦ãããã¨ã¯éçºã«ã¨ã£ã¦ä½ã®ã¡ãªããããªãã ãªã話ããªãã®ãã話ããªãã£ãã®ãããããªãã«çç±ã¯ãã£ããã ãã©ãã¾ããããã¯ããããæå°æªã¯è¯ããªããããããã¯æãã¤ããå«ãªã·ãã¥ã¨ã¼ã·ã§ã³ãå¿é äºã¯ããªãã¹ãè¨ãããã«ãã¦ãã ã¨ãããã¨ã¯ããã
ããã«ã¡ã¯ï¼éçºã®æ(@ctokoro_me)ã§ãã ã¯ã©ã¦ãã¯ã¼ã¯ã¹åå¼·ä¼ãã¬ã¬ã·ã¼ã³ã¼ãæ¹åã®æ¦ç¥ã¨æ¦è¡ãåç¯ï¼æ¦ç¥ï¼ã«ç¶ããå¾ç¯ï¼æ¦è¡ï¼æ親ä¼ï¼ããéããã¾ãã ãã¬ã¬ã·ã¼ã³ã¼ãæ¹åã®æ¦ç¥ã¨æ¦è¡ã è¬å¸«ï¼åç° å人(@t_wada) ã¿ã¯ã¼ãºã»ã¯ã¨ã¹ãæ ªå¼ä¼ç¤¾ åç· å½¹ç¤¾é·ãããã°ã©ãããã¹ãé§åéçºè ã å¦çæ代ã«ã½ããã¦ã§ã¢å·¥å¦ãå¦ã³ããªãã¸ã§ã¯ãæååæ/è¨è¨ã«å¾åã ãã®å¾æ§ã ãªç¸ã«å°ããã½ããã¦ã§ã¢ãã¿ã¼ã³ãXPï¼eXtremeProgrammingï¼ãå®è·µãã人ãã¡ã¨åºä¼ããå¾ã®ãã¹ãé§åéçºã®èªçãç¥ãã ãã¹ãé§åéçºã«ãã£ã¦ãå®ç§ä¸»ç¾©ã®åªãï¼å®ç§ãªè¨è¨ãå¾ãã¾ã§ã¯ã³ã¼ããæ¸ããªããè¯ãã·ã¹ãã ãåºæ¥ãªãã¨ãã強迫観念ï¼ããã解ããã¦ããã¯ãæç« ãè¬æ¼ããã³ãºãªã³ã¤ãã³ãçãéãã¦ãã¹ãé§åéçºã®åèã«åªãã¦ããã ä»æ¥ãã°ãªã¼ã³ãã³ãï¼ãã¹ãé§åéçºè ã®è¨¼ï¼ãå·¦æã«ç
ã¯ããã« ããã¯ã½ããã¦ã§ã¢ãã¹ããã©ã¹ãã¨ãããã ã¼ 2014 ã®17æ¥ç®ã®è¨äºã§ãã id:a-suenamiããã¹ãã¨ã¯éçºããã»ã¹ãã®ãã®ã§ãã #SWTestAdvent - assertInstanceOf('Engineer', $a_suenami)ã§åãèãã¦ããã¢ãã«ã«ã¤ãã¦ç´¹ä»ãã¦ããã¦ããã®ã§ããã£ããã¨ã§ããåã®æ¹ãããç¾ç¶ã®åãæãã¦ããã½ããã¦ã§ã¢éçºãããã¦ãã¹ãããã«ã¤ãã¦ç´¹ä»ãã¾ããããã¯ããæ°å¹´ã«ãããåã®æé«åä½ã¨ãè¨ããã³ã³ãã³ãã«é¢ããã¨ã³ããªã§ããï¼è¨ãããã æ¦è¦ è¨ãéããã°ãããã¯ãéçºã¨ãããã®ã¯ãDefine, Build, Explore, Measureãã¨ããæ´»åããæç«ãã¦ããã¨è¨ãã¾ããããã«ç¥èãææ³ãããã»ã¹ããã¦ã¯ããã¨ãä½ãããã¹ããããä½ã足ãã¦ããªãããããããããããªãã¾ãããã®è¨äºã§ã¯ãããã£ãéçºããã¹ãã
ã¯ããã« ããã¯G* Advent Calendarã®12æ¥ç®ã®è¨äºã§ããä»æ¥ã¯ãã¥ã¼ãã¼ã·ã§ã³ãã¹ãã«ã¤ãã¦æ¸ãã¾ããææ¥ã¯id:nobusue ããã§ãã æ¦è¦ PITã¨ãããã¼ã«ã®ç´¹ä»ã§ãããJavaãããã¯ãã³ã¼ããæ©æ¢°çã«å¤æ´ãã¦ãããã¹ããå®è¡ããã¨ãã«ããã¹ãã¯ãããæ¤ç¥ã§ããã®ãï¼ãã¨ãããã¨ã調ã¹ã¦ããããã¼ã«ã§ãSpockã®ãã¹ããGradleããã®å®è¡ã«å¯¾å¿ãã¦ãã¾ãã ãã¥ã¼ãã¼ã·ã§ã³ãã¹ã ãã¥ã¼ãã¼ã·ã§ã³ãã¹ãã¨ã¯ãã£ããã¨è¨ãã°ããããã¯ãã³ã¼ããå¤æ´ãããªãããã®æ¯ãèããå¤ããã¯ãããã¹ãã¯ãã®å¤æ´ãããæ¯ãèããç¶²ç¾ ã§ãã¦ãããã調ã¹ããã¨ãããã¹ãã§ãã 対象è¦æ¨¡ãå°ãããã°æåã§æ¯åãã£ã¦ãããããã§ããã©ããã¼ã«åããã¦ããã¨æ¥½ãªãã¨ãã®ä¸ãªãã§ããã¨ãããã¨ã§ãä»åã¯Javaãããã¯ãã³ã¼ãããã¥ã¼ãã¼ãããã©ã¤ãã©ãªã§ããPITã«ã¤ãã¦ç´¹ä»ãã¾
æ¦è¦ ãã¹ããã¤ããã¨ãã«ã©ããã£ã¦æ¸ãããããã®ãå°ãã¨ãã話ãããèãã¾ããã¨ã¦ãç°¡åãªä¾ã§ããããããããã ãã§ãããã¶ãã¨éãã¨ããæå³ã§ãèªåããã使ãä¾ãæ¸ãã¦ã¿ã¾ããï¼å®éã«ã¯ãªã¹ã¯ãã¼ã¹ããã¹ãã¨ãã¦æç«ãããããã«æ´ã«é ç®ã追å ãããã®ã使ã£ã¦ãã¾ããã§ãããåºæ¬ã¯ãã®å½¢ã§ãããããã«ããèãæ¹ãéè¦ã ã¨æã£ã¦ãã¾ãã ã¤ã¾ãããã¼ã«ã使ãã°ãã£ã¨ç¶ºéºã«åºæ¥ããã©ãã¾ãã¯Markdownã§ãExcelã§ããªãã§ããããããããæãã§æ´çã§ããæ¹æ³ã¨ããã¨ããã§ãã åããã®èãæ¹ãæ°ã«å ¥ã£ã¦ããã®ã¯ãããã¸ã§ã¯ãã®ãªã¹ã¯ç®¡çææ³ã¨ãã¾ãéããªãã®ã§ãå¥ã«ãã¹ãã§ã¯ãªãã¦ãä¾ãã°ããããã£ã人ãå¿ è¦ãã¨ãããããã£ããã¼ã«ããããã¨ãã«ãªãã¨ããç¹ã§ãã ã¾ã¨ããããã¨ãBDD-Styleã«å¯¾ãã¦ããªã¹ã¯ã¨ãã親è¦ç´ ãå ãããã¨ãããããã§ãã æ§æã®ãã³ã㬠åºæ¬çã«3段
åæ¸ã ã½ããã¦ã§ã¢ãã¹ãã«ã¾ã¤ãããã¥ã¼ã¹ãé±æ¯ã«ãå±ãããè¨äºã§ããå 容ã¯id:kyon_mmã®ç¬æã¨åè¦ã§ãããªã¹ã¹ã¡ã®è¨äºãããã¨ããã質åãªã©ãªã©ã¯ã³ã¡ã³ãã@kyon_mmã«ãé£çµ¡ãã ããã¨ããããã§ããåµåå·ãªã®ã§ãè¥å¹²ææãåºãã«ãªã£ã¦ãã®ã¨ãé¸æåºæºãã¾ã ããããªãã¦ããªãé¨åããããã¾ãã ããã·ã¥ã¿ã° #swtest_jp ã§ã½ããã¦ã§ã¢ãã¹ãã«é¢ããäºããã¤ã¼ããã¦ãã ããã¨ã¨ã¦ãããããã§ãï¼ï¼ãªã«ãã®ç´¹ä»ã§ããè°è«ã§ãã質åã§ãï¼ Summary CIaaS(CI as a Service)ã®Circle CIã«ç¡æã®ãã©ã³ã追å ããã¾ãããå人çã«ã¯ãCloudBeesã®ç¡ææ ããã®ç§»è¡çµãã¨ããã¨ãã¦ããã®ããªãï¼ã¨æãã¾ããã HTTPSã®ç¡åå©ç¨ãå®ç¾ã«åãã¦åãåºãã¾ãããå®ç¾ããã°ãHTTPSã®ãã¹ãããã¥ããã£ãããããã®éçºãã¼ã ãæããããã§ã
4. 4 CCIIã»èªåãã¹ããªãã§ãå±ããã¨ãã¦æ´»åä¸ éçºè¨èªï¼Java/PHP/Rubyãªã© æ¥åã§ãã使ããã¼ã«ï¼Jenkins/Selenium ã¡ã¤ã³æ¥åã¯CIã»èªåãã¹ãã«é¢ãããªãã§ããæä¼ã æè¿ã¯Jenkinsã«é¢ããã»ããã¼ãªã©ãããã¦é ãã¦ã¾ã nï® éç¨æ¹éã®ææ¡ nï® å®éã«ç¨¼åããCIç°å¢ã®æ§ç¯ nï® ãã¹ãã®æ¸ãæ¹æå Jenkinsã£ã¦ã©ããã£ã¦ 使ãã°ãããã ã£ãï¼ Selenium㧠ãã¹ããæ¸ãã¦ã¿ãã ãã ãã©â¦
One of the advantages of being a consultant is getting to see different environments and being able to visualise and identify patterns and anti-patterns. "An anti-pattern is a pattern that may be commonly used but is ineffective and/or counterproductive in practice" http://en.wikipedia.org/wiki/Anti-pattern As a first step, letâs describe TTDD â Tautological Test Driven Development as an anti-patt
RailsConf 2014 Is TDD dead? Is TDD dead? [Part II] Is TDD dead? [Part III] Is TDD dead? [Part IV] Is TDD dead? [Part V & VI] ï¼40åãããã® Kent frozen ããããï¼ TDD is dead. Long live testing. (DHH) 翻訳 2014-04-24 - ãã£ã¨ãã§ã½ã èªååãããªã°ã¬ãã·ã§ã³ãã¹ãã£ã³ã°ãåå¨ããªãã¨ããæ®å¿µãªæ¥çã®ç¾ç¶ TDDã«ã¯æè¬ãã¦ããããè¨è¨ã®æ義ã¨ãã¦ã¯ã¨ã£ãã«ä½¿ããªããªã£ã¦ãã éæ¥çã§éå°ã«è¤éãªæ§é ãçã¿ãã¡ã ããé ãããã®ããã¹ã¦é¿ãããã¨ãã ä¼çµ±çãªæå³ã§ã®ã¦ããããã¹ãã¯ã»ã¨ãã©ããªãããã¹ã¦ã®ä¾åé¢ä¿ãã¢ãã¯ã«ããä½åã¨ãããã¹ããæ°ç§ã§çµãããããªã¦ããããã¹ã æã ã¯å®å ¨ãªã·ã¹ãã ãã¹
A mock object is a very powerful tool, providing two major benefits: isolation and introspection. But like all power tools, mocks come with a cost. So where and when should you use them? What is the cost/benefit trade off? Letâs look at the extremes. ##No Mocks. Consider the test suite for a large web application. Letâs assume that test suite uses no mocks at all. What problems will it face? The e
http://martinfowler.com/bliki/UnitTest.html 2014/5/5 ã½ããã¦ã§ã¢éçºã«ããã¦ãã¦ããããã¹ãã£ã³ã°ã®è©±é¡ã«ãªããã¨ãå¤ããç§ãããã°ã©ã ãæ¸ãã¯ããã¦ä»¥æ¥ãã£ã¨ãã¦ããããã¹ãã£ã³ã°ã¨ããè¨èã¯ããªãã¿ã ã£ãã ããããã½ããã¦ã§ã¢éçºç¨èªã®å¸¸ã¨ãã¦ãã¦ããããã¹ãã£ã³ã°ã¨ããç¨èªããã¡ãã¨å®ç¾©ã§ãã¦ããªãã ã¦ããããã¹ãã£ã³ã°ã¨ããç¨èªã®æå³ãå®éãããå³å¯ã«ã¨ããã¦ãã¾ã£ãããã§ãæ··ä¹±ãã¦ãã¾ã£ã¦ãã人ãããè¦ãããã ãã¡ãããã以åãããã¦ããããã¹ãã£ã³ã°ã¯ãã£ã¦ãã¦ããã®ã ããããã人åã§å ¬è¡¨ããã®ã¯ãKent Beckã¨ä»äºãã㦠Xunitç³»ã®ãã¼ã«ã使ãå§ããããã®ãã¨ã ã£ã ï¼ãã®ç¨®ã®ãã¹ãã®ãã¨ã¯ãã¦ããããã¹ãã£ã³ã°ã£ã¦ãããããxunitãã¹ãã£ã³ã°ãã£ã¦å¼ãã ã»ããããã¨æããã ï¼ã ã¦ããããã¹ãã£ã³ã°ã¯
TDDï¼BDDã®ææ³ã¨ãã¹ãã£ã³ã°ãã¬ã¼ã ã¯ã¼ã¯ã®é¢ä¿ãæ´çãããï¼ãã¾ããèããªãTDD/BDDè¶ å ¥éï¼2ï¼ï¼1/3 ãã¼ã¸ï¼ TDDï¼BDDã®ææ³ã«è§¦ãããã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦xUnitãJBehaveãxSpecãCucumberãTurnipãTestDoxãç´¹ä»ããã ååã®ããã¹ãé§åéçºï¼æ¯ãèãé§åéçºãå§ããããã®åºç¤ç¥èãã§ãç´¹ä»ããã£ãããã«ããã¾ãã¾ãªãã¹ãã£ã³ã°ãã¬ã¼ã ã¯ã¼ã¯ãããã¾ããä¾ãã°TDDèªä½ã¯ãKent Beckï¼ã±ã³ãã»ããã¯ï¼æ°ãèæ¸ããã¹ãé§åéçºå ¥éãï¼ãã¢ã½ã³ã¨ãã¥ã±ã¼ã·ã§ã³åï¼ã®ä¸ã§è¿°ã¹ã¦ããããã«ããåæææ³ããã³è¨è¨ææ³ã§ãããå®éã«ã¯éçºå ¨ã¦ã®ã¢ã¯ãã£ããã£ãæ§é åããããã®ææ³ãã§ãã TDDï¼ãã¹ãé§åéçºï¼ï¼BDDï¼æ¯ãèãé§åéçºï¼ãå®è·µãããã¨ã¨ãç¹å®ãã¹ãã£ã³ã°ãã¬ã¼ã ã¯ã¼ã¯ãæ¡ç¨ãããéçºããããããã¨ãåãã¦èãã¦ãããª
Sikuliã¹ã¯ãªããã¯OpenCVã使ã£ãç»åèªèãå©ç¨ãã¦ãGUIæä½ã®èªååãè¡ãã¹ã¯ãªããã§ãã æå®ããç»åã«ä¸è´ããé åã«ã«ã¼ã½ã«ãåããã¦ã¯ãªãã¯ããããããã¼ãã¼ãã§ã®å ¥åããããããããã¨ãã§ãã¾ãã ããã§ãä»åã¯SikuliãUIãã¹ãã«å©ç¨ã§ããã®ãã©ããã調ã¹ãããã«ãiOSã·ãã¥ã¬ã¼ã¿ã«å¯¾ãã¦Sikuliã¹ã¯ãªããã試ãã«ä½¿ã£ã¦ã¿ã¾ããã ãªããMITã®UIãã¶ã¤ã³ã°ã«ã¼ããå§ãããªã¼ãã³ã½ã¼ã¹ã®ç 究ããã¸ã§ã¯ãã§ãã(ã½ã¼ã¹ã¯GitHubã«ããã¾ã)ãç¾å¨ã¯ã³ãã©ã大å¦ãã«ãã¼æ ¡ã®Sikuli Labãã¡ã³ããã³ã¹ãã¦ããããã§ãã ãã¦ã³ãã¼ãããèµ·åã¾ã§ Sikuliã®ãµã¤ãã®ãã¦ã³ãã¼ããã¼ã¸ããdmgãã¡ã¤ã«ããã¦ã³ãã¼ããã¾ããããããã¦ã³ããã¦å®è¡ããã ãã§ãã ãªããLion以éãå©ç¨ãã¦ããå ´åã«ã¯ãGatekeeperã®è¨å®ã«ãã£ã¦å®è¡ã§ããª
ãã®ã¨ã³ããªã¼ã¯ãTDD Advent Calendar 2013ã®åå ã¨ã³ããªã¼ã§ãã åæ¥ã®ã¨ã³ããªã¼ã¯ãmoonmileããã«ããTDD - ãã¼ãã«ã«MSTestã使ãã - Qiita [ãã¼ã¿]ã§ããã ãã¹ãé§åéçº(TDD)ã§ããèªããããã¼ã¯ã¼ãã«ãä¸å®ããã¹ãã«ãããã¨ããè¨èãããã¾ãã ããã¯ãã©ããããã¨ã§ããããã ã±ã³ãããã¯ã®ããã¹ãé§åéçºå ¥éãã¯ããã®ããã«è¿°ã¹ã¦ãã¾ãã ãã¹ãé§åéçºã¯ãããã°ã©ã ä¸ã®ä¸å®ã管çããæ¹æ³ã§ãããããã§è¨ãä¸å®ã¨ã¯æªãæå³ã§ã¯ãªãã...ï¼ç¥ï¼...éçã«ããªã£ãä¸å®ãããªãã¡ãããã¯å°é£ãªåé¡ã ããæåããæå¾ã¾ã§ã¯åãããªããã¨ããæè¦ã§ããã (ããã¹ãé§åéçºå ¥éãã¾ããããã) å³ã¡ãããã°ã©ãããã¼ãã¼ããæã¤ãã¨ãé»å®³ãããããããã¯ã·ã§ã³ã³ã¼ããã©ã®ããã«æ¸ãã°ããã®ãããããªããã¨ããä¸å®ãã失æããã
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}