HouseMD 鏄窐瀹濈殑鑱氱煶鍐欑殑涓涓潪甯鎬紭縐鐨凧ava榪涚▼榪愯鏃惰瘖鏂拰璋冭瘯宸ュ叿錛屽鏋滀綘鎺ヨЕ榪嘼trace錛岄偅涔圚ouseMD涔熻浣犲簲璇ュ皾璇曚笅錛屽畠姣攂trace鏇存槗鐢紝涓嶉渶瑕佸啓鑴氭湰錛岀被浼約trace鐨勬柟寮廰ttach鍒癹vm榪涚▼鍋氳窡韙皟璇曘?br />
鍩烘湰鐨勫畨瑁呭拰浣跨敤璇風湅榪欑瘒鏂囨。銆?a >UserGuide銆嬶紝鎭曚笉閲嶅銆備互涓嬪唴瀹歸兘鍋囪浣犳紜畨瑁呬簡housemd銆?br />
鏈枃涓昏浠嬬粛涓嬫庝箞鐢╤ousemd璇婃柇璺熻釜clojure榪涚▼銆侰lojure鐨刯ava瀹炵幇涔熸槸璺戝湪JVM閲岋紝褰撶劧涔熷彲浠ョ敤housemd銆?br />
鎴戜滑浠ヤ竴涓畝鍗曠殑渚嬪瓙寮濮嬶紝鍋囪鎴戜滑鏈夊涓媍lojure浠g爜錛?br />
(loop [x 1]
(Thread/sleep 1000)
(prn x)
(recur (inc x)))
榪欐寰堢畝鍗曪紝鍙槸闂撮殧涓縐掍笉鏂湴鎵撳嵃閫掑鐨勬暟瀛梮銆傛垜浠噯澶囩敤housemd璺熻釜榪欎釜紼嬪簭鐨勮繍琛岋紝棣栧厛榪愯榪欎釜紼嬪簭錛屼綘鍙互鐢╨ein錛屼篃鍙互鐩存帴java鍛戒護榪愯錛?br />
java -cp clojure.jar clojure.main test.clj
榪愯鏃朵笉鏂湴鍦ㄦ帶鍒跺彴鎵撳嵃鏁板瓧錛岄氳繃jps鎴栬卲s鏌ヨ鍒拌榪涚▼鐨刬d錛屽亣璁句負pid錛屼嬌鐢╤ousemd榪炴帴鍒拌榪涚▼錛?br />
housemd <pid>
欏哄埄榪涘叆housemd鐨勪氦浜掓帶鍒跺彴錛岄氳繃help鍛戒護鍙互鏌ヨ鏀寔鐨勫懡浠わ細
housemd> help
quit terminate the process.
help display this infomation.
trace display or output infomation of method invocaton.
loaded display loaded classes information.
瑕佺敤housemd璋冭瘯clojure錛屼綘闇瑕佸clojure鐨勫疄鐜版湁涓鐐圭偣浜嗚В錛屾湁鍏磋叮鍙互鐪嬭繃鍘葷殑涓綃嘼log銆?a href="http://www.tkk7.com/killme2008/archive/2010/07/11/325775.html">clojure hacking guide銆嬶紝綆鍗曟潵璇達紝clojure鐨勭紪璇戝櫒浼氬皢clojure浠g爜緙栬瘧鎴恓ava綾誨茍榪愯銆傚浜嶫VM鏉ヨ錛宑lojure鐢熸垚鐨勭被錛岃窡java緙栬瘧鍣ㄧ敓鎴愮被娌℃湁浠涔堜笉鍚屻?br />
鍏蜂綋鍒頒笂闈㈢殑clojure浠g爜錛屼細鐢熸垚涓涓悕涓?strong>user$eval1鐨勭被錛寀ser鏄粯璁ょ殑namespace錛岃宔val1鏄痗lojure緙栬瘧鍣ㄨ嚜鍔ㄧ敓鎴愮殑涓涓爣紺虹被鍚嶏紝閫氳繃loaded 鍛戒護鏌ヨ綾葷殑鍔犺澆鎯呭喌錛?br />
housemd> loaded user$eval1 -h
user$eval1 -> null
- clojure.lang.DynamicClassLoader@1d25d06e
- clojure.lang.DynamicClassLoader@1d96f4b5
- sun.misc.Launcher$AppClassLoader@a6eb38a
- sun.misc.Launcher$ExtClassLoader@69cd2e5f
閫氳繃-h閫夐」鎵撳嵃浜嗗姞杞絬ser$eval1鐨勭被鍔犺澆鍣ㄧ殑灞傛鍏崇郴錛屽洜涓簎ser$eval1鏄姩鎬佺敓鎴愮殑錛坈lojure鍚姩榪囩▼涓級錛屽洜姝ゅ畠涓嶅湪浠諱綍涓涓猚lass鎴栬卝ar鏂囦歡涓傞櫎浜嗘煡璇ser namespace鐨勭被涔嬪錛屼綘榪樺彲浠ユ煡璇lojure.core,clojure.lang,clojure.java絳変換浣曡鍔犺澆榪涙潵鐨勭被錛屼緥濡傛煡璇lojure.core.prn鐨勭被,鍦╟lojure閲岃繖鏄竴涓嚱鏁幫紝鍦╦vm鐪嬫潵榪欏彧鏄竴涓被錛?br />housemd> loaded -h core$prn clojure.core$prn -> /Volumes/HDD/Users/apple/clojure/clojure.jar - sun.misc.Launcher$AppClassLoader@a6eb38a - sun.misc.Launcher$ExtClassLoader@69cd2e5f
娉ㄦ剰錛屼笉闇瑕佸畬鏁寸殑namespace——clojure.core錛岀洿鎺ore$prn鍗沖彲銆傚叾浠栦篃鏄被浼箋?strong>灝忔妧宸э細濡傛灉浣犲疄鍦ㄤ笉鐭ラ亾clojure緙栬瘧鍣ㄧ敓鎴愮殑綾誨悕錛屼綘鍙互鍒╃敤jvm鑷甫鐨刯map鍛戒護鏉ユ煡璇€?/strong> 鎺ヤ笅鏉ワ紝鎴戜滑灝濊瘯鐢╰race鍛戒護璺熻釜鏂規硶鐨勮繍琛岋紝渚嬪渚嬪瓙涓殑clojure浠g爜鐢ㄥ埌浜唋oop鍜宺ecur涓や釜sepcial form錛屾垜浠窡韙笅loop:housemd> trace -t 5 core$loop INFO : probe class clojure.core$loop core$loop.doInvoke(Object, Object, Object, Object) sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.getRequiredArity() sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.doInvoke(Object, Object, Object, Object) sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.getRequiredArity() sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.doInvoke(Object, Object, Object, Object) sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.getRequiredArity() sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.doInvoke(Object, Object, Object, Object) sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.getRequiredArity() sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.doInvoke(Object, Object, Object, Object) sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null core$loop.getRequiredArity() sun.misc.Launcher$AppClassLoader@a6eb38a 0 -ms null INFO : Ended by timeout INFO : reset class clojure.core$loop
鍦?縐掑唴錛宑lojure.core$loop綾繪湁涓や釜鏂規硶鍚勮璋冪敤浜?嬈★紝doInvoke鏄疄闄呯殑璋冪敤錛岃実etRequiredArity鐢ㄦ潵鏌ヨloop鎵闇瑕佺殑鍙傛暟涓暟銆倀race榪樺彲浠ヨ窡韙埌鍏蜂綋鐨勬柟娉曪紝渚嬪鎴戜滑璺熻釜prn鍑芥暟鐨勮皟鐢ㄦ儏鍐碉細housemd> trace -t 5 core$prn.doInvoke INFO : probe class clojure.core$prn core$prn.doInvoke(Object) sun.misc.Launcher$AppClassLoader@a6eb38a 1 1ms clojure.core$prn@3e4ac866 core$prn.doInvoke(Object) sun.misc.Launcher$AppClassLoader@a6eb38a 2 <1ms clojure.core$prn@3e4ac866 core$prn.doInvoke(Object) sun.misc.Launcher$AppClassLoader@a6eb38a 3 <1ms clojure.core$prn@3e4ac866 core$prn.doInvoke(Object) sun.misc.Launcher$AppClassLoader@a6eb38a 4 <1ms clojure.core$prn@3e4ac866 core$prn.doInvoke(Object) sun.misc.Launcher$AppClassLoader@a6eb38a 5 <1ms clojure.core$prn@3e4ac866 INFO : Ended by timeout INFO : reset class clojure.core$prn
trace鎵撳嵃浜嗘柟娉曠殑璋冪敤嬈℃暟錛?縐掑唴錛夊拰姣忔璋冪敤鐨勬椂闂達紙姣綰у埆錛夛紝浠ュ強璋冪敤鐨則arget object銆傚皬鎶宸э細娌℃湁鍙彉鍙傛暟鐨勫嚱鏁扮敓鎴愮被鏈緇堣皟鐢ㄧ殑鏄痠nvoke鏂規硶錛堝弬鏁頒釜鏁板彲鑳介噸杞斤級錛屾湁鍙彉鍙傛暟鐨勫嚱鏁拌皟鐢ㄧ殑鏄痙oInvoke鏂規硶銆?br /> trace鍛戒護榪樻敮鎸佹墦鍗拌皟鐢ㄥ爢鏍堝埌鏂囦歡錛屼緥濡傦細trace -t 5 -d -s core$prn.doInvoke
鍒╃敤-s鍜?d鍛戒護浼氬皢璇︾粏鐨勮皟鐢ㄤ俊鎭緭鍑哄埌涓存椂鐩綍錛屼復鏃剁洰褰曠殑璺緞鍙互閫氳繃trace help鍛戒護鏌ヨ鍒幫紝鍦ㄦ垜鐨勬満鍣ㄤ笂鏄?tmp/trace/<pid>@host鐩綍涓嬨傝皟鐢ㄥ爢鏍堢殑杈撳嚭綾諱技錛?br />example$square.invoke(Long) call by thread [main] example$eval9.invoke(test.clj:11) clojure.lang.Compiler.eval(Compiler.java:6465) clojure.lang.Compiler.load(Compiler.java:6902) clojure.lang.Compiler.loadFile(Compiler.java:6863) clojure.main$load_script.invoke(main.clj:282) clojure.main$script_opt.invoke(main.clj:342) clojure.main$main.doInvoke(main.clj:426) clojure.lang.RestFn.invoke(RestFn.java:421) clojure.lang.Var.invoke(Var.java:405) clojure.lang.AFn.applyToHelper(AFn.java:163) clojure.lang.Var.applyTo(Var.java:518) clojure.main.main(main.java:37)
涓婇潰榪欎釜綆鍗曠殑渚嬪瓙灞曠ず浜嗕嬌鐢╤ousemd璺熻釜璇婃柇clojure榪涚▼鐨勬柟娉曘?br /> 鑷畾涔塶s鍜屽嚱鏁扮殑璋冭瘯涓庢綾諱技錛屽亣璁炬垜浠湁涓嬮潰鐨刢lojure浠g爜錛?br />(ns example) (defn square [x] (* x x)) (loop [x 1] (Thread/sleep 1000) (square x) (recur (inc x)))
ns涓篹xample錛岃嚜瀹氫箟鍑芥暟square騫跺畾鏈熷驚鐜皟鐢ㄣ備嬌鐢╤ousemd璇婃柇榪欐浠g爜錛?br />loaded -h example$square #鏌ヨsquare鐨勫姞杞芥儏鍐?br />trace -t 10 -d -s example$square.invoke #璺熻釜10縐掑唴square鐨勮皟鐢ㄦ儏鍐?/div>
]]>
鍒嗗竷寮忔秷鎭腑闂翠歡Metaq鍙戝竷1.4.3 http://www.tkk7.com/killme2008/archive/2012/06/04/379895.htmldennis dennis Mon, 04 Jun 2012 02:03:00 GMT http://www.tkk7.com/killme2008/archive/2012/06/04/379895.html http://www.tkk7.com/killme2008/comments/379895.html http://www.tkk7.com/killme2008/archive/2012/06/04/379895.html#Feedback 1 http://www.tkk7.com/killme2008/comments/commentRss/379895.html http://www.tkk7.com/killme2008/services/trackbacks/379895.html 鎴戜滑鍦ㄧ淮鎶ょ殑娣樺疂寮婧愭秷鎭腑闂翠歡鐨?a style="color: #006699; ">metaq鐨?a style="color: #006699; ">github鍒嗘敮錛屼粖澶╁彂甯冧簡1.4.2鐗堟湰錛屼富瑕佸仛浜嗗涓嬫敼榪涳細 1.鏀寔鍙戦佸拰璁㈤槄鍒嗙錛屽彲浠ョ粏綺掑害鍦版帶鍒禕roker鎴栬呮煇涓猅opic鏄惁鎺ユ敹娑堟伅鍜屾帴鍙楄闃呫傛湇鍔$娣誨姞鏂伴夐」acceptPublish鍜宎cceptSubscribe銆?br /> 2.鏇村弸濂藉湴鍏抽棴Broker錛屾⒊鐞嗗叧闂祦紼嬪茍閫氳繃JMX璋冪敤鏂規硶鍏抽棴鏇夸唬鍘熸潵綆鍗曠殑kill銆?br /> 3.鏇存柊python瀹㈡埛绔?/a>鍒?.2鐗堟湰錛屽彲浠ラ氳繃pip瀹夎: pip install metaq 4.鍙戝竷ruby璇█瀹㈡埛绔?a style="color: #006699; ">meta-ruby 0.1鐗堟湰銆?br /> 5.鍏朵粬灝忔敼榪涳細鍗囩駭gecko鍒?.1.1鐗堟湰錛屽崌綰uartz鍒?.1.4鐗堟湰錛屾坊鍔犻泦鎴愭祴璇曞伐紼嬪拰鍐呴儴閲嶆瀯絳夈?br /> 6.鏂版枃妗?a >銆婁嬌鐢╨og4j鎵╁睍鍙戦佹秷鎭?/a> 綆浠嬶細https://github.com/killme2008/Metamorphosis/wiki/浠嬬粛 涓嬭澆錛?a style="color: #006699; ">https://github.com/killme2008/Metamorphosis/downloads鏂囨。錛?a style="color: #006699; ">https://github.com/killme2008/Metamorphosis/wiki
]]> 濡備綍鐔熸倝涓涓紑婧愰」鐩紵 http://www.tkk7.com/killme2008/archive/2012/05/22/378885.htmldennis dennis Tue, 22 May 2012 15:12:00 GMT http://www.tkk7.com/killme2008/archive/2012/05/22/378885.html http://www.tkk7.com/killme2008/comments/378885.html http://www.tkk7.com/killme2008/archive/2012/05/22/378885.html#Feedback 9 http://www.tkk7.com/killme2008/comments/commentRss/378885.html http://www.tkk7.com/killme2008/services/trackbacks/378885.html 浣犳湁涓換鍔★紝闇瑕佺敤鍒版煇涓紑婧愰」鐩?鎴栬呰佸ぇ浜や唬浣犱竴涓簨鎯咃紝璁╀綘鍘諱簡瑙f煇涓笢瑗褲傛庝箞涓嬫墜鍛紵濡備綍寮濮嬪憿錛熸垜鐨勪範鎯槸榪欐牱錛?br /> 1.棣栧厛錛屾煡鎵懼拰闃呰璇ラ」鐩殑鍗氬鍜岃祫鏂欙紝閫氳繃google浣犺兘鎵懼埌鏌愪釜欏圭洰澶т綋浠嬬粛鐨勫崥瀹紝蹇熼槄璇諱竴涓嬪氨鑳藉欏圭洰鐨勭洰鐨勩佸姛鑳姐佸熀鏈嬌鐢ㄦ湁涓ぇ姒傜殑浜嗚В銆?br /> 2.闃呰欏圭洰鐨勬枃妗o紝閲嶇偣鍏蟲敞綾諱技Getting started銆丒xample 涔嬬被鐨勬枃妗o紝浠庝腑瀛︿範濡備綍涓嬭澆銆佸畨瑁呫佺敋鑷沖熀鏈嬌鐢ㄨ欏圭洰鎵闇瑕佺殑鐭ヨ瘑銆?br /> 3.濡傛灉璇ラ」鐩湁鎻愪緵鐜版垚鐨別xample宸ョ▼錛岄鍏堝皾璇曟寜鐓у紑濮嬫枃妗g殑浠嬬粛榪愯example錛屽鏋滆繍琛岄『鍒╋紝閭d箞鎭枩浣犻『鍒╁紑浜嗕釜濂藉ご;濡傛灉閬囧埌闂錛岄鍏堝皾璇曞湪欏圭洰鐨?strong>FAQ絳夋枃妗i噷鏌ユ壘絳旀錛屽啀嬈★紝鍙互灝嗛棶棰橈紙渚嬪寮傚父淇℃伅錛夊綋鎴愬叧閿瘝鍘繪悳绱紝鏌ユ壘鐩稿叧鐨勮В鍐沖姙娉曪紝浣犻亣鍒頒簡錛屽埆浜轟竴鑸篃浼氶亣鍒幫紝鐑績鐨勬湅鍙嬩細璁板綍涓嬭В鍐崇殑榪囩▼;鏈鍚庯紝鍙互灝嗛棶棰樻彁浜ゅ埌欏圭洰鐨勯偖浠跺垪琛紝璇峰ぇ瀹跺府浣犵湅鐪嬨?strong>鍦ㄦ病鏈夋垚鍔熻繍琛宔xample涔嬪墠錛屼笉瑕佸皾璇曚慨鏀筫xample銆?br /> 4.榪愯浜嗙涓涓猠xample涔嬪悗錛屽皾璇曟牴鎹綘鐨勭悊瑙e拰闇瑕佷慨鏀筫xample錛屾祴璇曢珮綰у姛鑳界瓑銆?br /> 5.鍦ㄤ簡瑙e熀鏈嬌鐢ㄥ悗錛岄渶瑕佸紑濮嬫繁鍏ョ殑浜嗚В璇ラ」鐩備緥濡傞」鐩殑閰嶇疆綆$悊銆侀珮綰у姛鑳戒互鍙婃渶浣沖疄璺點傞氬父涓涓繍浣滆壇濂界殑欏圭洰浼氭彁渚涗竴浠戒粠嫻呭埌娣辯殑鐢ㄦ埛鎸囧崡錛屼綘騫朵笉闇瑕佷粠澶村埌灝鵑槄璇昏繖浠芥寚鍗楋紝鏍規嵁鏃墮棿鍜屽叴瓚o紝鐗瑰埆鏄綘鑷繁浠誨姟鐨勯渶瑕侊紝閲嶇偣闃呰閮ㄥ垎绔犺妭騫跺仛絎旇錛堟帹鑽恊vernote錛夈?br /> 6.濡傛灉鏃墮棿鍏佽錛屽皾璇曚粠婧愮爜鏋勫緩璇ラ」鐩傞氬父寮婧愰」鐩兘浼氭彁渚涗竴浠芥瀯寤烘寚鍗楋紝鎸囧浣犲浣曟惌寤轟竴涓敤浜庡紑鍙戙佽皟璇曞拰鏋勫緩鐨勭幆澧冦傚皾璇曟瀯寤轟竴涓増鏈?br /> 7.濡傛灉鏃墮棿鍏佽騫朵笖鏈夊叴瓚o紝鍙互灝濊瘯闃呰婧愮爜錛?br />錛?錛夐槄璇繪簮鐮佷箣鍓嶏紝鏌ョ湅璇ラ」鐩槸鍚︽彁渚涙灦鏋勫拰璁捐鏂囨。錛岄槄璇昏繖浜涙枃妗e彲浠ヤ簡瑙h欏圭洰鐨勫ぇ浣撹璁″拰緇撴瀯錛岃婧愮爜鐨勬椂鍊欎笉浼氭棤浠庝笅鎵嬨?br />錛?錛夐槄璇繪簮鐮佷箣鍓嶏紝涓瀹氳鑳芥瀯寤哄茍榪愯璇ラ」鐩紝鏈変釜鐩磋鎰熷彈銆?br />錛?錛夐槄璇繪簮鐮佺殑絎竴姝ユ槸鎶撲富騫詫紝灝濊瘯鐞嗘竻涓嬈℃甯歌繍琛岀殑浠g爜璋冪敤璺緞錛岃繖鍙互閫氳繃debug鏉ヨ瀵熻繍琛屾椂鐨勫彉閲忓拰琛屼負銆備慨鏀規簮鐮佸姞鍏ユ棩蹇楀拰鎵撳嵃鍙互甯姪浣犳洿濂界殑鐞嗚В婧愮爜銆?br />錛?錛夐傚綋鐢誨浘鏉ュ府鍔╀綘鐞嗚В婧愮爜錛屽湪鐞嗘竻涓誨共鍚庯紝鍙互灝嗘暣涓祦紼嬬敾鎴愪竴寮犳祦紼嬪浘鎴栬呮爣鍑嗙殑UML鍥撅紝甯姪璁板繂鍜屼笅涓姝ョ殑闃呰銆?br />錛?錛夋寫閫夋劅鍏磋叮鐨?#8220;鏋濆共”浠g爜鏉ラ槄璇伙紝姣斿浣犲緗戠粶閫氳鎰熷叴瓚o紝灝遍槄璇葷綉緇滃眰鐨勪唬鐮侊紝娣卞叆鍒板疄鐜扮粏鑺傦紝濡傚畠鐢ㄤ簡浠涔堝簱錛岄噰鐢ㄤ簡浠涔堣璁℃ā寮忥紝涓轟粈涔堣繖鏍峰仛絳夈傚鏋滃彲浠ワ紝debug緇嗚妭浠g爜銆?br />錛?錛夐槄璇繪簮鐮佺殑鏃跺欙紝閲嶈鍗曞厓嫻嬭瘯錛屽皾璇曞幓榪愯鍗曞厓嫻嬭瘯錛屽熀鏈笂涓涓ソ鐨勫崟鍏冩祴璇曚細灝嗚浠g爜鐨勫姛鑳藉拰杈圭晫鎻忚堪娓呮銆?br />錛?錛夊湪鐔熸倝婧愮爜鍚庯紝鍙戠幇鏈夊彲浠ユ敼榪涚殑鍦版柟錛屾湁綺懼姏銆佹湁鎰忔効鍙互鍚戣欏圭洰鐨勫紑鍙戣呮彁鍑烘敼榪涚殑鎰忚鎴栬卛ssue錛岀敋鑷沖府浠栦慨澶嶅拰瀹炵幇錛屽弬涓庤欏圭洰鐨勫彂灞曘?br /> 8.閫氬父鍦ㄩ槄璇繪枃妗e拰婧愮爜涔嬪悗錛屼綘鑳藉璇ラ」鐩湁姣旇緝娣卞叆鐨勪簡瑙d簡錛屼絾鏄欏圭洰鎵鍦ㄩ鍩燂紝浣犲彲鑳借繕鎯蟲悳绱㈢浉鍏崇殑欏圭洰鍜岃祫鏂欙紝鐪嬬湅鏈夋病鏈夊叾浠栫殑鏇村ソ鐨勯」鐩垨鑰呰В鍐蟲柟妗堛傚湪騫垮害鍜屾繁搴︿箣闂存潈琛°?br /> 浠ヤ笂鏄垜涓漢鐨勪竴浜涗範鎯紝鎴戣嚜宸變篃騫舵病鏈夊畬鍏ㄦ寜鐓ц繖涓潵錛屼絾鏄寜鐓ц繖涓『搴忥紝鍩烘湰涓婅兘璁╀綘姣旇緝楂樻晥鍦板涔犲拰浣跨敤鏌愪釜寮婧愰」鐩?img src ="http://www.tkk7.com/killme2008/aggbug/378885.html" width = "1" height = "1" /> ]]> Emacs + Clojure閰嶇疆鐨勫嚑涓猅ip http://www.tkk7.com/killme2008/archive/2012/05/19/378535.htmldennis dennis Fri, 18 May 2012 16:57:00 GMT http://www.tkk7.com/killme2008/archive/2012/05/19/378535.html http://www.tkk7.com/killme2008/comments/378535.html http://www.tkk7.com/killme2008/archive/2012/05/19/378535.html#Feedback 11 http://www.tkk7.com/killme2008/comments/commentRss/378535.html http://www.tkk7.com/killme2008/services/trackbacks/378535.html
寰堜箙娌℃洿鏂板崥瀹簡錛屽湪鍖椾含宸ヤ綔錛屽繖紕屽茍涓斿厖瀹炪傜洰鍓嶆潵璇達紝Clojure鏈濂界殑寮鍙戠紪杈戝櫒搴旇鏄疎macs + Slime 鐨勭粍鍚堬紝鍒╃敤swank-clojure 榪欎釜欏圭洰錛屽姞涓奵lojure-mode錛屽彲浠ュ畬緹庡湴榪愯slime銆傜紪璇戙佽繍琛屻佽煩杞佹枃妗e拰寮曠敤鏌ョ湅鐢氳嚦debug 閮藉彲浠ユ悶瀹氥傚叿浣撻厤緗仌涓嶉噸澶嶏紝鐪媠wank-clojure鐨勬枃妗e嵆鍙嚜宸卞畨瑁呰搗鏉ワ紝鎴栬呰繖綃?a >涓枃鍗氬錛?a >windows涓婇厤緗?/a>銆?br />
鍒嗕韓鍑犱釜Tip錛屼篃鏈熷緟澶у鍒嗕韓浣犱滑鐨勪嬌鐢ㄥ績寰椼?br />
棣栧厛鏄嚜鍔ㄥ湪鎵撳紑clj鍚庣紑鏂囦歡鐨勬椂鍊欏惎鍔ㄦ墽琛宑lojure-jack-in涓巗lime榪炴帴錛屽彲浠ュ湪emacs閰嶇疆閲屽姞涓婁釜callback錛?br />
(eval-after-load "clojure-mode" '(progn (require 'slime) (require 'clojure-mode) (unless (slime-connected-p) (save-excursion (clojure-jack-in)))))
榪欐牱鍦ㄦ墦寮clj涓哄悗緙鐨勬枃浠剁殑鏃跺欙紝灝嗚嚜鍔ㄥ惎鍔╟lojure-mode鎵цclojure-jack-in鍑芥暟騫朵笖榪炴帴slime銆?br /> 灝哻lj鍚庣紑鐨勬枃浠惰嚜鍔ㄥ叧鑱斿埌clojure-mode:
(setq auto-mode-alist (cons '("\\.clj$" . clojure-mode) auto-mode-alist))
閫氬父鏉ヨ濡傛灉浣犳槸鍒╃敤marmalade 瀹夎鐨勶紝浼氳嚜鍔ㄥ叧鑱旂殑銆?br /> 鍙﹀錛屽惎鍔ㄨ嚜鍔ㄥ尮閰嶆嫭鍙楓佸瓧絎︿覆寮曞彿絳夌殑paredit妯″紡涓瀹氳鍚姩錛?br />(defun paredit-mode-enable () (paredit-mode 1)) (add-hook 'clojure-mode-hook 'paredit-mode-enable) (add-hook 'clojure-test-mode-hook 'paredit-mode-enable)
鍦ㄤ嬌鐢╟lojure-mode鎴栬卌lojure-test-mode鐨勬椂鍊欒嚜鍔ㄥ惎鐢╬aredit妯″紡錛屾嫭鍙峰啀涔熶笉鏄棶棰樸傛嫭鍙峰尮閰嶆彁紺轟竴鑸槸寮鍚殑錛屽鏋滄病鏈夛紝寮哄埗寮鍚細;; 鏄劇ず鎷彿鍖歸厤 (show-paren-mode t) (setq show-paren-style 'parentheses)
slime鏇村閰嶇疆錛屽惎鐢↖O閲嶅畾鍚戯紙澶氱嚎紼婭O杈撳嚭閮藉畾鍚戝埌SLIME repl錛変互鍙婅緗氳瀛楃緙栫爜絳夛細(eval-after-load "slime" '(progn (slime-setup '(slime-repl slime-fuzzy)) ;;(setq slime-truncate-lines t) (setq swank:*globally-redirect-io* t) ;; (setq slime-complete-symbol-function ' slime-fuzzy-complete-symbol) (setq slime-net-coding-system 'utf-8-unix)))
緇嗗績鐨勬湅鍙嬪彲鑳芥敞鎰忓埌鎴戞敞閲婁簡slime-fuzzy-complete鐨勯厤緗紝榪欐槸涓涓敮鎸佹洿濂界殑鑷姩琛ュ叏鍔熻兘鐨凷LIME鎻掍歡錛堝彲浠ョ敤緙╁啓鏉ヨ嚜鍔ㄨˉ鍏級錛屽彲鎯滃湪鎴戞満鍣ㄤ笂娌℃湁灝濊瘯閰嶇疆鎴愬姛錛屾湁鍏磋叮浣犲彲浠ュ皾璇曚笅銆?br /> 鍦≧EPL閲屾敮鎸佽娉曢珮浜紝涓瀹氳閰嶇疆涓婏細(add-hook 'slime-repl-mode-hook (defun clojure-mode-slime-font-lock () (require 'clojure-mode) (let (font-lock-mode) (clojure-mode-font-lock-setup))))
鍗曠嫭鍦╟lojure-mode錛堝湪鍏朵粬mode閲岃繖浜涘揩鎹烽敭涓嶄細璧蜂綔鐢級閲岄厤緗揩鎹烽敭鍙互榪欐牱:(eval-after-load "clojure-mode" '(progn (require 'slime) (require 'clojure-mode) (define-key clojure-mode-map (kbd "M-/") (quote slime-complete-symbol)) (define-key clojure-mode-map (kbd "C-c s") (quote slime-selector)))
渚嬪鎴戣繖閲屽皢M-/浣滀負鑷姩琛ュ叏鐨勫揩鎹烽敭錛屽洜涓簃eta閿湪鎴戠殑Mac鏈哄櫒涓婅緗負command閿紝鍥犳鑷姩琛ュ叏鐨勬搷浣滀範鎯氨璺烢clipse綾諱技銆傝?strong>slime-selector鏄竴涓潪甯告湁鐢ㄧ殑鍑芥暟錛岀敤鏉ヨ煩杞埌slime鐨勪竴緋誨垪buffer錛屽洜姝ゆ垜緇戝畾浜咰-c s蹇嵎閿?br /> 棰濆涓鎻愶紝鍦∕ac osx涓嬶紝灝哻ommand浣滀負meta閿?;;; I prefer cmd key for meta (setq mac-option-key-is-meta nil mac-command-key-is-meta t mac-command-modifier 'meta mac-option-modifier 'none)
鏈鍚庯紝鏈熷緟澶у涓嶅悵鍒嗕韓浣犵殑蹇冨緱銆?br /> ]]> clj.monitor : monitoring applications in clojure based on SSH http://www.tkk7.com/killme2008/archive/2012/05/12/378018.htmldennis dennis Sat, 12 May 2012 14:38:00 GMT http://www.tkk7.com/killme2008/archive/2012/05/12/378018.html http://www.tkk7.com/killme2008/comments/378018.html http://www.tkk7.com/killme2008/archive/2012/05/12/378018.html#Feedback 5 http://www.tkk7.com/killme2008/comments/commentRss/378018.html http://www.tkk7.com/killme2008/services/trackbacks/378018.html My weekend project clj.monitor is beta release,it's a clojure DSL for monitoring system and applications based on SSH.
Home:https://github.com/killme2008/clj.monitor
An example:
(ns clj.monitor.example
(:use [clj.monitor.core]
[control.core]
[clj.monitor.tasks]))
;;define a mysql cluster
(defcluster mysql
:clients [{:user "deploy" :host "mysql.app.com"}])
;;define a monitor for mysql cluster
(defmonitor mysql-monitor
:tasks [(ping-mysql "root" "password")
(system-load :5 3)]
:clusters [:mysql])
;;start monitors
(start-monitors
:cron "* 0/5 * * * ?"
:alerts [(mail :from "alert@app.com" :to "yourname@app.com")]
:monitors [mysql-monitor])
API document: http://fnil.net/clj.monitor
It is just a beta release,if you have any questions or find issues ,please let me know,thanks.
]]>