gemのbinのコマンドがインストールされない
なんか、gem install
したヤツのbin配下のコマンドが、インストールされていないっぽかったので、ちょっと調べた。
とりあえず、~/.gemrc
に以下のように書いておけば良いみたいだったので書いておいたらインストールされた。
gem: --bindir /usr/local/bin
Windows7でVB6のStrConv関数を使ってSJISからUnicodeへ変換するときに発生する問題
問題
Windows7になってAPIの挙動が変わったせいなのか、VB6 の StrConv関数の挙動が WindowsXP の頃と変わっている。*1
Shift-JIS を扱うプログラムではバイト単位に文字列を操作したいという要求が多いので、例えば「先頭5バイト」などといった場合、次のような書き方が多いと思う。 StrConv( LeftB ( StrConv ( [originalStrings], vbUniCode), 5), vbFromUnicode) Vista まではこれで問題がないのだけど、Windows7ではStrconv関数内部で呼び出されているAPIの挙動が変化したので、これで抽出した場合でも2バイト文字の先頭1バイトは残ってしまう。VistaまではStrconv関数の処理結果として2バイト文字の先頭だけが残るようなケースでは、その部分を除去してくれていたのだけどWindows7ではそうならずにそのまま返却されてくるんだよねぇ。
てすとぶろぐ: Windows 7 における VB6 の Strconv 関数の挙動
上記と同じ理由で以下のような「ANSI/SJIS表現で任意のバイトに収まる文字列を切り出す」*2処理で問題が発生する。
' 文字列"abcあいう"から、「ANSI/SJISで6バイト」に収まる範囲を切り出す strconv(midb(strconv("abcあいう", vbFromUnicode), 1, 6), vbUnicode)
このコードでは文字列("abcあいう")から6バイト切り出したとき、その末尾に2バイト文字である"い"の先頭バイトだけが含まれる状態となる。WindowsXPで上記コードを実行したときは、そのような変換できない文字はNULL文字(&h0000)に変換されていた。しかし、Windows7では"・"(&h30FB)に置換されてしまう。
それぞれ実行結果をみてみる。
実行結果(WindowsXP):
? strconv(midb(strconv("abcあいう", vbFromUnicode), 1, 6), vbUnicode) abcあ
実行結果(Windows7):
? strconv(midb(strconv("abcあいう", vbFromUnicode), 1, 6), vbUnicode) abcあ・
というように、Windows7では末尾に余計な"・"が付加されてしまい。ANSI/SJISに変換したとき6バイトに収まらない内容になってしまい、いろいろなトラブルの元となってしまう。
解決
この問題の解決策として、StrConv関数に代わるものを作ってみた。関数の作成にあたっては、以下のページがたいへん参考になった。
Classic VB - Does Visual Basic 6 support Unicode? - VBForums
実行してみる。
実行結果(Windows7):
? StrConvToUnicode(midb(strconv("abcあいう", vbFromUnicode), 1, 6)) abcあ
参考
LionにしたらANSI配色を変更するPluginは要らない子
Snow leopard では、Terminal.app の ANSI配色を変更するSIMBLプラグインを使っていたが、Lionにアップデートしたらこのプラグインは使えなくなってしまった。ターミナルを起動すると以下のようなエラーが出て配色がデフォルトのANSIカラーとなってしまう。
どうしよう、と思っていろいろ調べたところ、どうやらもうプラグインは必要無いらしいということがわかった。Lionでは普通にターミナルの環境設定から変更できた。
ためしに colorize という rubygem 使って色つきで文字を表示してみた。
Lionにアップグレードした後やったことメモ
ソフトウェアアップデート
とりあえず、Lion 起動後にソフトウェア・アップデートしてみたら、Lion 向けの iTune アップデートがあった。
3本指スワイプでのページ移動 を Snow Leopard と同じに
Lion にしたとたん、3本指スワイプでのWebページ移動ができなくなったので、設定を変更した。手順は以下のページが詳しい。自分の場合「2本指または3本指でスワイプ」に設定している。そうすると、2本指でのページ移動に対応しているSafariは2本指でページ移動できるし、3本指でのページ移動にしか対応していない Google Chrome や Firefox でも3本指でのスワイプでページ移動ができる。
Mac OS X LionのGoogle Chromeで3本指スワイプによる「戻る」「進む」のページ移動を復活させる方法。 | 和洋風◎
ほかにも何か重要な変更した気がするけど忘れた。
ピンチでの LaunchPad 起動を無効化
これを有効にしてると、4本指スワイプでの画面の左右移動が誤認識で LaunchPad が起動してしまいイラッとするので、無効化しておいた。
Paralells Desktop 6 のアップデート
一応動作するらしいですが、すでに知られている不具合がいくつかあるようです。
ターミナル(Terminal.app)のANSI配色設定
Snow Leopard で使ってた SIMBL プラグインが使えなくなった。というかプラグイン自体いらなくなってた。
LionにしたらParallels6でBootcampパーティションのVMが起動できなくなった
Lion にアップデートしたら、以下のようなエラーが出て Bootcamp パーティションからの仮想マシン(VM)の起動ができなくなってしまった。
Prallelsのサイトを調べるとそれっぽい情報があったので、この通り対処したら無事に復旧することがきた。
KB Parallels: Virtual machine stops working after upgrading to Mac OS X Lion and Parallels Desktop 6
復旧手順は以下のとおり:
- 仮想マシンを選択し、メニューから "Virtual Machine" - "Configure..." を選択、そして"Hardware"の中のリストから"Hard Disk 1"を選択。
- ハードディスクのプルダウンから、いったん別のディスクを選択、この時点では設定の保存はしないこと。
- そして、もう一度プルダウンリストから元のディスクを選択して、[OK]で設定を保存する。
- 設定を保存したらその設定画面を閉じ、その仮想マシンを起動してみる。
ほかにもいろいろ問題があるっぽいので、Parallels6 使ってて、これからLionにアップグレードしようと考えている人は「参考」のリンク先を一読しておいた方が良いかも。
Thunderbird5 へのバージョンアップで月別アーカイブの設定が外れるのを直す
libcurl の C++ラッパー cURLpp を使ってみたメモ
インストール
リポジトリから最新のソースを取ってきたが、CMakeの段階でエラーがでてまともにビルドできなかったので、以下、latest stable な tar ball をダウンロードしてきた。
Downloads - curlpp - cURLpp is a C++ wrapper for libcURL - Google Project Hosting
から、latest stable (記述時点では、 0.7.3)をダウンロード tar zxvf で展開して、あとは普通に
./configure --without-boost make make install
でOk
/usr/local/libに libutilspp.la , libcurlpp.la が /usr/local/include/utilspp, /usr/local/include/curlpp に各種ヘッダファイルがインストールされた。