Posts

Showing posts from December, 2009

[語言] GEPT 考試日期、日文考試日期

Image
1. GEPT中高級 2. 日文: 2010 年起日本語能力試驗考試制度將有所變更,將於2級與3級間再增加一個級數,即測驗級數由四個級數改為五個級數,為 N1 、 N2 、 N3 、 N4 、 N5 。7月份辦理N1~N3三個級數,12月份則N1~N5五個級數全部辦理。

[python] File I/O, internet framework(MT, Select, epoll, IOCP)

這兩天又再翻新架構了 = =  大概學長真覺得我是操人(耐操的人).... 不過這次教訓又再次提醒自己,對於不熟或一知半解的東西,千萬別拿來用。。。 (但一開始什麼都不知道的人,誰知道那能不能用.... 桿) .................................................<<小抱怨一下,開始說正題好>> 第一個要提的是python 的FILE I/O 我每次都沒仔細搞清楚'ab', 'rb+', 'w+'... 之間的差異,想說排列組合部都那幾個... 結果誤用 = = 詳細說明可以參考  這裡   ,   至少在網路上這篇最詳細... 幾個最常用到的mode rb 這是default值。file pointer會在 offset=0 的位置。開啟一個 已存在 的檔案並做binary read-only。 rb+ 開啟一個 已存在 的檔案並對其做 binary read/write。 offset=0 wb+ 開啟一個的檔案並對其做 binary read/write。 若存在則會被 overwrite 。 若不存在則會 建立一個新的檔案 。 ab+ 開啟一個檔案並對其做 binary append/read。 若檔案存在,File pointer offset= end of the file 。 若檔案不存在,則會建立一個新的檔案,並提供Read/Write。 另外一個issue也是最近才真正懂得,就是一般network I/O分類 可依  blocking/nonblocking 與  synchronized/asynchronized 分類 幾個常見的是 1. blocking       最常使用,像 Multithreading 最常見 2. nonblocking synchronized       即select、epoll 即一般人說的reactor。 select: 是指每次os會去檢查一個 fd_set(file descriptor, 像是readfd, writefd, exceptfd等等)            詢問是否time

[生活] 一些小習慣,讓自己更快樂

最近學弟推薦了一部木村的日劇- 大腦先生 Mr. Brain 雖然裡頭的推理劇讓看多這款戲的我覺得有點弱,戲中犯案的方式也有點kuso,但是還是有個地方很吸引我,就是Mr. Brain的能力,關於大腦開發的一些知識。 不過這些跟我想記錄的東西無關,只是看完第二集後,到網路上搜尋 大腦&記憶 後,找到一些覺得挺有幫助的東西,所以就寫上來提醒自己。 是關於快樂的方式。科學證明,行為操練能增進快樂,而目前最有效的練習是 1。專注於正面的事情         每天寫下當天快樂的三件事情,並說出發生的原因。 2。練習運用性格上的長處         可以透過一些心理測驗知道自己的長處後,每天以新的方式來實現其中一項。 3。記得感恩         每天寫下五件令自己感恩的事情。 上面說的都需要無比的堅持阿 = = 另外其實對我而言最重要的能量是 充足睡眠、適當運動還有經常旅行!!! XD  睡覺去...

[c] memory 相關的函式(memset, memcpy, memmove)

memset void * memset ( void * ptr, int value, size_t num ); ptr      :為destination address 的pointer value :想要set的值。(居然是type int. 表示是0~255(unsign char)) num   :number of bytes 這表示一次只能set 1bytes,然後寫入num個。(這真是沒效率 囧...) 這邊說錯了, 要reset值的長度用sizeof(ptr)就好了... (05/04/2011) memcpy void * memcpy ( void * destination, const void * source, size_t num ); 這ok,不過若source在copy時被overwrite時會是問題。 memmove void * memmove ( void * destination, const void * source, size_t num ); memmove跟memcpy狠像,唯一的差別是在於它能保證source不會被overwrite。 另外關於w32api中mmap的使用可以參照 這裡 ,另外也需要參考 MSDN 1) 主要有三個步驟CreateFile(), CreateFileMapping() 跟MapViewOfFile() 2) mapping的blocksize需為dwAllocationGranularity的倍數。 3) 主要是為了處理大檔(>=2**32, 2G以上),由於他的maxsize有Hi跟Low之分,要用 Hi = offset>>32, Low = offset & 0xffffffff 以轉成64bits. 4) MapViewOfFile Object 回傳ptr, 所以需要使用buffer來儲存欲處理的 data

[生活]TDR and ECFA

今天吃晚餐時的新聞,報導康師傅的TDR發行大家為之瘋狂與嚴凱泰對於政府簽訂ECFA拖延表示不滿。 也不知道這兩款是什麼玩意,所以就GOOGLE一下,來做點筆記。 TDR, Taiwan Depositary Receipts 1、何謂存託憑證 存託憑證是一種可轉讓的有價證券。先由上市公司或出售股東,將公司股票交付保管機構保管, 再經存託機構發行表彰該股票權利的憑證後,售予市場上有意購買之投資人。其目的係為讓國內之投資人能在當地投資外國證券,以降低直接投資國際市場的風險。俾利外國優良公司所發行之 有價證券,亦可來國內上市買賣 。 ㄜ... 其實看完只知道是某個公司發行的債券,轉交由一個保管機構發行憑證,賣給國外的投資者。不過看了很多篇後,才了解原來是 指外國上市公司或股東,賣出所擁有的股票給某個國家的機構,由其發行相等股值的股票,稱為DR 。而在台灣發行的就稱為TDR。 這邊有很多不懂的地方,就是 1。海外股跟國內股的不同,我是指股東的權益差別為何? 2。記得股票沒有到期日,這樣的話若被惡性倒閉股票不就形同廢紙,而且公司在國外,台灣金管會管得著嗎? 3。股票說穿了是公司跟金主借錢吧?這樣不就是把台灣錢大比投入不知道什麼時後可以回收的海外,對台灣經濟沒有任何實質幫助? hmm... 我也不知道,但聽到康師父募集的資金將達170億,大概這就是市場吧 ==a 另外一個是ECFA(Economic Cooperation Framework Agreement),念法是ㄟ可法 看完它的  網址  似乎是要推動兩岸經濟合作的協定。 hmm... 看完有看沒懂。。。知道他的訴求但不知道它到底定了什麼==  還是去PTT GOSSIP板爬文好了...

[python] 最近工作感想

最近寫py遇到一個很大的瓶頸,就是py25無法釋放memory而導致MemoryError,這整個讓我信心大失... 好在瑋任大大的幫忙與建議,又重拾信心。 主要是因為 py 雖有 gc,但是 網路上 說 py 再做 gc 時並不會釋放記憶體給 OS,即使是使用 del() 或手動 gc.collect() 都無解,導致最後 memory 被我程式吃光光。 (那篇文章說py25已解決這個問題,但是我測過後是沒有!!? 可惡...) 最後是改用py26才暫時解決問題(日後應該將memHandler列入工作項目之一),然後也使用兩個幫助很多的工具, processexplorer 跟  guppy  ,分別觀察process的行為與python內部memory使用情形。 一開始我是在網路上找尋如何觀察python記憶體使用的工具,學長推薦蠻不錯的有 PythonMemoryValidator (功能十足,但是要$) 跟 dowser  (cherrpy開發的程式,需要安裝cherrypy)。 另外也有人提到使用 ctype 去call win32的Object,我試了可是跑出來的東西跟processexplorer顯示的資訊不相符.... 而且似乎僅做一次MemoryStatus,幫助不大... 回顧一下整個事件的發生,真的是因為 1. python 的gc 我不熟它的實作方式,自以為他會自動調整memory 2. twisted我也沒真正看過他的底層,不知道就竟他耗掉多少memory 因為秉持的python絕對不會有錯 + twisted那麼多人用怎沒人討論過這個問題 =>結論,我程式碼有錯,害我花了三天在努力看codes跟找解法....(若沒有大家的幫忙大概我要看上一個月了 /囧\rz) anyway,經過這次慘痛教訓後,下次真的要記得使用其他語言或framework時,最好還是事先了解它的精神及trace它一些重要的實做方式再來決定是否使用...(重寫真不是開玩笑的...) 既然 python 是用 circular reference counting 去決定reuse 或delete objects,應該有讓 user 使用的tmp方式吧,不然若只是單純要寫一個很大但只讀一次的檔案,等到下次gc執行之前都不准使用不就GG了,果然有個 weakref 或