锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 閫氳繃闃呰ConsoleWindow浠g爜錛屾兂鍒頒簡涓涓В鍐蟲濊礬錛氳嚜宸卞疄鐜癘nOpenAsset錛岄氳繃鑾峰彇ConsoleWindow涓殑ListView寰楀埌褰撳墠閫変腑鐨剅ow錛岀劧鍚庡湪LogEntries涓彇寰楄琛屽搴旂殑LogEntry錛屽叾涓殑condition瀛楁淇濆瓨浜哠tackTrace瀛楃涓詫紝鏈鍚庤繃婊ゆ帀鍖呰鐨勬棩蹇楃被鍚庢嬁鍒拌剼鏈枃浠跺悕鍜屼唬鐮佽錛岀敤OpenFileAtLineExternal鐩存帴鎵撳紑銆傚湪瀹炵幇榪囩▼涓彂鐜幫紝瀹屽叏娌℃湁蹇呰鎷垮埌LogEntry錛屽洜涓篊onsoleWindow涓殑m_ActiveText灝辨槸StackTrace瀛楃涓詫紝鐩存帴澶勭悊灝卞ソ浜嗐?/p> 鍦ㄦ兂鍒拌鏂規涔嬪墠錛岀湅榪囦袱涓В鍐蟲柟娉曪細1錛夊皢鏃ュ織綾葷紪璇戞垚DLL錛?錛夎緭鍑烘棩蹇楁椂鑷繁璁板綍StackFrame錛岄氳繃涓緋誨垪鎵嬫鍦∣nOpenAsset鏌ユ壘LogEntry涓搴旂殑StackFrame銆備笉榪囪繖涓ょ鏂規閮戒笉鑳芥弧瓚充釜浜虹殑瀹岀編涓諱箟鎯呰妭錛屾柟妗?澶卞幓浜嗛緙栬瘧瀹忕殑鐏墊椿錛屼竴鏃︽棩蹇楃郴緇熸敼鍔ㄩ渶瑕侀噸緙朌LL鍜屽鐞嗕緷璧栵紝鏂規2浣庢晥涓旇繃浜庡鏉傘?/p> 鏈鍚庢憳鍑轟唬鐮佷緵鍙傝冿紝瀹炵幇鐜涓猴細Unity 4.7.5f1, UnityVS+Visual Studio 2015 Pro銆?/p> 浠嶢*鍒癗avmesh閮芥槸瀹屽鐨勫璺柟妗堬紝鑳芥弧瓚充換鎰忚窛紱葷殑璺緞鎼滅儲銆傚畠浠兘闇瑕佹牴鎹満鏅鍏堢敓鎴愮浉鍏蟲暟鎹紙A*鏄鏁寸殑2D鏍煎瓙鏁版嵁錛孨avmesh鍒欐槸mesh鏁版嵁錛夛紝鍦ㄥ満鏅昂瀵哥‘瀹氱殑鎯呭喌涓嬶紝Navmesh綆楁硶鐨勭綉鏍兼暟浼氶殢闅滅鐨勫鏉傜▼搴︽敼鍙橈紝鑰孉*鏄浐瀹氱殑銆傚氨鏃剁┖澶嶆潅搴﹁岃█錛岄氬父鎯呭喌涓婲avmesh瑕佷紭浜嶢*錛屼絾涓浜涗紭鍖栫殑鍙樼A*綆楁硶錛堝錛欻ierarchy A*錛夊湪闀胯窛紱誨璺笂瑕佷紭浜嶯avmesh銆傜劧鑰屽浜庡姩鎬佹敼鍙樼殑鍦烘櫙闅滅錛屽湪浣跨敤浠ヤ笂涓ょ綆楁硶鏃墮兘浼氭湁鎬ц兘鍜岃璁′笂鐨勯檺鍒躲傚湪瀹為檯欏圭洰涓紝鎴戜滑閫氬父灝嗘垬鏂楃害鏉熷湪涓瀹氬尯鍩熷唴錛岃屼笖榪欎簺鍖哄煙鏈夊彲鑳芥槸璇稿縐誨姩騫沖彴涔嬬被鐨勶紝姝ゆ椂A*鍜孨avmesh鍙兘浼氶潰涓存棤娉曚嬌鐢ㄧ殑澧冨湴銆備笅闈㈣繖涓柟妗堟槸鍦ㄦ礂婢℃椂紿佺劧鎯沖埌鐨勶紝紜垏鐐瑰簲璇ョО涔嬩負閬塊殰綆楁硶錛屽洜涓哄畠婧愯嚜涔嬪墠鍋氭櫤鑳介伩闅滃皬杞︽椂鐨勭粡楠屻?/p> 璁撅紝瑙掕壊鍒扮洰鏍囩偣鐨勬柟鍚戝悜閲忎負D0錛屾姇灝勭嚎闀垮害涓篖錛屾帰嫻嬮棿闅欒涓何革紝N = 180 / 胃錛岀畻娉曟祦紼嬪涓嬶細 綆楁硶閫氳繃浼樺厛鎼滅儲鐩爣鏂瑰悜宸﹀彸鏃犻殰紕嶇┖闂達紝鍑忓皯媯嫻嬫鏁幫紝閫氳繃璁劇疆胃鍜孡鍙互鎺у埗媯嫻嬬簿搴﹀拰鑼冨洿銆傛澶栵紝璁劇疆鍚堥傜殑Collision Matrix鍜屾嫻嬮鐜囧彲浠ョ害鏉烺ayCast鐨勬ц兘寮閿銆?/p> 鍥㈤槦鍦ㄤ嬌鐢║GUI鏃訛紝鍙戠幇鍏禣utline瀹炵幇鏄皢鏂囧瓧鐨勯《鐐瑰湪涓婁笅宸﹀彸鏂瑰悜涓婂仛鍋忕Щ鐢熸垚浜嗘柊鐨勯《鐐癸紝鎵浠ラ《鐐瑰拰涓夎闈㈡暟閲忛兘澧炲姞浜?鍊嶃傚彈Glow涓璆aussian Filter鍙疄鐜拌竟鐣屽鎵╂晥鏋滅殑鍚彂錛屽仛浜嗕釜瀹為獙錛屽湪絎竴涓猵ass涓嬌鐢‵ilter瀵笷ont Texture鐨凙lpha榪涜4鎴栬?鏂瑰悜閲囨牱錛岀浜屼釜pass姝e父娓叉煋瀛椾綋錛岀劧鍚庡皢涓よ呰繘琛孉lpha blend銆?/p> No Outline Tow-Pass Outline with Four-Direction Sampling Outline in UGUI 浠庣粨鏋滀笂鏉ョ湅錛屽湪涓瀹氳寖鍥寸殑綰圭悊鍧愭爣鍋忕Щ涓嬪彲浠ユ帴鍙楋紝浣嗛檺鍒朵篃寰堟槑鏄撅紝涓嬪浘鏄亸縐昏繃澶у鑷村け鐪?/p> 涓嶇浣跨敤閭g鏂瑰紡錛岄兘闇瑕佸皢紱繪暎鐐硅繘琛屾彃鍊鹼紙interpolation錛変互渚垮緱鍒板鉤婊戣礬寰勩傝繖閲屽氨鐗墊秹鍒頒綅緗彃鍊煎拰鏈濆悜鎻掑箋? 浠庢彃鍊煎嚱鏁頒笂鍙垎涓轟笁綾伙細1錛夌嚎鎬э紱2錛夊欏瑰紡錛?錛夋牱鏉°傞【鍚嶆濅箟錛岀嚎鎬ф彃鍊奸噰鐢ㄧ嚎鎬у嚱鏁幫紝澶氶」寮忔彃鍊奸噰鐢ㄥ欏瑰紡錛岃屾牱鏉℃彃鍊煎垯閲囩敤浜嗕竴緇勫欏瑰紡緇勬垚鐨勫垎孌靛嚱鏁般傜敱浜庢憚鍍忔満鐨勫叧閿礬寰勭偣閫氬父閮戒細澶т簬2涓紝鎵浠ユ彃鍊兼柟娉曚笂灝卞繀欏婚夊彇鏍鋒潯鏂規硶銆? 涓銆佷綅緗彃鍊?/strong> 1.1 鏍鋒潯綾誨瀷閫夋嫨 鍦ㄨ繖閲屾垜浠粎鑰冭檻涓夋鏍鋒潯鎻掑鹼紝鍥犱負瀹冧滑鍙揪鍒癈2榪炵畫銆備笁嬈℃牱鏉′腑涓昏浠ezier銆丆atmull-Rom銆佸潎鍖B鏍鋒潯涓鴻冩煡瀵硅薄錛屽畠浠兘鍏鋒湁璁$畻寮閿灝忕殑浼樼偣銆傚彲浠ラ氳繃涓嬮潰鍏紡鏉ュ畾涔夊畠浠細 綆鍖栦負錛? 涓嬮潰琛ㄦ牸鍒楀嚭浜嗕笁縐嶆彃鍊兼洸綰垮搴旂殑G鍜孧錛? 濡備笅鍥炬墍紺猴紝瀵?涓偣榪涜Bezier鎻掑煎緱鍒扮殑鏇茬嚎鍙細鏈変袱涓偣琚洸綰跨┛榪囷紝鑰孊-Spline鎻掑煎緱鍒扮殑鏇茬嚎涓嶄細緇忚繃鎺у埗鐐癸紝鍙湁Catmull-Rom Spline鍙互寰楀埌絀胯繃闄よ搗鐐瑰拰緇堢偣涔嬮棿鐨勬墍鏈夋帶鍒剁偣銆傛鍥犱負Catmull-Rom鍏鋒湁榪欎釜鐗規э紝浣垮緱瀹冭騫挎硾鍦板簲鐢ㄥ湪鍏抽敭甯у鉤婊戞彃鍊間笂錛屽洜姝ゆ垜浠夋嫨浜咰atmull-Rom鏍鋒潯浣滀負鎽勫儚鏈轟綅緗偣鐨勬彃鍊肩畻娉曘? 1.2 瀹炵幇 鍙傝冿細 [1] Mathematics for 3D Game Programming and Computer Graphics 3e by Eric Lengyel [2] http://en.wikipedia.org/wiki/Catmull-Rom_spline#Catmull.E2.80.93Rom_spline [3] http://www.codeproject.com/Articles/30838/Overhauser-Catmull-Rom-Splines-for-Camera-Animatio 浜屻佹湞鍚戯紙鏃嬭漿錛夋彃鍊?/strong> 2.1 Euler Angles VS Quaternion 涓夌淮絀洪棿涓弿榪版棆杞殑涓昏鏂規硶鏈塃uler Angles鍜孮uaternion銆侲uler Angles鏈変笁涓槑鏄劇殑闂錛?錛変笁杞翠笂鐨勬棆杞『搴忔晱鎰燂紱2錛塆imbal Lock鐜拌薄瀵艱嚧鏃嬭漿鑷敱搴︿涪澶憋紱3錛夌嫭绔嬪湴瀵逛笁涓棆杞垎閲忚繘琛屾彃鍊鹼紝蹇界暐浜嗕笁杞翠箣闂寸殑渚濊禆鍏崇郴錛屽鑷存彃鍊肩粨鏋滀笉鐞嗘兂銆備笌Euler Angles涓嶅悓鐨勬槸錛孮uaternion娌℃湁灝嗘棆杞垎瑙e埌涓変釜杞村悜涓婏紝鑰屾槸鐢ㄤ竴涓棆杞醬鍜岀粫璇ヨ醬鐨勬棆杞搴︽潵鎻忚堪錛屾墍浠ヤ粠鏍規湰涓婃秷闄や簡Euler Angles鐨勪笁澶ч棶棰樸傛湁鍏砆uaternion鐨勮緇嗘弿榪板彲鍙傝僛1]錛屽湪姝や笉鍐嶇瘡榪般? 2.2 LERP VS SLERP 鍥涘厓鏁扮嚎鎬ф彃鍊鹼紙Linear Quaternion interpolation錛夌殑璁$畻鍏紡涓猴細 鍥涘厓鏁扮悆闈㈢嚎鎬ф彃鍊鹼紙Spherical Linear Quaternion interpolation錛夌殑璁$畻鍏紡涓猴細 鍏朵腑錛屛鎬負涓や釜鍥涘厓鏁扮殑澶硅銆? 涓轟簡鏂逛究灞曠ず錛屾垜浠冭檻鍦?D鎯呭喌瀵硅搴榪涜涓ゆ鎻掑鹼紝涓ょ綆楁硶鍦ㄦ彃鍊兼晥鏋滀笂瀛樺湪鐨勫樊寮傦紝濡備笅鍥撅紙b涓篖ERP銆乧涓篠LERP錛夛細 浠庡浘涓彲浠ョ湅鍑篖ERP鍏跺疄鏄涓ゅ洓鍏冩暟鍦ㄥ渾涓婄殑寮﹁繘琛屼簡絳夊垎錛岃孲LERP鍒欐槸瀵瑰渾寮ц繘琛岀瓑鍒嗐傜敱姝ゅ緱鍑虹殑緇撹鏄紝SLERP寰楀埌浜嗘瘮LERP鏇村鉤婊戠殑鎻掑肩粨鏋溿? 涓轟簡淇濊瘉鎻掑兼洸綰跨殑C2榪炵畫鎬э紝闇瑕佷嬌鐢ㄧ悆闈㈠洓杈瑰艦鎻掑鹼紙Spherical Quadrangle interpolation錛夋柟娉曘備緥濡傦紝瀵筿1鍜宷2鎻掑鹼紝棣栧厛瑕佺敤q0銆乹1銆乹2銆乹3璁$畻鍑轟袱涓帶鍒剁偣錛圛nner Quadrangle Point錛夛紝鍏紡濡備笅錛? 鐒跺悗閫氳繃涓嬪紡寰楀埌鏈緇堟彃鍊肩粨鏋滐細 2.3 瀹炵幇 涓婇潰浠g爜娌℃湁鑰冭檻涓や釜鍥涘厓鏁頒箣闂村す瑙掑ぇ浜?80擄鐨勬儏鍐點備緥濡傦紝鑰冭檻q1->q2鐨勬彃鍊艱搴ξ?gt;180擄錛屾垜浠彲浠ヨq1->q2鍙嶅悜鏃嬭漿2蟺-胃錛屽嵆鏃嬭漿-(2蟺-胃)錛屾牴鎹洓鍏冩暟鐨勫畾涔塠v*sin(胃/2) , cos(胃/2)]錛岄偅涔堝q2榪涜澶勭悊鍙樹負[-v*sin(胃/2) , -cos(胃/2)]銆傝繖涓鐞嗗彲浠ユ斁鍦ˋddSplinePoint涓潵鍋氾細 鍙傝冿細 [1] Quaternions, Interpolation and Animation by EB Dam - 1998 鍐呭瓨娉勬紡媯嫻嬬殑鍩烘湰姝ラ鏄細1錛夊寘瑁咃紙閲嶈澆錛夊唴瀛樺垎閰?閲婃斁API錛?錛夎繘琛屽唴瀛樺垎閰嶆椂璁頒笅鐩稿叧淇℃伅錛氬湴鍧銆佸ぇ灝忋佽皟鐢ㄦ爤錛?錛夐噴鏀炬椂娓呴櫎涔嬪墠璁板綍鐨勫搴斾俊鎭紱4錛夌▼搴忛鍑烘椂錛堢‘淇濆湪鎵鏈夊唴瀛橀噴鏀炬搷浣滃畬鎴愪箣鍚庯級錛岃緭鍑哄墿涓嬬殑璁板綍銆傚叾涓紝瀵硅繘琛屽垎閰嶆搷浣滄槸鐨勮皟鐢ㄦ爤鍥炴函鏄釜閲嶇偣淇℃伅錛屽畠鑳藉甯姪鎴戜滑鎵懼嚭鍐呭瓨娉勬紡浠g爜銆? Windows涓殑Dbghelp搴撴彁渚涗簡涓板瘜鐨勮皟璇旳PI銆係tackWalk搴旇鏄繘琛屾爤鍥炴函鏈鐩存帴鐨勪竴縐嶆帴鍙d簡錛屼絾鏄畠涓嶅蹇傚鏋滆兘鍏堣褰曚笅璋冪敤鏍堜笂鐨凜ALL鎸囦護鍦板潃錛岀劧鍚庡湪杈撳嚭鏃ュ織鏃惰В鏋愬嚭絎﹀彿錛屽皢浼氬ぇ澶ч檷浣庢嫻嬫満鍒跺紼嬪簭鏈韓鎬ц兘鐨勫獎鍝嶃侱bghelp搴撲腑鎻愪緵浜哠ym*FromAddr緋誨垪API錛屽彲浠ラ氳繃鎸囦護鍦板潃鑾峰彇鍑芥暟絎﹀彿錛岄偅涔堝墿涓嬬殑灝辨槸濡備綍璁板綍鎸囦護鍦板潃鐨勯棶棰樹簡銆備粠緗戜笂鍊熶簡涓寮爔86璋冪敤鏍堢ず鎰忓浘錛屽涓嬶細 浠庡浘涓彲浠ョ湅鍑猴紝Callee鐨凟BP濮嬬粓鎸囧悜Caller鐨凟BP錛孍BP涓嬮潰鏄寚鍚慍aller涓嬩竴鏉℃寚浠わ紙娉ㄦ剰x86浣撶郴涓嬫爤鐨勫闀挎柟鍚戞槸灝忓湴鍧錛夛紝鍥犳閫氳繃EBP灝卞彲浠ュ洖婧暣涓皟鐢ㄦ爤浜嗐傞氳繃涓嬮潰浠g爜鍙互瀹炵幇姝ゅ姛鑳斤細 瀹忓弬鏁癴rame鏄釜void*鎸囬拡鏁扮粍錛屾暟緇勭殑澶у皬鍙栧喅浜庢兂瑕佸洖婧殑鏍堟繁搴︺傚唴瀛樺垎閰嶅拰鍥炴敹鐨勫寘瑁呬唬鐮佸涓嬶細 鎴戜滑鐪嬪埌錛屽唴瀛樼鐞嗙郴緇熷唴閮ㄧ粓絀惰繕鏄浣跨敤璇█鎻愪緵鐨勫唴瀛樺垎閰?閲婃斁API錛屽彧瑕侀厤瀵瑰疄鐜頒簡鍒嗛厤涓庨噴鏀劇鐞嗭紝緋葷粺鍐呴儴鐨勬棤娉勬紡鏄緢瀹規槗淇濊瘉鐨勩傚湪榪欓噷鐫閲嶈瑙e師鐞嗭紝灝變笉閲嶈澆new/delete operator浜嗐傛渶鍚庣湅涓涓嬭皟鐢ㄦ爤鍑芥暟絎﹀彿鐨勫洖婧唬鐮侊細 鎴戜滑鐢ㄤ笅闈唬鐮佸仛嫻嬭瘯鐢ㄤ緥錛? 娉勬紡媯嫻嬬粨鏋滐細 鍙傝冿細 [1] Using DbgHelp 鎴戞兂浜嗕袱縐嶆柟妗堬紝鏈鍒濈殑鏂規鐏墊劅鏉ヨ嚜鍏夌嚎鍙嶅皠錛屽涓嬪浘鎵紺恒? 鍥犱負闃繪尅鏍煎瓙鏄醬瀵歸綈鐨勶紝閫氳繃娉曞悜閲弉鍙互寰楀埌b鐐圭殑鍙嶅皠鍚戦噺e'-o錛屽皢|e'-o|闄愬畾鍦ㄤ竴涓浐瀹氬鹼紝姝ゆ椂濡傛灉e'涓嶅湪闃繪尅閲岄潰錛屽氨灝嗗畠浣滀負鏂扮殑緇堢偣銆傝鏂規鐨勫疄楠岀粨鏋滀笉澶護浜烘弧鎰忥紝褰撹鑹茬闃繪尅杈冭繎鏃舵柇緇劅澶槑鏄撅紝鍥犱負|e' - b|鐨勯暱搴﹁緝鐭傚彟澶栧畠涓嶈兘澶勭悊e'鍦ㄩ樆鎸¢噷鐨勬儏鍐碉紝琚崱浣忎笉鍔ㄧ殑姒傜巼渚濈劧杈冨ぇ銆? 絎簩縐嶆柟妗堟槸鏍規嵁縐誨姩瓚嬪悜鍦ㄤ竴涓醬鍚戞壘涓涓彲杈捐瘯鎺㈢偣錛岀劧鍚庣敤闄愬埗浜嗘悳绱㈢┖闂達紙鎼滅儲鑺傜偣鍦?0浠ュ唴錛夌殑A*綆楁硶鎵懼埌涓鏉″埌璇曟帰鐐圭殑璺緞錛屽涓嬪浘銆? 璁綿iff_x = 緇堢偣x - 璧風偣x錛宒iff_y = 緇堢偣y - 璧風偣y錛屽綋diff_x > diff_y錛岃瀹氫負瓚嬪悜x鏂瑰悜涓婄Щ鍔紝鍦ㄨ繖縐嶆儏鍐典笅鍦ㄧ粓鐐箉杞村悜涓娐?0涓牸瀛愬唴鍘繪壘鍒頒竴涓渶鎺ヨ繎緇堢偣鐨勬棤闃繪尅鐐癸紙縐板畠涓哄彲杈捐瘯鎺㈢偣錛夈傜敱浜庤瘯鎺㈢偣涓庣帺瀹跺綋鍓嶇偣鏋佹湁鍙兘鏄洿綰夸笉榪為氱殑錛岃屼笖瀹冧滑涓嶅彲鑳藉お榪滐紝鎵浠ヤ嬌鐢ㄤ簡涓涓皢鎼滅儲鑺傜偣涓暟闄愬埗鍦?0浠ュ唴A*鏉ュ緱鍒頒竴鏉¤礬寰勩傝鏂規澶ч儴鍒嗘儏鍐甸兘鑳藉湪杈圭紭鎵懼埌鍚堢悊鐐癸紝浣嗗鏋滅帺瀹跺瀭鐩撮潰鏈濋樆鎸″唴縐誨姩涓斾笉鑳藉湪闄愬埗鎼滅儲鑼冨洿鍐呮壘鍒板彲杈劇偣錛岃鑹插氨浼氬崱浣忎笉鍔紝榪欑鎯呭喌灝卞彧鑳借鐜╁鑷繁璋冩暣涓涓嬫湞鍚戜簡銆? 闇瑕佹敞鎰忕殑鏄紝濡傛灉鏄涓弬鏁幫紝Lua鐨勫帇鏍堥『搴忔槸object pointer銆佸弬鏁頒粠宸﹀埌鍙籌紝鎵浠ユ爤欏跺厓绱犳槸鍑芥暟絳懼悕鏈鍙寵竟鐨勫弬鏁般?/p> 涓銆佹墿灞昄ua Lua鏍稿績寰堝皬錛屼富瑕佸寘鍚竴涓В閲婂櫒錛屽叾浠栧姛鑳藉彲浠ラ氳繃鍔ㄦ佸簱鐨勫艦寮忎綔涓烘彃浠舵潵鎵╁睍錛宨o銆乻tring銆乵ath銆乼able絳夊唴緗簱閮芥槸閫氳繃姝ゆ柟寮忔潵瀹炵幇錛屽彧鏄粬浠闆嗘垚鍒頒簡涓涓猯ua.dll涓艦浜嗐傚埗浣滀竴涓姩鎬佸簱褰㈠紡鐨刴odule錛岄渶瑕佸湪浠g爜涓氳繃luaL_Reg鏁扮粍鎸囧畾lua function鍒癱 function鐨勬槧灝勶紝鎺ョ潃瀹炵幇c function錛屾渶鍚庡湪luaopen_xxx(xxx涓簃odule name)娉ㄥ唽榪欎釜luaL_Reg銆傝繖閲岀粰鍑轟竴涓潪甯哥畝鍗曠殑渚嬪瓙錛屽畠浣跨敤VC++鍒涘緩涓涓狢onsole DLL錛?/p> 緙栬瘧鎴恉ll鍚庢斁鍒發ua瑙i噴鍣ㄧ洰褰曚笅銆侺ua test code錛?/p>
require "mymathlib" local a = mymathlib.sin(0.5) 浜屻佷綔涓鴻剼鏈郴緇?/strong> Lua搴旂敤鏈澶氱殑棰嗗煙褰撳睘娓告垙寮鍙戯紝WOW鐨刄I鍜屾彃浠惰瀹冨悕澹板ぇ鍣傚湪榪欑搴旂敤涓紝Lua浣滀負搴旂敤紼嬪簭鐨勪竴涓瓙緋葷粺錛岀敤浣滈厤緗垨鑰呬笟鍔″鐞嗐傚湪灝哃ua涓庡簲鐢ㄩ泦鎴愯搗鏉ユ椂錛屽繀欏葷敤鍒癓ua C API錛屾牴鎹叾瑙勮寖錛屼綘闇瑕佸啓涓緋誨垪鐨剆tatic鍑芥暟錛屼綔涓篖ua涓庡簲鐢ㄧ▼搴忕殑綺樺悎浠g爜銆傚鏋滆鍦↙ua浣跨敤C++瀵硅薄錛屽彲灝嗗叾浣滀負userdata錛屼負瀹冨垱寤轟竴涓猰etatable錛屽茍灝嗙矘鍚堝嚱鏁版斁鍏ュ叾涓紝鍏抽敭鏄璁_index鎸囧悜metatable鑷韓錛岃繖鏍峰綋Lua璁塊棶userdata鐨刦ield鏃訛紝__index浼氬紩瀵煎畠鍘繪悳绱etatable鑷韓錛屼粠鑰岃幏寰楁敞鍐岀殑綺樺悎鍑芥暟銆?/p>
鏈夊緢澶氬紑婧愮殑綺樺悎浠g爜鐢熸垚鍣紝浠栦滑閮芥槸鍦╬recompile鏃跺仛浜嗕竴浜涘伐浣滐紝鍥犺屼笉鏄嬌鐢╩acro灝辨槸template錛岃繖涓ょ鏂規硶鐨勪唬琛ㄦ槸toLua++鍜宭uaBind銆備釜浜烘洿鍊懼悜浣跨敤toLua++錛屼竴鏂歸潰榪欑鏂瑰紡姣旇緝鐩寸櫧錛屽彟涓鏂歸潰鏈漢寮變簬浣跨敤template銆傚湪WGAME涓篃灝嗗師鏉ュ啓寰椾笉鏄緢濂界殑bind浠g爜鏇挎崲鎴愪簡toLua++錛岀洰鍓峌I鍜屽叧鍗¢昏緫閲嶅害浣跨敤浜哃ua錛屼駭鐢熺殑bind浠g爜浼氭湁鍑犱竾琛岋紝鐢變簬欏圭洰閲囩敤浜嬩歡椹卞姩鐨勬柟寮忥紝鍦╬rofile鏃剁湅鍒板娓告垙鏁翠綋鎬ц兘褰卞搷闈炲父灝忋俵uaBind澶ф浜嗚В榪囷紝娌℃湁鍦ㄥ疄闄呴」鐩腑鐢ㄨ繃錛屽湪姝ゅ氨涓嶅仛璇勮浜嗐?/p>
鍦ㄤ嬌鐢╰oLua++鏃舵垜鏈濂藉鐨勬槸瀹冨C++鍏抽敭鐗規ф槸濡備綍鏀寔鐨勩傞櫎浜嗕笂闈㈣鐨勬垚鍛樺嚱鏁板錛屽浜庡鎬佺殑鏀寔錛屽畠鏄氳繃鍦╯tatic鍑芥暟鍚庡姞緙栧彿錛岃皟鐢ㄦ椂鍒ゆ柇鍙傛暟鏄惁瀵瑰簲鏉ラ亶鍘嗘壘鍒版紜畇tatic鍑芥暟鐨勶紱瀵逛簬澶嶆潅鎴愬憳鍙橀噺錛屽畠浼氳嚜鍔ㄧ敓鎴恎et/set鏂規硶錛涜岀戶鎵垮叧緋伙紝鍒欐槸閫氳繃瀛愮被灝嗙埗綾諱綔涓簃etatable鏉ュ疄鐜般傜鐫閲嶆柊鍙戞槑杞﹁疆鐨勭簿紲烇紝鎴戣瘯鐫鍐欎簡涓涓畝鍖栫殑鑷姩鐢熸垚鍣╗鎴戝湪github涓?/a>]銆傛垜瀹氫箟浜嗗嚑涓叧閿瓧浣滀負綾諱笌鏂規硶鐨勫鍑烘爣璇嗭細 {module_begin = "LUACBIND_MODULE_BEGIN" , module_end = "LUACBIND_MODULE_END" , method_begin = "LUACBIND_METHOD_BEGIN" , method_end = "LUACBIND_METHOD_END"} util.h瀹氫箟浜嗕駭鐢焍ind浠g爜闇瑕佺殑瀹忥紝parser.lua瀵規寚瀹氱殑.h鏂囦歡榪涜鎵弿浜х敓bind浠g爜錛屽湪main鍑芥暟涓璻egister鍚庯紝灝卞彲浠ュ湪lua涓嬌鐢ㄤ簡銆?/p>
涓夈佽皟璇曞櫒 Lua鐨凜 API鍜孌ebug搴撴彁渚涗簡瀹炵幇璋冭瘯鍣ㄧ殑蹇呰鏂規硶錛屽搴斾簡涓ょ瀹炵幇鏂瑰紡錛氫竴縐嶆槸Remdebug鎵閲囩敤鐨勶紝鐩存帴鐢╨ua瀹炵幇錛涘彟澶栦竴縐嶆槸浣跨敤C API銆備笉綆″摢縐嶆柟寮忥紝浣跨敤HOOK閮芥槸蹇呴』鐨勶紝浣嗕嬌鐢↙ua debug搴撲細姣擟 API鏇存柟渚匡紝鍥犱負涓嶇敤鑰冭檻鏍堝鉤琛¢棶棰樸傚湪鐢– API瀹炵幇璋冭瘯鍣ㄦ椂錛屽彲鐢╨ua_newthread鍒涘緩涓涓猚oroutine錛屼箣鍚巠ield/resume/getstack/getlocal閮戒綔鐢ㄥ畠涓婇潰錛宐reakpoint閫氬父浼氶噰鐢ㄥ湪hook涓瓂ield鐨勬柟寮忔潵瀹炵幇錛屼絾涓嶈兘絳塰ook榪斿洖涔嬪悗鍘昏繘琛屾爤鍥炴函錛屽洜涓簍raceexec鏍規嵁hook mask璋冪敤瀵瑰簲hook鍑芥暟鍚庯紝濡傛灉state鏄負LUA_YIELD鐘舵侊紝灝嗕細璋冪敤luaD_throw錛屾渶緇堜嬌鐢╨ongjmp瀵艱嚧鏃犳硶榪涜鍥炴函銆?/p>
鍒╃敤鏄ヨ妭鍊肩彮涓ゅぉ娓呴棽鏃跺厜錛屽熀浜巐ua 5.2瀹炵幇浜嗕竴涓懡浠よ璋冭瘯鍣╗鎴戝湪github涓?/a>]錛岀洰鍓嶄粎鏈夊嚑涓畝鍗曠殑鍔熻兘錛氬姞杞?榪愯lua鑴氭湰銆佽緗?娓呴櫎鏂偣銆佸崟姝ャ佹煡鐪嬬畝鍗曠被鍨嬪彉閲忓鹼紝鍛戒護鏍煎紡鍙弬鑰僐EADME銆?/p> 鏍稿績鏁版嵁緇撴瀯鎴戦噰鐢ㄩ摼琛ㄦ暟緇勶紝灝嗙浉鍚岄鑹蹭笖閭繪帴鐨勬場娉′覆鎴愪竴涓摼琛ㄣ傞噰鐢ㄨ繖縐嶆暟鎹粨鏋勶紝鏄熀浜庝笅闈㈣冭檻錛?錛夐氳繃棰滆壊鍒掑垎緙╁皬鎼滅儲鍖哄煙錛?錛夋病鏈夋帓搴忥紝娌℃湁涓棿鎻掑叆鑺傜偣鐨勯渶姹傦紱3錛夎妭鐪佸唴瀛樸傚綋鐒訛紝娓告垙鐣岄潰涓殑娉℃場榪樻槸鎶婂畠瀵瑰簲鍒頒竴涓簩緇存暟緇勪腑錛屾瘡涓厓绱犲瓨鍌ㄤ竴涓場娉″璞$殑鎸囬拡錛岃瀵硅薄涓嚦灝戝寘鍚細棰滆壊銆佸潗鏍囷紝鍒嗗箋傚涓嬪浘鎵紺猴細 鍓╀笅闇瑕佽冭檻鐨勬槸鍙戝皠娉℃場棰滆壊濡備綍浜х敓錛熷鏋滀粠絀哄叧鍗″紑濮嬶紝鍓嶉潰鍙互鐢ㄩ殢鏈猴紝鍚庨潰灝辮浣跨敤緇熻淇℃伅浜嗐傚湪姣忎釜閾捐〃澶村彲浠ョ粺璁¤鍫嗘場娉″紑闂с佹暟閲忕瓑錛屽埄鐢ㄨ繖浜涗俊鎭彲浠ュ喅瀹氬彂灝勬場娉$殑棰滆壊銆? 鍑嗗: 1錛塙SB DOS鍚姩鐩橈紱 2錛塇DDHackr 1.3鍜?60 320 GB鍥轟歡錛? 3錛変竴鍙版敮鎸丼ATA鎺ュ彛鐨勭數鑴戙傦紙鎴戞湁涓鍙癝ATAIII鎺ュ彛鐨凱C鍜屼竴鍙版敮鎸丼ATAII鐨凾hinkPad X200絎旇鏈級 鍦≒C涓婅繍琛屽け璐ヤ簡,鍑虹幇涓嶈兘鍐欏叆鐨勯棶棰橈紝鍦╔200絎旇鏈笂鎴愬姛浜嗐傚湪姝よ繃紼嬩腑,鍙渶瑕侀夋嫨鍐欏叆鍥轟歡,紼嬪簭浼氬府浣犺嚜鍔ㄥ浠藉師鍥轟歡銆傞渶瑕佸Ε鍠勪繚綆″師鍥轟歡錛屼互渚垮悗闈㈤渶瑕佺敤鍋氭暟鎹‖鐩樼殑鏃跺欏彲浠ユ仮澶嶃?/p> 鐒跺悗榪涘叆BIOS錛屽皢SATA妯″紡浠嶢HCI鏀逛負Enhanced IDE錛堝湪鎴戠殑鐢佃剳涓婁篃涓嶈兘鐢–ompatible IDE錛屼笉鐒朵細鍑虹幇鍙互璇嗗埆涓嶈兘璇誨彇鐨勯棶棰橈級銆傝嚦浜嶺BOX浣曟椂鍚姩鐨勯棶棰橈紝鎴戠粰鍑虹殑緇撹鏄棤鎵璋擄紝濡傛灉XBOX鍚庡惎鍔紝鍒欓渶瑕佽繘璁懼綆$悊鍣ㄦ壂鐬勪竴涓嬫柊璁懼銆傚湪鏁翠釜鎿嶄綔榪囩▼涓紝铏界劧鍦ㄨ澶囩鐞嗗櫒涓湅涓嶅埌鍏夐┍錛屼絾鏄繘鍏F鐨凞VDKey 32欏電鏄彲浠ョ湅鍒扮殑錛堟敞鎰忛夋嫨I/O Port錛夈傚鏋滄槸絎竴嬈℃彁鍙栧厜椹辯殑KEY錛孌VD KEY涓欏逛細鏄劇ずnot found錛岃繖鏄甯哥殑錛屽洜涓虹▼搴忔壘涓嶅埌涓庡凡鐭EY鍖歸厤鐨勩傛渶鍚庣偣鍑籗limKey錛岃繃紼嬩腑涓嶈unlock銆? 鎺ヤ笅鏉ュ氨鏄幓緗戜笂娣?504錛屽皢0225涓婃彁鍙栫殑KEY鍚堝叆鍏朵腑銆? 琚獥浜嗭紝鎷垮埌鐨勮繕鏄?225錛屽煎緱搴嗗垢鐨勬槸鍏夐┍鏄?2騫?鏈堜喚鐨凪XIC鐗堬紝鍏蜂綋鐢ㄤ粈涔堟柟娉曠牬瑙g殑錛屾垜涔熼毦鐨勫幓鎷嗗紑緇嗙┒銆傞棶浜哃T鍒風殑鏄摢涓増鏈紝鍥炵瓟鏄?.0銆傚湪緗戜笂鍙堜拱浜嗕袱寮燣T3.0鍜屼竴寮犱笉鍒嗙増鏈殑錛堝簲璇ュ氨鏄綆浜嶢P2.5鐨勫惂錛夈傜粨鏋滄槸3.0鍙互瀹夎錛岃繍琛屾彁紺猴紓姝ゅ厜鐩樹笉鏀彺錛傦紝鍙﹀涓寮犱笉鍒?.0榪樻槸3.0鐨勫彲浠ヨ繍琛岋紝浜庢槸寮濮嬫鐤戝厜椹卞埛鐨勬槸2.0銆備負浜嗛獙璇佽嚜宸辯殑鎬鐤戯紝鍐沖畾鑷繁鍔ㄦ墜鍒稬T plus 3.0錛屽彟涓鏂歸潰涔熼獙璇佷竴涓嬬牬瑙f槸鍚﹀畬緹庯紙涓嶇敤鎷嗘澘鐒婄嚎灝卞彲浠ュ弽澶嶅埛錛夛紝緇撴灉灝嗗喅瀹氭槸鍚﹂鎺夊厜椹便? 鍦╓in7涓嬭瘯浜哊嬈★紝SATA1,6閮借瘯浜嗭紝灝辨槸鍐欏叆涓嶄簡錛坰tatus 0x051錛夛紝浣嗘槸鍙互璇嗗埆鍜岃KEY銆傛病鍔炴硶錛屾敼鍙樼瓥鐣ワ細1)鍏堢敤JF鎷垮墠闈㈡彁鍙栫殑KEY鍜孡T+3.0鍚堟垚鍥轟歡錛?)鐢║鐩樺惎鍔紝鍒扮函DOS涓嬩嬌鐢╠osflash鏉ュ啓鍏ュ浐浠躲傝繖涓柟妗堝緢濂忔晥錛屾垚鍔熷啓鍏ュ浐浠訛紝鍒皐in7涓嬬敤JF鏌ョ湅鍏夐┍KEY鐨勭姸鎬佹槸verified銆傚惎鍔?60錛屼拱鐨凩T3.0紕熷瓙閮借兘鐜╀簡銆? 緗戜笂鐨勮祫鏂欑箒鏉傝岄毦浠ヨ鯨鍒湡浼紝鎵浠ュ嚒浜嬮兘瑕佽嚜宸卞疄璺點傝ˉ鍏呬竴涓嬶細 1錛塪ashboard鐗堟湰涓庡埛鍏夐┍鍥轟歡鏈夋病鏈夊叧緋伙紵娌℃湁銆傚厜椹辯殑鐢墊簮鎺ュ彛鎻愪緵涓夌鐢靛帇(3.3銆?.0銆?2錛夈佸嚭鑸辨帶鍒躲佹墭鐩樼姸鎬佸鍏朵綑閮芥槸鍦扮嚎錛屾墍浠ュ埛鏈烘椂鐨勬暟鎹氳鍙細閫氳繃SATA綰夸紶杈擄紝鍥犳360鏃犳硶騫查鍒鋒満榪囩▼銆傛垜鐢╱鐩樼綰夸粠13599鏇存柊鍒頒簡鏈鏂扮殑15574錛岃兘鐜┿岄粦鑹茶鍔?銆嶃併屾瀬鍝?7銆嶃併屽繊榫?銆嶃? 2錛夐獙璇佸厜鐩樻槸鍚︽槸LT3.0錛氱敤abgx鍔犺澆鍏夌洏淇℃伅錛屽鏋滃嚭鐜?strong>Topology data is currently verified灝辮鏄庢槸LT3.0錛堟敞鎰忓浜庤秴鍒葷殑紕燂紝鏅氬厜椹辨棤娉曡瘑鍒紝鎴栬呰鍙栧嚭閿欙級銆? 3錛塪osflash浣跨敤娉ㄦ剰浜嬮」錛氬皢SATA綰挎帴鍦ㄧ涓涓彛涓娿傝繘鍏os鍚庡厛鍒惎鍔?60錛岃繍琛宒osflash涓嬈★紝紜繚鎵鏈塻ata鎺ュ彛娌℃湁閿欒鎻愮ず銆傜劧鍚庢墽琛宒osflash錛屾甯告儏鍐典笅搴旇娌℃湁閿欒鎻愮ず錛屾渶鍚庨墂鐩存帴閫夊悎濂界殑鍥轟歡鍐欏叆銆? 嫻嬭瘯浠g爜闇瑕佸仛涓浜涜皟鏁達紝鎵嶈兘鏇村ソ鍦頒綋鐜板嚭GPU鐨勫鉤琛岃綆椾紭鍔匡紝榪欏叾涓壍娑夊埌鏀寔CUDA鐨凣PU鏋舵瀯鐭ヨ瘑錛屽湪榪欓噷鍋氫竴涓嬫⒊鐞嗐? 鍦∟vidia鎺ㄥ嚭Fermi鏋舵瀯涔嬪墠錛屾敮鎸丆UDA鐨凬vidia鏄劇ず鑺墖閮芥槸鐢卞涓猄treaming Multiprocessor錛堢畝縐癝M錛夌粍鎴愶紝姣忎釜SM鍖呭惈浜嗗叓涓猄tream Processor錛堢畝縐癝P錛夛紝姣忓洓涓猄P緇勬垚涓涓粍錛屼篃灝辨槸璇碨M瀹為檯涓婂彲浠ョ湅鎴愬寘鍚袱緇?D鐨凷IMD澶勭悊鍣ㄣ傛澶栵紝姣忎釜SM榪樺寘鍚玆egister銆乻hare memory銆乼exture cache浠ュ強constant cache銆傚湪鎵ц CUDA 紼嬪簭鐨勬椂鍊欙紝姣忎釜SM瀵瑰簲涓涓?block錛岃屾瘡涓猄P灝辨槸瀵瑰簲涓涓?thread銆傝櫧鐒朵竴涓猄M鍙湁鍏釜SP錛屼絾鏄敱浜嶴P榪涜鍚勭榪愮畻閮芥湁寤惰繜錛屾洿涓嶇敤鎻愬唴瀛樺瓨鍙栫殑寤惰繜浜嗭紝鍥犳 CUDA 鍦ㄦ墽琛岀▼搴忕殑鏃跺欙紝瀹為檯鏄互 warp 涓哄崟浣嶃傜洰鍓嶇殑鏀寔CUDA鏄懼崱錛屼竴涓?warp 閲岄潰鏈?2涓?threads錛屽垎鎴愪袱緇?6 threads鐨刪alf-warp銆傜敱浜嶴P鐨勮繍綆楄嚦灝戞湁4涓椂閽熷懆鏈熺殑寤惰繜錛屽洜姝ゅ涓涓?D鐨凷P鏉ヨ錛屼竴嬈¤嚦灝戞墽琛?6涓?threads(鍗?half-warp)鎵嶈兘鏈夋晥瑕嗙洊鎺夊悇縐嶈繍綆楃殑寤惰繜[1]銆? 鍥?1 鍦℅eForce GTX 400緋誨垪涓婏紝Nvidia閲囩敤浜嗗叏鏂扮殑Fermi鏋舵瀯[2]錛屼箣鍚庣殑鏄懼崱鐨凜ompute Capability涔熶粠1.3璺冨崌鑷?.0銆係P鏀瑰悕涓篊UDA Core錛屾彁鍗囧埌浜?2涓?SM[3]銆傚浘2涓篎ermi鏍稿績婕斿彉錛屼粠GF104鍜岀敱鍏跺彂灞曡搗鏉ョ殑GF114銆丟F106銆丟F108鐨凜UDA Core閮戒笂鍗囧埌浜?8涓?SM錛屾敮鎸?.1鐨凜ompute Capability錛岃孏F100鍜孏F110渚濇棫鏄?2涓傛渶鏂板熀浜嶬epler鏋舵瀯鐨凣eForce GTX 680鏀寔3.0鐨凜ompute Capability錛孋UDA Core鏁伴噺杈懼埌浜?92涓?SM銆? 鍥?2 鐢變簬嫻嬭瘯騫沖彴閲囩敤鐨勬槸GTX 560 Ti錛屾墍浠ラ渶瑕佸垎鏋愪竴涓嬪畠鐨勬灦鏋勩侴TX 560 Ti鐢?涓猄M緇勬垚錛屼笅鍥句腑錛屽乏杈規槸浠庣▼搴忚幏鍙栫殑璁懼灞炴э紝鍙寵竟涓哄崟涓猄M鍐呴儴緇撴瀯紺轟緥鍥俱傚彲浠ョ湅鍒幫紝GTX 560 Ti鐨勬瘡涓猄M閰嶅浜嗕袱涓猈arp璋冨害鍣紝鍥犳姣忎釜鍛ㄦ湡瀵逛袱涓寘鍚?2涓嚎紼嬬殑Warp榪涜鍒嗗彂銆傚彟澶栵紝瀵逛簬涓涓簩緇村浘鍍忥紝涓簁ernel鎸囧畾2D鐨刧rid鍜宐lock鍙嬌浠g爜鏇村姞鐩磋銆備負姝わ紝block閲囩敤錛?6,16錛夛紝鎬誨叡鍒嗛厤256涓紙64*4錛塼hreads鍦ㄤ竴涓猄M涓婃墽琛岋紝濡傛灉闇瑕佷駭鐢?024*1024鐨凧ulia鍒嗗艦鍥撅紝鍒欓渶瑕乬rid涓猴紙64,64錛夈? 鍥?3 嫻嬭瘯騫沖彴涓猴細 嫻嬭瘯浠g爜璇存槑錛?/strong> 1錛変唬鐮佸垎涓篊PU瀹炵幇鍜孋UDA瀹炵幇錛? 2錛夊潎閲囩敤CPU璁℃椂鏂規硶錛? 3錛夊彧閽堝璁$畻閮ㄥ垎嫻嬭瘯錛屼笉鍖呮嫭鍐呭瓨鍒嗛厤銆佷紶杈撲互鍙婃枃浠跺啓鍏ワ紱 涓嬮潰鍒楀嚭main鍑芥暟浠g爜錛屽乏杈逛負CPU瀹炵幇錛屽彸杈逛負CUDA瀹炵幇錛屽潎緙栬瘧涓簉elease鐗堟湰銆? 嫻嬭瘯緇撹錛?/strong>CPU鐗堟湰鑰楁椂244ms錛孋UDA鐗堟湰鑰楁椂2.1087ms銆傝繖鍙槸100鍊嶇殑鏁堢巼鎻愬崌鍟娿備笉榪嘋PU鐗堟湰娌℃湁緇忚繃澶氭牳浼樺寲錛屾墍浠ヨ繖鏍瘋繖鏍峰姣斿疄鍦ㄤ笉鍏鉤錛屼絾榪欏嵈鍑告樉鍑篊UDA C灝嗗茍琛屾濇兂铻嶅叆璇█瑙勫垯鐨勪紭鍔褲? 鍦ㄦ儕璁禛PU鐢ㄤ綔閫氱敤璁$畻鐨勬墽琛屾晥鐜囨椂錛屽埆蹇樹簡瀹冭繕鏄湁璇稿搴旂敤涓婄殑闂錛? 1)鍒濆鍖栬楁椂錛岄渶瑕佸湪鏄懼瓨鍒嗛厤絀洪棿錛岀劧鍚庡皢鏁版嵁浠庡唴瀛榗opy鍒版樉瀛橈紱 5)CPU綆楁硶鍒伴傚悎GPU鏋舵瀯綆楁硶鐨勭Щ妞嶏紱 鏈鍚庯紝GPU紜歡璁捐鏈韓灝卞凡緇忓喅瀹氫簡瀹冪殑寮洪」鏄瘑闆嗘暟鎹鐞嗭紙濡傦細縐戝璁$畻銆佸尰鐤楀浘鍍忓鐞嗭級錛屽湪閫昏緫澶勭悊鏂歸潰榪樻槸CPU鐨勫ぉ涓嬶紝鎵浠ュ畠浠槸浜掕ˉ鐨勶紝鍙細鏈夋暣鍚堣岄潪鏇夸唬鐨勮秼鍔褲? [1] http://www2.kimicat.com/gpu%E7%9A%84%E7%A1%AC%E9%AB%94%E6%9E%B6%E6%A7%8B [3] http://www.geeks3d.com/20100606/gpu-computing-nvidia-cuda-compute-capability-comparative-table 鏈夋椂鍊欙紝浣犱細紿佺劧瀵規煇浜嬪緢鎰熷叴瓚o紝浣嗙悊鎬ф濈淮浼氳浣犲喎闈欎竴涓嬶紝鐪嬫槸涓嶆槸涓鏃跺啿鍔ㄣ侼騫村墠錛屽鎽勫獎鐨勯渶姹備粎婊¤凍浜庢梾娓歌褰曪紝鎵浠ヤ竴鑸珼C灝辮凍澶熴備竴涓鏈堝墠錛屾兂瑕佹彁鍗囩収鐗囧搧璐ㄧ殑闇姹傜獊鐒朵覆浜嗗嚭鏉ワ紝璁╄繖縐嶆兂娉曞彂閰典簡鍑犲ぉ鍚庯紝鍙戠幇鍙兘鏄鍏ヤ竴鍙癉SLR鐨勬椂鍊欎簡銆傚湪Nikon D7000/Pentax K-5/Canon 60D涓夋嫨浜咾5錛屽氨鎴愬儚鏁堟灉D7000涓嶬5鏄悓涓妗f錛屽枩嬈5鐨勬墜鎰熷拰鍛抽亾錛屽皬宸ф槸涓緢閲嶈鐨勫洜绱狅紝榪欐牱鍚屾牱鍠滄鎽勫獎鐨凴ain涔熷彲浠ョ敤寰楀緢濂姐傚寰楃殑瀵圭劍緋葷粺鍜岄暅澶寸兢涓鍚戦兘琚獵N楗柗錛屼笉榪囦釜浜鴻涓篕5鐨勫鐒﹀湪鏃ュ父鎷嶆憚涓凡緇忓鐢紝闀滃ご灝戜絾鍏ㄣ傚浜庡垰浣跨敤DSLR涓嶄箙鐨勬垜鏉ヨ錛孌A 18-55mm F/3.5-5.6 AL铏界劧鍦ㄦ垚鍍忛攼搴︽柟闈㈠急浜嗙偣錛屼絾鏃ュ父鐨勯鏅漢鍍忚繕鏄凍澶熶簡銆侱A 55-300mm F/4-5.8 ED榪戠澶у厜鍦堟媿浜哄儚鐨勮櫄鍖栨晥鏋滃拰榪滅鎵撻笩鐨勮繙鎽勬晥鏋滈兘榪樻瘮杈冩弧鎰忥紝鐢變簬55-110鍏夊湀鍙互鎭掑畾鍦?錛?10-200鏈澶у厜鍦堟亽瀹氬湪4.5錛屾墍浠ヤ袱鑰呯粍鍚堣搗鏉ュ湪鎬т環姣斾笂瑕佹瘮DA 18-135mm F/3.5-5.6 ED楂樸傚嚖鍑?0mm F/1.7鎵嬪姩澶達紝鍦ㄦ垚鍍忔晥鏋滄柟闈㈢湡蹇冨寰楄搗315RMB錛屾湁鍏磋叮鐨勫悓瀛﹀彲浠ョ湅榪欓噷銆?/p> 鎽勫獎鎶鏈殑鎻愰珮鏄釜婕暱鐨勮繃紼嬶紝瀵瑰垵綰ч樁孌甸渶瑕佹帉鎻$殑鐭ヨ瘑錛屾垜鎬葷粨濡備笅錛?/p> 1錛夊櫒鏉愮殑鐔熸倝鍒扮簿閫氾細闃呰浣跨敤鎵嬪唽錛岀啛鐭ュ悇涓寜閽強閫夐」鐨勬剰涔夈?/p> 2錛変繚璇佸鐒︾偣錛堟兂鎷嶆憚鐗╋級娓呮櫚銆?/p> 3錛夌浉鏈虹殑鍩烘湰鍘熺悊錛氬揩闂ㄣ佸厜鍦堛佹劅鍏夊害瀵瑰獎鍍忕殑褰卞搷銆?/p> 4錛夋瀯鍥撅細宸﹀彸瀵圭О銆佷笁絳夊垎銆佹洸綰褲佸瑙掔嚎銆乀/L鍨嬨佹槑鏆楀姣斺?/p> 5錛夊厜綰挎劅鐭ワ細濡備綍鎵嶈兘鍋氬埌鍚堥傜殑鏇濆厜銆?/p> 6錛夊埄鐢ㄥ鍒扮殑鏂扮煡璇嗭紝涓嶆柇緇冧範錛岃鐩告満鎴愪負浣犵殑鍙︿竴鍙溂鐫涖?/p> 鍦ㄥ弬鑰冧功鏂歸潰錛岃櫧鐒跺弽鎰熲滃疂鍏糕濅箣嫻侊紝浣嗐婃暟鐮佸崟鍙嶆憚褰卞畬鍏ㄥ疂鍏搞嬭繕綆楁槸鏈笉閿欑殑鍏ラ棬涔︿簡錛屾兜鐩栦簡DSLR鐨勫熀紜鐭ヨ瘑錛屽姞涓婇厤鍥撅紙鍖呮嫭鎷嶆憚鍙傛暟錛夛紝鍙互鎻愬崌瀵瑰ソ鐓х墖鐨勮鐭ャ?/p> 鍐欐鏂囩殑鍚屾椂錛屽揩闂ㄦ暟涔熻繎3k浜嗭紝閬傚皢涓浜涗範浣滐紙娌℃湁鍚庢湡錛夋暣鐞嗕簡鏀懼叆flickr涓婏紝ID灝辮悓涓鐐瑰惂銆?a target="_blank">Pentax鐨勫皬鐪肩潧銆忋?/p> 褰煎緱媯殑銆婄悊瑙f洕鍏夈嬫槸鎴戝涔犵殑絎簩鏈功錛屽鎺屾彙嫻嬪厜鎶宸т粠鑰屾紜洕鍏夋湁寰堝ぇ甯姪錛岃窛紱繪墍鎯沖嵆鎵寰楃殑鐩爣鏈夎繎浜嗕竴姝ャ傛涔﹁繕娑夊強浜嗗揩闂ㄩ熷害銆佸厜鍦堝鎷嶆憚鏁堟灉浜х敓鐨勫獎鍝嶏紝搴旇鏄叆闂ㄨ呭繀璇葷殑涓鏈粡鍏鎬箣浣溿?/p> 鍥藉簡鍘諱簡鍘﹂棬錛岀粡榪囦竴涓湀鐨勫噯澶囷紝鎷嶅嚭鐨勭墖杈冧箣鍓嶆湁寰堝ぇ榪涙錛屾劅瑙夌敓媧誨張澶氫簡浜涗箰瓚c?/p> 浠庡ぇ瀛﹀埌鐜板湪閰嶈繃涓ゅ彴PC錛岀涓鍙癈eleron鐨勬満鍣ㄤ粠澶т簩鐢ㄥ埌鐮旂┒鐢熸瘯涓氾紝涔嬪悗寮濮嬬敤絎旇鏈傜浜屽彴PC鏄?9騫村叆鎵嬬殑錛岄偅闃靛瓙鐜╄秴棰戯紝浣嗗績嫻皵韜侊紝鑳′貢灝濊瘯涓涓嬪氨嫻呭皾杈勬浜嗭紝榪炰竴浜涘熀鏈師鐞嗛兘娌℃湁寮勬竻妤氥傛渶榪戝垰鎼炲ソ鏂版埧瀹夐】涓嬫潵錛屾湁浜嗚嚜宸辯殑宸ヤ綔闂達紝鍦ㄩ噸鏂扮粍瑁匬C鍜岃緗瓸IOS鐨勬椂鍊欏張鎯寵秴棰戜簡錛屼絾榪欐鎴戞湡鏈涘仛鍒扮煡鍏舵墍浠ョ劧錛屾晠鍦ㄧ綉涓婃煡闃呬簡涓浜涜祫鏂欐伓琛ヤ簡涓涓嬬‖浠剁煡璇嗭紝鏉冨綋浣滃涔犵瑪璁般傜敱浜庣綉緇滀笂鍏充簬紜歡錛堢壒鍒槸鍐呭瓨閮ㄥ垎錛夌煡璇嗗緢鏉傦紝浠呬互鑷繁璁や負姣旇緝闈犺氨鐨勫唴瀹逛負渚濇嵁錛屽鏈変笉鍑嗙‘涔嬪錛屾榪庢寚姝c傜敱浜庝嬌鐢ㄧ殑鏄疘ntel CPU錛屾湰鏂囬檺浜嶪ntel鏋舵瀯錛屼笖涓嶉傜敤I緋誨垪鏋舵瀯銆?
鎬葷嚎姒傝
浜屻佹湳璇?/font>
涓繪澘鑺墖緇勶細鍖楁ˉ鑺墖鍜屽崡妗ヨ姱鐗囥?
鍖楁ˉ錛圢orthbridge錛夛細PC涓繪澘鑺墖緇勫叾涓箣涓錛岃璁$敤鏉ュ鐞嗛珮閫熶俊鍙鳳紝涓嶤PU銆佸唴瀛樸丄GP/PCIE銆佸崡妗ヨ姱鐗囪繘琛岄氫俊銆?
鍗楁ˉ錛圫outhbridge錛夛細PC涓繪澘鑺墖緇勫叾涓箣涓錛岃璁$敤鏉ュ鐞嗕綆淇椾俊鍙鳳紝閫氳繃鍖楁ˉ鍜孋PU閫氫俊錛屼笌澶у鏁癐/O鎺у埗璁懼鎺ュ彛錛屽PCI鎺у埗鍣ㄣ丄TA鎺у埗鍣ㄣ乁SB鎺у埗鍣ㄣ佺綉緇滄帶鍒跺櫒銆侀煶鏁堟帶鍒跺櫒銆傚悇涓姱鐗囧巶鍟嗗鍗楁ˉ鑺墖鐨勫懡鍚嶆湁鎵涓嶅悓錛孖ntel灝嗗叾縐頒負ICH錛宯Vidia縐頒負MCP錛孉TI縐頒負IXP/SB銆?
鍓嶇鎬葷嚎錛團SB, Front Side Bus錛夛細鎸嘋PU涓庡寳妗ヨ姱鐗囦箣闂寸殑鏁版嵁浼犺緭閫氶亾銆?
閿佺浉鐜紙PLL, Phase-Locked Loop錛夛細涓涓棴鐜殑鍙嶉鎺у埗緋葷粺錛屽畠鍙互浣縋LL鐨勮緭鍑哄彲浠ヤ笌涓涓弬鑰冧俊鍙蜂繚鎸佸浐瀹氱殑鐩鎬綅鍏崇郴銆?
鏃墮挓棰戠巼錛?/strong>紜垏鐐規槸鏅舵尟棰戠巼錛屼笌閿佺浉鐜數璺厤鍚堜嬌鐢ㄤ負PC鎻愪緵瀹氭椂淇″彿錛岄氳繃鍊嶉/鍒嗛浜х敓涓嶅悓棰戠巼鐨勫熀鍑嗕俊鍙鳳紝鐢ㄤ互鍚屾緋葷粺鐨勬瘡涓姝ユ搷浣溿傚浜嶤PU涓婚錛屽畠鏄敱鏅舵尟鎻愪緵鐨勯鐜囬氳繃CPU鍐呴儴鐨凱LL鐢佃礬鍊嶉鑰屾潵銆?
CPU澶栭錛?/strong>緋葷粺鎬葷嚎鐨勫伐浣滈鐜囷紝浣撶幇浜咰PU涓庤姱鐗囩粍涔嬮棿鐨勬葷嚎閫熷害銆?
鍓嶇鎬葷嚎棰戠巼錛?/strong>CPU涓庡寳妗ヨ姱鐗囦箣闂寸殑鎬葷嚎宸ヤ綔棰戠巼銆備箣鎵浠ュ皢CPU澶栭涓庡墠绔葷嚎棰戠巼鍖哄垎寮鏉ワ紝鏄洜涓篒ntel鍦≒entium 4涓姞鍏ヤ簡Quad Pumped Bus鏋舵瀯錛屼嬌寰楃郴緇熸葷嚎鍦ㄤ竴涓椂閽熷懆鏈熷唴浼犺緭4嬈℃暟鎹紝涔熷氨鐩稿綋浜庡伐浣滈鐜囦負CPU澶栭鐨?鍊嶃?
CPU鍊嶉錛?/strong>涓哄嶉緋繪暟鐨勭畝縐幫紝鏄寚CPU涓婚涓嶤PU澶栭涔嬮棿鐨勭浉瀵規瘮渚嬪叧緋匯傚湪PC鍙戝睍鍒濇湡錛岀敱浜嶤PU閫熷害涓嶉珮錛屽ぇ閮ㄥ垎鍏冧歡鏃墮挓鍧囦繚鎸佸悓姝ワ紝鐩村埌80486鏃朵唬錛屽湪CPU鍒剁▼鎸佺畫榪涙涓嬶紝CPU鐨勯熷害涔熷姞閫熷闀匡紝褰撴椂鐢變簬鍏朵粬澶栭儴鍏冧歡鍙楃數姘旂粨鏋勬墍闄愶紝鏃犳硶璺熻繘鎴愰暱錛屽洜姝ntel棣栨鍦–PU涓姞鍏ヤ簡鍊嶉璁捐銆傚畠鐨勪綔鐢ㄦ槸浣跨郴緇熸葷嚎宸ヤ綔鍦ㄧ浉瀵硅緝浣庣殑棰戠巼涓婏紝鑰孋PU閫熷害鍙互閫氳繃鍊嶉鏉ユ彁鍗囥?
鍙屽嶆暟鎹熺巼錛圖DR, Double Data Rate錛夛細浣縎DRAM鍦ㄤ竴涓椂閽熷懆鏈熷唴榪涜涓ゆ鏁版嵁浼犺緭鐨勬妧鏈紝鍏蜂綋鍦拌瀹冨湪淇″彿鐨勪笂鍗囨部鍜屼笅闄嶆部浼犺緭鏁版嵁涓嬈★紝鏁版嵁浼犺緭鐜囨槸涔嬪墠浠呭埄鐢ㄤ笂鍗囨部榪涜鏁版嵁浼犺緭鐨凷DRAM鐨勪袱鍊嶃?
鍐呭瓨棰戠巼錛?/strong>鍒嗕負鏍稿績棰戠巼(Internal rate)鍜孖/O鎬葷嚎棰戠巼(Bus clock)銆傛瘡鏉″唴瀛橀兘鏄敱鍐呭瓨鑺墖緇勬垚錛屽唴瀛樿姱鐗囩殑棰戠巼灝辨槸鏍稿績棰戠巼銆侷/O鎬葷嚎棰戠巼鏄寚鍖楁ˉ涓庡唴瀛樹箣闂寸殑鎬葷嚎棰戠巼銆傞氬父鍐呭瓨鏉℃爣縐扮殑瀹為檯涓婃槸鏈澶ф暟鎹紶杈撻鐜囷細I/O鎬葷嚎棰戠巼X2銆傚叾瀹烇紝浠嶥DR鍒癉DR3錛屽叾鍐呭瓨棰楃矑鐨勯鐜囨病鏈夋庝箞鎻愬崌錛屾彁鍗囩殑鏄葷嚎棰戠巼銆侸EDEC鍒跺畾鐨凞DR涓変唬鍙傛暟瀵圭収濡備笅琛ㄦ墍紺猴細
鍙岄氶亾錛?/strong>灝辨槸鍦ㄥ寳妗ヨ姱鐗囬噷璁捐涓や釜鍐呭瓨鎺у埗鍣紝榪欎袱涓唴瀛樻帶鍒跺櫒鍙浉浜掔嫭绔嬪伐浣滐紝姣忎釜鎺у埗鍣ㄦ帶鍒朵竴涓唴瀛橀氶亾銆傚湪榪欎袱涓唴瀛橀氶亾涓奀PU鍙垎鍒鍧銆佽鍙栨暟鎹紝浠庤屼嬌鍐呭瓨鐨勫甫瀹藉鍔犱竴鍊嶏紝鏁版嵁瀛樺彇閫熷害涔熺浉搴斿鍔犱竴鍊嶏紙鐞嗚涓婏級銆傛祦琛岀殑鍙岄氶亾鍐呭瓨鏋勬灦鏄敱涓や釜64bit DDR鍐呭瓨鎺у埗鍣ㄦ瀯絳戣屾垚鐨勶紝鍏跺甫瀹藉彲杈?28bit銆傚洜涓哄弻閫氶亾浣撶郴鐨勪袱涓唴瀛樻帶鍒跺櫒鏄嫭绔嬬殑銆佸叿澶囦簰琛ユх殑鏅鴻兘鍐呭瓨鎺у埗鍣紝鍥犳浜岃呰兘瀹炵幇褰兼闂撮浂絳夊緟鏃墮棿錛屽悓鏃惰繍浣溿備袱涓唴瀛樻帶鍒跺櫒鐨勮繖縐嶄簰琛?#8220;澶╂?#8221;鍙鏈夋晥絳夊緟鏃墮棿緙╁噺50%錛屼粠鑰屼嬌鍐呭瓨鐨勫甫瀹界炕鍊嶃傚弻閫氶亾鍐呭瓨鎶鏈槸瑙e喅CPU鎬葷嚎甯﹀涓庡唴瀛樺甫瀹界殑鐭涚浘鐨勪綆浠楓侀珮鎬ц兘鐨勬柟妗堛?
涓夈佸師鐞?/font>
CPU涓婚=澶栭×鍊嶉 浠庡叕寮忓彲浠ョ湅鍑猴紝瑕佹彁鍗嘋PU涓婚鍙互浠庢彁楂樺棰戝拰鍊嶉涓ゆ柟闈㈢潃鎵嬨傜劧鑰屽湪瀹為檯鎿嶄綔榪囩▼涓紝涓よ呴兘浼氬彈CPU鏈韓鍙婂閮ㄧ‖浠訛紙涓昏鏄富鏉匡級浣撹川鐨勯檺鍒訛紝濡傦細閿佸嶉銆佷富鏉縁SB Frequency涓婇檺銆?
1錛夋彁楂樺棰?
鍥犱負CPU澶栭鐨勮緗洿鎺ュ獎鍝嶇郴緇熸葷嚎宸ヤ綔棰戠巼錛屾墍浠ラ氳繃鎻愬崌澶栭鍜屾惌閰嶅悎閫傜殑鍐呭瓨錛屽彲浠ュ湪涓繪澘鏀寔鐨勫墠绔葷嚎棰戠巼涓婇檺鍐呮湁鏁堟彁鍗囩郴緇熺殑鏁翠綋鎬ц兘銆備箣鎵浠ヨ鎼厤鍚堥傜殑鍐呭瓨錛屾槸鍥犱負鍓嶇鎬葷嚎棰戠巼鎻愰珮錛屾渶澶х殑鍙楀獎鍝嶈呭氨鏄唴瀛橈紝鎵浠ュ唴瀛樿兘澶熸敮鎸佺殑鏈楂樺伐浣滈鐜囦篃闇瑕佽冭檻銆傝櫧鐒禛PU鏁版嵁涔熻閫氳繃鍓嶇鎬葷嚎鐢盋PU緇忚繃鍖楁ˉ鍒拌揪鏄懼崱錛屼絾鏄湪浠呴拡瀵笴PU瓚呴鐨勬儏鍐典笅錛屼竴鑸細灝咰PU涓庢樉鍗′箣闂撮氫俊鐨勯鐜囬攣瀹氬湪100MHz銆備婦涓緥瀛愶細鏈変竴鍧楀墠绔葷嚎涓婇檺棰戠巼涓?600MHz鐨勪富鏉匡紝鍋囧鎼厤涓鍧椾笂闄愪負1600MT/s鐨凞DRIII鍐呭瓨錛?:2鍒嗛姣旂殑鍓嶆彁涓嬶紝闇瑕佸皢CPU鐨勫棰戞彁鍗囧埌鎺ヨ繎400MHz錛屾暣涓郴緇熸墠浼氭瘮杈冨鉤琛°?
2錛夋彁楂樺嶉
閫氳繃鍊嶉鐨勫畾涔夛紝鍙互鐪嬪嚭錛屽湪澶栭涓瀹氱殑鎯呭喌涓嬶紝鎻愰珮鍊嶉錛屽彧鑳藉崟綰湴鎻愰珮CPU宸ヤ綔棰戠巼銆傝櫧鐒訛紝CPU鐨勮綆楄兘鍔涢櫎浜嗚窡宸ヤ綔棰戠巼鏈夊叧澶栵紝榪樹笌紜歡鏋舵瀯鍜屾寚浠ら泦鏈夊叧錛屾垚鍊嶆彁楂樺伐浣滈鐜囪偗瀹氫笉絳変簬鎴愬嶆彁楂樹簡璁$畻鑳藉姏錛屼絾鍙互鑲畾鐨勬槸棰戠巼鎻愰珮鑲畾浼氬湪涓瀹氱▼搴︿笂鎻愰珮璁$畻鑳藉姏銆?
鍥涖佸疄浣?/font>
浜旂數瀹圭増E5200鍏鋒湁寰堝己鐨勮秴棰戠┖闂達紝鍦ㄥ嶉瀹氬湪X8鐨勬儏鍐典笅錛?.2V渚垮彲浠ヨ交鏉句笂370MHz銆備富鏉垮湪涓嶈秴棰戞儏鍐典笅FSB灝卞凡緇忔敮鎸?600MHz浜嗭紝Corsair鍦ㄤ嬌鐢╔MP鏃舵敮鎸?600錛屽湪鏁翠綋鑰冮噺錛堟暎鐑丆PU瀵垮懡錛夊悗鍐沖畾灝咰PU澶栭瀹氬湪350MHz銆佸嶉璁句負x10錛岃繖鏍稦SB鍙伐浣滃湪1400MHz錛屽唴瀛樻寜鐓?1:2鍒嗛姣擨/O鎬葷嚎宸ヤ綔鍦?00MHz涓嬶紙鏁版嵁浼犺緭棰戠巼涓?400MT/s錛夈侭IOS璁劇疆濡備笅錛?
鍐呭瓨CL銆乼RCD絳夊艱鍏惰嚜鍔ㄨ鍙朣PD閰嶇疆銆?
鍙傝冿細
[1] 鍓嶇鎬葷嚎 http://zh.wikipedia.org/wiki/%E5%89%8D%E7%AB%AF%E6%80%BB%E7%BA%BF
[2] 鏅舵尟鍙婂叾閫夌敤鎸囧崡 http://www.naiteli.com.cn/Info/Detail_50139_7547.html
[3] 鍊嶉 http://baike.baidu.com/view/25647.htm
[4] DDR SDRAM http://en.wikipedia.org/wiki/DDR_SDRAM
[5] DDR2 SDRAM http://en.wikipedia.org/wiki/DDR2_SDRAM
[6] DDR3 SDRAM http://en.wikipedia.org/wiki/DDR3_SDRAM
[7] 浜旂數瀹笶5200 http://tech.163.com/digi/09/0316/08/54H0RJNT001618J7.html 1. 寤虹珛婧愪唬鐮佺儲寮?/font> WinDbg鎻愪緵浜嗕竴濂楃敤浜庣鐞唒db瀵瑰簲鐨勬簮浠g爜鐨勫伐鍏鳳紝浣嶄簬鍏跺畨瑁呯洰褰曠殑srcsrv涓嬶紝瀵筕SS銆丼VN銆丆VS銆丳erforce鎻愪緵浜嗘敮鎸侊紝鍒嗗埆瀵瑰簲vssindex.cmd銆乻vnindex.cmd銆乧vsindex.cmd銆乸4index.cmd榪欏洓涓猵erl鑴氭湰銆傚叾瀹烇紝ssindex.cmd鎵嶆槸鍏蜂綋瀹炵幇錛屽畠鏍規嵁浼犲叆鐨勭増鏈帶鍒剁郴緇熸爣璇嗭紝璋冪敤瀵瑰簲鐨刾erl module銆? svnindex.cmd閫氳繃/source鍜?symbols鍙傛暟鏉ユ寚瀹氭簮浠g爜鐩綍鍜孭DB鐩綍錛?debug鍙緭鍑哄鐞嗙殑璇︾粏淇℃伅錛?user鍜?pass鎻愪緵svn璐︽埛鍜屽瘑鐮併侾DB鏂囦歡涓湁涓鑺備笓闂ㄧ敤浜庡瓨鏀炬簮浠g爜鏂囦歡鍒楄〃鍙婂鐞嗗懡浠わ紝鍙氳繃pdbstr -r -p:PdbFileName -s:srcsrv鏌ョ湅銆? svnindex.cmd /debug /source="E:\CodeBase_SVN\Client\trunk\tools\CutSceneEditor" /symbols="E:\CodeBase_SVN\Client\trunk\bin\Release\CutSceneEditor" /user="user" /pass="pwd" 鍦ㄦ墽琛屼笂闈㈠懡浠ゅ墠錛岀‘淇漃erl鍜孲ubversion宸茬粡琚畨瑁呬笖璁劇疆浜哖ATH鐜鍙橀噺銆傝鍛戒護灝嗘彁鍙杝ource code鐨勬湇鍔″櫒璺緞鍜屽綋鍓峈evision錛岀劧鍚庡啓鍏DB銆備笅闈㈡槸閫氳繃pdbstr鑾峰彇鐨勪俊鎭細 涓婇潰杈撳嚭鏄粡榪囨牸寮忓寲鐨勶紝鍘熷淇℃伅鍙互閫氳繃srctool -n鏌ョ湅錛? 鍙互鐪嬪嚭錛屽師濮嬩唬鐮佽礬寰勫悗闈㈣窡浜嗕竴鏉vn cat鎸囦護錛岀敱浜庢病鏈夋寚瀹歴ourcepath錛屾墍浠?targ%緙虹渷涓哄綋鍓嶈礬寰勶紙"C:\Program Files\Debugging Tools for Windows (x64)\srcsrv"錛夈?nbsp; 2. 鍒涘緩絎﹀彿鏈嶅姟鍣?/font> 鎵璋撶鍙鋒湇鍔″櫒錛屾渶綆鍗曠殑褰㈠紡灝辨槸鏂囦歡鍏變韓鏈嶅姟鍣ㄣ傛垜浠嬌鐢?a target="_blank">symstore鍛戒護錛屽皢1涓駭鐢熺殑pdb娣誨姞鍒頒竴涓枃浠跺叡浜湇鍔″櫒涓婏紝濡傦細 symstore.exe add /f "E:\CodeBase_SVN\Client\trunk\bin\Release\CutSceneEditor\*.pdb" /s "\\server.com\pub\Symbols" /t "CutSceneEditor" /v "Build 4171" /c "fix memory leak" 璇ュ懡浠や細鏍規嵁PDB鐨剆ignature鍜宎ge浜х敓涓涓狦UID錛屽茍灝哖DB鏀劇疆浜庝互鏀笹UID涓哄悕瀛楃殑鐩綍涓嬶細 褰揹ebug鏃訛紝灝哢NC璺緞娣誨姞鍒癬NT_SYMBOL_PATH涓紙濡傦細_NT_SYMBOL_PATH=CACHE*F:\Symbols;SRV*http://msdl.microsoft.com/download/symbols;SRV*\\server.com\pub\Symbols錛夛紝璋冭瘯鍣ㄤ細鑷姩鍒版寚瀹氱殑絎﹀彿鏈嶅姟鍣ㄤ笂鍘繪悳绱㈠搴旂殑pdb鏂囦歡銆? symstore澶уぇ綆鍖栦簡絎﹀彿鐨勭増鏈鐞嗛棶棰橈紝鍏充簬瀹冪殑璇︾粏浠嬬粛鍙弬鑰?a target="_blank">symstore浠嬬粛銆? 鍊煎緱娉ㄦ剰鐨勬槸錛宻ymstore娌℃湁閿佹満鍒訛紝騫朵笉鏀寔澶氫漢鍚屾椂鎿嶄綔銆傚疄闄呮儏鍐典腑錛屼篃鍙湁鑷姩鏋勫緩鏃舵墠浼氬仛姝ゆ搷浣溿? 3. 浣跨敤WinDbg鍒嗘瀽Dump鏂囦歡 鎴戜滑鍦ㄤ唬鐮佷腑鍔犲叆鍙戠敓寮傚父鍐橫iniDump鐨勫姛鑳斤紝鍦ㄧ▼搴忓穿婧冩椂浜х敓dump鏂囦歡銆傚湪浣跨敤WinDbg鍒嗘瀽dump鏂囦歡鏃訛紝闇瑕佽緗甋ymbol File Path鍜孲ource File Path錛屼篃鍙互鐩存帴璁劇疆鐜鍙橀噺_NT_SYMBOL_PATH鍜宊NT_SOURCE_PATH銆傚湪璁劇疆_NT_SOURCE_PATH鏃朵嬌鐢?SRV*CachePath"灝嗚〃紺哄惎鐢ㄤ唬鐮佹彁鍙栧姛鑳斤紝鎵цsvn cat鍐欏叆鍒癈achePath鎸囧畾鐨勭洰褰曪紝鍚﹀垯灝嗕嬌鐢ㄥ師濮嬭礬寰勩傛鍚庯紝閫氳繃鐐瑰嚮Call Stack涓殑鍑芥暟璋冪敤渚夸細瑙﹀彂浠巗vn璇誨彇瀵瑰簲浠g爜鐨勬搷浣滐紙閫氬父浼氭湁涓涓畨鍏ㄨ鍛婄獥鍙e脊鍑猴級銆? 瀵逛簬浣跨敤WinDbg榪涜璋冭瘯鍦ㄦ灝變笉澶氳浜嗭紝鎺ㄨ崘涓鏈笉閿欑殑涔︺夾dvanced Windows Debugging銆嬨? 鍙傝冭祫鏂?/strong> [1] Source Indexing and Symbol Servers: A Guide to Easier Debugging [2] Source Server Helps You Kill Bugs Dead In Visual Studio 2005 棣栧厛瑕佷粙緇嶄竴涓婾SB Host Shield[1]銆傚畠鏄疧leg浠?009騫存槬寮濮嬭璁$殑Arduino Shield錛岄噰鐢∕AX3421E鎺у埗鑺墖錛岀洰鍓嶆渶鏂扮増鏈負2.0錛屾棬鍦ㄨArduino鑳藉涓嶶SB璁懼錛堝錛岄敭鐩樸侀紶鏍囥佹父鎴忔墜鏌勩佺浉鏈恒丟PS銆佹墜鏈猴級榪涜閫氳錛屽綋鐒朵篃鑳藉畬鎴怉DK鐨勫姛鑳姐傚湪杞歡鏂歸潰錛孫leg涔熷湪github涓婂紑鏀句簡椹卞姩浠g爜鍜屼緥瀛愮▼搴廩2]錛屾鍚庡張鏈変漢鍩轟簬鍓嶈呯殑浠g爜緇欏嚭浜嗘洿涓烘柟渚跨畝媧佺殑USB钃濈墮閫傞厤鍣ㄤ笌PS3鎵嬫焺閫氳鐨勭ず渚嬩唬鐮乕3,4]銆?/p> PS3鎵嬫焺鍙兘涓庡叿鏈夌浉鍚岃摑鐗欏湴鍧鐨勪富鏈洪厤瀵癸紝鎵浠ラ渶瑕佸厛灝哢SB钃濈墮閫傞厤鍣ㄧ殑鍦板潃鍐欏叆PS3鎵嬫焺銆傚彲浠ヤ嬌鐢╗3]涓殑PS3Pair浠g爜錛屽皢BDADDR鍊間慨鏀逛負钃濈墮閫傞厤鍣ㄧ殑鍦板潃銆俒4]涓彁渚涚殑PS3BT渚嬪瓙錛屽皢钃濈墮鍦板潃淇敼鍜岄氳鍔熻兘鏁村悎鍒頒簡涓璧鳳紝鐪佷簡涓嬈ketch鐨剈pload錛屾敞鎰忎篃闇瑕佸皢浠g爜涓殑my_bdaddr淇敼涓洪傞厤鍣ㄧ殑鍦板潃銆傞厤瀵規椂闇瑕佸皢PS3鎵嬫焺榪炴帴綰夸笌USB Host Shield鐩歌繛錛屽緟瀹屾垚鍚庡皢钃濈墮閫傞厤鍣ㄦ帴涓婏紝鎵撳紑鎵嬫焺錛屽彲浠嶴erial Monitor鐪嬪埌鏃ュ織錛堟敞鎰忔嘗鐗圭巼鐨勪竴鑷達級銆?/p> USB Host Shield鍗犵敤浜哠PI銆丳9銆丳10錛屾敞鎰忎笉瑕佸啿紿佷簡銆?/p> Reference: [1] http://www.circuitsathome.com/arduino_usb_host_shield_projects [2] https://github.com/felis/USB_Host_Shield_2.0 [3] https://github.com/Lauszus/PS3-Controller-BT-Library-for-Arduino [4] https://github.com/TKJElectronics/USB_Host_Shield_2.0 鎵嬩笂鐨凷henZhen Tong鍜孒ongKong Octopus鍧囨槸SONY鐨?a >Felica Card錛屼笌ISO/IEC 18092錛圢FC錛変嬌鐢ㄧ被浼肩殑璋冨埗鏂規硶錛岄噰鐢ㄦ浖鍒囨柉鐗圭紪鐮侊紝鍦?3.56MHZ浠?12kbit/s榪涜閫氳銆備嬌鐢ㄥ姩鎬佸瘑閽ワ紝鍔犲瘑綆楁硶涓篋ES銆?-DES銆丄ES錛屾敾鍑婚毦搴﹁緝澶э紝浣嗘槸浠庡姩鎬佸瘑閽ョ殑浜ゆ崲榪囩▼鍏ユ墜錛岃繕鏄湁鏈轟細鐨勩傜洰鍓嶏紝鏈変簺鎵嬫満鍒墮犲晢錛圢OKIA,SAMSUNG,BLACKBERRY錛夊皢NFC Reader闆嗘垚鍒版墜鏈轟笂錛屾湭鏉FID鐨勫簲鐢ㄥ皢姣旂幇鍦ㄦ洿騫匡紝瀹夊叏闂涔熶細瓚婃潵瓚婂彈鍒板叧娉ㄣ?/p>
References: http://cq.cx/proxmark3.pl http://www.libnfc.org/documentation/introduction http://www.cs.ru.nl/~flaviog/publications/Pickpocketing.Mifare.pdf http://www.sos.cs.ru.nl/applications/rfid/2008-esorics.pdf
]]>
]]>
]]>#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include <math.h>
int mysin (lua_State* L);
static const struct luaL_Reg mymathlib [] =
{
{ "sin" , mysin } ,
{ NULL , NULL }
};
static int mysin( lua_State* L )
{
double d = luaL_checknumber( L , 1);
lua_pushnumber(L , sin( d));
return 1;
}
__declspec(dllexport) int luaopen_mymathlib(lua_State * L)
{
luaL_register(L , "mymathlib" , mymathlib);
return 1;
}
print(a)
]]>
2)鏁版嵁閲忓彈GPU鏄懼瓨闄愬埗錛?br> 3)瀵規湰韜氨闇瑕丟PU鍙備笌榪愮畻鐨勭▼搴忥紝濡傦細3D娓告垙錛岄氱敤璁$畻浼氫簤澶篏PU璧勬簮錛屽鏋滃仛騫寵 錛?br> 4)璁$畻鏁版嵁涔嬮棿鐨勪笉鐩稿叧鎬ч檺鍒朵簡GPU閫氱敤璁$畻鐨勫簲鐢ㄨ寖鍥達紱
]]>
]]>
]]>
]]>
]]>
http://www.proxmark.org/
]]>
rm /root/.kde/cache-root/plasma_theme_Volatile.kcache
rm /root/.kde/cache-bt/icon-cache.kcache
rm /root/.kde/cache-bt/plasma_theme_Volatile.kcache
涓銆丄* Path-Finding
A*綆楁硶灝變笉澶氳浜嗭紝鍙弬鑰冿細
浜屻侀澶勭悊
姣忎釜鐩擱偦鍖哄潡錛圕1鍜孋2錛夐兘鏈変竴鏉$敱鍏叡杈癸紝璇ヨ竟涓や晶灝忔牸緇勬垚L1鍜孡2錛屽垯榪為氱偣闆咵婊¤凍涓嬪垪鏉′歡錛?
瀵逛笂闈㈠緱鍒扮殑浣嶄簬鍚屼竴鍖哄潡鐨勭偣闆嗗悎浣跨敤local A*鍋氳繛閫氭ф祴璇曪紝涓嬪浘鐢ㄧ洿綰胯繛鎺ユ潵琛ㄧず涓ょ偣浜掗氾細
涓夈佸璺?/font> 浣跨敤鍖哄潡榪為氫俊鎭紝榪涜鍖哄潡綰*錛屽緱鍒板尯鍧椾箣闂寸殑榪炴帴鐐癸紝濡傛灉鍦ㄩ澶勭悊鏃朵繚瀛樹簡鍖哄潡鍐呬簰閫氱偣鐨勮礬寰勶紝灝變笉蹇呭啀榪涜鍖哄潡鍐呯殑local A*浜嗐? 瀹為獙緇撴灉琛ㄦ槑錛屽湪鏈噰鐢ㄥ尯鍧楀唴棰勫瓨璺緞鐨勬儏鍐典笅錛屼腑闀胯窛紱誨璺嬌鐢ㄥ眰嬈*鍚庣殑騫沖潎鏁堢巼鏄櫘閫欰*鐨?鍊嶄互涓婏紝璺濈瓚婇暱鏁堢巼瀵規瘮瓚婃槑鏄俱? A* 93ms HPA* 15ms 浠庝笂鍥句腑鍙互鐪嬪嚭錛孒PA*寰楀埌鐨勮礬寰勫茍涓嶆槸鏈浼樼殑錛屽畠鏄湪鏈浼樺拰鏁堢巼涓婄殑鎶樹腑錛岄傚悎浣滀負闀胯窛紱誨璺殑涓縐嶄紭鍖栨柟妗堛? 鍥涖佷紭鍖栫偣 涓涓敼榪涚殑鏂規硶鏄榪囬暱鐨勮竟鐣屽啀鍋氬垝鍒嗭細
]]>
void D3DXQuaternionSquadSetup( __out D3DXQUATERNION *pAOut, __out D3DXQUATERNION *pBOut, __out D3DXQUATERNION *pCOut, __in const D3DXQUATERNION *pQ0, __in const D3DXQUATERNION *pQ1, __in const D3DXQUATERNION *pQ2, __in const D3DXQUATERNION *pQ3 );
D3DXQUATERNION* D3DXQuaternionSquad( __inout D3DXQUATERNION *pOut, __in const D3DXQUATERNION *pQ1, __in const D3DXQUATERNION *pA, __in const D3DXQUATERNION *pB, __in const D3DXQUATERNION *pC, __in FLOAT t );
鍏朵腑錛孌3DXQuaternionSquadSetup鐢ㄤ簬榪斿洖鍐呮彃鐨勬帶鍒剁偣銆傚畠浠叿浣撶殑瀹炵幇鍏紡鍜岀敤娉曪紝鏈夊叴瓚g殑鍚屽鍙互鍙傝僊SDN銆傚湪姝ら渶瑕佽鏄庣殑鏄紝
D3DXQuaternionSquad浣跨敤浜哠lerp浣滀負鍐呴儴瀹炵幇錛屼細瀵艱嚧鍦ㄤ袱涓す瑙掍負180擄宸﹀彸鐨凲uaternion涔嬮棿鎻掑間細鍑虹幇鏂鐨勯棶棰樸備笅闈唬鐮侀氳繃
瀹炵幇涓涓冭檻浜嗕笂榪版儏鍐電殑Slerp鐗堟湰錛屽湪q1鍜宷2澶硅鍦?擄鎴栬?80擄鏃訛紝浣跨敤綰挎у唴鎻掕岄潪鐞冮潰錛屾潵瑙e喅璇ラ棶棰樸?/pre>
- Quaternion QuatSlerpNoInvert(const Quaternion& q1 , const Quaternion& q2 , float t)
- {
- 聽聽聽聽float cosAngle = DotProduct(q1, q2);
- 聽聽聽聽float c1, c2;
- 聽聽聽聽// Linear interpolation for close orientations
- 聽聽聽聽if ((1.0f - fabs(cosAngle)) < 1e-5f)
- 聽聽聽聽{
- 聽聽聽聽聽聽聽聽c1 = 1.0f - t;
- 聽聽聽聽聽聽聽聽c2 = t;
- 聽聽聽聽}
- 聽聽聽聽else
- 聽聽聽聽{
- 聽聽聽聽聽聽聽聽// Spherical interpolation
- 聽聽聽聽聽聽聽聽float angle聽聽聽聽= acos(fabs(cosAngle));
- 聽聽聽聽聽聽聽聽float sinAngle = sin(angle);
- 聽聽聽聽聽聽聽聽c1 = sin(angle * (1.0f - t)) / sinAngle;
- 聽聽聽聽聽聽聽聽c2 = sin(angle * t) / sinAngle;
- 聽聽聽聽}
- 聽聽聽聽Quaternion q = q1 * c1 + q2 * c2;
- 聽聽聽聽q.Normalize();
- 聽聽聽聽return q;
- }
- Quaternion QuatSquad(const Quaternion& p1 , const Quaternion& p2 , const Quaternion& p3 , const Quaternion& p4 , float t)
- {
- 聽聽聽聽static Quaternion a , b , c;
- 聽聽聽聽D3DXQuaternionSquadSetup((D3DXQUATERNION*)&a , (D3DXQUATERNION*)&b , (D3DXQUATERNION*)&c ,
- 聽聽聽聽聽聽聽聽(D3DXQUATERNION*)&p1 , (D3DXQUATERNION*)&p2 , (D3DXQUATERNION*)&p3 , (D3DXQUATERNION*)&p4);
- 聽聽聽聽return QuatSlerpNoInvert(QuatSlerpNoInvert(p2 , c , t) , QuatSlerpNoInvert(a , b , t) , 2 * t * (1-t));
- }
鍙傝冿細
[1] http://msdn.microsoft.com/en-us/library/bb205419(v=vs.85).aspx
[2] http://msdn.microsoft.com/en-us/library/bb205420(v=vs.85).aspx
]]>
鍦╛hash_fun.h涓湁閽堝鍚勭綾誨瀷鐨勫搱甯屽艱綆楃壒鍖栫増鏈紝涓嬮潰浠呮憳褰曢拡瀵笴瀛楃涓茬殑浠g爜錛?/p>
__stl_hash_string瀹炵幇浜嗕竴涓畝鍗曠殑鍝堝笇綆楁硶錛屽洜涓虹畻娉曚腑浣跨敤浜嗗瓧絎︾殑ASCII鐮侊紝涓轟簡杈懼埌澶у皬鍐欎笉鏁忔劅鐨勭洰鐨勶紝鍙皢姣忎釜瀛楃杞崲鎴愬皬鍐?澶у啓鏉ヨ綆椼傚浜巋ash functor錛屾垜浠篃闇瑕佷竴涓猻tring鐨勭壒鍖栫増銆?/p>
鍦╛function_base.h涓畾涔変簡equal_to functor錛?/p>
閫氳繃瀹氬埗涓涓猻tring鐗堟湰鐨別qual_to錛屼嬌鐢╯tricmp榪涜瀛楃涓叉瘮杈冦備笅闈㈠垪鍑哄疄鐜板強嫻嬭瘯浠g爜錛?/p>
1銆乻earch鏃剁▼搴忔鎺?/p>
2銆乨ebug鏃墮攣浣弍db涓嶉噴鏀撅紝涓嬫build鏃跺嚭鐜版枃浠跺啓閿欒
瀵逛簬絎竴涓棶棰橈紝鍦╠evenv.exe灞炴х殑Compatibility鐨凷ettings涓嬀閫夆淒isable visual themes鈥濓紝鎴栬呭仠鐢ˋero涓婚錛屼嬌鐢˙asic themes銆?/p>
瀵逛簬絎簩涓棶棰橈紝鍙嬌鐢╯ysinternals宸ュ叿handle鏉ラ噴鏀懼pdb鐨勫紩鐢紝鍦ㄦ涓嶅垪鍑篽andle鐨勪嬌鐢紝鏈夊叴瓚e彲浠ヨ嚜宸辯爺絀躲備笅闈㈢粰鍑轟竴涓壒澶勭悊錛屽叧闂寚瀹氬悕縐扮殑pdb鏂囦歡鍗犵敤錛?/p>
@echo off cd /d "%~dp0" for /f "tokens=2-3 skip=5 delims=:" %%a in ('handle -p devenv.exe "%1.pdb"') do ( for /f "tokens=1,4" %%c in ("%%a%%b") do ( handle.exe -c %%d -y -p %%c ) ) @echo on
灝嗗叾淇濆瓨鍒頒竴涓枃浠訛紝鏀懼湪project鐨刾re-build event銆傚綋鐒訛紝榪橀渶瑕佷竴涓弬鏁版潵鍠傛壒澶勭悊涓殑%1銆?/p>
鍓嶆鏃墮棿閬囧埌榪囪繖鏍風殑闂錛氬凡鐭ヤ竴2D鍦板浘鏍煎瓙鐨勯暱瀹斤紙w銆乭錛夊強姣忎釜鏍煎瓙鐨勮竟闀匡紙a錛屾牸瀛愪負姝f柟褰級錛岀粰瀹氱墿浣撶殑2D鍧愭爣錛坧os[x , y]錛夊強鍗婂緞錛坮錛夛紝姹傝В鐗╀綋鍦?D鍦板浘鏍煎瓙涓墍鍗犵殑鏍煎瓙錛屼粎鑰冭檻n*n鐨勬儏鍐點傚ぇ姒傜殑姹傝В榪囩▼濡備笅錛?
1錛夋牴鎹崐寰勶紝紜畾n*n涓殑n銆傚亣瀹氳綆楀叕寮忎負錛歯 = Round(2*r / a)
2錛夋牴鎹?D鍧愭爣寰楀埌鐗╀綋鐨勨滀腑蹇冩牸瀛愨濄傛牴鎹畁鐨勫鍋訛紝璁$畻鍏紡涓嶅悓錛屽涓嬪浘鎵紺恒?
n涓哄伓鏁癧1] n涓哄鏁癧2]
[1]錛歡rid(x , y) = Round(pos / a)
[2]錛歡rid(x , y) = Floor(pos / a)
鍏朵腑錛屾牸瀛愬潗鏍噚 >= 0 , y >= 0銆?
3錛変互鈥滀腑蹇冩牸瀛愨濅負鍩虹錛屾眰鍑虹墿浣撳崰鎹殑鍏朵粬鏍煎瓙銆傝繖鏍風殑鎻忚堪錛岃浜哄鏄撴兂鍒伴掑綊錛屽氨鍍忕敤娣卞害浼樺厛鏂規硶閬嶅巻鏍戦偅鏍鳳紝浼唬鐮佺畻娉曞涓嬶細
if n is even { get the index of 'center grid' (row , col) ExtendHeldGrid(row , col , n) ExtendHeldGrid(row - 1 , col , n) ExtendHeldGrid(row - 1 , col - 1 , n) ExtendHeldGrid(row , col - 1 , n) } else { get the index of 'center grid' (row , col) ExtendHeldGrid(row , col , n) } function ExtendHeldGrid(row , col , level) { if(level <= 0) return if((row >= 0 and row < MaxGridWidth) and (col >= 0 and col < MaxGridHeight)) { mark the grid(row , col) ExtendHeldGrid(row , col , level - 2) if(level - 2 > 0) { ExtendHeldGrid(row + 1 , col , level - 2) ExtendHeldGrid(row - 1 , col , level - 2) ExtendHeldGrid(row , col + 1 , level - 2) ExtendHeldGrid(row , col - 1 , level - 2) ExtendHeldGrid(row + 1 , col + 1 , level - 2) ExtendHeldGrid(row - 1 , col + 1 , level - 2) ExtendHeldGrid(row + 1 , col - 1 , level - 2) ExtendHeldGrid(row - 1 , col - 1 , level - 2) } } }
铏界劧錛岃綆楁硶寰楀埌浜嗘紜殑姹傝В緇撴灉錛屼絾鏄敱浜庢瘡涓牸瀛愰兘浼氭爣璁板懆鍥寸殑8涓牸瀛愶紝鎵浠ュ瓨鍦ㄥぇ閲忕殑閲嶅錛屽啀鑰呭鏋滀笂闈㈢殑榪囩▼姣忓撫閮借繘琛岀殑璇濓紝鍑芥暟璋冪敤寮閿涔熸槸鐩稿綋鍙銆?/p>
寰幆鑷劧鏄笉鍙伩鍏嶇殑錛屾秷闄ら噸澶嶄究鎴愪簡浼樺寲鐨勭洰鏍囥傚垎鏋愭牸瀛愬浘鍜宯涓?鍜?鐨勬儏鍐碉紝璇曞浘鎵懼嚭鐢ㄥ驚鐜唬鏇塊掑綊鐨勬柟娉曪紝鎴戝彂鐜頒簡涓嬮潰涓涓湁瓚g殑瑙勫緥錛?/p>
浠庘滀腑蹇冩牸瀛愨濆嚭鍙戯紝欏烘椂閽堬紙鎴栭嗘椂閽堬級浠ヤ笂鍥炬柟寮忓彲浠ヨ蛋閬嶆墍姹傝В鐨勬瘡涓牸瀛愯屼笉閲嶅銆傚湪瀹炵幇涓婏紝姣忎釜杞涔熸槸鏈夎寰嬬殑錛屽彲浠ラ氳繃涓涓?*2鐨勮漿瑙掔煩闃墊潵鎺у埗錛?/p>
[1 , 0][0 , -1]
[0 , 1][-1 , 0]
欏烘椂閽堟柟寮忕殑杞闃?/p>
鐭╅樀涓殑姣忎釜鍏冪礌浠h〃浠庡綋鍓嶆牸瀛愯蛋鍒頒笅涓牸瀛愬湪row鍜宑ol涓婄殑鍙樺寲銆傚姞涔嬶紝鍦ㄨ漿瑙掍箣闂寸殑璺暱錛堜互鏍煎瓙涓暟璁★級鏈夋瘡杞袱嬈¢掑鍗曚綅1鐨勮寰嬶紝綆楁硶灝變笉闅懼緱鍒頒簡錛屼笅闈㈠悓鏍蜂互浼唬鐮佺ず錛?/p>
conerMat = { {0 , -1} , {-1 , 0} , {0 , 1} , {1 , 0} } dir = 0 /// 杞鎺у埗錛屽洓涓漿瑙掗『鏃墮拡0~3 span = 1 /// 杞闂寸殑璺ㄥ害 count = 1 /// 姣忎袱嬈″鍔犱竴涓法搴? rin = 1 /// 涓嬩竴涓漿瑙掔殑寰幆绱㈠紩 if n is even get the index of 'center grid' (row , col) else get the index of 'center grid' (row , col) for(i = 0; i < n * n; ++i) { if((row >= 0 and row < MaxGridWidth) and (col >= 0 and col < MaxGridHeight)) mark the grid(row , col) if(i == rin) { dir = (dir + 1) % 4 if(count == 2) { ++span count = 1 } else ++count rin = i + span } row = row + conerMat[dir][0] col = col + conerMat[dir][1] }
鐢∕FC紼嬪簭楠岃瘉浜嗕竴涓嬬畻娉曠殑姝g‘鎬э紝鏍囧彿灞曠ず浜嗗驚鐜殑璺嚎錛堟敞鎰廏DI鐨勫潗鏍囩郴涓璝鐨勬鏂瑰悜鏈濅笅錛夛細
棣栧厛鎯沖埌鐨勬槸鐢═SVN鐨刪ook script(client side)錛屼絾浠旂粏鐮旂┒鍚庡彂鐜頒紶鍏cript鐨勫弬鏁頒粎鏈夋搷浣滆礬寰勶紝涓旈氳繃script涔熶笉鍙兘璁塊棶/淇敼Notify瀵硅瘽妗嗕腑鐨勪俊鎭拰瀛椾綋棰滆壊銆傚敮涓鐨勫姙娉曞氨鏄慨鏀規簮浠g爜閲嶆柊緙栬瘧錛屼粠TSVN瀹樻柟浠g爜搴撹幏鍙栧埌浜唗runk source code鍚庯紝鎸夌収鏍硅礬寰勪笅鐨刡uild.txt鏂囨。榪涜鏋勫緩錛坉oc\build-zh_CN.txt鏈変簺榪囨椂浜嗭紝涓嶈鎸夌収璇ユ枃妗h繘琛屾瀯寤猴級錛屾渶鏂頒唬鐮侀渶瑕佺敤鍒癡C++10.0緙栬瘧錛岃繃紼嬩腑闄や簡hunspell涓媋ffixmgr.cxx銆乭ashmgr.cxx鍜宧unspell.cxx涓変釜鏂囦歡鐢變簬svn鐨勭紪鐮佽漿鎹㈠鑷存枃浠跺唴瀹瑰紓甯稿錛屾病浠涔堝ぇ闂銆?/p>
TSVN鐨勪唬鐮佸啓寰楀緢beautiful錛岃繖涓璧炰竴涓嬨傚湪娓呮櫚鐨勭粨鏋勪笅寰堝揩瀵箂ource code榪涜浜嗗垎鏋愶紝鍙戠幇TSVN鐨勬搷浣滃鐞嗕唬鐮佷綅浜巗rc\TortoiseProc涓嬮潰錛岃屽鍚勭鎿嶄綔鐨刄I鍙嶉涓昏鏀懼湪SVNProgressDlg涓傛壘鍒拌淇敼鐨勫湴鏂癸紝娣誨姞浜嗗嚑琛屼唬鐮侊紝鐢∟Ant鏋勫緩鍚庯紝鏇挎崲鐜拌鐗堜腑鐨勫搴旀枃浠訛紝鍑虹幇subversion too old闂錛岀偣寮TortoiseProc.exe鍙戠幇鏈鏂頒唬鐮佷腑鐨剆ubversion鐗堟湰宸茬粡鐢ㄥ埌浜?.7.2錛岃孴SVN瀵瑰鍙戝竷鐨勬渶鏂扮増鍗磋繕鏄?.6.15錛屽彲鑳芥槸寮鍙戣呰涓鴻法MinorVersion灝辯畻too old浜嗗惂銆傜畻浜嗭紝涓嶆姌鑵句簡錛岀洿鎺ユ媺鍙戝竷鐗?.6.12鐨則ag鏉ヤ慨鏀瑰惂銆?/p>
1.6.12鐗堢殑source code鐢╒C++9.0緙栬瘧錛屾寜鐓uild鏂囨。璋冩暣涓涓嬩笌鍓嶉潰鏋勫緩鏈夊樊寮傜殑鍦版柟錛屽煎緱娉ㄦ剰鐨勬槸TSVN鐢ㄥ埌浜哛ibbon錛屾墍浠ュ繀欏誨厛瀹夎涓涓媣s2008 sp1琛ヤ竵銆傚湪鏋勫緩TortoiseProc鏃訛紝鏈変釜澶存枃浠朵腑閲嶅澹版槑浜哅FC涓凡緇忓畾涔変簡鐨勭被鍨嬶紝瀵艱嚧鏋勫緩澶辮觸錛岄渶瑕佸皢閲嶅瀹氫箟涔嬪娉ㄩ噴鎺夈俆ortoiseProc涓鍑猴紝鎴戠殑鐩殑灝辮揪鍒頒簡錛岀敱浜庢瀯寤虹殑鐗堟湰涓庢垜瀹夎鐨勪竴鑷達紝鎵浠ュ彧闇鏇挎崲TortoiseProc.exe錛岀粡嫻嬭瘯涓鍒嘜K銆?/p>
涓漢瑙夊緱錛屽TSVN鐨勬墿灞曡繕鏄夯鐑︿簡涓鐐癸紝鏁翠釜鏋勫緩榪囩▼鑺辮垂浜嗗ぇ閲忔椂闂達紝寤鴻澧炲己hook script銆?/p>
Commtivia Z71 - 0.3.1 祿 3.7 MiB - 55 hits - December 21, 2010
HTC Aria - 0.3.1 祿 3.8 MiB - 35 hits - December 21, 2010
HTC Desire (CDMA) - 0.3.1 祿 3.4 MiB - 74 hits - December 21, 2010
HTC Desire (GSM) - 0.3.1 祿 3.4 MiB - 381 hits - December 21, 2010
HTC Desire HD - 0.3.1 祿 4.2 MiB - 166 hits - December 21, 2010
HTC Desire Z (G2) - 0.3.1 祿 4.3 MiB - 55 hits - December 21, 2010
HTC Dream/Sapphire (32B) - 0.3.1 祿 3.3 MiB - 156 hits - December 21, 2010
HTC Droid Eris - 0.3.1 祿 3.4 MiB - 39 hits - December 21, 2010
HTC Droid Incredible - 0.3.2 祿 3.6 MiB - 75 hits - December 21, 2010
HTC Evo 4G - 0.3.1 祿 3.4 MiB - 109 hits - December 21, 2010
HTC Hero (CDMA) - 0.3.1 祿 3.4 MiB - 75 hits - December 21, 2010
HTC Hero (GSM) - 0.3.1 祿 3.4 MiB - 94 hits - December 21, 2010
HTC Magic/Sapphire (32A) - 0.3.1 祿 3.4 MiB - 73 hits - December 21, 2010
HTC Tattoo - 0.3.1 祿 3.2 MiB - 77 hits - December 21, 2010
HTC Wildfire - 0.3.1 祿 3.6 MiB - 140 hits - December 21, 2010
Motorola Droid - 0.3.1 祿 3.4 MiB - 132 hits - December 21, 2010
Nexus One - 0.3.1 祿 3.4 MiB - 122 hits - December 21, 2010
T-Mobile myTouch 3G Slide - 0.3.1 祿 3.8 MiB - 34 hits - December 21, 2010
T-Mobile myTouch 4G - 0.3.1 祿 4.3 MiB - 30 hits - December 21, 2010
絎旇呯敤鐨凥TC Magic(32A)涔熷湪鍏朵腑錛屼簬鏄敤fastboot鐨刄SB鏂瑰紡錛堝叧鏈哄悗鎸塒ower+Return榪涘叆鍚庢帴涓奤SB鑷砅C錛屽綋鐒禤C蹇呴』瀹夎Driver錛夊埛浜哛ecovery銆傝繘鍏ecovery妯″紡錛堝叧鏈哄悗鎸塒ower+Home錛夛紝鏂紑USB榪炴帴錛岄夋嫨"PSFreedom settings"榪涘叆鍙戠幇鐢ㄤ簬DG鐨?Put PS3 in Service Mode"銆佺敤浜嶫B鐨?Jailbreak FW 3.41"銆佷互鍙婁粠SD鍗″姞杞絇ayload鐨勫姛鑳介」涓搴斾勘鍏ㄣ?/p>
鍓╀笅鐨勫氨鍜岀敤Dog涓鏍風殑鎿嶄綔鏂瑰紡鏉G&JB浜嗭紝鍊煎緱娉ㄦ剰鐨勬槸鎿嶄綔鏃墮兘闇瑕佹帴鍦ㄥ彸杈筓SB鍙d笂錛圝B鎿嶄綔鎻愮ず鏄帴鍦ㄥ乏杈癸級錛?/p>
1錛夊叧闂璓S3騫跺垏鏂數婧愶紝閫夋嫨"Put PS3 in Service Mode"榪涘叆錛?/p>
2錛夊皢鎵嬫満榪炴帴鑷砅S3鍙寵竟USB鍙o紱
3錛夋墦寮PS3鐢墊簮錛屾寜寮鏈洪敭鍚庤繀閫熸寜鍑轟粨閿紱
4錛夋墜鏌勮繛鎺ヤ富鏈洪噸鏂伴厤瀵瑰悗錛孭S3榪涘叆Factory/Service Mode錛屽叧闂璓S3錛?/p>
5錛夋壘涓涓猆鐩橈紙鍙鏄疨S3璇嗗埆鐨凢AT/FAT32鏍煎紡錛屾湭蹇呴渶鏍煎紡鍖栵級鎻掍笂PC錛岃В鍘?.41淇敼鐗堝浐浠訛紝鏈変笁涓枃浠跺す錛氣淟v2diag.self FILE 1鈥濓紝鈥淟v2diag.self FILE 2鈥濆拰鈥淢odified 3.41 PUP鈥濄?灝哃v2diag.self FILE 1涓殑Lv2diag.self浠ュ強Modified 3.41 PUP涓殑PS3UPDAT.PUP鎷瘋礉鍒癠鐩樻牴鐩綍錛?/p>
6錛夋嫈涓婾鐩樻彃鍏S3鍙寵竟鐨刄SB鍙o紝鎵撳紑PS3錛屽睆騫曟病鏈変換浣曟樉紺猴紝PS3涓繪満鐨勭‖鐩樼伅鍜孶鐩樼殑鎸囩ず鐏細闂儊錛岀瓑寰呭ぇ綰?鍒嗛挓鐩村埌PS3鐢墊簮緇跨伅闂儊騫惰嚜鍔ㄥ叧鏈猴紱
7錛夋嫈涓婾鐩橈紝PS3姝e父寮鏈猴紝浠嶅湪鏈嶅姟妯″紡錛岀‘璁ょ郴緇熶俊鎭凡緇忓彉鎴?.41銆傦紙濡傞渶緇х畫闄嶇駭鍒版洿浣庣郴緇熺増鏈紝鍕垮垹闄鐩樹笂鐨凩v2diag.self錛屽皢鍏跺畠緋葷粺鐗堟湰PS3UPDATE.PUP鏀懼叆U鐩橈紝閲嶆柊鎵ц涓閬嶆楠?錛夈傝嫢涓嶉渶緇х畫闄嶇駭錛屽叧闂璓S3鐢墊簮錛?/p>
8錛夊湪PC涓婏紝鍒犻櫎U鐩樹腑鐨凩v2diag.self鍜孭S3UPDAT.PUP涓や釜鏂囦歡錛屾妸Lv2diag.self FILE 2鏂囦歡澶逛腑鐨凩v2diag.self鎷瘋礉鍒癠鐩樻牴鐩綍銆傚皢U鐩樻彃涓奝S3騫跺紑鏈猴紝浠嶇劧榛戝睆錛岀瓑寰?0縐掑悗浼氳嚜鍔ㄥ叧鏈恒傚啀寮鏈猴紝浼氬嚭鐜伴噸鏂拌繛鎺ユ墜鏌勩佹柊寤虹敤鎴風殑鍒濆寮鏈虹敾闈紝瀹屾垚璁劇疆鍚庤繘鍏ョ郴緇熶俊鎭煡鐪嬶紝宸叉槸鏅氱殑3.41緋葷粺浜嗭紝闄嶇駭姝ラ鍏ㄩ儴瀹屾垚銆?/p>
1錛夊叧闂璓S3騫跺垏鏂數婧愶紝閫夋嫨"Jailbreak FW 3.41"榪涘叆錛?/p>
2錛夊皢鎵嬫満榪炴帴鑷砅S3鍙寵竟USB鍙o紱
3錛夋墦寮PS3鐢墊簮錛屾寜寮鏈洪敭鍚庤繀閫熸寜鍑轟粨閿紱
4錛夌‘璁B鎴愬姛涓庡惁錛屾煡鐪婫ame涓嬮潰鏄惁澶氫簡涓や釜鏂拌彍鍗曢」錛?/p>
5錛変箣鍚庡氨鍙互鍒?a target="_blank">PS3-Hacks鍘諱笅杞紹ackupManager/OpenManager浜嗐?/p>
鍏跺疄JB灝辨槸璁㏄S3榪涘叆Debug妯″紡錛屼竴鏃﹁繘鍏ュ悗渚垮彲縐婚櫎JB璁懼銆侾S3鍒欽B閭d細鍎匡紝BackupManager鏄繀澶囧伐鍏鳳紝鍚庨潰鍑虹殑Manager閮芥槸鍦ㄥ叾鍩虹涓婂寮猴紝OpenManager姣擝ackupManager澶氫簡浠庡鎺ョ‖鐩榗opy/play game鐨勫姛鑳姐傛澶朑aia manager涔熸槸涓緢鍙楁榪庣殑Manager錛岄櫎浜嗗湪UI涓婃瘮OpenManager濂界湅涔嬪錛岃繕鍔犲叆浜咲irect Boot/FTP Server絳夊姛鑳斤紝浣咲irect Boot騫朵笉鏄偅涔堝ソ浣匡紝姣斿銆婂繊鑰呴緳鍓戜紶 Sigma2銆嬬敤Gaia灝辮姳灞忔鏈猴紝鐢∣M灝變笉浼氾紝鎬諱綋鎰熻榪樻槸OM鏇寸ǔ瀹氥?/p>
Reference
[3] Simple Tutorial on How to Downgrade and Jailbreak your PS3 with PsfServiceMod
[4] http://ps3.cngba.com/ps3_xw/20101215119290.shtml
涓銆佺郴緇熻皟鐢?/p>
閫氳繃浣跨敤WinExec銆丼hellExecute鎴杝ystem錛屽錛?/p>
_snprintf(cmdbuf , 1024 , "p4 -c %s add \"%s\"" , argv[1] , ANSIToUTF8(path.c_str())); system(cmdbuf);
姝ゆ柟娉曠殑铏界劧綆鍗曪紝浣嗗瓨鍦ㄦ晥鐜囬棶棰橈紝鍥犱負鏈夊垱寤鴻繘紼嬬殑宸ㄥぇ寮閿銆傛澶栦笉鍚岀増鏈殑Perforce涔熶細鍑虹幇涓嶅悓鐨勬墽琛岀粨鏋滐紝閽堝鐗瑰畾鐨勪腑鏂囦細鍑虹幇鎿嶄綔澶辮觸鐨勮寮傞棶棰樸?/p>
浜屻丳erforce SDK
Perforce鎻愪緵鏈塖DK鐢ㄤ互鎵╁睍鎴栭泦鎴愬埌鍏朵粬搴旂敤涓紝铏界劧娌℃湁璇︾粏鐨勬枃妗o紝浣嗗彲浠ラ氳繃瀛︿範SDK涓殑sample鏂囦歡鏉ュ涔狅紝姝ゆ柟娉曟渶紼沖畾銆?/p>
涓嬮潰浠g爜灞曠ず浜嗛氳繃SDK涓瑿lientAPI鏉ラ掑綊娣誨姞鎸囧畾鏂囦歡澶逛笅鐨勬墍鏈夋枃浠訛細
# include "clientapi.h" # include "i18napi.h" # include "CharSetConvertUtil.h" # include <string> # include <vector> # include <list> # include <io.h> using namespace std; // structure to hold a directory and all its filenames. struct FILELIST { string path; vector<string> theList; }; void TransverseDirectory(string path, list<FILELIST>& theList) { struct _finddatai64_t data; string fname = path + "\\*.*"; long h = _findfirsti64(fname.c_str(),&data); if(h >= 0) { FILELIST thisList; theList.push_back(thisList); list<FILELIST>::iterator it = theList.end(); it--; (*it).path = path; do { if( (data.attrib & _A_SUBDIR) ) { // make sure we skip "." and "..". Have to use strcmp here because // some file names can start with a dot, so just testing for the // first dot is not suffient. if( strcmp(data.name,".") != 0 &&strcmp(data.name,"..") != 0) { // We found a sub-directory, so get the files in it too fname = path + "\\" + data.name; // recurrsion here! TransverseDirectory(fname,theList); } } else { // this is just a normal filename. So just add it to our vector (*it).theList.push_back(data.name); } }while( _findnexti64(h,&data) == 0); _findclose(h); } } int main( int argc, char **argv ) { list<FILELIST> MyList; string path; ClientUser ui; ClientApi client; StrBuf msg; Error e; if(argc < 4) { fprintf( stderr , "P4 Transverse Add: Arguments Error!\n"); return -1; } client.SetPort(argv[1]); client.SetClient(argv[2]); client.SetTrans(CharSetApi::UTF_8 , CharSetApi::UTF_8 , CharSetApi::UTF_8, CharSetApi::UTF_8); TransverseDirectory(argv[3],MyList); // Connect to server client.Init( &e ); if( e.Test() ) { e.Fmt( &msg ); fprintf( stderr, "%s\n", msg.Text() ); return -1; } list<FILELIST>::iterator it; for(it = MyList.begin(); it != MyList.end(); it++) { vector<string>::iterator its; for(its = (*it).theList.begin(); its != (*it).theList.end(); its++) { path = (*it).path + "\\" + (*its); char* pText = ANSIToUTF8(path.c_str()); client.SetArgv( 1 , &pText); client.Run( "add" , &ui ); } } // Close connection client.Final( &e ); if( e.Test() ) { e.Fmt( &msg ); fprintf( stderr, "%s\n", msg.Text() ); return -1; } return 0; }
姝ゆ柟娉曠渷鍘諱簡鍒涘緩p4榪涚▼鐨勫紑閿錛屼換鍔℃墽琛屾晥鐜囦細鎻愰珮涓嶅皯錛岃屼笖涔熶笉浼氬嚭鐜版墽琛岀粨鏋滀笉紼沖畾鐨勯棶棰樸?nbsp;
闄勪竴錛歋DK涓嬭澆鍦板潃
ftp://ftp.perforce.com/perforce/
闄勪簩錛氶檮涓夾NSI杞琔TF-8浠g爜
wchar_t* ANSIToUnicode( const char* str ) { int textlen ; wchar_t * result; textlen = MultiByteToWideChar( CP_ACP, 0, str,-1, NULL,0 ); result = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t)); memset(result,0,(textlen+1)*sizeof(wchar_t)); MultiByteToWideChar(CP_ACP, 0,str,-1,(LPWSTR)result,textlen ); return result; } char* UnicodeToANSI( const wchar_t *str ) { char * result; int textlen; // wide char to multi char textlen = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL ); result =(char *)malloc((textlen+1)*sizeof(char)); memset( result, 0, sizeof(char) * ( textlen + 1 ) ); WideCharToMultiByte( CP_ACP, 0, str, -1, result, textlen, NULL, NULL ); return result; } wchar_t* UTF8ToUnicode( const char* str ) { int textlen ; wchar_t * result; textlen = MultiByteToWideChar( CP_UTF8, 0, str,-1, NULL,0 ); result = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t)); memset(result,0,(textlen+1)*sizeof(wchar_t)); MultiByteToWideChar(CP_UTF8, 0,str,-1,(LPWSTR)result,textlen ); return result; } char* UnicodeToUTF8( const wchar_t *str ) { char * result; int textlen; // wide char to multi char textlen = WideCharToMultiByte( CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL ); result =(char *)malloc((textlen+1)*sizeof(char)); memset(result, 0, sizeof(char) * ( textlen + 1 ) ); WideCharToMultiByte( CP_UTF8, 0, str, -1, result, textlen, NULL, NULL ); return result; } char* ANSIToUTF8(const char* str) { wchar_t* pUnicodeBuff = ANSIToUnicode(str); char* pUtf8Buff = UnicodeToUTF8(pUnicodeBuff); free(pUnicodeBuff); return pUtf8Buff; }
蹇冪悊瀛︿負璇ュ獎鐗囦簡鐞嗚鍩虹錛岀洍姊︾殑鐩殑灝辨槸涓轟簡紿ユ帰鐩爣鍩嬭棌鍦ㄥ績閲岀殑縐樺瘑錛屽洜涓烘ⅵ鏄吉瑁呭緱鏈灝戠殑娼滄剰璇嗚〃鐜般傝屼綔涓鴻繘鍏ョ洰鏍囨ⅵ澧冪殑宸ュ叿錛屽婕斿嵈鏄竴絎斿甫榪囷紝涓嶅緱涓嶈鏄竴涓仐鎲撅紝鍥犺岃褰辯墖涔熷氨鎴愪簡涓閮ㄧ函縐戝夠鐢靛獎銆?/p>
瑙傚獎姣曪紝涓漢鎰熻Dream Design搴旇涔熷拰Game Design鐩鎬技鍚э細鏁呬簨銆佷漢鐗┿佹椂闂淬佸満鏅殑璁捐銆侾rogrammer涔熸繁鍒誨湴娓╀範浜嗕竴涓嬮掑綊鍚с?/p>
B.T.W. 澶氬勾浠ユ潵錛岃兘澶熸捈鍔ㄦ垜鎬濇兂鐨勫獎鐗囦粎鏈変袱閮細"The Matrix"鍜?Inception"銆?/p>
1錛塅ree 3G閫熷害蹇紝鐪嬫柊闂繪柟渚匡紱
2錛夊垎杈ㄧ巼楂橈紝瀛椾綋娓呮櫚錛?/p>
2錛塏ative PDF Support錛岀炕欏甸熷害宸茬粡寰堝揩浜嗭紝瀵逛簬鍐呭祵涓枃瀛椾綋涔熸湁寰堝ソ鍦版敮鎸併傜湅PDF鏂囨。鏃訛紝9.7瀵稿睆姣?瀵稿睆鏇存槗浜庨槄璇匯俍oom鍔熻兘榪戜箮楦¤倠錛屽洜涓哄緢涓嶅枩嬈㈡媺鐫婊氬姩鏉¢槄璇伙紝鐪嬫壂鎻忎功鐨勬椂鍊欓《澶氱敤涓涓嬫í灞忋傛澶栵紝鐢變簬Kindle浼氭妸棰滆壊杞崲涓虹伆搴︼紝鎵浠ュ浜庨潪綰壊鐨勬枃瀛楋紝浼氭樉寰楀緢娣°?/p>
3錛夌敱浜嶢mazon灝哅obipocket鏀跺綊鏃椾笅鐨勭紭鏁咃紝鎵浠ュmobi/prc鏂囦歡鏍煎紡鐨勬敮鎸佸拰azw鏍煎紡涓鏍峰ソ錛屾彁渚涙寚璇戙佸瓧浣撶緝鏀俱佹敞閲?絎旇絳夊姛鑳斤紱
4錛夐氳繃Gift Card鐨勬柟寮忚喘涔扮數瀛愪功涔熸尯鏂逛究錛屽厤鍘諱簡涔扮焊璐ㄤ功鐨勮繍璐瑰拰榪愯緭寤惰繜銆備笉榪囨妧鏈功鐨勭數瀛愮増鏈緢灝戯紝涓斾環鏍兼槀璐碉紱
5錛夊緟鏈烘椂闂撮暱錛岃繖鏄疎-INK闃呰鍣ㄧ殑涓澶т紭鍔匡紱
6錛夊姞涓婂師瑁呯毊濂楋紝閲嶉噺鍜屼竴鏈珹4 600欏靛乏鍙崇殑涔﹀樊涓嶅銆?/p>
瀵逛簬鐢靛瓙涔﹁漿鎹㈠伐鍏鳳紝涓漢鎺ㄨ崘錛歁obipocket鍜孋alibre錛堜粎Mac OS錛夈傚悗鑰呮槸寮婧愮殑錛屽姛鑳藉拰杈撳嚭鏂囦歡璐ㄩ噺鑳滀簬鍓嶈呫?/p>
1錛夌伒媧匯侀珮鍙厤緗э紝濡傦細澶氶噸緇勫悎鏉′歡瑙﹀彂銆佸浠誨姟闃熷垪絳栫暐錛?
2錛夊吋瀹圭洰鍓嶅嚑涔庢墍鏈夌殑嫻佽SCM宸ュ叿錛屼嬌寰楀縐嶅紓鏋勭郴緇熻兘澶熺敱CruiseControl.NET緇熶竴鐩戞帶鍜岀鐞嗭紱
3錛夊畬鍠勭殑浣跨敤鏂囨。錛屼嬌涓婃墜鍜岀淮鎶ゅ彉寰楀鏄擄紱
鑰岃欏圭洰寮曚互鑷豹鐨勪唬鐮乧heck in瑙﹀彂鏋勫緩鐨勫姛鑳介氳繃CC.NET涔熷緢瀹規槗瀹炵幇銆備箣鍓嶄嬌鐢ㄨ繃Hudson錛岃緋葷粺閲囩敤涓諱粠寮忔灦鏋勶紝浣跨敤鑰呴氳繃緗戦〉璁㎝aster鎺у埗Slave鍔ㄤ綔錛岀敱浜嶮aster鐢卞埆鐨勯儴闂ㄧ鐞嗭紝鍑洪棶棰樺悗闇瑕佽仈緋葷浉鍏充漢瑙e喅錛屼細鏈変竴瀹氱殑澶勭悊寤惰繜錛岃屼笖瀹夎鍦ㄦ瀯寤烘満涓婄殑Slave鏈嶅姟緇忓父宕╂簝銆傝孋C.NET鐩存帴瀹夎鍦ㄦ瀯寤烘満涓婏紝閰嶇疆IIS鍚庡彲閫氳繃緗戦〉鐩存帴璁塊棶錛屾搷浣滅淮鎶ら兘杈冨墠鑰呭鏄撱傜敱浜庝箣鍓嶇殑鏋勫緩鑴氭湰鏄敤VisualBuild瀹炵幇鐨勶紝鎵浠ヤ笉鍙兘鍐嶈姳鏃墮棿鐢–C.NET鍐嶅啓涓閬嶃傝岄氳繃瀹為獙寰楃煡錛屽叾瀹濩C.NET鑳藉浠xecutableTask鐨勫艦寮忓緢濂藉湴涓嶸isualBuild闆嗘垚錛岀洰鍓嶆瘡灝忔椂瀹氭椂鏋勫緩銆丯ightBuild鍜屾瀯寤烘垚鍔熷悗瑙﹀彂鐨勮嚜鍔ㄦ祴璇曢兘宸茬粡鏀懼埌浜咰C.NET涓婁簡銆?
ccnet.config Example:
<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> <queue name="Q1" duplicates="ApplyForceBuildsReAdd" /> <queue name="Q2" duplicates="ApplyForceBuildsReAdd" /> <project name="AgileBuild" queue="Q1" queuePriority="1"> <category>AutoBuild</category> <triggers> <filterTrigger startTime="18:00" endTime="10:00"> <trigger type="intervalTrigger" name="Continuous" seconds="1800" buildCondition="ForceBuild" /> <weekDays> <weekDay>Monday</weekDay> <weekDay>Tuesday</weekDay> <weekDay>Wednesday</weekDay> <weekDay>Thursday</weekDay> <weekDay>Friday</weekDay> </weekDays> </filterTrigger> </triggers> <tasks> <exec> <executable>VisBuildCmd.exe</executable> <buildArgs>E:\GAMEDev\AgileBuilder.bld</buildArgs> <baseDirectory>D:\VisBuildPro7</baseDirectory> <buildTimeoutSeconds>3000</buildTimeoutSeconds> </exec> </tasks> </project> <project name="NightBuild" queue="Q2" queuePriority="1"> <category>AutoBuild</category> <triggers> <scheduleTrigger time="23:00" buildCondition="ForceBuild" name="Scheduled"> <weekDays> <weekDay>Monday</weekDay> <weekDay>Tuesday</weekDay> <weekDay>Wednesday</weekDay> <weekDay>Thursday</weekDay> <weekDay>Friday</weekDay> </weekDays> </scheduleTrigger> </triggers> <tasks> <exec> <executable>VisBuildCmd.exe</executable> <buildArgs>"BUILD_OPTION=clientworldeffect" "PACK_TYPE=RAR" E:\GAMEDev\NightBuilder.bld</buildArgs> <baseDirectory>D:\VisBuildPro7</baseDirectory> <buildTimeoutSeconds>0</buildTimeoutSeconds> </exec> </tasks> </project> <project name="NightAutoTest" queue="Q2" queuePriority="2"> <category>AutoTest</category> <triggers> <projectTrigger serverUri="tcp://heath-builder:21234/CruiseManager.rem" project="NightBuild"> <triggerStatus>Success</triggerStatus> <innerTrigger type="intervalTrigger" seconds="60" buildCondition="ForceBuild" /> </projectTrigger> </triggers> <tasks> <exec> <executable>VisBuildCmd.exe</executable> <buildArgs>E:\GAMEDev\AutoTest.bld</buildArgs> <baseDirectory>D:\VisBuildPro7</baseDirectory> <buildTimeoutSeconds>0</buildTimeoutSeconds> </exec> </tasks> </project> </cruisecontrol>
References
[1] http://cruisecontrol.sourceforge.net/
[2] http://www.kinook.com/VisBuildPro/
Table瀹為檯涓婃槸鏁扮粍鍜屽搱甯岃〃鐨勬販鍚堜綋銆傚綋淇濆瓨浠ヨ繛緇暣鏁頒負绱㈠紩鐨勫唴瀹規椂錛屼嬌鐢ㄦ暟緇勭粨鏋勶紱鑰屽浜庣鏁g儲寮曞強閿煎錛屽垯浣跨敤鍝堝笇琛ㄥ瓨鍌ㄣ傝繖鏍峰仛瀵逛簬絀洪棿鑺傜渷鍜屾煡鎵炬晥鐜囬兘鏄湁濂藉鐨勶紝涓句緥錛?/p>
tt = {"a" , "b" , "c"} print(#tt) --> 3 tt[100] = "d" print(#tt) --> 3 (100-"d"閿煎鏀懼叆鍝堝笇琛? tt[4] = "e" print(#tt) --> 4
浜屻丆losure
Lua鐨勫彉閲忓紩鐢ㄨ鍒欓犳垚浜嗛棴鍖呯殑鍑虹幇錛屽湪Lua涓竴涓鏉傛暟鎹粨鏋勶紙table銆乫unction錛夎璧嬩簣涓涓彉閲忔椂錛屽彉閲忎粎浠呮嬁鍙栧叾寮曠敤銆傝瘯鑰冭檻涓嬮潰浠g爜鐗囨錛?/p>
local f1 = function() ... end local f2 = function() ... end local f3 = f1
鍒ゆ柇f1涓巉2鏄惁鐩哥瓑錛屽緱鍒扮殑緇撴灉涓哄亣錛岃宖3涓巉1鍒欎負鐪熴傝繖鏄洜涓篺1涓巉2寮曠敤浜嗕袱涓笉鍚岀殑鍑芥暟chunk錛堜篃鍙О涓衡滃畾涔夆濓級錛岃宖1鐩存帴灝嗗叾寮曠敤錛堝彲浠ョ湅鎴怌/C++涓殑鍦板潃錛夎祴緇檉3錛屾晠鑰岀浉絳夈?br>鐞嗚В浜嗕笂闈㈤棶棰橈紝鍐嶇湅鐪嬩笅闈㈢殑涓涓嚱鏁幫細
function createCounter() local x = 0 return function() x = x + 1 print(x) end end
閭d箞錛屼笅闈1涓巆2鐩哥瓑鍚楋紵
c1 = createCounter() c2 = createCounter()
鐢變簬createCounter涓殑return閮ㄥ垎鍒涘緩浜嗕竴涓柊鍑芥暟錛屽洜姝1鍜宑2寮曠敤鐨勫嚱鏁板茍涓嶇浉鍚屻傚洜涓簉eturn鐨勫尶鍚嶅嚱鏁頒腑浣跨敤鍒頒簡澶栭儴鍑芥暟(鍗砪reateCounter)鐨勫眬閮ㄥ彉閲弜錛屾墍浠ua蹇呴』瑕佸湪鏌愪釜鍦版柟淇濆瓨榪欎釜鍙橀噺錛屽張鍥犱負姣忔榪斿洖鐨勯兘鏄竴涓柊鍑芥暟錛屾墍浠ua涓嶈兘鍏變韓createCounter涓殑x錛岃繘鑰孡ua蹇呴』涓烘瘡涓柊鍑芥暟鍒嗛厤涓涓繚瀛榵鐨勫湴鏂癸紝榪欎釜闂瀵艱嚧浜嗛棴鍖呮蹇電殑浜х敓銆?br> 閫氳繃涓婇潰鍒嗘瀽錛屽彲浠ユ槑鐧芥槸璇█鏈哄埗瀵艱嚧浜嗛棴鍖咃紝鑰岀粷闈濴ua浣滆呮晠鎰忓埗閫犲嚭榪欎箞涓涓湅浼兼湁鐐圭縐樼殑涓滆タ銆?br> 涓嬮潰緇欏嚭闂寘鐨勫畾涔夛細涓涓繚鐣欎簡鍒涘緩鏃朵笂涓嬫枃鐨勫嚱鏁般傝寀pvalue鐨勫畾涔夋槸錛氳闂寘璁塊棶鐨勪繚鐣欏彉閲忋傚疄闄呬笂鎵鏈夊湪Lua涓垱寤虹殑鍑芥暟閮芥槸闂寘錛屽湪璁稿鎯呭喌涓嬩粎鏈変竴涓師鍨嬬殑闂寘瀛樺湪錛屽洜涓哄嚱鏁板潡鍙墽琛屼簡涓嬈★紙涔熷彲浠ヨ瀹氫箟浜嗕竴嬈★級銆?
涓嬮潰浠g爜鐢ㄩ棴鍖呭疄鐜頒簡涓涓璞″伐鍘傦細
local function CounterFactory() local x = 0 return { Increase = function() x = x + 1 end , Decrease = function() x = x - 1 end , GetValue = function() return x end } end local c1 = CounterFactory() local c2 = CounterFactory() c1.Increase() c1.Increase() print(c1.GetValue())
涓夈乀ail Call
棣栧厛闇瑕佹槑紜甒hat is 鈥楾ail Call鈥?鈥斺斿叾褰㈠紡涓衡渞eturn f(鈥?鈥濓紝return璇彞涓殑鍑芥暟璋冪敤浠呴檺浜庡崟涓璋冪敤錛屾秹鍙婂嚱鏁拌繑鍥炲艱繍綆楃殑澶嶅悎琛ㄨ揪寮忎笉鏄熬璋冪敤錛屽錛歳eturn i * f(i - 1)銆傜敱瀹氫箟鍙互鐪嬪嚭灝捐皟鐢ㄥ疄闄呬笂鏄浣嶄簬榪斿洖璇彞涓殑鍑芥暟璋冪敤鐨勪紭鍖栥傞氬父璋冪敤涓涓嚱鏁伴兘闇瑕佸皢鍏朵笂涓嬫枃鍏ユ爤錛岀劧鍚庡啀榪涘叆琚皟鍑芥暟銆傚湪Lua涓墽琛岀鍚堝熬璋冪敤褰㈠紡鐨勫嚱鏁版椂錛屽洜涓鴻鍑芥暟宸茬粡娌℃湁浠g爜闇瑕佹墽琛屼簡錛屾晠浣滆呬綔浜嗕笉淇濆瓨涓婁笅鏂囩殑浼樺寲銆傝繖鏍峰甫鏉ョ殑濂藉鏄細瀵逛簬綺懼績鏋勫緩鐨勯掑綊璋冪敤錛屼笉闇瑕佹湁鏍堢殑娑堣楋紝鍥犺岀粷瀵逛笉浼氬嚭鐜皁verflow錛岀湅鐪嬩笅闈㈤掑綊璋冪敤浜х敓鐨勬寰幆錛?/p>
local function f(n) local i = n + 1 print(i) return f(i) -- tail call end f(0)
鍥涖丮etatable
Metatable甯哥敤鏉ユ墿灞晅able鐨勮涓猴紝閫氳繃setmetatable(table , metatable)灝唌etatable鎸傛帴鍒皌able涓婏紝寰堝寮鍙戣呯敤璇ョ壒鎬ф潵瀹炵幇闈㈠悜瀵硅薄鐨勮璁°侻etatable涓彁渚涗簡Metamethods錛岃繖浜涙柟娉曢兘浠ュ弻涓嬪垝綰縚_寮澶達紝濡傦細
__add , __call , __concat , __div , __eq , __index...
浠ヤ笂Metamethods涓紝__index琚皟鐢ㄧ殑鏉′歡鏄細key涓嶅湪瀵瑰簲鐨則able涓傚埄鐢ㄨ鐗規у彲浠ュ疄鐜扮被-瀵硅薄銆佺戶鎵跨瓑闈㈠悜瀵硅薄姒傚康錛屼笅闈㈡槸涓畝鍗曚緥瀛愶細
local Actor = {} Actor.name = "unnamed" Actor.hp = 100 Actor.dead = false Actor.level = 1 Actor.type = "unknown" function Actor:Say(text) print(self.name..":"..text) end function Actor:IsDead() return self.dead end local AttackableActor = setmetatable({ } , { __index = Actor }) AttackableActor.damage = 20 function AttackableActor:ReceiveHit(attacker) self:Say("I'm being attacked by "..attacker.name) self.hp = self.hp - attacker.damage if self.hp <= 0 then self:Say("I'm died :(") self.dead = true else self:Say("My HP is "..self.hp) end end function AttackableActor:Attack(target) if target.dead == true then self:Say("Oh, "..target.name.." has been dead!") else self:Say("I'm is attacking "..target.name) target:ReceiveHit(self) end end function CreateMonster(name , damage) local m = setmetatable({ } , { __index = AttackableActor}) m.name = name m.damage = damage m.type = "monster" return m end function CreatePlayer(name , damage) local p = setmetatable({ } , { __index = AttackableActor}) p.name = name p.damage = damage p.type = "player" return p end math.randomseed(os.time()) local boss = CreateMonster("Kerrigan" , math.floor(100 * math.random())) local player = CreatePlayer("Raynor" , math.floor(100 * math.random())) while player:IsDead() == false and boss:IsDead() == false do player:Attack(boss) boss:Attack(player) end
浜斻丳erformance Tips
璇峰弬鑰?a target="_blank">Lua Performance Tips
鍏佹葷粨
Lua鏄竴闂ㄨ娉曠畝媧侊紝鐢ㄦ硶鐏墊椿鐨勫姩鎬佽璦銆傚湪鍏ㄩ潰鎺屾彙涔嬪悗錛岄渶鎮夊績浣跨敤涔冨彲鏋勯犲嚭綆媧侀珮鏁堢殑浠g爜銆?/p>
Jason Gregory鍦ㄤ粬鐨勫紩鎿庢灦鏋勮璁′竴涔︿腑涔熺敤鈥淭o SLERP or Not to SLERP (That鈥檚 Still the Question)鈥濅竴灝忚妭浠嬬粛浜嗗紑鍙戣呭Slerp鐨勪簤璁猴紝騫朵粙緇嶄粬鍦∟aughty Dog鐨勫悓浜嬮拡瀵筆S3鐨勪紭鍖栨柟娉曪紝浣縎lerp鍙揪鍒?0鍛ㄦ湡/鍏寵妭錛岀浉姣擫erp鐨?6.25鍛ㄦ湡/鍏寵妭宸茬粡寰堜笉閿欎簡銆?/p>
涔嬪墠紜疄娌″Slerp鐨勬晥鐜囬棶棰樹綔榪囧鐨勮冭檻錛屽紩鎿庣殑Slerp鐩存帴浣跨敤鐨勬槸D3DXQuaternionSlerp錛孧S搴旇瀵瑰叾鍋氫簡浼樺寲錛屾晥鐜囨庝箞鏍瘋嫻嬩竴涓嬫墠鐭ラ亾浜嗐?/p>