#
??? 剛才用visudo編輯sudoers文件,編輯完保存的時候,碰巧PuTTY估計因為網絡傳輸的問題出現了刷新不及時,有些文本有亂碼,只看到最后一個選項有save的字樣,順手就選了最后一個選項。完了才反應過來,剛才的sudoers文件有語法錯誤,悲劇了,真是欲哭無淚啊。服務器是ubuntu,剛裝好還沒設置root密碼,sudoers文件一完蛋就沒法再sudo了,看來只能明天手動恢復了。
??? 教訓:
?? ???? 1. ubuntu安裝完后必須立即設置好root密碼并記住,ubuntu默認不讓用root,實在不能稱之為一個好的設計。
?? ???? 2. 隨手一個按鍵這個linux系統就完蛋了,以后做這種操作的時候,必須慎之又慎。
?? ????
??? 打了兩簽招商證券,結果中了一簽,概率2%。總算rp爆發了一把,紀念一下。
??? 現在用Google Docs寫博客并發布很方便,但是對于那些同時維護多個博客站點的人來說,要是寫好后能同時發布到多個博客站點那就更爽了。
??? 最近關閉visual studio 2005的模擬器后,DeviceEmulator.exe進程始終不退出,并占用大量cpu,整個系統處于假死狀態,必須手工殺掉DeviceEmulator.exe進程才能恢復正常。最后實在沒辦法了,從Visual Studio 2008的安裝盤里摳出新版的Device Emulator(在WCUARM目錄下),安裝后問題解決。
??? 以前的模擬器一直使用得很好,不知道改了什么地方visual studio 2005的模擬器就不正常了。
?? ?最近老碰到要查詢某個字符串在文件中第n個出現時的位置,UltraEdit的查找功能要做到這個好像比較難,看了下幫助,覺得用腳本完成再簡單不過了。
??? UltraEdit對javascript的支持不錯,寫了個小腳本如下:
var str?? ?= UltraEdit.getString("input string",1);
var nTime = UltraEdit.getValue("input count",1);
UltraEdit.activeDocument.top();
var nFindTimes = 0;
for(;nFindTimes < nTime; nFindTimes++){
?? ?UltraEdit.activeDocument.findReplace.find(str);
?? ?if(!UltraEdit.activeDocument.isFound()){
?? ??? ?UltraEdit.messageBox("there is only " + nFindTimes + " "+ str);
?? ??? ?break;
?? ?}
}
??? 搞定。
??? 在windows下連接android手機需要驅動程序,在linux下卻能自動識別,但是還是需要一點點設置。
??? 以ubuntu為例,當把usb連接線連上電腦和手機時,手機會彈出一個對話框,這里要在對話框里選擇“調試”模式。
?? ?ubuntu把android手機識別為網卡usb0,在操作手機前,需要設置一個ip地址:
?? ?sudo ifconfig usb0 192.168.100.1
??? 為了讓adb命令控制手機,需要設置環境變量ADBHOST:
??? export ADBHOST=192.168.100.2
??? 然后輸入adb shell就可以進入手機的控制臺了。
??? 每次插拔usb線的都需要進行上述設置,可把這些命令保存為一個shell文件:
#!/bin/bash
sudo ifconfig usb0 192.168.100.1
export ADBHOST=192.168.100.2
adb kill-server
adb start-server
摘要: vc 2005 sp1下isspace函數的debug版本對中文處理有問題
今天碰到一個怪問題,從別人那兒拿來的一段代碼先在gcc下過了,又移植到vc下編譯,結果debug時老是有assert錯誤。看了一下代碼,錯誤發生在一個trim函數中。trim函數接受一個char*類型的字符串參數,去掉字符串前后的空格、制表符等空白字符。其中判斷是否是空白字符用的是 isspace函數。按照一般的想法,char*字符串里的字符編碼無論是GBK還是utf-8,因為都兼容ASCII,所以isspace函數都不應該發生問題。但事實是只要是字符串有中文,無論是gbk還是utf-8編碼,isspace內都有assert錯誤。為了便于說明,把其中的代碼抽像出來如下:
閱讀全文
?? ?摘自 http://hi.baidu.com/ashuy/blog/item/69a25f60327d96dd8cb10d0f.html
?? ?Firefox同樣支持W3C標準屬性,包括childNodes、firstChild、lastChild、nextSibling、 nodeName、nodeType、nodeValue、ownerDocument、parentNode和previousSibling。不幸的是,對于微軟專有的text和xml屬性,Firefox并不支持,不過可以利用其他方法來模擬該屬性的行為。
?? ?大家應該還記得,text屬性返回了當前節點的內容,或者是當前節點及其子節點的內容。這不僅僅返回當前節點的文本,還有所有子節點的文本,因此要模擬該功能實現是十分容易的。下面這個簡單的函數就能夠完成該功能,該函數唯一的參數是一個節點:
function getText(oNode) {
?? ?var sText = "";
?? ?for (var i = 0; i < oNode.childNodes.length; i++) {
?? ??? ?if (oNode.childNodes[i].hasChildNodes()) {
?? ??? ??? ?sText += getText(oNode.childNodes[i]);
?? ??? ?} else {
?? ??? ??? ?sText += oNode.childNodes[i].nodeValue;
?? ??? ?}
?? ????}
?? ?return sText;
}
?? ?在getText()函數中,sText變量用來保存獲取的所有文本。接著對oNode的子節點使用for循環進行遍歷,檢查每個子節點是否包含子節點。如果有子節點,那么就將其childNode傳給getText()函數,并進行同樣的處理;如果沒有子節點,那么將當前節點的nodeValue 加到字符串中(對文本節點而言,這只是文本字符串)。處理了所有子節點后,該函數返回變量sText。
摘要: 很多網站有多個語言版本,根據用戶的區域語言來選擇具體的版本。比如google appengine就是這樣,但是可惜的是,它的中文頁面更新速度遠遠落后于英文頁面。比如現在我想下載google appengine sdk,英文頁面上早就是1.1.9下載了,但中文版上還是1.1.0。在中文windows下,默認總是進入appengine頁面的中文版,如果能修改我們的首選語言為英語的話,就總能看到最近的更新了。
閱讀全文
摘要: android 1.0 代碼剛開放到時候,里面并沒有帶gdbserver,有些強人就自己編譯了gdbserver來使用。不過現在好了,android的新源碼里已經包含了 gdbserver,就在prebuilt目錄下。如果想在android 1.0里使用,可以到如下地址下載:http://android.git.kernel.org/?p=platform/prebuilt.git;a=tree。gdbserver的二進制文件就在android-arm/gdbserver/gdbserver,我們只需要把gdbserver這個可執行文件放到模擬器上即可。
閱讀全文