[Concurrent Haskell] 無限リストが止まらない

HaskellのControl.Concurrent.Chanを使って、簡単な並行処理プログラムを作ろうとして試行錯誤したのでメモ。

Control.Concurrent.ChanはHaskellで並行処理をするときに使うことができるFIFOキューライブラリ。複数のスレッドからキューにデータを流し込んで、別のスレッドがそのデータを読み取って処理をしたりすることができる。

Control.Concurrent.Chanを使えば、スレッド間の排他処理とかを全く考えずに済むので、簡単に並行処理プログラムを書けるかと思っていたけど、処理終了時の扱いに悩んだので、ちょこちょこと試行錯誤してみた。

詳細は続きで。

続きを読む

NTFSについて調べたのでメモ

諸事情あってNTFSについて調べたので、自分なりに理解したところをメモ。

基本的には、

の二つのサイトに書いてあることから必要な部分を抜粋しているだけだけど、説明を省略してる部分もあるし間違ってる部分もあるかも。

続きを読む

XML (HTML) の特殊文字をエスケープするVimスクリプトを書いた

XMLやHTMLの5つの特殊文字 (&, <, >, ', ") を定義済みのエンティティ (&amp;, &lt;, &gt;, &apos;, &quot;) に変換するVimスクリプトを書いてみた。

5つの文字を置換するだけだから簡単そうに思えるけど、選択範囲だけを対象にしようとするとなかなか難しくて、今まで納得のいくものを作れずにいた。それが、たまたま今日挑戦してみたら、そこそこいい感じのスクリプトが書けたので、記念にブログポストしてみる。

vnoremap <Leader>e "xx:call <SID>EscapeXml('x')<CR>"xP

function s:EscapeXml(regname)
  let x = getreg(a:regname)
  let x = substitute(x, '&', '\&amp;', 'g')
  let x = substitute(x, '<', '\&lt;', 'g')
  let x = substitute(x, '>', '\&gt;', 'g')
  let x = substitute(x, "'", '\&apos;', 'g')
  let x = substitute(x, '"', '\&quot;', 'g')
  call setreg(a:regname, x)
endfunction

使い方やコードの解説は続きで。

続きを読む

[Haskell] 配列のインデント

今までHaskellで配列をインデントするための気に入った方法がなかったけど、2つほど見つけた。

table = [[Infix (char '*' >> return (*)) AssocLeft,
          Infix (char '/' >> return div) AssocLeft],
         [Infix (char '+' >> return (+)) AssocLeft,
          Infix (char '-' >> return (-)) AssocLeft]]
table = [ [ Infix (char '*' >> return (*)) AssocLeft,
            Infix (char '/' >> return div) AssocLeft ],
          [ Infix (char '+' >> return (+)) AssocLeft,
            Infix (char '-' >> return (-)) AssocLeft ] ]

だから何かっていうわけではないけど、ちょっとうれしかったからメモ。

Haskellのコーディングスタンダードみたいなものってないのかなー

GnuCashで日本の投資信託の基準価額を取得するPerlモジュールを書いた

一ヶ月以上前に作ったまま長いこと紹介せずに放置していたので、そろそろ公開しようと思う...

LiosK's Finance--Quote--YahooJapan at master - GitHub

A Perl module that enables GnuCash to get quotes of Japanese stocks and funds from Yahoo! JAPAN.

GNUプロジェクトの財務管理ソフトウェアであるGnuCashには、Web上のデータソースから株式や投資信託の価格を自動で取得する便利な機能がついています。

Features | GnuCash (投資ポートフォリオに関する機能を抜粋)

Stock/Mutual Fund Portfolios
Track stocks individually (one per account) or in portfolio of accounts (a group of accounts that can be displayed together).
Online Stock & Mutual Fund Quotes
Get Stock & Mutual Fund quotes from various web sites, update portfolio automatically. Additional pricing sources are added regularly.

この機能を使えばGnuCashで投資ポートフォリオを管理するのがだいぶ楽になるのですが、残念なことにデフォルトでは日本の株式や投資信託の価格を取得することができませんでした。おそらく、日本では株式等の価格をCSVのような再利用可能な形で簡単に手に入れることができないために、GnuCashの方で対応してもらえなかったのでしょう。金融後進国は不便ですね...

というわけで、Yahoo!ファイナンスの検索結果ページをスクレイプして、日本の株価や投資信託価格をGnuCashで取り込めるようにするPerlモジュールを作成したので、GitHubで公開しましたよ!というのがこの記事の本題です。使い方等の詳細は続きで。

続きを読む