2021年12月19日 星期日

CrytoMines Reborn (CMR)之我見

 

跟大家share我對CrytoMines2.0 (CMR)的看法好了

隨著團隊公佈新的CrytoMines 1.0 (官方稱為CryptoMines Legacy,CML)轉移方案,我大概看懂了

他真正用來賠償給大家的,就只有一開始放進去的500.000CRUX (50萬CRUX),最後再跟大家總入股加總,再根據大家股份均分,然後再分成180天給你

所以這個問題很簡單,他的賠償金額是個常數(50萬CRUX),設成C
玩家總質押的金額為X
所以最後每一股(每一單位金額)能領到的錢就是(C+X)/X
而你180天內能領到的賠償的總額Y=(C+X)/X * (你質押的金額) (線性解鎖,每天領 (Y/180) CRUX)

這是個國中數學問題,每一單位金額能領到的額度為 (C+X)/X = C/X + 1
X越大,大家能分到的就越小
X越小,大家能分到的就越大

最難的是,你不知道有多少想質押,如果超少人質押,你進去就質押就爽了

另一個問題是,官方給的範例,投入180$,最後算出來的是27000$,聽起來ROI很高是吧?
看到這裡,我對官方的誠信已經有了懷疑….因為他是假設CRUX會漲到150$ (if the $CRUX has an average value of $150),呵呵…..可能會漲到150$,也可能不會,誰知道?

我看很多人說質押是拿自己的錢給自己,但其實不是,是50萬CRUX+玩家自己的錢給自己,大家真正分的是官方賠的50萬CRUX

講下結論,就我自己而言,我不會質押,如果超少人質押,去押是很爽沒錯,但如果太多人,分到的太少,鎖倉時間又太久,6個月時間太長,什麼事都有可能發生

最重要的是,我看到這個開發商的誠信,其實也不像某些人講的那麼好啦
那個質押的範例,其實就是在用假的數字騙人
用心很明顯,吸引大家去質押
反正他們就是拿出50萬CRUX來賠給大家,我給的蛋糕是固定的,在這情況下,我當然會想極大化我的投資,越多人質押越好不是?他們池子就越厚,越不容易被擊穿

可是,萬一CRUX沒漲到150$呢?

另一個問題,CM1.0想轉移到CM2.0,要同時質押DM (Dark Maters)和CRUX,所以你付出的成本不是只有CRUX, 還有DM,那麼真正的ROI的分母,應該是DM和CRUX的加總,我不知道官方是不是忘了,總而言之,轉移Stake的ROI,沒有官方算的那麼高,再加上線性解鎖的鎖倉的180天,半年時間,什麼都有可能發生…

最後,一個問題讓大家思考,官方賠的 50萬CRUX,是真的官方出的嗎?

CRUX的價值,來自各位玩家的參與,如果沒有大家的參與,CRUX沒有價值
所以,其實是你們的參與賦予了CRUX價值,然後再賠給自己…..

一點淺見
僅以此文,紀念我逝去的Crytomines Legacy Fleets…..
20211218 gdemon

2017年8月2日 星期三

推薦股利成長型ETF: NOBL

美股中有個term:dividend aristocrat,指的就是股利一直成長的股票
扣掉etf、特別股,個股的話,我會偏好REITs中的dividend aristocrat,所以我會買COR,ABBV,O之類的
然後aristocrat是貴族的意思,所以iShare特地從S&P500中再特別挑出dividend aristocrat組成NOBL (發音跟noble很像,故意的),意思就是S&P 500中的dividend aristocrat,印象中criteria就是從s&p500中再挑選出連續25年股利成長的公司

想當然,NOBL的股利也是每年成長
所以,這是一隻安全的(ETF嘛)、股利會成長(dividend aristocrate)、不用傷腦筋(iShare公司幫你選好股了)的好投資標的

缺點嘛,也不是沒有,因為是主動選股,管理費貴了點,0.35%,是指數型ETF如SPY(0.11%)的3倍
0.35%,真的多嗎?
想一想,你省下的時間,以及買ETF得到的安全性,再然後股利每年成長的喜悅,每年才0.35%,划算吧?
更別提,0.35%還是遠低於共同基金的管理費
把投資交給專業的來,0.35%,ok的

2017年7月3日 星期一

如果挑選特別股

之前朋友問我ETF怎選,因為兆豐除了特別股大全集之外,也有ETF大全集


給我ETF大全集,面對著一堆數據,我還真不知該怎麼篩選
ETF的本質是一籃子股票,將風險均攤,避免單一個股掛掉的風險
我自己的看法,買ETF,選擇哪個市場是更重要的


比如說
想投資全世界,你可以買VT (Vanguard Totalworld)
想投資全美國,你可以買VTI (Vanguard Total Stock Market ETF)
想投資美國最好的500家公司,你可以買SPY (SPDR S&P 500)
想投資美國最好的500家公司中的dividend aristocrat,你可以買NOBL (ProShares S&P 500 Dividend Aristocrats)
想投資美國最好的100家科技公司,你可以買QQQ (NASDAQ- 100 Index Tracking Stock) (PS: 在NASDAQ上上市多為科技股,而長期投資我不是很喜歡科技股....)
想投資美國上的小型價值股,你可以買VBR (Vanguard Small-Cap Value ETF)
想投資一個全自動股債再平衡,以美國為主,但也有分散投資到全世界的標的?沒問題,AOA滿足你 (每年10月自動幫你做80%股票,20%債券的再平衡,股票債券都以美國為主約佔了一半,但同時剩下的一半也分散投資到全世國)


所以我覺得,與其決定買哪一隻ETF,不如先決定哪個市場比較好,再買那個市場對應的ETF
(比如說,看好歐洲、大陸會起來,或是想投資新興國家,就再去找對應的ETF)


重點在於,你看好哪個市場?
全世界?全美國?或是美國前500大?或是美國科技股前100大?或是美國小型價值股(<--- br="">

還是沒辬法決定哪個市場比較好怎麼辦?
嗯..........
你可以考慮聽從專業人士巴菲特親口說出的建議:努力工作,然後買s&p500的ETF就對了
(請參考給魯蛇的建議?華倫·巴菲特:「我會努力工作。」)


又或是......不要買ETF,買特別股就好了

2012年9月28日 星期五

notepad++開啟時,不開啟上次開啟的檔案



換了新的電腦,裝上了notepad++後,發現notepad++關掉後再次開啟後,會自動復原上次關閉時打開的檔案 這其實還蠻煩的……
研究了一下,找到了解法:

工具列->settings->preferences->MISC. tab->將"Remember current session for next launch"的勾勾取消即可 如此,下次再開notepad++就不會再打開上次開啟時打開的檔案 雖然我用的是英文版,但中下文版可從下圖找到對應選項的位置

工具列:


取消Remember current session for next launch


2011年10月14日 星期五

鍵盤,還是cherry的好

.

朋友最近買了Cherry G80-3000這把長青鍵盤,但他是買茶軸的

機械式鍵盤最近很流行,現在很多廠商都用cherry的軸做很多很炫的造型,為何要挑cherry這一路走來,始終如一(簡單講就是一成不變,或是復古)的造型呢?
我的學弟看到我的g80-3000,還會說,哇,學長,這是古董鍵盤呢
……你有看過古董鍵盤有windows key的嗎?
這叫風格,就是cherry style

為什麼挑cherry的茶軸?答案很簡單:女朋友挑的(他買了兩把,一人一把)

PC Home買的,現在cherry台灣有代理商了,想當初,我還只能買水貨呢

借來一敲……大驚,這……這是什麼軸?
這真的是茶軸嗎?怎麼和我印象中的茶軸完全不同
有著青軸80%的鍵入感,卻又有著這幾近無聲的敲鍵聲
回頭敲敲我的Filco茶軸,大概只有青軸60%的鍵入感(也就是說,勉強辨認的出兩段式進程),聲音到是一樣
什麼情況?為什麼同樣是cherry的茶軸,兩者的表現完全不同?

好幾年前,那時候我已經買了一把g80-3000青軸,用得非常爽,然後,就想試一下cherry茶軸,想知道大家為什麼這麼稱讚茶軸

當時Filco也出了Majestouch cherry茶軸,跟原廠cherry比起來,只貴50(如果我沒記錯的話,Filco茶那時一把要2750,但兩者價差不多)
但Filco的造型好看很多,薄邊框,藍光LED,哇勒,價格差不多,傻子才挑Cherry的茶軸
畢竟,g80-3000唯一讓我不滿的就是造型
找了當時的學長一起買,一人一把

收到後,按了按……
真是聞名不如見面
這就是大家覺得很讚的茶軸嗎?鍵入感那麼像薄膜,就連敲鍵聲都那麼薄膜
心裡有著一股淡淡的哀傷
一直到現在,我的Filco A和S key有時候按了會輸入兩次(也就是按一下會輸入aa或ss)也一直沒有動力拿去修

我一直以為,用同樣的軸,會有同樣的表現
但直到好多以後,按了同學的g80-3000茶軸版,我發現,我錯了
同學的g80-3000茶軸, 在非常接近青軸的觸感下,大約有80%的相似度(個人直觀,沒法測量,反正就是非常像青軸),卻又少掉了那腦人的敲鍵聲
還有比這更完美的鍵盤嗎?
我終於明白,為什麼這麼多人推祟cherry茶軸了

未免有人說我唬爛,有圖有真相


兩把一起拍,上面那把是Cherry茶,下面那把是Filco茶,各拔兩個鍵帽以證明是茶軸
為什麼不拔更多鍵?
裝回去很麻煩的@@,而且信的人就會信,不信的人,拔再多鍵也不會信的


下面比較一下前後款g80-3000的差異,顯然的Cherry不想開新的模了(好處是,板子也不用重lay@@)……所以外型都差不多
不過還是有一些差異就是了

印象中,最大的差異是,以前g80-3000只有白色,沒有黑色款可以挑……


前後g80-3000比一比,下面白的是我的cherry青,上面是同學的cherry茶
新版的多了印上的cherry mark,這點讓我很在意,因為舊版的g80-3000只附了一張沒質感的櫻桃小貼紙,我連貼都不敢貼……



兩者的鍵盤連接線,新版的線是直的,而舊版的是像舊式電話一樣的捲捲連接線
我比較喜歡新版的線,舊的線其實很不方便,所以我還把他綁起來,不過以前的鍵盤都是這種設計就是了
可能是因為現在的頭是usb,真不夠長還有usb延長線可以接,但以前ps2接頭的年代,若不夠長就真的完了……所以才要設計成這樣,真的不夠長還可以拉、拉、拉


好了,最後,嚴肅的問題來了
為什麼同樣是cherry原廠的茶軸,為什麼鍵入感會有這麼大的差別?
有三個可能,你自己選

1.生產年份不同,以前生產的茶軸不好敲,現在生產的茶軸好敲
是有這個可能,若我當初買的是cherry茶,而非Filco茶,我們現在可以來驗證這一點
我同學的cherry茶是今年(2011)才生產的,不過我不preffer這個答案,不然,以前的人為什麼就對cherry茶的評價那麼好?我不覺得Filco的茶軸可以讓人有這麼高的評價
另外,前公司的同事在幾年後也買了Filco茶,我也去按過,印象中,手感也沒多大的改變

2.cherry生產給別人用的茶軸,跟自用的茶軸不同
……這是你說的,不是我說的

3.因為其他配合材料不同的關係,例如鐵板的有無,鍵帽材質不同的關係,所以鍵入感相差不多
我們知道,有些牌子的鍵盤(如Filco),會在底部加一塊鐵板,而某些鍵盤討論區又提到鐵板的有無,會影響手感
另外鍵盤討論區也有提到,鍵帽的高低、材質不同等,也會影響手感

我有把鍵帽交換過來A/B test(即,把Filco茶跟cherry茶的鍵帽交換),我只能跟你說,鍵帽雖然有影響手感,但換了鍵帽,Filco茶還是不會變成cherry茶

把Filco鐵板拿掉試試?
……這個工程有點大,我玩不起……


再補個事實,同樣是cherry自己的茶軸,不同的model的鍵入感,還是不同
我學長也……在衝動之下,又敗了一把不同model的cherry G80-1865 茶軸
鍵入感卻也跟g80-3000有所不同,但還是樂勝Filco就是了

一樣,有圖有真相

學長的cherry茶


那麼,我到底想告訴你什麼?
我沒辦法告訴你為什麼同樣用cherry的茶軸,為什麼他牌的cheery牌的有差,我真的不知道為什麼
但我想告訴你,根據三個宅男的金手指鑑定,這是事實,就是有差
然後,即使是cherry自己的茶軸,不同的model間,手感也會有差

我只想告訴你,如果你手上有他牌的cherry茶,又或者曾按過他牌的cherry茶,然後因此感到失望,覺得見面不如聞名,那麼請再給正牌的,cherry自己的茶軸一次機會
因為,你過去按的,有可能誤會,也有可能是幻覺(囧)
甚至有可能只是將顏色塗成茶色(brown)的薄膜(毆飛)

也許結論應該是,cherry自己的茶軸比他牌的茶軸好(見ps1)
但真正的結論應該是,如果你真的對cherry的茶軸感到失望,也請等到按過Cherry g80-3000的茶軸後,再來感到失望,如果按過g80-3000茶後,你還是不喜歡茶軸,那就這樣吧
(最起碼,我現在喜歡上了g80-3000茶,但買不起啊,泡麵漲,麵包漲,鍵盤也漲,另外,為什麼g80-3000到現在還是要做那麼大一塊……)


ps1:在好幾年前,我買了cherry g80-3000青後不久,強照鼓吹學長買cherry青軸,學長買了笙美(SM,據說前幾年倒了)做的cherry青,雖然手感跟g80-3000青略有差異,但還是很不錯,唯一的缺點就是那個StrongMan(強壯人,囧,縮寫也是SM)的Logo,買來後學長馬上把StrongMan logo的銘牌撕掉,也還好他logo是用銘牌貼上去的,不是印刷上去的……
也因為這個美麗的誤會,讓我覺得,只要用相同的軸,不同家做出來的鍵盤,大致上手感應該是一致的,從此種下了買Filco茶的因,學長,我對不起你(是的,就是這位苦主跟我一起買了Filco茶)
.

2011年6月9日 星期四

查無此網站的安全性憑證撤銷資訊,要繼續?

.

上網時,偶爾會遇到瀏覽到某個網站時,跳出來一個警告視窗:查無此網站的安全性憑證撤銷資訊,要繼續?


日子久了,也很煩
畢竟連某些確定安全的網站也跑出來這個視窗就很無言
上網找了解法,發現答案也莫衷一是
自己找了一下,在IE中,工具->網際路選項->進階中,
將"檢查伺服器憑證撤銷"這個選項取消即可,如下圖


.

2011年6月3日 星期五

是該離開的時候了

.

最近走在學校的湖邊,看著湖邊的優美風景
心中突然冒出一句:是該離開的時候了

不禁想到當初第一次來清大的時候
第一次到清大的時候,就是考研究所
一到清大,我發現,這個校園很美,如果能在這讀書,感覺會很不錯
這個心情,久久不能懌懷,特別是那天我寫得很不錯

果然一放榜,清大正取,交大備取
然而,其實到清大就讀的故事也頗具轉折性
我並不知道上研究所要找指導教授這回事
等到補習班的同學跟我講,我才知道
他們說,有信心上的人都會前一天就到學校,隔天一放榜確定上榜就馬上找教授
然而,這時已經過去一個禮拜了……
我還是前去

過程蠻心酸的,所有的教授全拒絕我
作為一個非本科系的學生,中間還受到一個教授羞辱,被罵了三十分鍾,其實過程中雖然被罵,但我蠻高興的,畢竟肯花時間罵我,代表有意願收我,沒想到最後的答案是對不起,我收滿了
我傻眼了,不收我你還罵了我三十分鍾?

另一個教授是我敲門,探個頭進去,他正在講電話
他摀住電話筒,然後問我:找教授?我收滿了,再見
我摸摸鼻子,關上門
我一句話都沒出口,就被拒絕了,沒有談話,時間不到一分鐘,這個教授很有效率

懷著喪志的心情,直到遇到現在的指導教授
一敲門,他先問我有沒有預約?
我傻了,找教授還要預約?
然我我說,沒有,就準備要出去了
他說,沒關係,只是說因為要找他很難找,所以一般要先約
聊了一陣子,覺得這個教授人很好,雖然心裡也是覺得沒希望,但也是對這個人風度很欣賞
他問我,有沒有上其他學校
我說有,交大備取55
他說,55?有希望
我其實不太懂他想說什麼,在暗示我不該留在清大嗎?
最後走的時候,他讓我留下我的email,說會再通知,一個很標準的,很客氣的婉拒
為什麼我知道?因為他讓我寫下email的紙,是從旁邊隨便一個地方抽出來的一張紙,還不是白紙,我只能寫在空白的地方
但即使是這樣,他已經是那天我所找過所有的教授中,最客氣的,給我最多時間的(一個小時),最有希望的(沒直接拒絕)

後續果然沒有消息
中間雖然也有寫信去問,一樣石沈大海
我一直在想,我有沒有可能,成為一個沒有指導教授的研究生

中間,我耍了一次心機
信有可能沒看到
但當面遇到,總不能裝做看不見

那個老師因為在外面開公司,所以他會把三節課集在一起,並在晚上開課
我找了他的課表
再一次坐車到了新竹
那天晚上第一次聽研究所的課,我發現,不難嘛其實
我還真的聽得懂
課堂上學生還真不少(後來我才知道,原來他是名師,課也真的上得很好,研究所的課,學生要那麼多是有點難的)
趁著中間的課堂休息,我想去找他問問題,以表現我對他的課的理解
讓他知道,即使是大學在不同的領域,但我能通過研究的考試,某種程度上隱含了其實我具備同樣的基礎
即使這個基礎可能比別人弱了一些,但那只代表我會比別人幸苦,不代表我會完全不具備做他學生的資格
他匆忙的走出教室,想回到他位在五樓的實驗室
我在走廊上攔住了他
一看到我,他竟然還叫得出我的名字,我很驚訝
但我還是按照原定計劃,問出問題,讓他先留個印像先,以展開後續計劃

在三堂課上完後,我打算再攔截一次,問說能不能給我一個確定的答案
雖然已經是晚上九點,但學生問問題的熱情不減
我在旁邊等到所有人都問完問題,才向前
具體的對話過程我忘了
他還是沒答應收我,但留給我他的手機號碼
嗯,有進步

時間繼續往前
直到我收到交大資工(那時候,資科和資工還沒合併,要考資科還是資工的研究所,這是個很掙扎的問題……)的錄取通知
是的,我備上了
上面寫著,在那個禮拜內,我必需前去交大報到,不然名額就會遞移到後面
我心中想著,反正清大已經沒人指導了,我去交大碰碰運氣
再糟也不濄是再被羞辱一次
但不試試看,總沒有機會

如果清大有人收我,我幹嘛再去交大撞個頭破血流?
如果交大有人願意收我,我就改去交大
如果同樣沒人收,在資工這個領堿,我為什麼不去交大?
大學畢業證書?我再去清大拿回來就好了
比起被教授的鄙視,教務處的白眼,會讓我更難過嗎?
兩家學校就在旁邊
我要做的,不過就是在清大拿回畢業證書
再走到交大,連同錄取通知交上去,就這麼簡單
清交小徑?名字取得好啊,當我走上去,我真的,就在一條從清大往交大的路上
雖然我從沒走過,但我相信一定找到到

我跑到清大,再走到當初和我談最久的那個老師的研究室門口,沒人在
他沒有騙我,原來他真的不常在學校
打手機問答案,其實沒有當面問來得禮貌
但不問,我不甘心
拿出電話,鼓起勇氣,撥了出去
電話那頭,他似乎正在開會
我再次問出我的問題
等待的過程有點緊張,因為他如果回達不,我就該去交大了
他沈吟了良久,然後說:恭喜你,加入我的研究室

跑到新竹來打手機,其實有點傻
因為在台北打不就好了?
但誰知道結果會這樣?
直接找本人,總是顯得比較有誠意,機會也就較大一點
而且不到新竹,怎知他不在實驗室?

本來被拒絕的二手準備就是到交大報到,那不是還得再跑一趟新竹?
好吧,真實的原因其實是,我早就覺得教授收我的希望不大,所以我其實早就做好到交大報到的準備
只是試了那麼多次,行百里路半九十,最後不再問一次,我不甘心,即使我知道有很大的可能再被拒絕
只是沒想到結果那麼戲劇性

故事到此就結束了嗎?
沒有

到了研究所,我發現,我沒有比別人差,相反的,還不錯呢
然後,我做了一件傻事,我簽了博士班
到初初來清大的心情,找指導教授的挫折,已經過去了好幾年
直到我散步在清大的湖邊
心底徒然的冒出那一句話:是該離開的時候了
然後,我又想起初到清大時,心中冒出的那句話:能夠這個環境下讀書的話,很棒
我知道,我可以離開了

拿破崙說:I see, I come, I conquer
是的,我看到了,我來了,我,該走了
老朋友,雖然我們認識了好多年,但是
我該離開了

.

2011年6月2日 星期四

將桌面工具叫出來的hotkey

.

Win7裝了很久,最近為了想要看天氣,開始使用Win7提供的桌面工具
我的桌面上放了:日曆、時鍾、天氣等三種桌面工具
想要看到這些資訊,我就必需把所有視窗全縮小,才看得到
本來Win7在Alt + Tab時視窗會變透明,這樣就可以不用把視窗縮小即可看到桌面資訊
但就是因為種種原因,因此我把視窗透明這個功能關掉了,所以我想看到桌面工具的話,還是只能將全視窗全縮小 (Win + M)才能看到,這個麻煩的地方在於,視窗全縮小有個過程,要花一小段時間,看完桌面小工具後,要將工作視窗叫出,又有個視窗還原的過程,又要花一小段時間,我不喜歡

在偶然的情況下,我發現了一個熱鍵: Win + G
這個熱鍵可以將桌面小工具浮到最全面,等於暫時的蓋住前景
因此,在任何時候,只要我想看"時間、日期、天氣",我只要按 Win + G,這三個小工具就會跑出來
看完了,我只要滑鼠點一下我的工作視窗,將focus轉移,這三個小工具又跑回桌面
這樣的結果豈不完美?

有圖有真相

原本的小工具在桌面


按Alt + G後,這三個小工具浮出在我的工作視窗(IE:Google)之上



.

2011年5月27日 星期五

Evernote的熱鍵

.

在使用Evernote edit note,某些常用的功能會希望有熱鍵可以按,但Evernote和其他軟體不一樣的是,將游標移到功能的icon上,放再久都不會出現熱鍵

然後,其User Manual裡面也沒有提到熱鍵

上網找了一下,找到了熱鍵的文件(Evernote自己叫shortcut)
將我自己常用的擷取出來

增加縮排:ctrl + M
澸少縮排:ctrl + shift + M
增加check box(即行事曆用的可以打勾的框框):ctrl + shift + c
將剪貼薄的內容以純文字(plain text)格式貼上:ctrl + shift + v

最後是偶然發現,我覺得在寫日誌形式時很有用的熱鍵(但沒有功能按鍵哦)
插入現在的日期和時間:alt + shilf + d(或是ctrl + ;)
輸出格式如右:2011/5/27 下午 03:41
這個功能可是只能透過熱鍵按出來的,沒有功能按鈕可按(但Personal Brain就有此功能,也有功能按鈕)

.

2011年5月17日 星期二

在visio中輸入引號(')後再按空白會被拉開的解決方案

.

在使用visio時,在文字框中輸入文字的時候,一旦鍵入引號('),如gdemon's blog
visio會自動幫你變成Gdemon’s blog
在某些字型下,引號(')後面的空白會被拉開得更跨張

找了許久,終於找到解決方法
解法就是將自動校正選項中的一個選項取消:"將「一般引號」取代為「智慧引號」"

在visio 2003中
工具->自動校正選項->tab sheet:"輸入時自動套用格式"->將"將「一般引號」取代為「智慧引號」"此選項的勾勾取消
在visio 2010中
檔案->選項->校訂->自動校正選項->tab sheet:"輸入時自動套用格式"->將"將「一般引號」取代為「智慧引號」"此選項的勾勾取消

而visio(或者說,所有office系列)中另一個煩人的功能是,在輸入英文字母時,第一個字會自動幫你變成大寫,問題是當我們在做簡報(ppt)或畫圖(visio)時,因為我們不是在word寫文章,不是在寫一個完整的句子,大部份的情況下,首字不需大寫,這個功能就變得很煩,因為你還要手動回頭將首字改成小寫

這個功能一樣可以透過將自動校正選項中的一個選項取消來關掉:"英文句子第一個字母大寫"

在visio 2003中
工具->自動校正選項->tab sheet:"自動校正"->將"英文句子第一個字母大寫"此選項的勾勾取消
在visio 2010
檔案->選項->校訂->自動校正選項->tab sheet:"自動校正"->將"英文句子第一個字母大寫"此選項的勾勾取消

Visio 2003




Visio 2010




.

2011年3月30日 星期三

windows上用TortoiseSVN command line commit code

.

如果常常在windows上用TortoiseSVN commit code的話,你會發現GUI還是有其不方便的地方
找了一下如何用command line使用TortoiseSVN commit的方法

TortoiseSVN的中文說明書附錄(對,是簡中,我找過了,沒有繁中)

我用的批次檔內容如下:

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:commit /path:"D:\vm\vbsf\ns-2.29_svn" /closeonend:2


command:commit => commit code
path:"D:\vm\vbsf\ns-2.29_svn" => 這是我要commit code的位置,請自行置換
/closeonend:2 => 如果沒發生錯誤和衝突則自動關閉對話框

closeonend的參數有下列幾種:
/closeonend:0 不自動關閉對話框
/closeonend:1 如果沒發生錯誤則自動關閉對話框
/closeonend:2 如果沒發生錯誤和衝突則自動關閉對話框
/closeonend:3如果沒有錯誤、衝突和合併,會自動關閉
/closeonend:4如果沒有錯誤、衝突和合併,會自動關閉

我將其存成批次檔(如commit_ns229.bat),然後將該批次檔拉個連結到Launchy的utility folder中
之後要commit code時,只要alt + tab叫出Launchy,然後再輸入commit_ns229,perfect,就跳出commit code的視窗
你還是要按OK,按完OK後自動commit,commit完後自動關閉,放在以前還要手動再按一次OK將該progress dialog視窗關掉

你可能要問,為什麼不能全自動commit code,而是要再按一次OK
我也想問為什麼,因為我也想這麼做
但我實在找不到選項省略那一次OK,也許他們就是這樣設計
無論如何,我已經省掉過去GUI用滑鼠操作,和按第二次OK的時間

至於update?
將 /command:commit換成 /command:update即可(add,revert也一樣)
其他細節可參造中文說明文件

.

當gdb遇到SIGKILL……

.

在ns的開發階段,執行時遇到segmentation fault是很正常的
這時gdb非常的好用
但若gdb沒法用呢?

之前用gdb debug時遇到一個case……
在戴入ns的script file後,系統會hang住,過了好一陣子後出現下列的error msg:

Program terminated with signal SIGKILL, Killed.
The program no longer exists.

然後就停了,怎樣都跑不起來
上網查了一下,也沒什麼好答案

在解問題的過程中,我有注意到,一旦開啟gdb並戴入ns的script file時,系統會變得很慢,用top看了一下,ns的mem%衝到了93%,然後virtual和res還一直在漲上去,這是怎麼一回事?ns怎會用到那麼大量的記憶體?


最後我找到了問題的所在,因為我變數initialize錯誤,導致某個class的constructor配置了巨量的變數
然後gdb為了追蹤程式,又要為ns allocate的變配置對應的變數以做追蹤的動作,顯然的,他配置的變數也不少,結果導致gdb一直一直在配置memory,然後超過os的界限,os送個kill的signal給gdb正在trace的程式(也就是ns),將他kill掉
我想,這應該是gdb無法追蹤的原因

所以,下一次若你也遇到相同的問題,可以查查看是哪裡配置了太多、太大的記憶體囉

.

2011年3月29日 星期二

拯救你的滑鼠按鍵

.

去年中,兩顆羅技火星軌跡球(一顆公司用,一顆家裡用)的按鈕陸續出問題
情況不外乎這兩個(有時候兩者都有):
1.左鍵連點
2.左鍵拖曳到一半自己會放掉
當時要求零售商幫我送修,零售商說要有發票才能幫我修……
哇勒,這兩顆快五年了,誰發票會留五年的?

打電話給羅技,沒有發票,行,以出廠日期為主(我是OK啦,不然怎麼辦)
以前一顆火星要1600,保固五年
現在一顆火星要1000,保固剩三年
很幸運的,這兩顆都是五年保固,都在保固內
自己寄出桃園龍潭,幾天後會寄回個良品給我

如果故事到這裡結束了那也還好……
最近公司用的火星左鍵又出現同樣的症狀了,才修回來不到一年就有問題是怎樣?
這次不爽了,上網查了一下,發現決定按鍵觸發機制的是微動開關
大部份都買omron的微動開關回來自己換,就是將舊的解焊,再焊上新的
可是我真的不會焊接

然後從這篇文章看到另一個solution
我選擇把蓋子打開,然後把接點磨一磨..

會產生連點或者是拖曳到一半自己會放掉
都是接點上面氧化產生的....
每次只要遇到這種的...蓋子打開,拿砂紙磨一下接點,接回去又跟新的一樣了


既然知道問題只是出在接點氧化,那就好辦了
印象中也看到有人噴接點清除劑的
但有方向就好了

我最後選擇在微動開關上噴WD-40
火星的左鍵又復活了,而且觸感變得更有彈性,非常的Q呢

看倌啊,如果只是左鍵出了上述問題又過了保固,你可以先選擇簡單的解法:噴接點清除劑或是磨接點,過程不麻煩
真的不work了再換一顆新的微動開關,你的滑鼠或軌跡球就又復活囉,在不景氣的年代,你需要更經濟的方案
(其實在survey的過程中發現,大部份都只是按鍵的微動開關出問題,這imply一件事,手上這兩顆軌跡球沒有意外,也許再戰幾十年也沒問題,只要我會焊接的話……)

.

2011年3月23日 星期三

D2000的耳罩掉下來之維修

.
這其實是我先前在別的網站的文章,現在備份回來

[前言]
暨sr80的耳罩掉下來後,Filco majestouch的某些key會double output後
發生了3c產品的第三件慘事.....那就是是D2000的的耳罩掉下來了

麻煩的是我是跟網友買的二手水貨,不知該送去哪修……
看PTT好像有人修這個花了1000元,不過那是另外一個事件(是店家沒報價就直接維修,跟本文較無關係)
Mobile01也是有人掉下來,不過他說沒差,一樣可以帶,想想也是……

一直找不到適合的縲絲起子將縲回去
最去一直在找solution,找啊找,找到D5000的mod,看了看拆解圖,看起來應該是要整個拆掉才能鎖回去
沒有D2000的拆解圖,看來只能相信它跟D5000的架構是一樣的
不過看圖片看不出耳罩跟支架相接的地方的縲絲是怎麼接的,可能要等到拆了才知道

另外,D2000的耳罩會掉下來是常態,不是偶發,奇怪的是,似乎只有D2000會,D5000不會

Head-Fi辦了一個投票,2007八月前買的D2000,縲絲鬆掉的比例為2:17(鬆掉:沒鬆掉),不過2007八月後的比例就高多了,12:11,超過一半.....…
http://www.head-fi.org/forums/f4/denon- ... ll-258528/


Head-Fi的這篇有人說他為了要將D2000換線,拆開來後發現D2000"似乎"已經修正該問題(It looks like Denon has fixed the issue of the loose screw),不過有人follow說,問題根本不在耳罩內的縲絲,所以問題還是沒解,有一個人掉了兩次,第二次要鎖回去時縲絲斷了 :ale: ,所以他現在用綁的……,另一個人是直接放一坨expoxy(這不知啥東西)……(I just put a bead of epoxy on top of the screw/nut after it fell off and it's been golden ever since. Lock-tight would probably work even better)
http://www.head-fi.org/forums/f4/denon- ... ed-332823/


另外,有人賭爛到極點,乾脆將縲絲換掉,換成長的縲絲,他說D2000原本用的縲絲非常便宜,他全換掉,有圖有真相,他說:雖然圖片中縲絲突出一截,不過他們真的很小……另外他換了mogami的線,有差(The sonic differences from stock to new.)
http://www.head-fi.org/forums/f4/denon- ... ue-344869/


目前還在考慮是要學Mobile01的那位將就著帶,還是下定決心拆掉鎖回去,亦或是,等另一邊掉下來了再修 :mad: ,還是既然都要拆了連線一起換算了……

所以,要買D2000的可能要稍微考慮這情況了
要嘛衝D5000/D7000(其實沒爬文,也許D5000也有這個issue?)
要嘛,買公司貨,縲絲鬆了就送回去鎖

買水貨的話,你就要有心理準備要有能力維修,看起來拆解不難,只是麻煩

20091123更新
後來陸續用一陣子,發現沒有上螺絲的話,D2000帶不久就會自己滑下來(就是漸漸的解體),不會突然掉下來,而是在完全分離前會有一段慢慢變形的過程
所以證明了直接帶是不行的

一氣之下想要動手維修,從大家的回文中推測縲絲上面那個圓圓的東西是蓋住(套住?)縲帽的東西,是可以拆下來的(也可以自己掉下來 = =;)
一開始的想法很簡單,若我能把螺帽拆下來,鎖螺絲這件事就變得很簡單了
不過那個圓圓的蓋子實在是蓋太緊了,跟框架間沒有間隙,加上造型是圓的加上斜角,我實在撬不下來
好吧,山不轉路轉,我決定不鎖螺絲了
我用束帶……

有圖有真相

手上沒相機,用手機拍出來就這樣了,請大家見諒
圖中藍框是原來耳罩的螺絲和耳機框架接合處,最上面的就是那個"圓圓加斜角"的蓋住螺帽的蓋子,紅框就是束帶了
之後D2000就可以正常使用了,用起來沒什麼差,不過有一次D2000被學長拿起來把玩時,束帶跑到最右邊,所以導致耳罩又掉下來了(再裝回去把束帶調到最左邊就好了)
當然,也可以多綁幾條束帶讓束帶沒有空間可以滑動,只綁一條的話,束帶會滑來滑去
不過我覺得,只有自己在用的話,綁一條束帶就夠了,滑到右邊去就再拉回來就可以了
不完美但可行的workaround,野人獻曝一下


[維修]
今天,趁著心血來潮,我就動手了,鎖回縲絲花不了多少時間,只是找工具反而花不少時間(因為心血來潮,所以沒有先準備工具)

工具:鎖眼鏡用的小縲絲起子一把

一開始其實也沒想要拍照,後來想到了不拍照沒有幫到其他人,就拿實驗室的DV來拍照,但由於已經鎖上去了,所以過程中的一些照片就少拍到了

1.如下圖,將接觸耳朵的海棉逆時鐘轉一下,海棉就會掉下來,然後如圖中的藍色圓圈的地方的縲絲,有四顆,將其鬆開後,耳罩就會和框體分離,千萬不要鬆到紅色方框中的縲絲(也是四顆),那是用來取下耳罩外殼的(耳罩外殼取下後就會看到單體),我們只是要鎖縲絲的話,取下耳罩就行了



2.將耳罩取下後,把框架轉到一個角度,就可以動用縲絲起子將縲絲鎖回框體了(圖中紅色圓圈處)



3.縲絲鎖回後長這樣



4.最後將耳罩鎖回框架,每棉裝回耳罩,大功告成

其實過程比想像中的簡單,扣掉找工具的時間,過程大概十分鍾不到
若是有人幫忙固定框體和撐開頭帶的話,將根架鎖回框體的過程會更簡單,這是因為D2000的頭帶/支架有彈性,若沒人幫忙固定(撐開頭帶/支架),左右耳會靠在一起,這樣就不是很好鎖
但一個人也是ok的啦,我就是獨立完成作業

希望能對耳罩也掉下來的同好一點幫助
另外,縲絲不見的話,應該找到同樣縲紋和大小的縲絲就可以了

20110324補充
耳罩又掉下來一次了,這次去電子材料行找螺絲,我把規格記下來了
我買了兩個
M2 x 3 (3mm)
M2 x 4 (4mm)
我最後裝的是M2 x 4

.
.

在看到電腦玩物對Firefox4.0的介紹中所下的這個註解:

Firefox 4不是完美的瀏覽器,他只是一款可以為妳而改變的瀏覽器。

我深有所感,想要脫穎而出,一定要有自己的定位
google chrome給我的感覺就是:快
但我不會想用
FireFox的plugin有很多很實用的,但其實我常用的就是ScrapBook+和同文堂
ScrapBook可以把你喜歡的網頁抓下來,存在local
而DropBox則是可以自動幫你在不同的電腦同步資料夾(免費最多可以到3G的空間)
ScrapBook+和DropBox結合,對我來說非常方便,我在各地不同的電腦,一打開FireFox加上ScarpBook,我可以看到一模一樣的,我在不同地方電腦所抓的網頁
光這個功能就沒有瀏覽器可以取代

FireFox慢,其實我不覺得 = =;
我到現在,還在用Maxthon 1.0 (要不是Windows Update會自動偷偷幫我升級IE,我連IE都在6.x)和FireFox 3.6

.

2011年3月22日 星期二

一時迷失了,就再也回不到當初

.
關於「這輩子,只能這樣嗎?」這本書
我已經看完三遍了,但我暫時還無法寫下心得
勵志的書我看過很多,但我覺得這本最能touch我
為什麼?我自己也在找,也許等我找到為什麼了,我就能寫出心得

這本書的原文書名為:Your own worst enemy
亞馬遜的評價為4.5顆星
博客來的評價也為4.5顆星
為什麼推薦這本書,兩個網站的書評有很多人寫了他的理由


在這裡我只想分享一個故事,這個故事浮現在我心理很久了


阿圓是我讀研究所認識同實驗室的同學,他是我最好的朋友之一
我們研究所時的成績都很好,也一起唸博士班
二年級時,他決定不唸了,於是去找國防役(他是國防役的最後一屆)
那時候我問他要不要留下來再跟我拼一次
不知道為什麼,那時候的我,比起最初決定讀博士班的意氣風發,當時的我狼狽的像條狗
我跟他說:不知道為什麼,現在的我對於唸博士這件事,沒有任何信心,再也沒有當初能做到任何事的信心


我忘了當初阿圓如何回答,不過也不用猜,我們這種人,所做的決定,不會是一時衝動,我的問題在問出來之前其實就已知道結果了
不過有時候我一直在想,在讀博士的這條顛跛之路,能有阿圓同行,我們會不會比較快走完

書中提到,很多人,只是一時迷失了,就再也回不到當初
當時的我,當然知道得了顏面神經麻痺對我的生活影響很大
但我沒想到對我的人生也影響那麼大
是的,一時迷失了,就再也回不到當初

到現在,臉上的肌肉雖有進步,但其實還是不自然
有時候我一直在想,是不是我顏面神經麻痺完全好的那天,就是我博士畢業的那天……

另外,按照熱血漫畫的結局,我應該要對著大海大喊:阿圓,你的畢業證書,我一起替你拿到了,這份畢業證書,是兩人份的重量~~~~~~~
(阿圓:喂喂喂,我又還沒死)
.

「這輩子,只能這樣嗎?」精進計畫的15項任務

.
「這輩子,只能這樣嗎?」我已看完三遍了,對我幫助很大

節錄書中提到的精進計畫的15項任務

1.先找樂趣,快樂是不能省的東西
2.一件夢想很久,卻沒有付諸行動的事
3.下定決心,並且堅定到不近人情
4.在洪流中學習規畫時間
5.想清楚,你到底是個什麼樣的人
6.自己有這些「弱點」嗎?
7.從現在起,別再自我設限
8.重複六千次,建立新習性
9.改變你說話的模式
10.看一看,自己進步了嗎?
11.打造一份夢想企畫書
12.訂立目標,別再「這樣就可以了」
13.失誤率不可能是「零」,擬好備用方案吧
14.使出渾身解數,選擇並完成一個計畫
15.終極大躍進

.

2011年3月21日 星期一

在ns中使用delay_bind() bind var (export var form c++ to tcl space)

.

想要將一個tcl的var和c++的var綁定(binding),按照NS by Example的範例,要在c++ clas的constructor中將想要bind的var透過bind這個function將c++的var address export到tcl space(畢竟兩個是在不同的記憶體空間)

但是ns的us manual 24.4.2中提到,在C++中使用bind()會使你創建的每個物件都消耗記憶體,若你創建許多相同的物件時,使用bind的代價太高。將bind()代換成delay_bind(),使得所需要的記憶體降到per-class level而非每個物件,從ns/object.cc參考如何binding的範例

那要如何使用delay_bind?

google了一下,其實沒有答案(中文的我就不期待了)

自己試了一下,簡單的說
1.在class對應的header file(.h)中,在protected下宣告兩個virtual function:
2.在class的實作中(.cc)實作此兩function
delay_bind_init_all的實作中,要call delay_bind_init_one() initialize tcl space的var,最後要記得call繼承者的delay_bind_init_all()
delay_bind_dispatch的實作中,要call delay_bind()來實現binding,最後同樣要記得call繼承者的delay_bindl()

我提供了一個範例(download),這個範例是從NS by Example的ex-linkage.cc改過來
可以直接放到ns的目錄中,將ex_link_delaybind.o加入Makefile的object list(OBJ_CC)中,重新make

make

再下載script file(download),同樣的,這個script file也是從NS by Example的ex-linkage.tcl改過來的,執行即可看到binding結果,結果就是在tcl中任意改var,class中對應的var也會變

ns ex_link_delaybind.tcl


大概解釋一下程式,我的C++ class為:MyAgentDelBind,繼承自Agent,該class中有兩個private data member:my_var1_、my_var2_想要跟tcl的data member連結
c++的my_var1_要跟tcl的my_var1_otcl連結
c++的my_var2_要跟tcl的my_var2_otcl連結

具體做法為
1.在class對應的header file(.h)中,在protected下宣告兩個virtual function:

virtual void delay_bind_init_all();
virtual int delay_bind_dispatch(const char *varName, const char *localName, TclObject *tracer);




2.在class的實作中(.cc)實作此兩function

delay_bind_init_all()的實作如下,這裡是主要initialize tcl space的var,因為此class是繼承自Agent,所以最後要記得call agent的delay_bind_init_all()

void MyAgentDelBind::delay_bind_init_all()
{
delay_bind_init_one("my_var1_otcl");
delay_bind_init_one("my_var2_otcl");
// MyAgent inherit from Agent => remember to call the ancestor's delay_bind_init_all()
Agent::delay_bind_init_all();
}


delay_bind_dispatch的實作如下,delay_bind就是在這裡被call來做tcl space跟C++ space var的連結,因為此class是繼承自Agent,所以最後要記得call agent的delay_bind_dispatch(),如此,就完成了cl space跟C++ space var的連結,跟以前在class constructor中call binding的做法不同

int MyAgentDelBind::delay_bind_dispatch(const char *varName, const char *localName, TclObject *tracer)
{
if (delay_bind(varName, localName, "my_var1_otcl", &my_var1_, tracer))
return TCL_OK;
if (delay_bind(varName, localName, "my_var2_otcl", &my_var2_, tracer))
return TCL_OK;

// MyAgent inherit from Agent
// if delay_bind_dispatch matches none of above => remember to call the ancestor's delay_bind_dispatch()
return Agent::delay_bind_dispatch(varName, localName, tracer);
}
}


然後我在BTSim注意到,BTSim的parameters在tcl跟c++ space的var name相同,驗證了一下
確實tcl的var name可以跟c++ binding的var name同名(其實蠻理所當然的,兩個var在不同space,事實上addr也不同,也各自有自己的instance)

另一個問題是,針對export出去的var,若同時在c++ constructor給定初始值,又在script file中assign該export var,那麼結果會是怎樣?
同樣的,做了一下實驗
結果是,C++的constructor會先被執行,script file會接著overwirte該var
所以當script file有assign value時,以script file的value為準,否則,就是constructor assign的value為準

另外,delay_bind還有其他一些變化
delay_bind_bool:用來將c++的int連結到tcl的booling值 (FullTcpAgent有用到),但是實驗顯示,其連結的變數型態只能是int,只是可以在tcl裡設定true或是false而已
delay_bind_time:用來連結c++的double到tcl的time value(FullTcpAgent有用到,但型態還是dobule)
delay_bind_bw:用來連結c++的double到tcl的bandwidth value(雖沒人用到,但我試過,這個api是存在的,且有用)

.

ns節省記憶體的小技巧

.

在ns user manual 24.4.2中介紹了一些節省記憶體的小技巧:

  1. 避免trace-all:$ns trace-all $f會使得trace objects被塞到所有links,若你只想trace一個link,這個overhead是可以避免的,每個link約可節省14KB
  2. 在使用系列的var時,盡量用array:ns中的每個var都有overhead,如set n$i [$ns node]中的n$i(就像n1, n2, n3, ...),若需要系列的變數時,使用array取代,如n($si)(就像n(1), n(2), n(3), ...),那麼其實只有一個變數會被使用(即n),每個變數可以節省40+Btye
  3. 避免宣告不需要的變數:若一個物件在後面不會再用到,那麼避免為該物件取名,每個變數可省約80B,如下列會為CtrMcast的物件指定一個變數:cmcast(1),但這其實是不必要的set cmcast(1) [new CtrMcast $ns $n(1) $ctrmcastcomp [list 1 1]]
    可以代換成:
    new CtrMcast $ns $n(1) $ctrmcastcomp [list 1 1]
  4. 在FreeBSD上run:在FreeBSD上malloc的overhead比其他的OS小,ns2的作者們最後還是會將FreeBSD的allocator port到其他平台
  5. Dynamic binding: 在C++中使用bind()會使你創建的每個物件都消耗記憶體,若你創建許多相同的物件時,使用bind的代價太高。將bind()代換成delay_bind(),使得所需要的記憶體降到per-class level而非每個物件(我個人的解讀時,bind會使得所有物件都用到它,不管需不需要,就像global variable的宣告,而delay_bind則是當宣告的物件有用到它時,也就是宣告的物件為該class時,這時才真的宣告=>這時才秏記憶體),從ns/object.cc參考如何binding的範例
  6. disabling packet header:在大量packet的simulation中,將你simulation中不會用到的packet header取消將會大量的節省記憶體(ns default是將所有packet header打開
    可在宣告ns前(set ns [new Simulator])輸入:
    remove-all-packet-headers,將所有packet header關閉(在ns宣告前輸入才有用)
    再將需要的packet header加回來,如IP、TCP:
    add-packet-header IP TCP Flags

原文如下:

Some tips to saving memory (some of these use examples from the cmcast-100.tcl script): If you have many links or nodes:
  1. Avoid trace-all : $ns trace-all $f causes trace objects to be pushed on all links. If you only want to trace one link, there’s no need for this overhead. Saving is about 14 KB/link.
  2. Use arrays for sequences of variables : Each variable, say n$i in set n$i [$ns node], has a certain overhead. If a sequence of nodes are created as an array, i.e. n($i), then only one variable is created, consuming much less memory. Saving is about 40+ Byte/variable.
  3. Avoid unnecessary variables : If an object will not be referred to later on, avoid naming the object. E.g. set cmcast(1) [new CtrMcast $ns $n(1) $ctrmcastcomp [list 1 1]] would be better if replaced by new CtrMcast $ns $n(1) $ctrmcastcomp [list 1 1]. Saving is about 80 Byte/variable.
  4. Run on top of FreeBSD : malloc() overhead on FreeBSD is less than on some other systems. We will eventually port that allocator to other platofrms.
  5. Dynamic binding : Using bind() in C++ consumes memory for each object you create. This approach can be very expensive if you create many identical objects. Changing bind() to delay_bind() changes this memory requirement to per-class. See ns/object.cc for an example of how to do binding, either way.
  6. Disabling packet headers : For packet-intensive simulations, disabling all packet headers that you will not use in your simulation may significantly reduce memory usage. See Section 12.1 for detail.


.

2011年3月18日 星期五

里爾克《給青年詩人的信》

.

摘錄自「這輩子,只能這樣嗎?」

拜傳統之賜,人們傾向用最簡單的方法解決事情,越簡單越好。但很明顯的,我們要把握的是艱難的部份;適者生存的贏家,往往都能堅持到底。

.