nDiki : DLL

DLL - Dynamic Link Library

ダイナミックリンクライブラリ、動的リンクライブラリ。

2005年4月8日 (金)

QEMU を使って Debian GNU/Linux 上で Windows を動かす

VMware の話のなかで Bochs というのが話題にでたのでチェックしてみた。 記事などを見ていると QEMU の上の方が高速に動くという評判である。

先日 Wine を試してみたものの、結局 WindowsDLL とかがたくさん必要でいろいろ面倒なわりにソフトウェアの動作確認環境としては不安定すぎて使えない感じだ。 ということで QEMU の上に Windows をインストールしてみることにした。

QEMU のインストール

Debian のパッケージになっているのでそれをインストール:

 apt-get install qemu

Windows インストール CD-ROM イメージの準備

今回は Windows 2000 Professional をインストールしてみる。 手元にあるのがアップグレード版なので Windows 98CD-ROM も必要。 それぞれ dd でイメージを作っておく (w2kupdate.iso、w98.iso)。

エミュレーション環境のHDDイメージを作成

とりあえず2GB。

 qemu-img create w2k.img 2G

/var のパーティションに余裕があるので、/var/lib/qemu を作ってそこにおく。

Windows 2000 Professional インストール失敗

HDD イメージ・CD-ROM イメージを指定し(-hda、-cdrom)、CD-ROM からブートするようにオプションを指定(-boot d)して QEMU を起動。QEMU のグラフィックモードでマウスクリックした後、なぜか Ctrl-Alt してもマウスを grab したまま離してくれないので、QEMUモニタは qemu を起動した端末側にしておく (-monitor stdio)。 メモリは1GB実メモリの半分、512MBにしておく(-m 512)。

 qemu -hda   /var/lib/qemu/w2k.img \
      -cdrom /tmp/w2kupdate.iso \
      -boot d \
      -m 512 \
      -monitor stdio \
      -user-net

インストール開始。 途中で Windows 2000 より前の OSCD-ROM を要求される。 QEMU モニタ上で CD-ROM を交換

 change cdrom /tmp/w98.iso

しかし、インストーラは正しい Windows 98 インストールディスクとして認識してくれず。 Windows 2000 を直接インストールするのは諦め。

ということで Windows 98 SE を先にインストール

遊びでちょっと sarge のインストールをちょっと途中まで QEMU 上でやってみる。 以前のインストーラより設定項目が少なくなった?

で気をとりなおして、Windows のインストールの続き。 Windows 98 SE をインストールしてから、Windows 2000アップグレードすることにする。

Windows 98 の起動ディスクのイメージを dd で作成 (w98fd1.img)。

これでブート

 qemu -hda /var/lib/qemu/w2k.img \
      -cdrom /tmp/w98.iso \
      -fda w98fd1.img \
      -boot a \
      -m 512 \
      -monitor stdio \
      -user-net

こちらは順調にインストールが進む。 1時間以上かかってインストール完了。

Windows 98 起動中はCPUパワーを100%使うので、ファンががんがん回ってうるさいうるさい。

あいかわらず ungrab できないのが困るな。 1度 QEMUのグラフィカルウィンドウ上をクリックして grab されてしまうと、他のウィンドウにフォーカスを与えることができなくなってしまう。 Windows 98 側でシャットダウンして QEMU を終了させるか、Ctrl-Alt-Backspace で X Window System もろとも落とすとかしか手段がない。 Windows 使用中、他のウィンドウが使えないというのでは利用価値半減。

要調査。

[ 4月8日全て ]

2008年3月13日 (木)

Skype のアバタを WSH 上の JScript スクリプトで変更する

まず Windows XP BOX に、Skype4COM 1.0.28.2 を入れる。 Skype4COM-1.0.28.2.zip をとってきて展開し、アーカイブの中の DLL を登録する。

 regsvr32 Skype4COM.dll

次に以下のスクリプトを書いて、例えば setskypeavatar.js というファイルに保存する。

 skype = WScript.CreateObject("Skype4COM.Skype");
 skype.Settings.LoadAvatarFromFile("C:\avatar.png");

で、Skype を実行してログインしている状態でコマンドプロンプトから

 start setskypeavatar.js

で実行する(あるいはエクスプローラ上から実行する)。Skype 側が「他のプログラムが Skype にアクセスしようとしています」というダイアログを表示するので連携を許可してあげると、アバタが avatar.png の画像に変更される。

細かい点気にしなけば簡単。

なお今回のように単純に Windows Script Host から API 接続すると、WScript.exe に対しての許可を与えなければならないので、その点は注意が必要。

ちなみに Skype for Linux では API にある「SET AVATAR」コマンドがまだ使えないので、同様のことが実現できなかった。

[ 3月13日全て ]

2008年3月21日 (金)

今日のさえずり: 「じゅうふく(重複)」はやはり気持ち悪い

[ 3月21日全て ]

2008年8月5日 (火)

Twitter への書き込みを自動的に Skype ムードメッセージに設定する for Windows

半年ぐらい前に Skype for LinuxTwitter への書き込みを自動的に Skype ムードメッセージに設定するスクリプト(記事)を作って cron で 10分毎に更新するようにした。

Windows BOX 上 Skype を使っている時も同様にできるように、Skype4COM を使うバージョンも書いてみた。 D-Bus ではなく Skype4COM を使うようにすることと、Skype4COM にはシフト JIS の文字列を渡すようにすること以外はほとんど同じ。

Skype4COM の DLL を登録し、Skype が起動している状態で以下の Perl スクリプトを実行。

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Win32::OLE;
 use URI::Fetch;
 use XML::RSS;
 use Date::Parse;
 use Encode;

 my $id = '自分の Twitter ID';

 my $time = time;
 my $fetch_response
   = URI::Fetch->fetch(
               "http://twitter.com/statuses/user_timeline/$id.rss?dummy=$time")
   or die URI::Fetch->errstr;
 my $rss = XML::RSS->new;
 $rss->parse($fetch_response->content);
 die 'no items' if @{$rss->{items}} == 0;
 my $item = $rss->{items}->[0];
 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
   = localtime(str2time($item->{pubDate}));
 my $title = $item->{title};

 my $mood
   = sprintf("$title [%02d/%02d %02d:%02d]", $mon + 1, $mday, $hour, $min);

 $mood = Encode::encode('shiftjis', $mood);

 my $skype = Win32::OLE->new('Skype4COM.Skype');
 $skype->Client->Start unless $skype->Client->IsRunning;
 my $profile = $skype->CurrentUserProfile;
 $profile->{MoodText} = $mood;

インストール済みだった ActivePerl 5.8.8.822 で動作を確認(ちなみに現時点での最新は ActivePerl 5.10.0.1003)。なお URI::FetchXML::RSS、Date::Parse(TimeDate) は標準では入っていないので PPM パッケージでインストール。

タスク スケジューラで10分毎に上記のスクリプトを wperl.exe で実行するように設定。 これで Windows 上でもさえずりをムードメッセージに設定できるようになった。

[ 8月5日全て ]

2009年2月23日 (月)

PARDLL ファイルをロードできなかったら大文字小文字を疑え

PDL を使っている Perl プログラムを、昨日構築した今ごろの環境で PAR を使って実行可能ファイル化したんだけれども、実行してみたら

 Can't locate loadable object for module PDL::Core in @INC ...

というエラー。 実行時のキャッシュディレクトリを見ると core.dll が同梱されていない模様。 なんでだー。

いろいろやってみたところ、もしやと思ってインストール済みの core.dll を Core.dll という名前に変えたらエラーが出なくなった(正確には次のモジュールで同様のエラーが出た)。

ファイル名の大文字・小文字が問題だったらしい。 PARFAQ には「Win32::Perms の Perms.DLL でこのエラーが出たら、Perms.dll にしてね」と書かれている。 最初これ拡張子の問題だけだと思っていた。 ベース名でも同様のようだ。

以前は問題なかったから、比較的新しい PAR で発生するようになったと思われる。 これ絶対はまる。

今日のさえずり - くるみマフィンの賞味期限が2月30日

2009年02月21日

  • 11:49 YouTube 見てたら Linux フリーズした。 *P3
  • 11:53 リラックマストア東京駅店、昨日オープンか。 *P3
  • 13:42 西安餃子の半個室。 [mb]
  • 14:49 ズボン濡らしたのでイトーヨーカドーで新しいの買って着替え。 [mb]
  • 18:50 今日買ったくるみマフィンの賞味期限が2月30日だった。で、ハリマヤさんいったい賞味期限はいつなの? [mb]
  • 20:34 昼のエビチリ、2度辛いがきたっぽい。 *P3

2009年02月22日

  • 09:47 シェーキーズってまだあるんだ。最後にランチの食べ放題食べたのいつだろう。もう今行っても、もとを取れないだろうけど久々に食べたい。 [mb]
  • 09:55 @nakameP えーっ、シェーキーズってそんなに進化してたんですか。最後に行ったのは15年以上前かなあ。学生にはあのチープ感でも満足でした。 [mb]
  • 10:25 出社。 *P3
  • 10:53 JUDE/Server 2010年2月末日をもってバージョンアップ終了か。需要少なかったのかなあ。 *P3
  • 11:41 メモ用にと名刺入れに名刺サイズ方眼情報カードをずっと忍ばせていたんだけれど、基本 RHODIA 持ち歩く習慣がついているので使ったためしがない。かさばるだけなので捨てる。 *P3
  • 14:43 MinGW 5.1.4 インストール。 *P3
  • 15:41 SourceForge.net から MinGW の g++ がダウンロードできないので、そこだけ SourceForge.JP から取ってきてようやくはいった。 *P3
  • 17:45 PAR-Packer の nmake test をかけると、Norton Internet Security がしゃしゃり出てくる。 *P3
  • 18:11 ようやく PAR-Packer の nmake test が終わった。 *P3
  • 19:12 斜め向かいのちょっとバーコード始まっているおじさんがポータブル MD プレーヤーの外付けバッテリのネジにずっと苦戦している。カチャカチャ。 [mb]
  • 22:53 目が尋常なく痒い。 *P3

2009年02月23日

  • 12:59 PAR における DLL ファイルのファイル名の大文字小文字問題に翻弄されていた。 *P3
  • 13:02 PDL 今もきちんとバージョンアップしているんだな。ちょっと安心。 *P3
  • 19:02 納期間近の仕事集中的にやっていたけれど、そろそろルーチンワークもやっておかないとヤバい。 *P3
  • 20:27 さて帰る。 *P3
  • 20:44 切ない……。会社にマスク忘れてきた。 [mb]
  • 20:53 モバツイ不調なので久しぶりに PC2M 経由で本家。
  • 21:38 そろそろ RPG のアイテムに花粉症が出てきてもいい頃。 *P3
[ 2月23日全て ]

2009年7月23日 (木)

今日のさえずり: おさん、マスコミがマスコミに囲まれる事あるの?

  • 09:21 @renewal49 文房具ひとつで仕事が楽しくなったりしますよね。こちらこそよろしくお願いします。 [mb]
  • 09:44 アイス トール キャラメル マキアート パーソナル。 L:秋葉原 [mb]
  • 10:42 テスト用 PC を KBD101.DLL にしたままだったのだが、さすがに極悪なのでそっと KBD106.DLL に戻しておいた。 *P3
  • 12:49 2009年7月22日の歩行: 5676歩、4.51km、43分、6.23km/h、消費 213.1kcal、脂肪燃焼 30.4g、3.1エクササイズ。 *P3
  • 14:12 さて、午後半休。 [mb]
  • 14:19 うーん、食事の前に恵比寿に出るか。 L:秋葉原 [mb]
  • 14:27 秋葉原駅から日比谷線に乗ったけど、恵比寿駅までなら JR の方が少しはやかったらしい。地下だと電波状況悪いしちょっと失敗。 L:茅場町駅 [mb]
  • 14:34 車中の親子の会話より:「おさん、マスコミがマスコミに囲まれる事あるの?」 [mb]
  • 14:40 親が答える前に下車していった。「おさん、マスコミがマスコミに囲まれる事あるの?」への返答は各自宿題。 [mb]
  • 14:47 @double_standard 問われると「囲まれる」まではなかなかないような気がしますね。 [mb]
  • 14:50 恵比寿駅到着。 [mb]
  • 14:54 学06のバス停を確認。 [mb]
  • 15:00 イマココ! 大戸屋 恵比寿西口駅前店 L:東京都渋谷区恵比寿西1-9-3 [mb]
  • 15:25 えー、もう雨降ってきたの? L:恵比寿 [mb]
  • 15:56 モンベルクラブでシャツ新調。メンバーズカードも作ってみた。 L:恵比寿 [mb]
  • 16:14 今日も、ももいろクローバーの日か。17:00 の回待っている人がちらほら。 [mb]
  • 16:39 さて、これから半休とったメインの用事してくる。 [mb]
  • 18:48 次は歯医者。 [mb]
  • 19:36 歯の定期健診終了。歯の欠けがあった。詰め物取って処置し型取り詰め直しで2回通院指示。アイタタ。次回麻酔。 [mb]
  • 26:15 塩漬けされていた @NHK_onair が皆既日食ネタで再起動していたことに今ごろ気がついた。remove してたもんな。 *P3
[ 7月23日全て ]

2009年9月4日 (金)

今日のさえずり: ググって原因がわかった。って半年前の自分じゃないか。アホだ。

  • 09:41 昨日指摘を受けたのでラガーシャツじゃないので出勤中。普通のシャツだとインナーシャツと2枚になるので真夏の間は避けていたのだ。
  • 09:49 aws の方でモバツイ接続。 #movatwi [mb]
  • 10:06 「今日お出かけですか?」「何で?」「ポロシャツじゃないんで。」そうきましたか(下はジーパンだよ)。 *P3
  • 11:31 揺れた。珍しくスタッフがみんな感ずいてる。 *P3
  • 12:46 2009年9月3日の歩行: 6510歩、5.23km、47分、6.55km/h、消費 235.2kcal、脂肪燃焼 33.6g、3.4エクササイズ。 *P3
  • 13:33 今日から月見バーガー始まってたのか。 *P3
  • 14:29 ナボナ食べる。 *P3
  • 14:56 次の行動リスト(ロルバーンポケット付メモ)は見そびれないように PORTER ウエストバッグにいつも突っ込んでおくか。 *P3
  • 15:11 PAR::Packer したファイルに PDL 関連 DLL ファイルが全然入ってないな。以前は同じ方法ではいっていたのだけれど。 *P3
  • 15:45 Module::ScanDeps 最新にしたけどかわらず。 *P3
  • 15:59 うーん、違うな。PAR::Packer で出来上がったファイルにはきちんと DLL ファイル入ってた。でも実行した時に一時ディレクトリに展開されていない。 *P3
  • 16:39 ググって原因がわかった。って半年前の自分じゃないか。アホだ。 http://bit.ly/pB2rX *P3
  • 16:41 会社の冷蔵庫に9月1日までのヤクルトが1本ありますが? *P3
  • 18:48 RT @kohmi: こんばんは。秋葉原香美です。 *P3
  • 18:59 ちょっと有隣堂寄っていく。 L:秋葉原 [mb]
  • 19:20 なんだ、この有隣堂のレジの行列の長さは。 #Akihabara L:秋葉原 [mb]
  • 19:27 UML 2.0 の本買った。 [mb]
  • 19:34 3・4番線ホームに上がるエスカレーター1機止まってる。クネクネした方に久しぶりに乗った。こっち遅いんだよね。 #Akihabara L:秋葉原駅 [mb]
[ 9月4日全て ]

2011年3月30日 (水)

今日のさえずり: ヌードクリップ

rimage:/nDiki/Flickr/5572544029.jpg

2011年03月30日

[ 3月30日全て ]

2011年4月15日 (金)

今日のさえずり: 桃ラー初めて買えた

rimage:/nDiki/Flickr/5620739314.jpg

2011年04月15日

[ 4月15日全て ]

2014年8月1日 (金)

もう Windows PC は入力環境と最低限のアプリだけにする(できるだけ)

出社したら Dell のデスクトップ PC の電源ランプが黄色で点滅していて、診断ランプの 1 と 3 が点灯していた。電源回りの故障っぽい。直らなさそうなので、別の PC に乗り換え。結果的にスペックが上がってメモリも 4GB から 8GB になり OS も 32 bit から 64 bit になってツイてる

幸い HDD は壊れていなかったので、ファイルはサルベージ可能だった。しかし USB 接続して中を眺めてみても大して要るものなかった。そういえば複数 PC での利用のためだったり故障時の備えのためだったりで、リモートの Linux 環境や Google ドライブファイルサーバにファイルをほとんど移しておいたんだっけ。

ということで新 Windows 7 PC では最低限の環境だけにしておこう、もう。

Windows 7 PC に最低入れるもの・設定するもの(次回の自分用)

ブラウザ
  • Google Chrome (必須)
    • 設定は Chrome Sync ですぐ元通り。
入力環境
ファイルシステム暗号化

今まで TrueCrypt を使ってきたけれど、今後は VHD + BitLocker で。

  • VHD
    1. エクスプローラーの[コンピューター]で右クリックから[管理]。
    2. 「ディスクの管理」を選ぶ。
    3. 「操作」「VHD の作成」を実行。設定は以下。
      • C:\Users\naney\var\VHD\Naney.vhd
      • 64GB 容量固定
    4. 初期化する。
    5. [新しいシンプル ボリューム]を作る。
  • BitLocker
    1. 上記で新しく作って接続したドライブで BitLocker を有効にする。

旧データは TrueCrypt を portable で一時的に展開し、旧ボリュームをマウントして VHD で作ったドライブにコピー。

  • PuTTY
    • INI ファイルを使うようにしてあるので、前の環境からディレクトリごとコピーしてくる。
  • LimeChat 2
    • IRC クライアント。過去の Settings ディレクトリの中身をコピー。これは再度同じ状態に戻すの結構面倒で設定をロストすると面倒なので、たまにどっかに置いておいた方がいいなあ。
  • KeePass 1.27
    • その時点での最新のをとってきてインストール。設定は手でやれる範囲。
  • Office 365
  • 環境によっては DropboxEvernote 入れる。

こうしてみると

  • 同期されるディレクトリに置いておく
    • AutoHotkey で作った実行可能形式ファイル
    • PuTTY
  • 設定をたまにコピー / エクスポートしておく。
  • ダウンロードできなくなると困るアーカイブを保存しておく。

はしておいた方が良さそげだな。

あとは普段の作業は PuTTY の先の Linux 環境で(Emacs でドキュメント書いたり、プログラム書いたり)。メールGmail。ドキュメントは Emacs 上の howm (Markdown 形式) か WikiGoogle ドライブで書いて可能な限り Windows PC ローカルでは書かない。


[ キーバインディング ]

[ 8月1日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.025257s / load averages: 0.29, 0.28, 0.25