2014年7月16日水曜日

lpr in ECCS2012

MacOSXはUnixなのでlprは動くと思うが,ECCS2012のシステムでlprをつかって印刷したという話を聞いたことがなかったのでやってみた.

PostScript

まずはPostScriptだろうと思ってPostScriptを印刷してみた.日本語が混ざっているtexをplatexでdviにして,dvipsでPostScriptを生成した.無事MainMonoと思われるプリンタに送られたようだが,日本語の部分が文字化けしてさっぱり読めない.多分フォントがないのが原因だと思われる.

PDF

フォントがないならと思って今度はPDFに変換して印刷してみた.同様のファイルをdvipdfmxを使ってPDFに変換してみた.今度は普通に印刷できた.previewでも印刷してみたが差はない.さすがPDF.

最後に

ECCS2012の環境でlprで印刷しようと思う人はそもそもまれだろうが,まあやっぱりちゃんと動くのでパイプをつないで直接印刷したかったりしたら便利なのではないだろうか.(註:今回は標準入力からの印刷ではなくファイルからの印刷しか試していません.)

2014年7月7日月曜日

短冊shell芸

七夕なのでshell one linerで短冊を作ってみた.

echo "sedですね" | sed -e 's/\(.\)/┃\1┃\n/g;s/^/┏┷┓\n┃ ┃\n/;s/$/┃ ┃\n┗━┛/' 
まあ単発ネタなので大して面白くもない.

2014年1月24日金曜日

arch linuxでcrosstool-ngを使ってppc64bitのクロスコンパイラを作る

yaourtが入っていることを前提とする.

yaourt -S crosstool-ng
mkdir -p ~/cross/bin
cd ~/cross/bin
ct-ng list-samples
ct-ng <選んだsample>
ct-ng menuconfig

ここで設定するわけだが要点は以下の様になる

  • いらないものは削る
    • gcjとか普通のひとはいらない.
  • ライブラリはできるだけ新しいものを選択する.
    • バージョンが古いとarchのgccではあたらしすぎてコンパイルできなかったりする
  • C-Libraryの Force unwind supportはcheckする
    • しなかったらコンパイルエラーがでた
  • gdbでpython scriptingをenableにしない
    • archのpythonは3系だが,python2系を前提としているらしく,どうせgdbでpythonを使わないので面倒だから無効にしてしまった

次に

ct-ng build

でコンパイルを始めるが,make4.0だとあたらしすぎてglibcのコンパイルが通らない.そこで http://lfsbookja.sourceforge.jp/svn.ja/chapter06/glibc.html にもあるように

sed -r -i 's/(3..89..)/\1 | 4.*/' configure

でglibcのconfigureを変更する必要がある.一回ダウンロードが済んだあとで止めて修正すればいいはず.

これで

ct-ng build

でコンパイルが通って~/xtools以下にそれらしきものが入った.

2014年1月15日水曜日

bashでtestを使うと遅いよ

bashでは


if [ $a -eq 0 ] ...

と書く代わりに


if [[ $a -eq 0 ]] ...

と書ける。test([,])は外部コマンドだから評価のときに毎回forkして遅いような気がする。一方[[,]]は内部コマンドだからforkしなくて速いのではないかと思ったのでベンチマークを取ってみた。

ベンチマーク


for a in $(seq 1 100000) ; do [ 0 -eq 100 ] ; done
for a in $(seq 1 100000) ; do [[ 0 -eq 100 ]] ; done

結果

real    0m0.535s
user    0m0.517s
sys     0m0.017s

real    0m0.353s
user    0m0.347s
sys     0m0.007s

予想通り[[,]]の方がまあまあ速かった。因みに[[,]]の方では正規表現マッチなど機能が追加されている。互換性を追求するなどの理由がない限り[[,]]を使った方が良さそう。

2014年1月2日木曜日

ひとり正月Coq勉強会

以前も若干勝手にCoqを勉強したことはありましたが,その時は直感主義論理の簡単な証明を書いたくらいで時間がなくなってしまいました.今回は非常に簡単ながら証明駆動っぽい開発をやってみました.なお,Coqはほぼ書いたことがないので証明とかアレかもしれない.

  • やってみたかったこと : 非常に簡単な証明駆動開発
  • 題材 : cons
    • sortとかマジな証明だとちゃんと小1時間で終わらなくなってしまうので,本当に簡単なものをやってみた

consしたら

  • head $ cons x xs = x になる
  • tail $ cons x xs = xs になる

の2つの性質が満たされる.ということで命題を書いてみた

Definition is_head_x (A : Type)( x :option A) ( xs : list A) : Prop := (head xs) = x.
Definition is_tail_ys (A : Type)( ys :list A) ( xs : list A) : Prop := (tail xs) = ys.

そして consを定義

Definition cons ( A : Type) ( x : A) ( xs : list A) : list A := cons x xs.

証明はdefinitionより明らかなのでunfoldするだけで,わざわざ書く価値もないが,とりあえず.適当に証明して.

Extraction Language Haskell.
Extraction cons.

でHaskellのconsを適用するだけの関数が出てきた.

非常に簡単すぎてこれでいいのかよくわからないが,多分証明駆動開発の最も短い実例になったと思う.

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の同期ができています.