09:40:29 # Life EmacsとElispで書いたこの日記システムが一番長持ちしている。 ローカルではウェブサーバとしてうごいていてElservをつかっていたのだがなんか全然メンテされてない気がするのでサーバ部分はNodejsで書き直してある。そのため複数言語。 あとNodejsに引っ越したのが5年以上前なのでES2015準拠ではないので書き直したいが気合が。 そしてふと思い立ってES2015ベースで書き直してみた。300行くらいのコードをコールバック地獄からawaitベースに書き換え、一時間くらいかかった。 then() のエラーハンドリングをtry-catchに書き換えながらこれは あまり読みやすくなってないかもと一瞬おもったけど繰り返しのループが絶望 的に読みにくくなっていた部分を改善できて満足。
10:48:40 # Life ふるさと納税の予算の最適戦略を考える。 これは趣味です。 年末に駆け込みをするのはバタバタしていて締切におわれているとへんなところに寄付してしまいがち。 ということで昨年は年間予算を策定しておいてそれを経過日数で均等割をしてみることにした。Goのコードはこんな感じ。 1月1日からの日数を取得して一日あたりの予算をかけるだけ。 ただよく考えると確定した所得から計算するのが本当は正しい気が するのでそうすると確定した額によって所得税率は変わるため年の 前半より後半のほうが時間単位あたりの予算は大きくなる(たとえ ば最初の48万円は所得控除)。あと年の途中で年末の為替と株価 を予想するのはそれなりに困難。 しかし年末の為替と株価を正確に予想できたらまた別なことをしたほうが良いんじゃないか。 多少外れてもまぁ良いんじゃないか、ということで。
package main import ( "fmt" "time" ) func main() { now := time.Now() // Obtain current fiscal year's first day. start := time.Date(now.Year(), time.January, 1, 0, 0, 0, 0, time.UTC) const ( budget = 10 ) fmt.Printf("Budget is %v and I should have spent %.2f today.\n", budget, time.Since(start).Hours()/24/365*budget) }