両方とも落ち着きつつあるので、必要なシステムを作って行きたいと考えている。最近の新しい言語に移行することも考えたが、基本的にはWEBアプリが主流であることには変わりがないと思っているので、とりあえずは使い慣れたPerlのまま続行していきたい。そんな時にお世話になるので、「CPAN」。最近はCPANのShellではなく、CPANMが流行っている模様。簡単に導入できるが、少しメモを。–self-upgradeここで少しつまずいたところ。visudo(secure_pathに必要なパスを設定)と、言ったところ。WEBフレームワークが乱立していて、どれを使うのがベストか判らない状況。Cakeを使っていたけど、WEBアプリを考えるとやはりPerlのフレームワークが必要ということで、Mojoで構築予定、また、Upします。コメントを残すActivePerlでppm起動せず最近書き込み少し減っております。仕事がばたばたしており、なかなか集中力が高まりません。平日でも作業できています。今回はWin8タブレットにいつものPerl環境をつくろうとActivePerlをインストールしてみました。引っかかったのが、DOS窓でPerlを使おうとしたら、「Perlみつかりません」でした。Pathは通っているし・・と、DOS窓でSETしてみたら、なんと環境変数PATHに、C:¥Perl¥binが入ってない・・なんでWin8の設定が反映されていないのか・・と、再起動したら、認識しました。DOS窓の設定はDOS窓を開くたびに設定しているんではないんですね。はまりました(5分くらいですけど)。一つが、タイトルのPPMです。いつもSHELLから使うので直接GUIのPPMは使わないのですが、なにげに起動すると立ち上がらず。connect......どうも、DBにアクセスできないようです。見てみるとPathに全角が入るとアクセスできないようです。PerlはルートにPerlディレクトリを作っているので、ここのppmフォルダを指定。ACTIVEPERL_PPM_HOME=C:¥Perl¥ppmで、DBを指定。これにて無事起動しました。今回はJSONで配信されたレート情報をデータベースに格納します。この作業の簡単なこと。decode_json/;で宣言。decode_json($a->content());でindataに展開されます。配列から各レートを取りだして、MySQLにInsertするだけです。書き方分からずに、手間取りましたが、2,3時間で対応できました。今年の最期の作業は、ヤフオク関連だった。いま、まさにこの時間までプログラムの修正をしていた。先日書いたとおり、ヤフオクAPIからの商品リストの取得が、50件から20件に縮小。当然に処理自体は重くなり、今まで1日で処理仕切れたものが、1.8日程度かかるようになった。その結果、積み残しが大量に発生し、結果的に取得漏れが発生していた。DBの処理能力を向上させれば解決できるが、そんな予算もないので、プログラム上の工夫でなんとか高速化できたはず。今テスト中だが、1/1の0:15からの処理で、いきなり本番適用されるように設定をしている。来年の目標を立てる時間もなかったので、1/1に目標を立てて、作業を進めていきたい。今、作っているシステム。大量のデータをネット上から収集している。成果が上がってこない。して・・と先ほど確認したら、案の定肝心な部分がテストモードのまま可動していた。大きなシステムを作るときは、起動オプションで本番、テストの切り替えをしているが、比較的小さなシステムなので、ソース内にフラグを作っていたが、モジュールの一つがテストモードになっていた。今回のシステムと同じものを二重処理していた。ほんともったいない・・・。(と、いう気持ちを忘れないために、このBlogに反省文を書いておく。今日、久しぶりにに、VisualC++6.0で、SAPI5.1なプログラムの修正をした。環境はメインマシンのMacmini上の、VirtualBoxに乗っけている。全てのソースを全コンパイルすることはなかったので気がつかなかったが・・・なんとSRなソフト開発環境なのに、SAPI5.1が入っていなかった。そんな訳で、MSからSAPI5.1のSDKをDLしてインスト。その後、VisualC++6.0の「ツール」「オプション」で、インクルードファイルと、ライブラリ場所を指定。以下に導入されている。これでやっとプログラム修正できる・・・。古いソフトの開発環境って、みなさんはどうしているんでしょ。急にヤフーデベロッパを利用していたシステムが動かなくなった。エラーの状況を見てみると、xmlパーサが落ちている。見てみると、コンテント部分がgzip圧縮されていた。なんの予告もなくひどい話だ。WWW::Mechanize::DecodedContentを利用して、事なきを得た。あっ、全然逆襲じゃなかった。eval)先日書いたとおり、この一月は全く取引できていない。以前も週に1,2度レートの取得に失敗していた。失敗してもほとんどの場合は、継続して取得するようになっていた。それが、4月を過ぎたころから、エラーで止まるようになった。一定期間処理を待機し、再度接続するようにシステムを修正した。先週は5,6時間しか継続して取得できなくなってしまった。今日はその部分を見直し、evalを使わずに、一つ一つのロジックで、処理の状況を見直すようにした。来週からがんばっていきたい。7月から再度きっちり処理できればと思う。コメントを残すメニュー勝手に消さない開発環境が、VisualC++6.0からVisulaStudio2010に変わったことを書いた。基本的なMFCがかなり大きく変わっていて、便利になったのはいいけど、かなり設定などが変わった。その一つにメニューの表示がある。最初から表示するようになる。今作っているソフトは、メニュー項目が消えると困るので、リソースなどを見たり、CMenu(すでにこれをみてる時点で古い・・)のメンバをみたりしていた。ネットでぐぐってみたりもしたけど、あまり情報がないままに、ソースをみていると、それらしきコードが・・・。SetBasicCommandsへのリスト登録。なにやら基本メニューの登録らしく、ここにメニューIDを登録しとくと、いつでも表示してくれる。size先日から何度か書いているが、やっとシミュレーション結果の分析をしている。基礎データは毎週計算結果を追加。今回は分析用のDBを駆使して、最適な指標を作る作業を手作業で行っている。手作業で再度集計してみると、やはり少ない。size」なるエラーが出ていた。結局はメモリ不足ということで、MySQLのinnnodb_buffer_pool_sizeを、512Mくらい割り当てて作業を再開。Linuxの方では問題なかったが、Windows用Mysqlは微妙にその辺の頑丈さが違うようです。いつもは、FX取引用サーバの空き時間を使って作業しているが、かなりの負荷をかける作業をするので、作業DBをWindows上で行ったのが原因。同じ4Gのメモリを積んでても、メモリ管理などが違うので、使うソフトに応じてかんがえていかないといけない。