作者:Wei-Jen

CSV 轉 OFX

CSV 轉 OFX

先前想要把所有記帳資料倒出來重新寫入,結果這路途真是困難重重。調查一下才發現,檯面上的記帳軟體多數能「匯入」各種常見格式的資料,可是「輸出」就不這麼大方。以 MoneyWiz 為例,只支援PDF以及 CSV兩種格式。CSV 算是可以輕鬆修改的格式,不過問題就在於 MoneyWiz 在匯入 CSV的時候,會直接略去「時間」這欄。這件事情完全不符合邏輯:哪有用自家的app輸出、再匯入卻會造成部分資料損失 囧!總之MoneyWiz的說明文件中提到:「用 OFX或QFX格式就可以把時間讀進來囉」(再提一遍:你不能輸出這些格式 orz)。

原本想要硬拼一筆一筆輸入,不過實在太血汗,最後乖乖來找 CSV 轉 OFX/QFX 的方法。最大的困難就是:「我不知道 OFX/QFX格式長什麼樣」,官方的文件相當冗長,完全不實用,只好繼續在網路上挖其他人的心得或範例。

在這個過程中,找到幾個網站或文件,不過後來因故派不上用場,在這邊還是記錄一下:

  • CSV converter
    • 註冊免費,上傳你的CSV檔案,由於不見得能自動辨識CSV文件的各欄位,所以網站有提供下拉選單讓你手動對應。後來沒用的原因是,手動對應的欄位「只有日期(date)、沒有時間(time)」,所以就算轉成 OFX還是不能滿足我的需求。
  • A csv to ofx / qif converter in Python
    • 不會 Python ,試了他附的幾個案例都無法順利執行,先跳過。
  • Convert a paypal CSV export to an OFX file
    • 雖然也是 Python ,不過語法簡單多了,大概看的懂。不過程式有幾個變數在我的Paypal CSV找不到,後來找到可以繞過去的方法,所以就沒有繼續研究,不然我覺得這隻程式的解法最好。

前面說到因為不清楚 OFX 的格式,所以得要先找個 OFX 範本。範本從哪裡來?最後是從 PayPal CSV to OFX Writer 看到一線曙光。程式開發者相當佛心,給了30天的全功能試用!所以我就利用這隻程式與Paypal CSV 轉出可以給 MoneyWiz 吃的 OFX檔案。

聽起來很棒 XD 不過中間還是有些問題需要自己動手處理一下(遠目)。

首先是哪裡來的 Paypal CSV 檔案?
Paypal 自家的網站:「交易記錄>下載記錄」,以英文版網頁來說:

  1. 選擇「Activity」頁面
  2. 右側應該會出現「Statements」
  3. 點選之後,選擇「Export activity」
  4. 瀏覽器會跳到以下網址
  5. 選擇你有交易的時間、下載檔案格式選擇「Comma… / All activity」
  6. 總算拿到檔案了,這個檔案就可以直接上傳到「 PayPal CSV to OFX Writer」進行轉檔。

Paypal CSV 的內容如下:
一開始是檔頭、接續可以有很多行的交易記錄,建議看原始的格式會比較清楚(右下角的 view raw)。

於是可以開始動手把 MoneyWiz 輸出的 CSV 檔案改成Paypal CSV 格式了。修改過程有以下幾點注意事項:

  • 日期(date):格式為 yyyy-mm-dd ,最簡單的改法就是在 Excel 裡面打開、再修改格式後儲存。
  • 時間(time):格式微:hh:mm:ss,一樣到Excel裡面把消失的秒數補回去。
  • Name:轉為 OFX 導入 MoneyWiz時,這欄會對應到收款人,建議所有交易記錄在這欄使用一樣的內容。待資料順利導入MoneyWiz,再從程式設定一口氣刪除就好。
  • Type:轉為 OFX 導入 MoneyWiz時,這欄會對應到「描述」。至於MoneyWiz裡面的「類型」,則是在OFX匯入的時候可以手動選擇。
  • Receipt ID 保持原狀就好
  • Balance:需要有數值不能留空,但是匯入 OFX時好像用不到。
  • 每個欄位之間,除了以逗點分隔、也需要雙引號框起每一個欄位。話說Excel 產生的 CSV 檔案似乎沒辦法主動加入雙引號,所以我是用 OpenOffice 另存新檔,存檔介面中需加選「編輯篩選設定」、並且在後續勾選「文字儲存格一律加上引號」。

大概就是這樣,收工。 XD

常搞不清楚的逸入逸出過程 (entrainment/detrainment)

常搞不清楚的逸入逸出過程 (entrainment/detrainment)

我常會有把詞彙搞反的困擾,有時候會想說是不是自己的大腦出了什麼問題,不過今天說的是另外一種類似的困擾,也就是一組相反的科學用語的中文解釋:描述雲朵跟外界交互過程的逸入/逸出過程。

我查了一下字典:

detrain:
to get off a train

突然發現用字典上的意義來思考就比較容易記憶。

以我們所關心的主題來說,「detrain」這個過程就像是「離開」,不過在此不解為火車、而是雲朵。換言之,也就是描述離開雲朵的過程。更精準的說,也就是「潮濕的雲內空氣」跑到外頭的乾燥大氣中。而中文的翻譯則是對應於前面說的「離開」,也就是所謂的「逸出」過程。

雖然不算什麼大事情,但是透過這樣的方式還是好記多了。

此外,查這些資料時看到科學月刊的文章 《收集水氣的濃積雲》,作者把這個過程描寫得很清楚、值得一看。

如何用NCL描述時間

如何用NCL描述時間

前言

縱使二進位 (Binaries) 檔案有體積小、方便輸出的優勢,但是過於簡潔也導致處理資料的困擾。以我的觀察,很少人有撰寫完整的使用說明的習慣,最多就是口頭指點一番。於是我很怕拿到二進位檔案,因為不清楚資料分布的特性,得花上不少時間確定沒有把經緯度、高度、時間各軸搞錯。

當我碰到 NCL+netCDF 這個組合時,不知道有多麼高興(雖然裝netCDF好像不是那麼容易 囧)。 netCDF 格式裡可以清楚看見各參數的單位、維度名稱與尺寸,模式輸出檔案還有漂亮的時間資訊。

基本的時間資訊包含哪些屬性?

ncl_filedump 叫出一個輸出檔作為範例:

上面這個案例中,「time」就是時間資訊:這個參數至少會包含以下兩個屬性「 calendar」、「units」。特別重要的是「units」,他是用來作為時間資訊的「基準點」。就好比日常生活中,我們會用「西元」訂為基準,把歷史事件分為西元前、西元後。

話說回來,「units」這個字串是可以自由選擇基準點的,只要字串格式符合規定就好。 NCL 6.3.0 版來說,字串的格式為「時間單位+介系詞+時間基準點」,詳見相關函式的說明。至於為什麼多半使用「1900年1月1號0點0分」,我想只是為了方便,自己寫的程式倒是不見得一定要用這個基準點。

常見的時間格式

  • UT-referenced date:我們所熟悉的「年月日時分秒」、優點為好閱讀,通常以「六組」獨立的參數儲存。
  • mixed Julian/Gregorian date:依照屬性「units」所規定的時間基準點,所組成的「一組」精簡化的雙精確度數字。因為已簡化為一維陣列,所以能作為「Coordinate variables」使用。

看下面這個例子應該會對上述兩種日期格式更清楚:

程式執行出來的結果:

總結來說,自行處理完的資料,其儲存所使用的時間格式以 mixed Julian/Gregorian date 為優先考量。

哪裡會用到時間格式?

  • 篩選特定時間的資料作分析:附上時間資訊之後,就可以利用 Coordinate subscripting "{...}" 過濾出想要的時間區段,例如,有個參數 QSNOW ( Time, bottom_top, south_north, west_east ),利用下面的 NCL 指令擷取出2015年三月的所有資料:QS=QSNOW{20150301:20150331,:,:,:}
  • 以時間表示的特殊座標軸,詳見NCL官網的Time labels
  • 另外有件事情要注意一下,雖然說目前 (NCL 6.3.0) 已經用 「cd_calendar」系列函式取代「ut_calendar」等函式,不過當你的時間格式中的「units」單位是採用”minutes”或”seconds”時,「cd_xxx_calendar」會有bug,因此建議使用舊的「ut_xxx_calendar」函式。我自己是有碰到這個bug,在NCL更新之前,我仍然都是ut開頭的函式為主。

[上述bug的原文出處]

Note: there is a potential rounding bug in cd_calendar which causes a problem in this routine if you have a units of “minutes since” or “seconds since”. It sometimes causes the minutes/seconds to be returned as something like “0/60” (0 minutes/60 seconds) rather than “1/0” (1 minute/0 seconds). If you are affected by this bug, then you may be able to use ut_string as a work-around, if you are using a “standard” calendar.

雨:文明、藝術、科學,人與自然交織的億萬年紀事

雨:文明、藝術、科學,人與自然交織的億萬年紀事

「Before: 為什麼會想看」

對於論文主題就是降雨的人來說,難以抗拒這樣的書名。在台灣,不常看見散文風格的氣象叢書,多半只有偏向實用性高的科普書籍或參考書才能在市場上存活。也許是撰寫不易,所以我在2000年看完《風 : 改造大地、生命與歷史的空氣流動》之後,等了十五年總算盼到關於雨水的篇章。

 

「After: 印象深刻的…」

先說結論,我很喜歡這本書。

以往念paper,裡面提到的極端降水個案就只是個「個案」,畢竟又不住在美國實在很難有共鳴。明明是驚天動地的事件,卻如此扁平、仔細想想還真是可惜。〈氣象觀測者〉這個篇章提到1997年科羅拉多州的大水,我恰好唸過一篇相關的文獻,剎那間作者與當地科學家的對話變的鮮明,對話不再只是限於科學、更接近所謂的生活。對於外文翻譯書佔多數的台灣讀者來說,這樣的美好體驗並不多見。

作者對於「雨」的想像無敵豐富,涵蓋跟雨水相關的各種事物,常常讀到一半想說怎麼會出現這東西,但是仔細想想談到也是很理所當然的。簡單列一下到底談到哪些事情:古文明、氣象預報的演化、祈雨儀式、人造雨、美國拓荒史、雨衣等防水材質的製作、香水、青蛙雨、甚至是到印度乞拉朋吉看亞洲季風的爆發。看完之後我都想六月飛去印度看看「全世界雨量最多的地方」,順便看看樹根橋(Tree root bridge or Roots of Ficus Elastica)

 

「Who: 可能適合看的人」

門檻極低,只要有興趣就可以了。從書名的副標題最後兩字可以得知,裡面並沒有什麼艱澀的方程式,請安心閱讀。對於氣象相關背景的人來說,這本書仍可以帶來極大樂趣,原因在於閱讀途中能彌補學習過程中所缺少的背景故事。對於這門貼近生活的科學的看法,或許能更為立體。
Info

中文書名:雨:文明、藝術、科學,人與自然交織的億萬年紀事

英文書名:Rain: A Natural and Cultural History

作者:Cynthia Barnett

出版日期:2015-11-03

ISBN/ISSN:9789862354759

博客來有對於這本書製作專門的介紹頁面,內容蠻多的、不妨看看。

告別玻璃心的十三件事

告別玻璃心的十三件事

「Before: 為什麼會想看」

自認太脆弱,所以想說來看看。在書店翻閱的時候就覺得內容不簡單阿、排版設計也很清爽,所以就買回家看。會特別強調排版清爽是因為這類書籍,如果不能帶給讀者放鬆的氛圍,要如何能說服讀者跟著動手做。

「After: 印象深刻的…」

作者列了十三件事情,如果只是光看每個主標題,常會想說「總算有跟我沒關係的條目啦」。殊不知,仔細一看,還是蠻常中獎的,畢竟有些症狀會透過反向的行為顯露出來。如同這一類的書籍,沒事多翻幾遍會比較實用。總之,這本書提出很多實踐的方法,我想是亮點所在,值得買回家慢慢看。

「Who: 可能適合看的人」

感覺自己有點脆弱、確不確定要怎麼做才好的人。真要說的話,這類書籍都只是個引子,往好方向想反正就先看看,把「能夠點醒自身困境」的文字留下來,這麼一來就值得了。

Info

中文書名:告別玻璃心的十三件事:心智強者,不做這些事・強者養成的終極指南

英文書名:13 Things Mentally Strong People Don’t Do

作者: Amy Morin

出版日期:2015-10-30

ISBN/ISSN:9789866841675

Taaze 購買網頁

無瑕的程式碼番外篇:專業程式設計師的生存之道

無瑕的程式碼番外篇:專業程式設計師的生存之道

「Before: 為什麼會想看」

雖然不是專業的程式設計師,但研究生活中根本也是常常得要寫程式、跑程式。許多程式相關工作者都推薦這本書(以下簡稱番外篇)以及「無瑕的程式碼:敏捷軟體開發技巧守則(Clean Code)」,所以就來看看吧。

「After: 印象深刻的…」

相對於「敏捷軟體開發技巧守則」,「番外篇」則沒有那麼技術性。本書中花上不少篇幅描述程式設計師常見的場景困境,讀著讀著有那麼一點哲學的味道。以開場第一個故事為例,談到管理者要求程式設計師週末加班、卻認為法務人員有其「專業性」,因此不該要求後者挑燈夜戰。為什麼都是專業人士,兩者卻有不同的待遇或思維?

文中猶如棒喝的一段是提及「不要說試試看,而要明確答覆可以或不行」,這是這本書對我最重要的一句話。

「Who: 可能適合看的人」

寫程式的人,特別是苦惱於估不準完成進度的朋友。

 

Info

中文書名:無瑕的程式碼(番外篇):專業程式設計師的生存之道

英文書名:The Clean Coder

作者: Robert C. Martin

出版日期:2013-08-27

ISBN/ISSN:9789862017883

臺北市立圖書館館藏

Disconnect (疏離世界)

Disconnect (疏離世界)

Disconnect [疏離世界]: 8+

Official website: http://disconnectthemovie.com/

disconnect-poster

對我來說,一部電影能把簡單的故事說清楚就能滿足我了,這也就是喜歡這部影片的原因。

隨著 Facebook 的快速發展,人際網絡的實體化讓我們知道就算有六度分隔理論,多數的情況可能遠比這個數字小上許多。這部電影就從這樣的情境開始發展,展開一齣真實的鬧劇。

[以下有劇情透露]

Read More Read More

G+ 與 blogger 權限設定

G+ 與 blogger 權限設定

被問到 G+ 跟 blogger 的分享設定,所以測試了一下。

由於 G+ 只是個分享平台 ( 跟 Facebook ) 一樣,所以決定誰可以看到文章的隱私權限還是控制在 blogger 的設定上。以下舉幾個例子來說明:

情況一:整個 blog 只想與特定朋友分享

作法:「設定、基本、權限、網誌讀者」選擇「僅限這些讀者」。

 

僅限這些讀者的欄位可以輸入一般的 email 或 google 帳號。由於 Google 鼓勵用他們的帳號登入,所以前者雖然會收到登入連結,不過 30 天之後就會失效。

 

這個方法是最安全的,縱使發佈文章時分享在 G+ 給所有人,不過使用者需要登入才看的到文章。如果不在「僅限這些讀者」的名單中會顯示沒有權限,自然看不到了。

情況二:沒有大肆宣揚的 blog ,但新文章發表時在 G+ 的分享只希望給部分朋友看到。

作法:blogger 的權限可以維持預設「所有人」; 發文前請確定 G+ 已經建立好「社交圈」,例如:「可以看 blog 的人 XD」。

 

在 blogger 發文分享時,選擇該 G+ 群組。另外建議發佈之後,到 G+ 的該則訊息點選右上角的三角形,選擇「鎖定這則訊息」,這樣可以防止可以看到的人,意外轉給群組外的人。當然對方把網址複製起來還是可以自己分享啦,只是增加操作的麻煩而已 囧

文章如果不想被特定人士知道,還是請乖乖用情況一,不然還是別寫到網路上吧。