9/26/2008

創業成功的必要條件

規則#1:擁有一個具爭議性的策略。尋找反直覺的構想,然後執行。如果你照規矩來,你只會流於一般。區別才是關鍵。困難的是,你必須判斷正確。

規則#2:打破商業陳規,但不可用詐騙、說謊或偷竊的方式。這麼做,你將落得眾叛親離,失去忠誠員工對你的信賴。

規則#3:想辦法籌得一些錢,但不要太多。小數目的創業資本會迫使你錙銖必較、節省支出、追求效率,並且努力尋找新的生產途徑。

規則#4:具備一個理想。McNealy說:「人類大都是金錢驅動的,但他們也喜歡有一點精神上的收入。」例如,昇陽創造的開放原始碼學科維基Curriki,就解決了McNealy和他兒子作小學報告所碰到的問題。

規則#5:放手去作,但慎選伴侶。投入你全副的心力和靈魂去開創事業,但請在結婚之前。McNealy直到39歲才結婚,但婚後四個兒子接連出生。他建議:「你一生中最重要的決定就是和誰結婚生子。挑選一個配偶或重要的另一半,或任何你喜歡的伴侶。只要確定你挑了一個好人。這是一個創業者給你的一些實在的技術性建議。」

9/25/2008

tricky skill (1) in C

struct rumble {
  char c[1];
};

struct rumble *p = (struct rumble*) malloc(sizeof(struct rumble) + 5);
在C裡 有一個技巧就是在struct最後宣告一個單一元素的陣列
於是在malloc時就能擁有可變大小的struct rumble了

當然這個技巧也能用在C++ 但這會與compiler有關
因為雖然宣告在最後 compile時可能會產生額外的資料在最尾端

9/24/2008

預設值和多型的陷阱

class A {
  virtual void f(int i = 10);
};

class B: public A {
  void f(int i = 20);
};

A* a = B();
a->f();
這題多型很簡單 a->f()會呼叫class B裡的f()
但問題是如果印i出來 值會是多少呢

答案是i = 10
原因是預設引數是在編譯時期根據a的型別確定了
所以i就被初始為10
最後印出來就是10了

9/10/2008

last order

演唱:陳奕迅
作曲:Eric Kwok, 編曲:Eric Kwok
監製:Eric Kwok, 填詞:黃偉文

沒關係 真的沒關係 我也許 早就該回去
再一杯 我告訴自己 到此為止 乾了不再續
麻煩你 加冰威士忌 對不起 來個DOUBLE的
喝到這裡 終於夠勇氣 說一個經歷

*那晚下雨 在這店裡 也放著這首曲
 有個男子 搭上一個女子 反正失戀 他當然不介意 有段艷遇
 只是回到 他的家裡 十幾坪 家徒四壁
 一聲不響 那女的 掉頭離去
 就像 三個小時前 未婚妻 初次到來 嫌棄的樣子
(就像 我的未婚妻 對不起 好像說成是我的樣子 我是沒關係)

沒關係 真的沒關係 一晚上 就失戀兩次
那男子 還不懂懷疑 到底自己是否沒出息
不客氣 別給我ICE TEA 客人們不是我嚇跑的
別看著我 這個不過是 我朋友的經歷

Repeat #()

9/07/2008

誰才是主人呀

我的貓每天都跟我爭椅子座
有沒有搗錯

每次一從電腦前離開
牠馬上坐上去 趕也不走
分明是要爭主人位咩

9/01/2008

弱雞

前天被說是弱雞
我卻一點都不能反駁
唉...

我的右手呀
自從五月一場籃球比賽受傷後
超過一公斤的東西都不太能拿
拿了就受傷了
搬東西也不行

幹~~~

8/28/2008

多型的陷阱

class A {...};
class B {...};
class C: public A, private B {...};

A a = new C();
B b = new C();
在C++中,繼承有public, protected and private
如果使用private的話 第6行編譯是不會過的 因為privated下是看不到的
如果是protected 則在可視scope下才能用

這點是java或其他OO語言沒有的

8/27/2008

差點被考到的程式碼

昨天面試 其中一個主管很在意coding能力
我也跟他說我coding很好
他就要考考我
考了兩題後 他發現太無趣了 就從一堆題目中找了一題出來
說這題過去沒幾個人講的出來
#define fun(A, b) (int)(&(((A *)0)->b))

typedef struct {
  char str[40];
  int type;
  int maxLen;
} intf;
問題是fun(intf, maxLen)的值為多少

看到第一眼時 先假裝鎮定 但不解 A * 的作用
因為腦殘沒看到typedef 想說A替換後只是變數不是型別
所以就靠推理的方式理解成強制轉型為pointer 並以此位置為0
所以b的位置就是 sizeof(char) * 40 + sizeof(int)
答案是對的 還告訴我它叫offset 差點被他唬到

回家查了一下
原來這個code是在stddef.h裡
目的是做出泛型計算變數在struct的offset

8/01/2008

100種生活

詞 鍾成虎 曲 盧廣仲
*
整個世界 停止 不轉動 很寂寞
走在海邊 數著 螢火蟲 好困惑
想要的生活怎麼有一百種
不想掉進這深深 漩渦

整個海浪 擺動 柔軟地 舉起我
孤獨給我 自由 猶豫得 好感動
想要的生活怎麼有一百種
該怎麼走 誰來告訴我 wow

每當我背對星空
抱著地球
發現自己其實脆弱 不敢說
當我背對星空 不段摸索
愛情漸漸萎縮 我猜不透
無邊的宇宙 哪裡有我想要的生活

repeat *

原來一百種 要在很久很久
以後才會懂 我的一百種生活

7/26/2008

google code jam第三題

google code jam今天早上比了第一場
看了一下第三題
問題是 3 + 5^0.5 取n次方後 求整數前三位數字

看起來很簡單 但一看就知道是誤差問題
看到解出來的人的解答 真的突然覺得自己數學變好差
早知道平常應該繼續唸的

這題n取很大時會有誤差 所以不能硬幹
使用數學方法 設:
3 + 5^0.5 = x
5 = x^2 - 6x + 9
0 = x^2 - 6x + 4
根據n對公式取次方
最後再解方程
這樣誤差就消失了