新しいPCが届いた

HP の EliteBook Folio G1 ってやつ。1週間ほど前の夜中、薄くて軽くて頑丈、っていう惹句についうっかりとポチッたもの。確かに12.5型にしては軽い。
OS は Ubuntu じゃなくてプリインストールの Windows 10 Home をそのまま使うことにした。MS-Office を使いたいからそのほうがいいんだよね。
朝からセットアップを始めて、一通り終わったところ。rubygems がエラーをはいてちょっとハマったけど、他は特に問題なし。ホスト名は sofa にした。
以下、インストールしたアプリケーション。

  • Microsoft Office 2013
  • Firefox
  • Dropbox
  • Ruby
  • Python
  • Node.js
  • Gauche
  • Haskell
  • Perl
  • Git
  • 秀丸エディタ

とりあえずこんなところか。rubygems の問題の解決方法はエントリーを分けて書く。

Windows10にアップグレードした

Windows マシン(valarie)を Windows7 から Windows10 にアップグレードした。昨日からダウンロードを始めて、今朝になってやっと終わった。2GB 超えのダウンロードは不安定なうちの無線LANにはつらいよ。

ダウンロードを別にすれば、アップグレード自体はすんなりといった。……ように見えたけど、なんと Office が起動できない。正確に言うと、起動するとあっという間にウィンドウが閉じてしまう。
スタートメニュー→設定→アプリと機能からインストールされている Office 2013を選ぶと、利用不可となっている。こりゃ再インストールしないとダメかなと思いつつ修復をやってみたら、うまく動作するようになった。利用不可のままなのが気になるけど。

そのほかはまだあまり試してないけど、インストールしてあるゲームのうち少なくともいくつかはダメな模様。Ruby や Python は大丈夫そう。ゲームは VirtualBox で Windows7 を使うか。

wikiの引越し

昨日は MySQL をインストールするところから始めて、MediaWiki を動かすところまで書いたけど、そのあと Windows マシンで運用している既存の wiki の引越しもしたのだった。今日はその手順について、(うろ覚えで)書く。

データベースとファイルのバックアップ

まずはデータベースの中身をファイルに吐き出させる。msqldump をいうコマンドを使うんだけど、パスが通ってなかったのでフルパスで指定。

^o^ > C:\VertrigoServ\Mysql\bin\mysqldump -u root -p wiki > wiki.sql

それから、アップロードしたファイルが保存されているフォルダを zip で固める。

^o^ > cd \www\wiki
^o^ > zip -r images.zip images

2つのファイルを持って、Ubuntu のマシンに移動。

データベースの更新とファイルの配置

Windows マシンから持ってきた wiki.sql ファイルを MySQL に読み込ます。

takatoh@nightschool $ mysql -u root -p wiki < wiki.sql

それから、images.zip を展開。すでに images フォルダがあるけどそのまま上書きする。

takatoh@nightschool $ cd /var/www/html/wiki
takatoh@nightschool $ unzip images.zip

これで一応完了。

エラー発生

ところがブラウザでアクセスしてみると、エラーが発生した。画面には「A database query error has occurred. This may indicate a bug in the software.」とか出ている。どうもデータベースのエラーのよう。ググってみたら↓このページを見つけた。

 cf. [RESOLVED] Database error in upgrading from 1.18 to 1.22

どうやら、mw-config/index.php にアクセスしてインストールをやり直せってことらしい。そのとおりにする。インストールの画面になり、進めていくとLocalSettings.php の中の $wgUpgradeKey の値を入力しろと促されるので入力する。そしたら何やらデータベースをアップグレードしているようになり、完了。
再度ブラウザでアクセスすると、ちゃんと表示された。

画像が表示されない

これは単にファイルのパーミッションの問題だった。images フォルダを展開、上書きした時に所有者が takatoh になってしまって、wiki のユーザーからアクセスできないようになっていた。なので、次のようにして解決。

takatoh@nightschool $ sudo chown -R 2246:500 images
takatoh@nightschool $ sudo chmod -R 755 images

Windowsマシンからだと表示がおかしい

Ubuntu マシンから、localhost でアクセスするぶんには問題は解決したけど、Windows マシンからアクセスすると表示がおかしい。おかしいというのは、本文は表示されるんだけど、スタイルシートなんかが読み込まれていない感じ。
ググって見つけたページがここのコメント欄。

 cf. XAMPP1.81が社内のLANに公開できない - QA@IT

LocalSettings.php の中の $wgServer の値が localhost になっているのが原因らしい。次のようにホスト名に変えた。

これで、無事 Windows マシンからもちゃんと使えるようになった。

Windows7のhostsファイルに書き込む方法

hosts ファイルは C:\Windows\System32\drivers\etc にあるんだけど、普通にやったんでは権限がないとか言われて保存できない。管理者権限を持ったユーザーでも。

どうやるのか調べた結果、次のとおりにする。

  1. スタートメニューから、メモ帳を「管理者として実行」
  2. メモ帳のファイルメニューから hosts ファイルを開く
  3. 編集して上書き保存

このやり方だとちゃんと保存できる。

Windows7でSublime Text 3を使ってみる

普段は秀丸エディタを使ってるんだけど、Sublime Text 3 を導入してみたのでメモ。といってもググればいくらでも出てくるので、要点だけ。参考にしたページは主にここ。

 cf. 『初心者向け』 Sublime Text 3 導入と日本語化について – Naverまとめ

ダウンロードとインストール

ダウンロードはここから。

Windows の 64bit 版をダウンロード。
ダウンロードしたファイルをダブルクリックしてインストール。インストール自体は簡単そのもの。

Package Control

Sublime Text 3 本体のインストールが終わったら、とにもかくにも Package Control をインストールする。Sublime Text には多くのパッケージ、プラグインが用意されていて、それを管理するもののようだ。メニューから [View] → [Show Console] を選ぶか、[Ctrl]+[`] キーを押してコンソールを表示する。次のページから、Package Control インストール用の Python スクリプトをコピペして Enter。

すると、[Tools] → [Command Palette] の中に Package Control が追加される。

日本語化

メニュー等の日本語化。上で追加された Package Control を使って Japanize というパッケじをインストールする。
インストール自体が無事に終わると、設定の仕方がエディタの画面に現れるので、そのとおりにする。以下メッセージから引用。

適用手順
1.C:\Users\ユーザー名\AppData\Roaming\Sublime Text 3\Packages\Japanizeにインストールされている*.jpファイルを、
   C:\Users\ユーザー名\AppData\Roaming\Sublime Text 3\Packages\Default
  にコピーします。※Defaultフォルダがない場合は作成してください。
2.コピーしたファイルをオリジナルのファイル(.jpが付かないファイル)と置き換えます。(念のため、オリジナルのファイルが有る場合は.orgなどを付けて保管しておきましょう。)
3.C:\Users\ユーザー名\AppData\Roaming\Sublime Text 3\Packages\Japanize\Main.sublime-menu(.jpが付かない方)を、
   C:\Users\ユーザー名\AppData\Roaming\Sublime Text 3\Packages\User
  にコピーします。すると、他のプラグインで上書きされてしまっているトップメニューも日本語化されます。
以上です。

これでメニュー等の日本語化は終了。

その他のパッケージ

とりあえずインストールしたパッケージは次の2つ。

  • ConvertToUTF8
  • IMESupport

Sublime Text は UTF-8 が規定の文字コードなので、Shift JIS のファイルを編集するときには不都合がある。ConvertToUTF8 はファイルを開くときに UTF-8 に変換し、保存するときには Shift JIS で保存してくれる。
IMESupport は日本語入力をインラインでできるようにするパッケージ。

その他の設定

設定は基本的に Json のテキストファイルでするようになっている。メニューから [基本設定] → [基本設定 – ユーザ] を選ぶと、Preferences.sublime-settings というファイルが開く。以下の設定を追加してファイルを保存すると、設定が反映される。

言語ごとの設定

たとえば、Python のスクリプトを編集するときにだけ適用したい設定を書くには、Python ファイルを開いた状態で [基本設定] → [基本設定 – 拡張] → [シンタックス指定 – ユーザ] を選ぶと、Python.sublime-settings というファイルが開く。ここに上とおなじ要領で設定を書くと Python スクリプトだけに適用される。Python ではタブサイズを 4 にした。

さて、これでしばらく使ってみよう。

Windows7にMinGWがインストールできない?

※ 追記あり

gem で nokogiri をインストールしようとしたところ、次のようなエラーが出てインストールできなかった。

^o^ > gem install nokogiri
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
        ERROR: Failed to build gem native extension.

    C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokog
iri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby200-x64/bin/ruby
        --with-zlib-dir
        --without-zlib-dir
        --with-zlib-include
        --without-zlib-include=${zlib-dir}/include
        --with-zlib-lib
        --without-zlib-lib=${zlib-dir}/lib
        --with-iconv-dir
        --without-iconv-dir
        --with-iconv-include
        --without-iconv-include=${iconv-dir}/include
        --with-iconv-lib
        --without-iconv-lib=${iconv-dir}/lib
        --with-xml2-dir
        --without-xml2-dir
        --with-xml2-include
        --without-xml2-include=${xml2-dir}/include
        --with-xml2-lib
        --without-xml2-lib=${xml2-dir}/lib
        --with-xslt-dir
        --without-xslt-dir
        --with-xslt-include
        --without-xslt-include=${xslt-dir}/include
        --with-xslt-lib
        --without-xslt-lib=${xslt-dir}/lib
        --with-libxslt-config
        --without-libxslt-config
        --with-pkg-config
        --without-pkg-config
        --with-libxml-2.0-config
        --without-libxml-2.0-config
        --with-pkg-config
        --without-pkg-config
        --with-libiconv-config
        --without-libiconv-config
        --with-pkg-config
        --without-pkg-config


Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/nokog
iri-1.6.1 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.1/ext/nok
ogiri/gem_make.out

調べてみると、どうやら nokogiri はもはや Pure Ruby ではなく、おまけにほかのCライブラリに依存するらしい。
Windows の Ruby 2.0.0 に nokogiri をインストールする方法はこのページに詳しい。

 cf. WindowsのRuby 2.0でNokogiriを使う ― KaoriYa

というわけで、ここからが今日の本題。C のライブラリをビルドするためにまずは MinGW のインストールに挑戦する。
まずは、ダウンロードページから mingw-get-setup.exe をダウンロード。これを右クリックして管理者として実行する。
順調に進むかと思いきや、「”C:\MinGW\libexec\mingw-get\shlink.js” のスクリプト エンジン “JScript” が見つかりません。」というエラーがでてしまう。先週、有効にしたはずなのにおかしい。
とりあえず「OK」をクリックすると MinGW Installation Manager というパッケージ管理ツールのウィンドウが開く。ここでインストールしたいパッケージを選んで(よくわからんので Basic Setup にあるすべてを選んだ)、メニューから Installation → Apply Changes をクリックするとインストールが始まって、しばらくすると無事終わった(ように見える)。
ところが、スタートメニューにもデスクトップにもショートカットが作成されていない。これってやっぱり正常にインストールされてないってことか?

試しに簡単なプログラムを書いてみた。

実行結果:

^o^ > gcc -o hello.exe hello.c

^o^ > hello.exe
Hello, world.

なんと、コンパイルができてしまった。どういうこと?

[追記]
gcc が使えたのは、MinGW が正常にインストールされているわけじゃなかった。Haskell Platform に含まれてる gcc が動いていた。

^o^ > which gcc
C:/Program Files (x86)/Haskell Platform/2012.4.0.0/mingw/bin/gcc.EXE

MinGW のほうにパスを通せばいいのかなあ。shlink.js が何をやってるのか調べてみようか。

スクリプト エンジン “JScript” が見つかりません。

Windows7 Home Premium での話。
以前 JScript で書いたスクリプトを実行しようとしたら、次のようにエラーになった。

^o^ > cscript arg1.js foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

CScript エラー: スクリプト "C:\Users\takatoh\Documents\w\sandbox\wsh\arg1.js" のス
クリプト エンジン "JScript" が見つかりません。

ググってみたらYahoo知恵袋の↓このページを見つけた。

 cf. http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13100243473

以下、作業のメモとして残しておく。
まず、コマンドプロンプトを管理者権限で起動する。スタート → プログラム → アクセサリ → コマンドプロンプト、を右クリックして、「管理者として実行」。で、次のようにコマンドを打ち込む。

^o^ > regsvr32 jscript.dll

すると、「jscript.dll の DllRegisterServer は成功しました。」というダイアログが出るので「OK」をクリック。これで JScript が動くようになる。

^o^ > cscript arg1.js foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

foo
bar
baz

Yahoo知恵袋の記事では、JScriptが損傷してるとか書いてあるけど、心当たりが無い。もしかしたら何かのときに損傷したのかも。

ちなみに、VBScript も同じ状態。

^o^ > cscript arg.vbs foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

CScript エラー: スクリプト "C:\Users\takatoh\Documents\w\sandbox\wsh\arg.vbs" のス
クリプト エンジン "VBScript" が見つかりません。

同じやり方では復旧できなかった。なんで?

^o^ > regsvr32 vbscript.dll

これで、成功したとダイアログには出る。が、実際にスクリプトを実行してみるとダメ。

^o^ > cscript args.vbs foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

CScript エラー: スクリプト "C:\Users\takatoh\Documents\w\sandbox\wsh\args.vbs" のス
クリプト エンジン "VBScript" が見つかりません。

まあ、VBScriptは使わないからいいか。

パソコンが壊れたのでHikiを引越しした

WindwosXP が動いていた古いほうのPCが壊れた。といっても、ほぼネット専用機になっていたのでたいした実害は無いんだけど、ただ、いくつかWebアプリを動かしていたので、それをどうにかしないといけなくなった。
そのWebアプリのひとつが、WikiクローンのHikiで、幸いハードディスクは無事だったので、データを回収して新しいほうのPC(といってもWindows7)に引っ越すことにした。

VertrigoServ のインストール

何はともあれ、Webサーバが無くては何もできない。古いPCでは、VertrigoServ という、Apache と MySQL と PHP がセットになっているものを使っていた。なので、今回もこれを使うことにする。まずは以下のサイトから VertrigoServ をダウンロード。バージョンは2.29。

 cf. http://vertrigo.sourceforge.net/

ファイルは実行形式のインストーラになっているので、案内に従うだけで簡単にインストールできた。ひとつ注意点としては、インストール先をデフォルトの C:\Program Files (x86)\VertrigoServ ではなく、C:\VertrigoServ に変えたところ。こうしておかないとconfファイルの編集ができない。たぶんWindows7の権限の問題なんだと思うけどそれを追及するより楽な道を選んだ。
で、変えたところは次の2点。
1点めは、httpd.conf内のWebサーバのポート。デフォルトでは 8080 になっているのを 80 に変えた。

#Listen 8080
Listen 80

コメントアウトしてあるのがデフォルトの設定ね。

もう1点は、DocumentRoot。これはvertrigo.conf内に記述がある(vertrigo.confはhttpd.confにインクルードされている)。

#DocumentRoot "C:\VertrigoServ\www"
DocumentRoot "C:\www"
#<Directory "C:\VertrigoServ\www">
<Directory "C:\www">
    Options Indexes FollowSymLinks Includes
    AllowOverride All
    Order allow,deny
    Allow from All
</Directory>

最後に、C:\VertrigoServ\www を C:\www にコピーして終わり。ブラウザで http://localhost/ にアクセスすると無事、Welcome to VertrigoServ というページが表示された。

Hiki のインストール

Hikiは次のサイトからダウンロードした。

 cf. http://hikiwiki.org/ja/

バージョンは1.0.0。これも基本的にはダウンロードしたファイルを展開して、DocumentRoot以下(C:\www\hiki
に配置、いくつかの設定をするだけでいい……はずなんだけど、いざブラウザでアクセスしてみたら、docdiff/difference がロードできないと言うエラーが出た。配布物内の Gemfile を見ると、どうも docdiff という GEM が必要なようなので、インストールする。

^o^ > gem install docdiff

さて、今度は大丈夫かと思ったら、hikidoc がロードできない、というエラーが出たので、これまたインストール。

^o^ > gem install hikidoc

今度こそ大丈夫、無事 FromtPage が表示された。

Hiki のデータを引越し

最初、これはデータを上書きすればいいだけだと思っていた。が、そうはいかなかった。データは、WebサーバのDocumentRootのそと、C:\hiki_data に置いたんだけど、この中のtextディレクトリの中見たデータそのものなので、基本的にはここに以前のデータを放り込んでしまえばいいはずなんだけど、ブラウザからアクセスしたら、エラーになってしまった。なにやらエンコードの問題らしい。
考えてみれば、古いHikiのバージョンは、0.6.3 でエンコードはEUC、対して新しいほうのHiki(1.0.0)のエンコードはUTF-8らしい。ということはEUCからUTF-8にコンバートできればいいはず、と思って配布部図の中を眺めてみると、tool/convert.rb というスクリプトを発見。中を見るとなんかあたりっぽい。これを使ってコンバートした。

^o^ > ruby -Ic:\www\hiki c:\www\hiki\tool\convert.rb --data-directory=BSL -i euc
-jp -o utf-8

なんか warning がいっぱい出たけどとりあえず無視して、変更されたデータを丸ごとhiki_data/textにコピー。
改めてブラウザでアクセスすると、今度はうまく表示された。