自己解凍・実行形式のシェルスクリプト2016年07月22日 11時45分08秒

シェルスクリプトを実行すると、自分で組み込まれたファイルを展開し実行する実装をしたことがある。一つのプログラムとしてまとめるのが困難で、いくつもの細かいプログラムを使って処理する必要があった。しかし、複数のファイルを各々インストールするのも手間が掛かりすぎるために、一つにまとめたのだ。

tar でファイルをまとめて、uuencode を使って文字に変換し、エディタで開いたりしても、問題ない形にする。実行するときは、自身に uudecode をかけて、まとめた分を展開し、処理を移行すれば良い。

-C を複数回使うと、付属の tar では動作が異なり GNU tar を使うのが一番移植性があった。二度目の -C が一度目からの相対位置になるか、プログラムが実行された位置を元にするのか等の違いがある。gtar は前回の位置を基準にする。

$ gtar cvf - program.pm -C ../../dir1 *.pm -C ../../dir2 *.pm | compress -c uuencode encoded.tar.Z >> driver.sh
driver.sh と言う名前のシェルスクリプトを使った。そして、driver.sh の方で行うのが展開作業。
mkdir $tmp
cat $0 | uudecode -o /dev/stdout | uncompress -c | ( cd $tmpdir ; tar xf - )

...
$tmp/program.pm
引数の処理などをしてから、$0 で自分自身を読み出す。uudecode は -o /dev/stdout の形がどの UNIX でも使えるようだ。そして、tar に入れておいた program.pm を呼び出して、プログラムの実行を移す。

iPod で This movie is damaged and cannot be played2014年06月11日 16時55分26秒

iPod に動画を移したら「This movie is damaged and cannot be played.」と表示されて、再生できない。iTunes では再生できている。

Verifying iTunes video conversion and video syncing using sample QuickTime files によると、ファイル形式を変換しなければいけないようだ。

デジタルカメラからの動画は、カメラによってファイル形式が違い、中には同じ mpeg-4 と表示されても、iPod で再生できない物もあるみたいだ。

iTunes に付いている「Create iPod or iPhone Version」を用いてファイル形式を変換する。古めのバージョンだと「Advanced」メニューに、新しいバージョンだと「File」から、「Create New Version」で、このメニュー自体も左上のアイコンをクリックして、「Show Menu Bar」で表示する必要があった。

なお、こうすると同名のファイルが出来て、iPod の移すときにどちらを選べばいいのか分かりづらい。また、この変換も時間のかかる作業だ。

gimp で上下反転2014年02月11日 13時24分54秒

「画像」メニューの中の「変形」を選択後「180 度回転」を使う。メニューの読み込みに若干の遅延があるらしく、起動直後の一度目に探した時は見付からなかった。

make ファイルを一括で grep2010年07月13日 17時47分05秒

GNU make で再帰的にファイルを grep する方法。

% gmake -d -f Makefile 2>&1 |
    nawk "/Reading makefile/{gsub(/[\`]|'.*/, \"\", \$3); print \$3}" |
    xargs grep 'keyword'

GNU make ファイル内で、どこで変数が定義されているのか、またある定数が設定されて時にどの様な操作が行なわれるのか等を探すために使う。

目視で include を追いかけるのも手間が掛かるし、面倒だ。それに複雑怪奇だと、条件分岐を追うのも一苦労。これだと簡単に探せる。

make ファイルを -f で指定。keyword の部分に探したい文字列を入れる。

latex2rtf では条件式が使えない2009年07月28日 10時22分09秒

最初は問題なく latex2rtf を使っていた。しかし、LaTeX での条件式を入れるようになったら、エラーが出て正しく変換できなくなってしまった。現在使っているバージョンは latex2rtf 1.9.19。

そこで、RTF 形式を調べて、隠し文書として埋め込むパッチを作った。手元では問題なく動いているが、デバッグのコードが結構入っているのと、しっかりテストをするのが面倒なので公開はしていない。

もう少し整頓して、公開した方が良いとは思っているのだが、時間と気持ちが…。

RTF での隠し文書2009年07月18日 07時55分41秒

Rich Text Format (RTF) でコメントを埋め込む方法を探していた。ここでのコメントとは、いわゆるプログラムの様な形で、いわゆる実際には書かれているが、表示や動作に関係の無い記述のことだ。探すうえで、一般的な意味のコメントと、プログラムで使われる意味のコメントを区別するのに手間が掛かった。RTF には埋め込み型のメモがコメントと呼ばれるようだ。

\v コマンドで、隠し文書を入れられる。

{\v This is hidden} や {\v "This is invisible secret."} 等と使う。二重引用符(") は必須では無い。

ImageMagic import でウィンドウの枠付き2009年06月30日 05時03分29秒

xwd と import のスクリーンダンプの違い-border を指定するとウィンドウの枠が入ると書いた。

しかし、今試してもそのようなオプションは見当たらず、当然枠も出来ない。-frame を指定したら、枠付きになった。オプションが変わってしまったのか、間違っていたのか。

前回

LaTeX での条件式2009年06月26日 05時02分40秒

LaTeX での条件付きコンパイルの方法。条件を定義して、if-fi または、if-else-fi が使える。

\newif\ifCONDITION
\CONDITIONfalse

\ifCONDITION
...
\else
...
\fi

まず、\newif で CONDITION という条件を定義。この場合は CONDITION を false にしているので \ifCONDITION .. \else に囲まれた部分はコンパイルされず、\else .. \if の部分が有効になる。逆にするのなら \CONDITIONTtrue にする。

これで、同じ tex ファイルから状況によって内容を変えることも出来る。他にも大きなコメントブロックとしても使うことも出来る。

latex2rtf をインストール2009年06月03日 10時58分32秒

MicroSoft Word の文書をくれといわれたので、latex2rtf を試してみた。FreeBSD なので、ports から入れる。

Latex で作っていた書式もかなりの精度で残っている。しかし、フォントの大きさ等細かく見てみると、Latex で指定したものとは微妙に違っていた。

RTF 形式でも良ければこのまま、Word 書式が必須なら OpenOffice.org で更に編集して、Work 形式で保存が出来る。

Latex の文書を編集する度にこれをやるのが面倒ではあるが、背に腹は変えられない。

風邪とインフルエンザは違う2009年04月27日 13時31分15秒

今回の風邪が長引いているので、風邪について調べてみた。今まで知らなかったが、インフルエンザと風邪は違うものらしい。Wikipedia の「風邪」と「インフルエンザ」の項目から幾つか引用した。

「インフルエンザを風邪と呼ぶべきではない」がいきなり目についた。

風邪は以下の様な症状らしい。

かぜ症候群の病原は80 - 90%がウイルス感染であり、そのほか10 - 20%がマイコプラズマ、クラミジア、細菌などの感染による場合もある。こうした事実から多くの風邪に抗生物質は無効とされている(抗生物質は抗菌剤であってウイルスには無効である。抗生物質の薬理の項参のこと。)。
病原体が感染してから発病するまでを潜伏期間と呼び、風邪がうつっても1 - 3日ほど自覚症状は殆ど現れない。また高熱など全身症状が強いインフルエンザとは異なり、いわゆる風邪は発病しても数日で治ってしまう。

インフルエンザの症状の方が症状が重く長いそうだ。

インフルエンザの症状はいわゆる風邪と呼ばれる症状の中でも別格と言えるほど重く、区別して扱う事も多い。
風邪(普通感冒)とは異なり、比較的急速に出現する悪寒、発熱、頭痛、全身倦怠感、筋肉痛を特徴とし、咽頭痛、鼻汁、鼻閉、咳、痰などの気道炎症状を伴う。腹痛、嘔吐、下痢といった胃腸症状を伴う場合もある。

今回は風邪ではなく、インフルエンザをもらったのかもしれない。