當程式碼越來越多
常常在加加減減和copy and paste的過程中
容易造成新copy的header file開頭的#ifndef忘了跟著改
這個情況常讓工作者抓不著頭緒
在開發工具上看著只是一些簡單的定義明明都有宣告
在相對應的程式碼中也有正確include需要的header path
可是compiler一直抱怨
error: `XXXXX' undeclared (first use in this function)
這個時候應該可以先檢查看看
是不是自己顧著快速copy and paste code卻忘了修改一些定義
常見的就是copy a new header
然後卻忘了改開頭的
#ifndef __MY_HEADER_H__
#define __MY_HEADER_H__
........
#endif /* __MY_HEADER_H__ */
2010年12月1日 星期三
2010年8月20日 星期五
Canon 鏡頭編號
1.第一個字母代表鏡頭的生產工廠︰U=Utsunomiya 日本宇都宮廠房
2.第二個字母代表生產年份︰
A 1986 J 1995 S 2004
B 1987 K 1996 T 2005
C 1988 L 1997 U 2006
D 1989 M 1998 V 2007
E 1990 N 1999 W 2008
F 1991 O 2000 X 2009
G 1992 P 2001 Y 2010
H 1993 Q 2002 Z 2011
I 1994 R 2003
3.後面4位數字:鏡頭生產月份和日期
如果鏡頭編號為UY0601:該鏡頭是日本宇都宮廠房2010年6月份生產的.
=================================================
生產工廠代號︰
O︰大分工廠
K︰大分杵築工廠
U︰宇都宮工廠
F︰福島工廠
T︰台灣工廠
S︰滋賀長 工廠
M︰宮崎
2.第二個字母代表生產年份︰
A 1986 J 1995 S 2004
B 1987 K 1996 T 2005
C 1988 L 1997 U 2006
D 1989 M 1998 V 2007
E 1990 N 1999 W 2008
F 1991 O 2000 X 2009
G 1992 P 2001 Y 2010
H 1993 Q 2002 Z 2011
I 1994 R 2003
3.後面4位數字:鏡頭生產月份和日期
如果鏡頭編號為UY0601:該鏡頭是日本宇都宮廠房2010年6月份生產的.
=================================================
生產工廠代號︰
O︰大分工廠
K︰大分杵築工廠
U︰宇都宮工廠
F︰福島工廠
T︰台灣工廠
S︰滋賀長 工廠
M︰宮崎
2010年8月6日 星期五
Compare two binary
有時候我們會需要比較兩個binary是否相同
可以用:
hexdump -C xxx.bin > file1
hexdump -C yyy.bin > file2
diff -y file1 file2 | more
可以用:
hexdump -C xxx.bin > file1
hexdump -C yyy.bin > file2
diff -y file1 file2 | more
2010年7月15日 星期四
remount的意義
Controlling and Querying Mounts
int mount (const char *special_file, const char *dir, const char *fstype, unsigned long int options, const void *data)For a remount, dir specifies the mount point where the filesystem to be remounted is (and remains) mounted and special_file is ignored. Remounting a filesystem means changing the options that control operations on the filesystem while it is mounted. It does not mean unmounting and mounting again.
Mount, Unmount, Remount
2010年6月7日 星期一
如何修改Firefox Plug-in的語系
有時候找了幾個好用的Plug-in
明明以為是英文語系
但他安裝過程會自動幫你安裝成簡體中文
如果還是習慣看英文介面怎麼辦?
我的方法是,直接去改firefox的config =_=
明明以為是英文語系
但他安裝過程會自動幫你安裝成簡體中文
如果還是習慣看英文介面怎麼辦?
我的方法是,直接去改firefox的config =_=
- 在URL欄敲 about:config
- 進去後在Filter欄找general.useragent.locale
- 把原本的zh-TW改成en-US
- restart firefox
2010年6月4日 星期五
Catching Integer Overflows in C
Integer Overflows are arithmetic errors. Integers have finite ranges in computers, for example a 32-bit unsigned integer goes from 0 to 0xffffffff. If you add one to 0xffffffff, you get 0 again.
Since the addition operation in the CPU is agnostic to whether the integer is signed or unsigned, the same goes for signed integers. For 32-bit signed integers, the minimum value is 0x80000000 (-2147483648) and the maximum value is 0x7fffffff (2147483647). Note that there is no value than can hold 2147483648, so if you negate (int)0x80000000, you get (int)0x80000000 again. That is something to look out for, because it means abs() returns a negative value when fed -2147483648.
原文出處: http://www.fefe.de/intof.html
2010年6月3日 星期四
拍出不再淺景深的食物
拉高ISO + 縮光圈(F4~F6.3)
調成手動模式, 快門速度設在安全快門附近
如果食物太大又不想拍得後方糊掉
相機拿高一點拍俯角試看看 <-- 從側邊拍因為焦平面問題通常都會部分糊
另外的重點是拍時不要離主體太近拍
回去再裁圖處理即可
調成手動模式, 快門速度設在安全快門附近
如果食物太大又不想拍得後方糊掉
相機拿高一點拍俯角試看看 <-- 從側邊拍因為焦平面問題通常都會部分糊
另外的重點是拍時不要離主體太近拍
回去再裁圖處理即可
2010年6月1日 星期二
[HowTo] SVN rollback
網路上看到一段話寫著:
SVN 的設計原則就是鼓勵程序員瘋狂 commit,不用怕 commit 有 bug 的程式碼,SVN 記錄整個專案的變動歷程,而不是單一程式碼的變動,所以他的版次是整個專案在計算的。因此在版次之間的切換很方便,今天改錯了,那就回到先前沒錯的版本就 好。也就是因為這樣,他的 check-in check-out 速度飛快無比。為什麼要瘋狂 commit 呢,
Merge early, Merge often, Merge always…
寫了 code 就 commit,改得越少,Merge 越自動,比兩個人坐在隔壁寫程式還要寫得快。而且可以一起改同一支程式,而不用 Lock 程式。這是 SVN 的基本設計理念。如果要把某個時間點的程式碼狀態記下來,那就做一個標註(Tag) 在某個版號上就可以了。===================
回到主題,話雖如此,但應該不少朋友沒親自做過version rollback的動作
這邊分享一下,下回可以試試看:
假設新的版本是888,舊的版本是777
可以下 svn merge -r 888:777
就可以rollback到777版本了
有人或許會聯想到,這和svn up -r 777不同的是???
用merge的方式,會連888版本的log history都保留,因為你想做的是commit之後會是889之類
但如果你是直接update成777版本,這個時候你的local copy是777,且log history也是777
這個時候即使你想要commit,server應該也會報錯的喔~
SVN 的設計原則就是鼓勵程序員瘋狂 commit,不用怕 commit 有 bug 的程式碼,SVN 記錄整個專案的變動歷程,而不是單一程式碼的變動,所以他的版次是整個專案在計算的。因此在版次之間的切換很方便,今天改錯了,那就回到先前沒錯的版本就 好。也就是因為這樣,他的 check-in check-out 速度飛快無比。為什麼要瘋狂 commit 呢,
Merge early, Merge often, Merge always…
寫了 code 就 commit,改得越少,Merge 越自動,比兩個人坐在隔壁寫程式還要寫得快。而且可以一起改同一支程式,而不用 Lock 程式。這是 SVN 的基本設計理念。如果要把某個時間點的程式碼狀態記下來,那就做一個標註(Tag) 在某個版號上就可以了。===================
回到主題,話雖如此,但應該不少朋友沒親自做過version rollback的動作
這邊分享一下,下回可以試試看:
假設新的版本是888,舊的版本是777
可以下 svn merge -r 888:777
就可以rollback到777版本了
有人或許會聯想到,這和svn up -r 777不同的是???
用merge的方式,會連888版本的log history都保留,因為你想做的是commit之後會是889之類
但如果你是直接update成777版本,這個時候你的local copy是777,且log history也是777
這個時候即使你想要commit,server應該也會報錯的喔~
要記得errno的存在!!
不知道是沒睡醒還是在恍神
compile總是出現warning
直說我的func_xxx不是prototype
突然看到密密麻麻的func param當中出現了一個很閃的字眼 errno
OMG....趕快改掉吧 XD
compile總是出現warning
直說我的func_xxx不是prototype
突然看到密密麻麻的func param當中出現了一個很閃的字眼 errno
OMG....趕快改掉吧 XD
訂閱:
文章 (Atom)