本周人數:15+
Table of Contents
|
Mat:
google 出了 javascript 的 framework : closure-library
http://code.google.com/closure/library/
用 javascript 可以使用 gettext
http://code.google.com/p/gettext-js/
xgettext.pl -D ../js/
UML 工具 :umbrello, 將 code import 之後,class 拉一拉就可以自動畫關係線
Tsung:
http://plog.longwin.com.tw/programming/2009/03/13/gettext-mo-convert-po-php-reader-mo-2009
http://plog.longwin.com.tw/programming/2007/09/16/gettext_php_i18n_2007
多金的英文名字
http://plog.longwin.com.tw/news-life-joke/2005/07/01/money_eng_name
我不是網管,我什麼都不管。
hychen:
用 python 的 binascii 可以處理位元字串
yan:
把 sm 再改成自動載入模組
當看一些二進制檔搞亂了你的終端機, 可以
$ tput init 或 reset
fbterm 會綁住 Ctrl+Alt, 這時不能切換 tty, 可以
$ chvt 3
原來在ttyN下只要Alt+F[1-9]就可以切換了
Compromised Website
大砲開講
http://rogerspeaking.com/2007/01/32
天罣—輪迴的阿修羅
http://tw.myblog.yahoo.com/edward_205_6/
TW 網站淪陷資料庫
http://www.itis.tw/compromised
XSSed
http://www.xssed.com/
Aki:
紹介 Trayer
trayer --transparent true --tint 0x000000 --edge top --widthtype request --align right --height 18 &
http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04
笑臉跟 orz 的 bash prompt
fourdollars:
rumor
聽 nmap 的作者說,用 xss 攻擊是很娘的行為 XD
Reference in C++ Programming
http://fourdollars.blogspot.com/2009/11/c-programming-call-by.html
basic.cpp
#include <iostream> void funcA(int &); void funcB(int); void funcC(int *); int main(int argc, char* argv[]) { int value = 10; std::cout << value << std::endl; funcA(value); std::cout << value << std::endl; funcB(value); std::cout << value << std::endl; funcC(&value); std::cout << value << std::endl; return 0; } /* Call by reference */ void funcA(int& val) { val = 20; } /* Call by value */ void funcB(int val) { val = 30; } /* Call by pointer */ void funcC(int* val) { *val = 40; }
adv.cpp
#include <iostream> using namespace std; void funcA(const int&); void funcB(int); void funcC(const int*); int main(int argc, char* argv[]) { const int value = 10; cout << value << " " << &value << endl; funcA(value); cout << value << " " << &value << endl; funcB(value); cout << value << " " << &value << endl; funcC(&value); cout << value << " " << &value << endl; return 0; } /* Call by reference */ void funcA(const int& value) { int &tmp = const_cast<int&>(value); tmp = 20; cout << "\t" << value << " " << &value << endl; } /* Call by value */ void funcB(int value) { value = 30; cout << "\t" << value << " " << &value << endl; } /* Call by pointer/address */ void funcC(const int* value) { int* tmp = const_cast<int*>(value); *tmp = 40; cout << "\t" << *value << " " << value << endl; }
output
$ ./main
10 0xbfb17040
20 0xbfb17040
10 0xbfb17040
30 0xbfb17020
10 0xbfb17040
40 0xbfb17040
10 0xbfb17040
Rex's comment
main::value 是一個 alias, compiler (g++ 4.3.4) 會替換成 integral literal,但是依然會在 Stack 中配置此變數供人使用。因此你可以對其寫入 (as memory/stack),惟讀取時依然讀 integral literal. 若要讀改過後值應是
std::cout << "g:" << *(int *)&value << std::endl;
Mat: 剛剛試了一下,發現好像只要只要 pointer 設成 const 的話,那麼 pointer 跟 *pointer 都會是唯讀的。
用 const_cast 取出來的,應該是原唯讀資料的複本。
Rex: const pointer 有三種設法,見 http://yosefk.com/c++fqa/const.html#fqa-18.5
$4: 實驗結果是變數值真的被改變過了~ 而不是建立複本~ 只是後來又被改回原值了~ http://fourdollars.blogspot.com/2009/11/gcc-c-compiler-const.html
$4: GCC C++ Compiler 對 const 變數數值的還原保護僅限於直接傳入函式的變數本身,不包含該 const 變數底下的 const 變數 http://fourdollars.blogspot.com/2009/11/gcc-c-compiler-const_15.html
$4: GCC C++ Compiler 根本沒有還原 const 變數的數值,只不過先行代換掉使用 const 變數的地方。http://fourdollars.blogspot.com/2009/11/gcc-c-compiler-const-const.html