2013年12月10日火曜日

FirefoxのCouldn’t load XPCOMなるエラーの対処法

普段Firefox Nightlyを使っているんですが,今日Firefoxを起動しようとしていたら珍しくCouldn’t load XPCOMなるエラーが出てきて起動できませんでした.更に The program can't start because pgort100.DLL is missing from your computer. Try reinstalling the program to fix this problem なるエラーメッセージも出てきました.さてどうしたものかと思い検索してみたところ http://www.ghacks.net/2013/12/10/fixing-firefoxs-couldnt-load-xpcom-error-message-start/という正しくこれな問題の解決法が書いてありました.

要するに既知のバグで既に対処しているから新しくnightlyを入れれば問題ないということです.尚,今日Nightly 29.0a1がリリースされたようでついでだったのでNightly29.0を入れてみました.実際Nightlyを入れなおすことで解決しました.しかし現在まだ日本語のWindows版はないみたいでとりあえず英語版を入れて使っています.

2013年11月24日日曜日

Early bird用のLightningのinstallについて

僕は何を思ったかThunderbirdのalpha版であるEarly birdを使っています.そのため数々のadd-onが使えません.カレンダー機能のadd-onであるLightningも普通にdownloadできるものはrelease版のThunderbird用なので正常動作しません.beta版をinstallしてもbeta版のThunderbird用なのでバージョンが合わず正常動作しません.

そこで,Lightningもnightly build版を使います.aurora版の最新のnightly buildの物がここからdownloadできるので,ここで適したバージョンのものをダウンロードすると正常動作しました.(Thunderbird,Lightning共に2013-11-23版)

普通の人はnightly build版を使わない方がいいでしょうが,bug reportを行って開発に貢献したい人はThunderbird,Lightningの両方の開発に貢献できる(と思う)ので是非試してみては!!尚,Provider for Google Calendar(コレはrelease版)を使ってGoogle Calendarの同期ができています.

2013年10月15日火曜日

diaでオートマトンを書く

普段ダイヤグラムやUMLを書くのにdiaを使っている者としてはdiaでオートマトンを書きたくなることはよくあります.(ないか?)しかしdiaにはデフォルトでは簡単にオートマトンを書くことはできません.

http://dia-installer.de/shapes/Automata/でオートマトンを書くための拡張があるので,コレを使うと簡単にオートマトンを書けます.

2013年8月27日火曜日

Line.dmgが欲しい

Line for Macを使っているが、気がついたらApp Store経由でしかinstallできなくなっていた。permissionの都合でホームディレクトリ以下にinstallしたいのでこれでは困る。ということで、直接Line.dmgをDownloadすることを試みた。
結論としては、http://dl.desktop.line.naver.jp/naver/LINE/osx/Line.dmgにあった。ここから最新のLine.dmgがDownloadできるので、今後もupdateすることができる。

2013年8月16日金曜日

unable to get setup.ini

先日Cygwinのパッケージの更新を行おうと思ってsetup.exeを起動した。すると、レポジトリの情報を取得するときに

unable to get setup.ini

と言われて取得に失敗した。これはどのミラーから取得しても同様に失敗する。

結論としては、Cygwin自体が大幅に更新されていた。気がついたら32bit版と64bit版がリリースされていた。この新しいcygwinをインストールするとパッケージの更新ができるようになった。今までのものからupdateして使う場合32bit版をインストールするとよい。

2013年4月10日水曜日

VMwareの共有フォルダ機能が動かなかった(on Fedora18)

VMwareの設定を終えたと思いきや共有フォルダフォルダ機能が動きませんでした。何事かと思いましたが色々調べてみると次の記事に当たりました。

Patching VMware Tools in Fedora 18

まさにこの症状で、ちゃんと治りました。

2013年4月5日金曜日

sedのタブについて

cygwinのsedを使ってタブ区切りのtsvをカンマ区切りのcsvに変換しようとしました。
sed -e 's/\t/,/g'
でできるかと思ったら出来なかった。
sed -e 's/'$'\t''/,/g'
にしたら出来た。案外この辺の便利ツールも環境依存があるなあと思った今日この頃でした。

2013年4月1日月曜日

Fedora 18 にアップデートしたときにハマった

先日VMwareのFedoraを18にアップデートしたときにハマりました。具体的にはGUIが起動しなくなりました。ランレベルが3なのではないかと思ってstartxで起動させようとしてもXserverが落ちます。17の頃は普通にXが使えていたのでインストールに不備があるということは考えにくいです。

対処法としてはVMwareの3Dアクセラレーションを切ると使えるようになりました...と書いてあったのでそうかと思ったがそう一筋縄ではいかない。libicule.so.48が見つからないと言われて怒られる。確かに/usr/lib64をみてもlibicule.so.49しかない。何かX周りで変更があったのかと思ったらあった。どうやらX周りでMATEとか結構な変更があったようだ。

yum -y groupinstall "Basic X Window System" yum -y groupinstall "GNOME Desktop" しかしやはり依存関係がおかしいらしくinstallできない。しばらく調べていくと Gnome 3.6 missing dependency - libicu 48 というページを見つけた。全く症状が同じだったので書いてあるようにharfbuzzを一回removeしてみた。そこで気づいたのだが最新と言われるharfbuzzがtexliveの提供しているもので依存関係がおかしなことになっているようだ。そこでtexlive-releaseをremoveしてみて色々とX周りを再び入れなおしてみた。すると無事Xが復活した。こんな落とし穴があるとは思わなかった。

2013年3月28日木曜日

gdbについて

普段使っているgdbについて更に便利なコマンドを色々と見つけたので普段使っているものと合わせて纏めてみます。

gdbの使い方

まず、gccで-gオプションをつけてコンパイルした実行形式のファイル(a.outとする)を作ります。実行は

gdb a.out

でできます。

gdb上でプログラムを起動させるときは

r

で起動できます。

gdbを終了させるときは

q

で終了させます。

ブレークポイントの設定

ブレークポイントとは処理をストップしてデバッグしたいところで実行を一時中止させる為に設定するものです。設定は

b <行番号/関数名>

でできます。条件を付けたいときは後ろにif <条件>をつけます。例えばtest関数の先頭でa == 0のときだけ停止させたいときは

b test if a == 0

でできます。

設定したブレークポイントを確認したいときは

i b

で確認できます。

ブレークポイントでの進み方

ブレークポイントに入った後の進み方を説明します。ブレークポイント内で次の行に進むときは

n

を使います。

また、関数の呼び出し先をトレースするときには

s

を使います。ブレークポイントを抜けるには

c

を使います。

関数を途中で抜けるには

ret

を使います。

変数の表示

ブレークポイントで変数を表示するには

p <変数名>

で表示します。因みに関数を呼び出すこともできます。また、おなじみprintfも使えます。いちいちこれで表示するのが面倒という場合は

disp <変数名>

で自動で表示してくれます。displayの解除は

und <番号>

でできます。番号はdisplayされるときに表示される行頭の番号です。

毎行表示されるのが嫌なときは

wa <変数名>

で変数の内容が変更された時だけ表示されます。また、continueした後でも変数が更新されたときは止まって教えてくれます。変数が読み込まれたときに表示させたいときは

rwa <変数名>

変数の個数が多くなっていちいち表示させるのが面倒なときは

i lo

で定義されている変数の内容を全部表示してくれます。

バックトレース

sで関数の内部をトレースできましたが、

ba

で関数の呼び出し元をトレースすることもできます。呼び出し元についての情報を取得するには

f <番号>

を使います。番号はbaのときの行頭の番号です。

コアファイルについて

Segmentation Faultなどをしたときにコアダンプされることがあります。このコアファイルを使ってデバッグすることができます。コアファイルがtest.coreだとすると

gdb a.out test.core

のように起動し、bafpなどを使うと異常終了した直前の状況を把握することができます。

ちなみに、コアダンプされないときは

ulimit -c unlimited

するとコアファイルが生成されるようになります。また、CYGWINの場合は環境変数CYGWINに

error_start=dumper

を設定しておく必要があります。

変数の代入

黒魔術感がありますが、途中で変数に値を代入することもできます。

set va <変数>=<値>

でできます。

ブレークポイントの削除

ブレークポイントの削除は

cl <行番号/関数名>

でできます。一括で削除するときは

d

でできます。d <数字>を使うとi bしたときの行頭の番号で削除することもできます。

ソースコードの表示

現在の行の周辺のソースコードを表示するときは

l

を使います。

2013年2月24日日曜日

Fedora17でVMWare Toolsのコンパイル

Fedora17でVMware Toolsをコンパイルしようとすると残念ながら色々と躓くことがあります。カーネルが変わるたびにコンパイルし直さないといけないので面倒ですが纏めておきます。

前提条件

  1. gcc,perlなどが入っていること
  2. Fedoraが提供するkernelを使用していること

kernel-headerのinstall

まずkernel-headerをinstallする必要があります。そこで

uname -a

で現状のkernelを調べます。以下3.7.6-102.fc17.x86_64だという前提で進めます。

次にinstallします。具体的には

sudo yum install kernel-tools-3.7.6-102.fc17.x86_64

でインストールできます。

version.hのコピー

普通に考えたらkernel-headerがあれば十分だと思われますが、これだとコンパイルできません。version.hをコピーする必要があります。具体的には

sudo cp /usr/include/linux/version.h /lib/modules/3.7.6-102.fc17.x86_64/build/include/linux/

で適切にコピー出来ます。

インストールツールの実行

最後にインストールツールを実行します。インストールツールを展開したディレクトリに移って

sudo ./vmware-install.pl

で起動できます。

ここで、基本的にEnterキーを押すだけで大丈夫ですがkernel-headerを聞かれた時には

/lib/modules/3.7.6-102.fc17.x86_64/build/include/

と答える必要があります。

以上でFedora17にVMware Toolsをインストールでき、共有フォルダなどの機能が使えるようになります。

2013年2月17日日曜日

chroot環境のユーザ用にdev,procをmountする

昨日grubが破損して入れ直すということをしたので備忘録まで。
外部からブートさせて、インストールしたいパーティションをマウントしてchrootしてgrub-installします。
さて、chrootの最低限の環境だと、/devがないからgrub-installができません。なのでmountで--bindして、/devをchmodの先からアクセス可能にします。
# mount --bind /proc /chroot/proc
# mount --bind /dev /chroot/dev
これであとは
# grub-install /dev/sda
みたいな感じでインストールできます。
因みに、諸般の事情により/dev/sda5みたいなところ(要するにMBR以外)にインストールしたい場合は"Bad idea プギャーm9"みたいなこと言われます。それでもやりたい時は--forceつけるとできます。

2013年2月13日水曜日

Virtual BoxでGUIを使わない

Virtual Boxでサーバーを動かすときなどsshがあれば十分でGUIが要らない場面もあるだろう。そういう時にVirtual BoxではGUIなしで起動することができる。まず、コマンドラインからVirtual Boxを操作するにはVBoxManageを使う。WindowsでもLinuxでもできるが、おそらくWindowsの場合にはPATHが通っていないので、環境変数のPATHに追加するか C:\Program Files\Oracle\VirtualBox\VBoxManage.exe のようにフルバスで起動する必要がある。また、VMの起動は例えばVMの名前がCentOSであるなら、 VboxManage startvm CentOS でできる。ここで VboxManage startvm CentOS --type headless でGUIのWindowを開かないで起動できる。

2013年2月3日日曜日

GitHub for Windows

最近GitHub for Windowsをたまに使います。概ね使いやすいのですがいくつか思ったことがあるので挙げてみます。因みにあまり使っていないのであらぬ誤解をしているかもしれません。してたらすみません。

いい点

log,diffが見やすい

流石にGUIなのでlogとdiffは見やすいです。丁寧に色までついてますし。

revertの時にcommitのhash値が要らない

GUIなのでコミットを選んでクリックするだけでrevertできます。簡単すぎて怖い位簡単です。

認証が楽

認証は楽です。と言うよりパスワードなどを打つ必要が殆どありません。sshより少ないです。ただ、セキュリティ的に問題があるとも言えるので諸刃の剣ですね。

良くない点

mergeができない

多分できません。つまりworking branchを作って、push,pullの時にmergeするという使い方をしようとするとshellからmergeしないとダメです。githubだと基本個人用レポジトリだからmasterで作業して、失敗してもrevertで戻せばいいということなのだろうか。

submoduleなどちょっと高度な機能が全く使えない

できなそうです。個人的には幾つかは頻繁に使うので不便です。勿論shell使えば問題ないですが。

結局本当に基本的な機能(add,commit,push,pull,log,diff辺り)は凄く楽にできる代わりにちょっと高度な機能を使うならすぐにshellを使わないといけないようですね。GitHubで個人レポジトリを弄っているだけなら大した問題ではなさそうですが、共同開発で使うにはちょっと無理がある感じがします。 まあ結局困ったらshell(Power Shellだけど)開いてコマンド叩けばいいんですが。

2013年1月30日水曜日

Androidで定型SMS

Androidのsl4aで定型のSMSを送るコードを書いた。APIがわかりやすく、レファランスもしっかりしているので簡単に書けた。因みに、Rubyです。