BLOGTIMES
«Prev || ... 1055 · 1056 · 1057 · 1058 · 1059 · 1060 · 1061 · 1062 · 1063 ·... | | Next»
2009/11/27

RubyからWin32APIを叩く

ruby  windows  cpp 

バッチの動作を自動化しようとしたら、DLLを読み込んでAPIを叩く簡単なアプリを書かなければならない事が判明したのですが、僕はWin32で動くアプリ(C#, VC++, VB)を書いた事がないので困ってしまいました。

それだけのためにWin32アプリの描き方を覚えるのもアレなので、いつもバッチ処理で使っているRubyを使ってなんとか済ませられないかと調べてみると「Win32API - Rubyリファレンスマニュアル」に"DLL dllname をロードし、API関数 proc のオブジェクトを生成"という部分を見つけたのでこれを何とか使えないかといろいろいじって見たのでメモ。あまり使っている人がいないのか、資料が少なくて大変でした。

練習はUNZIP32.DLLで

とりあえず本番用のものを開発する前に適当なDLLで練習がしたかったので、DLLと聞いてすぐに思いついた統合アーカイバプロジェクトUNZIP32.DLL for windows 9x/Me/NT/200x/XPをRubyから呼び出してみることにします。

[RubyからWin32APIを叩く の続きを読む]

    at 21:55 |
    2009/11/26

    KIM THANH

    vietnamese  kanagawa 
    生春巻 - KIM THANH揚げ春巻 - KIM THANH
    青パパイヤサラダ - KIM THANH牛肉のレモングラス巻きグリル - KIM THANH
    空心菜炒め - KIM THANHフォー - KIM THANH

    今日は前の会社の同期と久しぶりに飲み会をやろうということで、KIM THANHでベトナム料理を堪能してきました。川崎駅からちょっと離れた場所にあります。

    学部時代にベトナムからの留学生と同じ寮で生活していたことがあった関係で、ベトナム料理は一通り食べに連れて行ってもらいましたが、そのときに一歩も劣らない味でした。

    ベトナム料理の定番の生春巻、揚げ春巻、フォーなどの上新粉関連の料理の完成度は高いと思います。牛肉のレモングラス巻きグリルや青パパイヤサラダなどの香草の使いかたはベトナム料理らしいと思いますが、ここのお店の香草の使い方はかなり穏やかです。まぁ、今回はコースだったので、無難な料理が多かったというのもあると思いますが。

    店員のお兄さんがとても冗舌で、ジョークを飛ばしまくっていましたが、料理についてはかなり詳しく教えてくれます。また、Olympus E-520を愛用しているということで、料理の撮影に関してもかなり寛容・・・・というかGF1で写真を撮っていたら「こういう構図で絞りは4くらいでどうですか?」と、そっち方面でもいろいろと盛り上がってしまいました。

    [KIM THANH の続きを読む]

      at 20:34 |
      2009/11/26

      Twitterの有料サービス

      marketing  twitter 

      現時点ではこのような計画はないとTwitter Japan, DGが釈明しています。(2009/11/29追記)

      Twitterはどうやってマネタイズするのか気になっていましたが、意外とストレートな方法でやるみたいです。

      つぶやきを有料コンテンツに――Twitterに課金システム、来年1月から - ITmedia プロフェッショナル モバイル

      サービスとしては「有料つぶやきサービス」と「コンテンツ課金」を提供する予定。有料つぶやきサービスは、ユーザーが既存のアカウントを月額課金方式にできるようにするもので、課金方式は100円~1000円の月額課金と100円~1000円の個別課金から選べる。

      この辺りはブログサービスのマネタイズの時と同じで、芸能人ブログとかと同様のノリですね。ブログの場合はRSSよりもWebで実際に見るPVの方が多いと思うので、Web側に広告を載せるという作戦が取れましたが、twitterの場合は結構な割合で専用クライアントやAPIが使われていますからね。そこに広告を挿入するにはRSS広告のやり方のように、tweet内に広告を潜り込ませるしかないわけですが、ちょっとそれでは品がなさ過ぎる感じですからね。


        at 17:21 |
        2009/11/25

        家の電話が壊れた

        家電  failure 
        Uniden デジタルコードレス留守番電話 メタリックレッド UCT-002(R)

        去年の雷被弾からずっと調子が悪かった家の電話がノイズでとうとう通話できない状態になってしまったので電話を新調しました。実質的に宅配便の再配達依頼と実家と話すくらいにしか使っていないので、Amazonで一番安いコードレスです。

        子機にイヤホンマイク用の端子がついているのが面白いですね。機能的に可もなく不可もなくという感じですが、スピーカーの音がこれまで使っていたものよりかなりデカいです。


          at 13:03 |
          2009/11/24

          再起動時に一度だけ実行されるcron定義

          linux 

          先日のcrontab -r とやってしまった時の対処法のアクセスが意外と多くてかなり驚きました。ちなみに僕はクーロンと読む派です。それはそうと、これを機にちゃんとcrontabのmanを読んでみたら、日次の定義に@rebootと書くと再起動時に一度だけ実行されるcron定義がかける事が判明。CentOS 5.3では、日本語のmanにはこの部分が記載されていませんでした

          $ man 5 crontab

          These special time specification "nicknames" are supported, which replace the 5 initial time and date fields, and are prefixed by the '@' character:
          @reboot : Run once, at startup.
          @yearly : Run once a year, ie. "0 0 1 1 *".
          @annually : Run once a year, ie. "0 0 1 1 *".
          @monthly : Run once a month, ie. "0 0 1 * *".
          @weekly : Run once a week, ie. "0 0 * * 0".
          @daily : Run once a day, ie. "0 0 * * *".
          @hourly : Run once an hour, ie. "0 * * * *".

          自分の開発用のLinuxマシンで再起動する度にRoRのアプリを起動し直すのがちょっと面倒だったんですが、crontabにこう書いておくと勝手に起動できるようになっていい感じです。

          @reboot (cd /path/to/rails && ruby script/server -d) >/dev/null 2>/dev/null

          管理が面倒になりそうなので、乱発は避けたいところですが、例えばroot権限がなくてinit.dにスクリプトが仕込めない場合に使うと便利そうです。


            at 23:12 |
            2009/11/23

            著作権はいつから70年が世界標準になったのか

            licence  copyright 

            ベルヌ条約では50年以上となっていて、それで国内では50年なんですが、世界標準だから70年にしようというのはちょっと乱暴すぎだと思うんですけどね。文化の保護という建前ですが、結局は利権の保護ということでしょう。そういえば、近所のNTTのビルが増床されて中身はデータセンターになるみたいなんですが、その反対ののぼりに「子供たちを電磁波から守れ」って書いてあるのと見たときと同じような感覚を覚えます。何でデカいビルが建つのは嫌ですと言わないのか、なんていうかこういうやり方はホント気にいらないです。

            著作権は音楽家だけのものではないと考えます。僕の論文だったり、ソフトウェアも立派な著作物ですが、死後50年の現行制度でも十分文化に貢献できて、不都合はないわけです。伸ばしたところで日本の国際競争力が向上するわけでもなさそうですし。

            「著作権保護期間70年への延長実現に最大限努力」鳩山首相が明言 -INTERNET Watch

            鳩山 由紀夫首相は18日に開かれた「JASRAC創立70周年記念祝賀会」において、著作権の保護期間を現在の「著作者の死後50年」から、欧米などと同等の「著作者の死後70年」に延長するために最大限努力するとの考えを示した。

            これに対して、MIAUは反対のコメント。これについてはいつもどおりという感じ。

            MIAUが著作権保護期間延長に反対、鳩山首相の発言受けて -INTERNET Watch

            その上で、「メリットは無いのに、デメリットは確実にある」というのが、国内外を問わずに多くの専門家の意見が一致するところだとしている。さらに、この点については、文化審議会著作権分科会の「過去の著作物等の保護と利用に関する小委員会」でも確認され、2年間に及ぶ慎重な審議の結果、保護期間の延長が見送られることになったと説明。

            正直、政府はこんな事をやっていないで経済政策をきちんとして欲しいところです。


              at 23:35 |
              2009/11/22

              友人のドラクエ3をピアノで弾いてみたが凄かった

              dragonquest 

              先日自宅に遊びに行ったときに、FF7 ピアノコレクションズを練習していた友人から「ドラクエ3の曲をピアノで弾いた動画を、youtubeにアップしてみました。興味のある人、聴いてみてね」というメールが来たので、聴いてみたら予想以上に凄くて驚きました。

              こういうのニコニコとか、youtubeにも沢山上がっていますが、知ってる人が弾いてると思って聴くと鳥肌が立ってきますね。彼と寮で一緒にファミコンをやったりしたのも懐かしい思い出ですが、結婚して、子供も生まれて、最近は少し落ち着いたのかと思いきや、こういうところへの情熱は衰えていないようで嬉しい限り。そういえば、発表会のために寮にまで電子ピアノを持ち込んで夜中まで練習していて、隣室の友人が「夜な夜な、隣から壁を殴る音が聞こえてうるさくて眠れないんだよね」と苦情を言っていた事もあったなぁ。

              そのうち続編でFF7もアップされると思います。。。。


                at 09:13 |
                2009/11/21

                crontab -r とやってしまった時の対処法

                linux  sh  ruby 

                cronの設定を変えようと crontab -e と打とうとして、間違って crontab -r と打ってしまい、cronの設定が根こそぎぶっ飛んで参りました。「eとrは隣同士だから不慮の事故ですよ!」という他人の言い訳は以前から良く聞いていて、心の中で「そんなことあるかよ!」と思っていましたが、まさか自分がやってしまうとは思いませんでした。まったく言い訳できません

                そして、こういう事故は絶対やってはいけないアカウントでやってしまうのが世の常。今回も例に漏れずたくさんジョブが仕込んであるアカウントでやってしまいました。しばし茫然自失。気を取り直してなんとかしようと考え始めたものの、さすがにこれを記憶に頼って復旧させるのは至難のワザ・・・・・・というかぶっちゃけ無理。適当に復旧してちゃんとバッチが動かずに、後日障害で呼び出されるものイヤです。

                済んでしまったことでくよくよしていても仕方が無いので、手動での復旧はあきらめ、/var/log/cron の実行ログからcrontabをサルベージする*1スクリプトを書いてみました本当は時刻の設定とかも復元できるようにしようかと思ったのですが、まぁそんなにお世話になることもないのでそのあたりは手動で実施するということにします。いちおうリストアップされるようにしました。ユニークに出力する(*/5みたいに綺麗に畳んだりできない)ので出力は結構冗長ですが、そこは勘弁してください。

                $ ./cron_salvage.rb --help Usage: cron_salvage [options] -f, --file CRONLOG cron log file (default: /var/log/cron) -u, --user USER cron user (default: root)

                こんな感じで、対象のログファイルとユーザーが指定できるようにしてみました。
                /var/log/cronが読める必要があるので、基本的にはrootユーザーで実行する必要があります。

                $ ./cron_salvage.rb * * * * * /usr/lib/sa/sa1 1 1 * * * * * ionice -c3 nice -n 19 /opt/apache/htdocs/admin/AWStats69t_Jpn/wwwroot/cgi-bin/awstats.cron > /dev/null 2>&1 * * * * * run-parts /etc/cron.daily * * * * * run-parts /etc/cron.hourly * * * * * run-parts /etc/cron.weekly

                こんな感じで、crontabが復元されるので、cron.(daily|hourly|weekly)に設定されている部分など、不必要な部分を除いてやればよいと思います。まぁ、対象がrootでなければ余計なものはあまり出てこないと思いますが。

                [crontab -r とやってしまった時の対処法 の続きを読む]
                • *1: ちなみにこの方法は僕が考案したわけではなく、以前にとあるプロジェクトで同様の事故が起きた際にある人が考えついた方法です。そのときは手動でやっていたのを脇目で眺めているだけでした。

                at 20:27 |
                2009/11/20

                麺飯菜館 じょうじょうのローメン

                ラーメン  B級グルメ  nagano  saitama 
                豚肉細切りあんかけ丼 - 麺飯菜館 じょうじょうのローメンローメン(ラム肉、大盛り) - 麺飯菜館 じょうじょうのローメン

                研究ですっかり遅くなってしまったので、晩飯をすませて帰る事に。ということで、先日混んでいて入れなかったじょうじょうへ。僕が学部の時には無かったお店です。メニュー的には長野県B級グルメの「ローメン」がひときわ目立つ感じですが、そんなに冒険する元気もなかったので、無難に豚肉細切りあんかけ丼を頼みました。

                研究室メンバーのD生と一緒だったのですが、彼は自分の知識量が学位が取れる頃には、僕と同じようになるかどうか不安に思っているという話をしていました。研究していれば全知の存在に成れるわけでもないし、D生にもなれば、自分の専門分野がそれなりにあるはずなので、自分の分野の事柄についてある程度自信を持って人とディスカッションできればそれで大丈夫という話をしてあげました。正直、僕より研究向きだと思うので、焦らずにがんばって欲しいと思います。

                [麺飯菜館 じょうじょうのローメン の続きを読む]

                  at 22:15 |

                  CCCCを利用してメトリクスを計測してみる

                  softwareengineering  objectoriented 
                  CCCC Command - CCCCを利用してメトリクスを計測してみる

                  先日、メトリクスのまとめをちょっとやったので、今日はツールを使って実際にメトリクスを取ってみます。

                  手っ取り早く自分のプロジェクトに適用するのであれば、Eclipse Metrics Pluginを使ったり、Maven2のプラグイン経由でJDependJavaNCSSを使うのが楽なのですが、今回はSLoCをメソッド単位で取得する必要があり、しかも大量のプロジェクトをコマンドラインで一括処理したかったのでCCCC (C and C++ Code Counter )というツールを使ってみました。

                  C and C Code Counter | Get C and C++ Code Counter at SourceForge.net

                  CCCC is a tool which analyzes C++ and Java files and generates a report on various metrics of the code. Metrics supported include lines of code, McCabe's complexity and metrics proposed by Chidamber&Kemerer and Henry&Kafura.

                  インストーラーにそってインストールした後、ソースコードのあるディレクトリにcdして、マニュアルにあるとおり、下記のコマンドを打ち込むと解析が開始されます。

                  F:\winstone-src-0.9.10>dir /b /s | cccc --lang=java -

                  解析が完了すると、.ccccというフォルダに結果が格納されます。今回のサンプルには愛用しているサーブレットコンテナのWinstoneのソースコードを使ってみました。研究用のデータを作るには、XMLで出力された結果をパースして一覧を作る必要がありますね。


                    at 18:37 |
                    «Prev || ... 1055 · 1056 · 1057 · 1058 · 1059 · 1060 · 1061 · 1062 · 1063 ·... | | Next»