Time of Update: 2018-12-03
在 Python 和 Haskell中有非常簡潔強大的 List Comprehension 用法: >>> [(x, y) for x in range (1, 4) for y in ["A", "B"]][(1, 'A'), (1, 'B'), (2, 'A'), (2, 'B'), (3, 'A'), (3, 'B')] 在 Common Lisp 中可以用 incf-cl 庫來實現, 通過 quicklisp 安裝很方便: * (ql:quickload
Time of Update: 2018-12-03
說得好像自己不讀書似的。不過說實話,有了筆記本、ipad、能隨時上網的手機,反而讀書的時間越來越少了。大量的時間都消磨在無意義的網路衝浪和不停的重新整理中了。下狠心,入手了kindle,準備將ipad扔進垃圾筒。今天入手第一天,閱讀記錄一下: k3_1 Jan-10: 《Beating the Averages》, What makes Lisp different , 外語學習的真實方法 (30%) 在英語那篇知道了
Time of Update: 2018-12-03
由於 Clozure CL 的文檔太糟糕,而且與slime及 cl-fad 之間有些不相容,在載入 hunchentoot 及使用中文時會有些問題。這裡提供一個繞過的辦法: 1. ccl::delete-directory 與 fad的同名函數衝突,因此先執行: (setf *default-file-character-encoding* :utf-8) 2. 中文編碼,先執行下面的語句,設定lisp源檔案的編碼 (setf *default-file-character-encoding*
Time of Update: 2018-12-03
《淺薄》 一書所講的內容,恰好與我遇到的實際問題完全相符: 我發現在網路越來越方便,資訊越來越多的時候,我已經難以專註的閱讀了。資訊變得零碎,在各個關聯的連結中跳來跳去,超過3分鐘不檢查微博或郵件就開始心痒痒。 這是壞事嗎? 或者說這會摧毀“深入”思考的能力嗎?現在說好說壞還很難講,但這就是正在發生的,人類的未來難道就是變成一個超級網路中的“思考電池”嗎? 想起《Matrix》裡的人體電池了。 《經濟史的趣味》 由一堆短篇的文章組成,剛剛讀完序。
Time of Update: 2018-12-03
之前曾經提到過的一個遠端偵錯“深空任務“中的飛行器上Lisp代碼的故事,我找到出處了, http://www.flownet.com/gat/jpl-lisp.html JPL就是推進動力實驗室,如果沒記錯的話,好像是錢學森參與建立的。 作者在文中提到了他離開JPL,去Google工作的一段經曆, 他想去推廣Lisp的應用,找到主管技術的VP,對話如下: Me: I'd like to talk to you about something...Him: Let
Time of Update: 2018-12-03
註:最重要的是去用它,Lisp不是學出來的,是用出來的。這裡總結一些我對Lisp實用的心得,與我最初的觀點不同,相信也不是最終的正確觀點,只是階段性的總結。0。Lisp一點都不怪異,也不需要瞭解函數式編程之類的,也不需要遞迴,也不需要研究人工智慧。1. 把Lisp當成Python那樣,去用。2. Emacs + Slime不只是工具,更是一種開發流程,編碼-運行-測試-改進迭代最快速。3。asdf 是庫管理的好工具4。quicklisp 是安裝庫最快捷的方式5。slime +
Time of Update: 2018-12-03
轉自:http://xxlovexx.cn/post/2012-09-25/40039094843虛擬電腦運行發生錯誤! 詳細的錯誤資訊顯示在下面. 你可以試著修複這個描述的錯誤並恢複虛擬電腦的運行.The I/O cache encountered an error while updating data in medium "ahci-0-0" (rc=VERR_DISK_FULL). Make sure there is enough free space on the disk and
Time of Update: 2018-12-03
本來是給 Lisp的給力特性 這篇文章的評論,奈何csdn的blog上無法提交,只好新發一篇: 目前我不知道到底與C++的宏(其實也是一樣的編譯期展開),還有比普通函數的優勢在哪。(原諒我才學Lisp沒有幾天)====Lisp 的Macro 與 C++中 Macro 的區別: (原諒我N多年沒用過C++) Lisp的語言本身就是 S運算式, Lisp 的Macro直接巨集指令清單,可以應用全部的Lisp文法工具來將輸入列錶轉換成目標的程式列表。相比較來說 C++的Macro更多隻是替換。
Time of Update: 2018-12-03
最近,在一個多文檔視圖結構裡面做介面,把標題列,功能表列,工具列隱藏了,然後用對話方塊代替,在對話方塊裡放置所需介面,對話方塊用CDialogBar衍生類別實現。其中關於視窗移動的問題,試了好幾種方法,比如,在對話方塊的OnMove,OnMoving訊息響應中發送訊息到主架構視窗,都不能滿足移動視窗要求,要麼某個方向移動艱難,要不拖動時留著背影殘留,最後,尋找了資料,找到了一個比較好的方法,於是解決了該問題。WM_SYSCOMMAND訊息請參見MSDN文檔。void
Time of Update: 2018-12-03
Haskell 原生的資料結構對於大規模的數學運算來說並不高效,如果使用 List 來儲存向量或者矩陣,是比較低效的。好在,Haskell有豐富的第三方庫,可以藉助強大的專業數學庫來完成這部分操作。今天將介紹的就是 hmatrix 這個庫。 一 安裝開發環境: MacOSX 10.51. 安裝依賴庫GSL (GNU Scientific Library),去GNU的官網下載原始碼自己編譯吧。2. 安裝 hmatrix, gnuplot 等,用 cabal install ,不再贅述。 ====
Time of Update: 2018-12-03
Icesword驅動部分icesword.exe 在執行的時候會放出一個驅動程式 ispubdrv.sys,icesword.exe 裝載這個驅動,這個驅動安裝後就不會卸載。直到系統重新啟動。這可能是因為驅動中調用了PsSetCreateThreadNotifyRoutine 函數.下面是這個函數在 ddk 中的介紹。/////////////////////////////////////////////// PsSetCreateThreadNotifyRoutine registers
Time of Update: 2018-12-03
最近需要把主架構視窗設定為圓角矩形,並且替換掉邊框顏色。程式中已經隱藏掉標題列,功能表列,工具列,因此邊框不是藍色,而是系統色彩。改變外圍邊框顏色是在void CMainFrame::OnNcPaint()中進行繪製邊框即可。設定主架構視窗為圓角矩形在void CMainFrame::OnSize(UINT nType, int cx, int cy){ CMDIFrameWnd::OnSize(nType, cx, cy); // TODO: 在此處添加訊息處理常式代碼 // 銷毀舊地區 m_
Time of Update: 2018-12-03
{此文轉自zzzevazzz,自己MARK一下,看官請注意原作} IceSword有反調試功能,搞的我想研究一下它的原理都舉步維艱。不過同樣是pjf的作品FileMgr卻沒有設防,正好拿來開刀。 經過IrpMon、IrpTrace、WinObj、NTObjects、WinDbg等工具的左右夾擊,終於發現FileMgr通過直接IoCallDriver(/Device/Ftdisk裝置對象,
Time of Update: 2018-12-03
之前一篇blog文章: 《侃侃那些美麗的程式設計語言(上)》裡面談到了 Smalltalk的自訂文法,感覺意猶未盡,特地展開談一下。 上文中已經說過了,Smalltalk 的文法很簡單,只有基本的三四條:一切都是對象,一切都是對象間的訊息。從這一個基礎出發,可以得到這樣的結論:一切文法都是對象和訊息。我們能自訂對象和對象的方法,因此,我們可以自己定義文法。 這一切成為可能的關鍵是:block , 它表示一個代碼塊,這個東西並不稀奇,在 ruby
Time of Update: 2018-12-03
同事把一個VC++2003開發的多文檔工程轉化為單文檔工程,按照網上所說,做了修改。但是在BOOL CSDITestApp::InitInstance()中的語句if (!ProcessShellCommand(cmdInfo))
Time of Update: 2018-12-03
搞SNDA的加密方式有一個多月的時間了。 由於遊戲選的不好,當初弄千年這個垃圾的時候一個星期搞定離線,但現在不行了,SNDA在驅動裡弄了一定的技巧,使得連ATTCH遊戲進程都不行。 尤其是驅動裡面加了VMP,更難弄了。 儘管逆向的結果很差,弄逆了2周的驅動只得作罷,中間有些技巧MARK一下。 在VM的時候需要選擇函數,然後產生程式搜尋E8,E9等CALL函數,讓它跳到VMP000418679 |.
Time of Update: 2018-12-03
//將E8 15 69 FF FF 89 44 24 28 68 8C 38 93 D8 9C C7一長條字串換成數組DWORD StringToHex(unsigned char *strin) { int i = 0, length = strlen((char*)strin) - 1; DWORD irt = 0; char strtmp[1] = {0}; while(strin[i]) { switch(strin[i]) {
Time of Update: 2018-12-03
最近在弄傳奇3的動態DLL檔案的時候很惱火~~盛大的遊戲的登陸之前會接受一段代碼,這段代碼邊解密邊執行,中間不過是搜尋KERNEL32的GetMoudleHandle、GetProcAddress、和LoadLibraryEx、SetUnhandleExceptionFilter(這個之後沒怎麼用到),找到這幾個函數之後,進行動態載入。如果在DLL載入進入遊戲之後的話,調試會不起作用,可能覺得裡面有ANTI的代碼,但是確定沒有調用DLL裡面的函數。可能在DLLMAIN裡面就已經執行了,
Time of Update: 2018-12-03
在 Ring3 的代碼調用了 sysenter 指令之後,CPU 會做出如下的操作: 1. 將 SYSENTER_CS_MSR 的值裝載到 cs 寄存器 2. 將 SYSENTER_EIP_MSR 的值裝載到 eip 寄存器 3. 將 SYSENTER_CS_MSR 的值加 8(Ring0 的堆棧段描述符)裝載到 ss 寄存器。 4. 將 SYSENTER_ESP_MSR 的值裝載到 esp 寄存器 5. 將特權級切換到 Ring0 6. 如果 EFLAGS
Time of Update: 2018-12-03
seaside 是一個Web開發架構,在《Beyond Java》中有一章專門介紹,目前版本到 3.0 了。seaside 是基於smalltalk的,對這個詞感到匪夷所思的讀者不必繼續了。 這裡記錄下它的部署過程: 1. 準備一個seaside 的運行環境, 下載 squeak, 以及一個可以啟動並執行 seaside image2. 在 webfactional 的 panel 中添加一個 Custom App, 添加完後,在列表中會有它 listening 的連接埠號碼3.