タグ: Perl

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Finance::Quote::YahooJapanを更新しました!

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

しばらく放置気味だったFinance::Quote::YahooJapanに不具合が見つかったので修正した新バージョンを公開しました。

Commit 298b63983378924daf8d8e6f4138e6da57e84d3d to LiosK's Finance--Quote--YahooJapan - GitHub

Version 0.3

  - Fixed a problem with stock names containing spaces.

  - Improved error handling.

  - Added a test case.

詳細は続きで。

続きを読む

スポンサーサイト

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で公開しましたよ!というのがこの記事の本題です。使い方等の詳細は続きで。

続きを読む

デジカメの撮影日時を一括変更する方法のメモ

2週間ほど欧州周遊の旅に出ていて、そのせいでブログの更新がご無沙汰になっていました。一ヶ月以上放置すると広告記事が投稿される仕様のようですね。

で、デジカメを使ってたくさんの写真を撮ってきたわけですが、時計を合わせるのを忘れたせいで、全部日本時間のまま写真を撮ってしまいました。そのデータを全部現地時間に変換するのが意外と面倒だったので、その方法をメモっておく。

続きを読む

昨日の問題を遺伝的アルゴリズムっぽく

昨日の問題[1][2][3]を、遺伝的アルゴリズムのようなもので解いてみた。解くのに使ったPerlコードは最後に添付。

一応、前々回のエントリで提示したサンプルデータに対しては、10個の実験枠と40人の参加希望者を全て使い切る最適解を一つ見つけることができた。パラメータ変えながら50回くらい繰り返した末にだが。

とはいえ、実験枠数と参加希望者数の関係が変わったりするとまだうまく最適解を推測できないようなので、もう少しチューニングしたほうがよさそう。

続きを読む

前回と前々回のエントリーの問題を総当りで

前々回前回のエントリで書いた問題を、Perlで総当りで解こうとしてみた。使ったコードは最後に添付。

実行開始から7時間半経過したけど未だに終わる気配がない。馬鹿正直に40人の参加希望者と10個の実験枠を組み合わせたら組み合わせは10^40通り。今回のコードでは、参加可能枠の配列を使って解空間を狭めたけれど、それでもやはり9 * 8 * 9 * 6 * 6 * 5 * 4 * 6 * 7 * 9 * 6 * 8 * 9 * 6 * 7 * 5 * 9 * 4 * 4 * 5 * 3 * 8 * 6 * 8 * 6 * 8 * 7 * 3 * 7 * 9 * 5 * 9 * 5 * 6 * 8 * 7 * 8 * 8 * 7 * 5 = 1.4271125147448316e+32通りの解がある。もっと解空間を狭めるアルゴリズムを考えるか、確率的なアルゴリズムを考えるしかないようだ。

ちなみに、7時間半走らせたところ、最適解は最大実験枠が4個で最大参加者数が12人になっている。明らかにまだまだ。

続きを読む

Perlを書くようになったなぁと思うとき

リネームツールを探してくる代わりに

rename $_, ++$i . '.jpg' foreach (sort glob '*.jpg');

とか書いて済ませ始めたとき。

[Perl][メモ] CGIのperlへのパスを書き換えるスクリプト

CGIの先頭のperlへのパスを、ローカル環境用(#!perl)とアップロード先環境用(#!/usr/bin/perl)とで切り替えるPerlスクリプトを書いたのでメモ。Movable Type Open Sourceとかで遊んでるときに便利。

use strict;

foreach (glob '*.cgi') {
    open FH, $_;
    my @lines = <FH>;
    close FH;

    my $line = shift @lines;
    $line =~ s|!perl|!/usr/bin/perl| unless ($line =~ s|!/usr/bin/perl|!perl|);
    unshift @lines, $line;

    open FH, '>' . $_;
    flock FH, 2;
    print FH @lines;
    close FH;
}

こういう雑多な処理を自動化するときはPerlが便利すぎる。んで、foreach (glob '*.*') { ... }が便利すぎて困る。

ファイルを2回オープンしてるのが無駄な気がするんだけど、なんかいい案あるかな?

[JavaScript][Perl] 続・正規表現を使ったCSVパーサ

正規表現を使ったCSVパーサの続き。

トークン化したCSVを解釈するコードをJavaScriptとPerlで書いた。二つのロジックはほぼ同じ。

それぞれ、第一引数には解釈するCSVテキストを渡し、第二引数ではfield間の区切り文字を指定する。デフォルトはコンマ(,)。戻り値は、CSVを解釈した2次元配列(Perlの場合はリファレンス)。

続きを読む

Perlをもう一度勉強しよう

Perlのスクリプトを書かなければいけない予感がしているので、Perlを勉強しなおしている。ゼミの研究室のサーバーは今のところPerlしか入っていなくて、PHPを入れるのも面倒そうなので、もう一度Perlを勉強しなおす決心をした。

実は僕がプログラミングを始めたのはPerlからで、Perlの後PHPに移って、JavaScriptにはまって今に至る。その間にC, Delphi, Javaなんかにも寄り道はしたが。

とはいっても、Perlを勉強したのは中学生のころで、今から思えば何もわかっていなかった。CGI.pmもなくて、おまじないのようにフォームデコードの関数をコピー&ペーストいたり、変数名の衝突でスクリプトが壊れて、以後グローバル変数恐怖症になったりしたことだけは覚えている。

今改めてPerlを勉強してみると、当時とは見違えるように理解が進む。特に無名配列、無名ハッシュ、無名サブルーチンあたりの便利さに目覚める。そしてリファレンスは便利ですね。

ということで、しばらくはPerlにはまりそうです。ものすごくJavaScriptの影響を受けたコードを書いていますが。

[PHP][mod_rewrite]ユーザーエージェントでPCとケータイを判別

HTTP_USER_AGENTの文字列を判断して、PCからのアクセスなのかケータイからのアクセスなのかを判別するというのは、広く使われているテクニック。

例えばDoCoMoのケータイならば、ユーザーエージェントの先頭に必ずDoCoMoの文字列が入ることになっているから、それを見てドコモのケータイだと判断すればよい。

先ほど、各キャリアのユーザーエージェントを調べたのでメモ。

続きを読む

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。