置換で使用する正規表現の例

2010/12/14未分類import
gvim,vimで使用する正規表現の例をメモとして記録しておく.
別に他のプログラムでも利用できると思いますが.

行頭(行中)に#を含む行をファイル全体について削除する.

DebianのGvimで動作確認.下記のように打つと動くはず.
:1,$s/^.*#.*\n//g
#の部分を別のものに置き換えるだけで応用できることはいうまでもありません.

Borland C++ Compiler 5.5のインストールについて

2010/12/10未分類import

Borland C++ Builder 5.5のインストール.

人のパソコンにインストールしようとする度に調べ直していたので,ここに記します.
設定が意外と面倒.というか,手順の最後が絶対おかしい.調べないと普通気がつきません.

製品版ではないからなのか,インストーラが不十分で.こんな作業が必要でした.
  1. ボーランド(今は名前が違いますが)のサイトに個人情報を捧げてデータを入手.
  2. 解凍しインストール.
  3. インストールした場所に(C:\borland\bcc55\Bin)パスを通す.
  4. このパスを通した場所に,
-I"C:\borland\bcc55\Include"
-L"C:\borland\bcc55\Lib"
という内容が書いてある"bcc32.cfg"というファイルを置いてしまう.
これで完了です.たぶん.

mp4ファイルから音声抽出

2010/12/06未分類import
次のようにコマンドを叩きましょう.
ushi@BigOwl:~/Picture$ ffmpeg -i input.mp4 -acodec libmp3lame -ab 192k out-192kbps.mp3
ちなみに,ffmpegのオプションとかはこちらのサイト(最新FFmpeg)
こちらのサイト(mp4からmp3へ変換する)などを参照しました.ありがとうございます.

ちなみに,使用したffmpegのバージョンですが,
ushi@BigOwl:~/Picture$ ffmpeg -v
FFmpeg version SVN-r13582, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --prefix=/usr --libdir=${prefix}/lib --shlibdir=${prefix}/lib --bindir=${prefix}/bin --incdir=${prefix}/include/ffmpeg --enable-shared --enable-libmp3lame --enable-gpl --enable-libfaad --mandir=${prefix}/share/man --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-libamr-nb --enable-libamr-wb --enable-x11grab --enable-libgsm --enable-libx264 --enable-liba52 --enable-libtheora --extra-cflags=-Wall -g -fPIC -DPIC --cc=ccache cc --enable-swscale --enable-libdc1394 --enable-nonfree --disable-mmx --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libschroedinger --disable-encoder=libschroedinger --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
  libavutil version: 49.7.0
  libavcodec version: 51.58.0
  libavformat version: 52.16.0
  libavdevice version: 52.0.0
  libavfilter version: 0.0.0
  built on Oct  4 2010 15:19:23, gcc: 4.3.2
ffmpeg: missing argument for option '-v'
ushi@BigOwl:~/Picture$
あ,vオプションなんてないそうですね.すみませんでした…….

ちなみに,-threads 0とかそれ系のオプションを使うとマルチスレッドで実行されて速くなることがあるかもしれません.

文字コードの変換(nkfを利用して)

2010/11/23未分類import
文字コードの変換はLinuxとWindowsで同一のテキストファイルを編集したりする際に必須となる.
私がずっと前から利用しているのはnkfという非常に古い(どのくらい古いのかも私は知りません)プログラム.
古いというのは,信頼性が高いということでもあるので,気にする必要はない.
Debianでもパッケージ化されているし(最初に入っていたかはわからない).
何かプログラムに組み込んで使うならiconvというやつも良いと思う.

簡単に文字コードとは

文字コードとは,文字とバイト表現の対応関係のこと.
例えばアルファベットの「A」はASCII文字コードでは,16進数の「0x41」*1というバイト表現に置き換えている(正確で詳細な情報はリンク先をどうぞ).
このような文字とバイト表現の対応はOSやプログラムといった環境によって異なる.
基本的に日本語文字コードは,Linux環境ではEUC-JPUTF-8,Windows環境ではShift-JISというものが使われている.
使用している環境と異なる文字コードで記述されたテキストファイルをエディタで開くと,
文字コード変換機能が搭載されていないエディタでは,文字化けを起こす.
環境と異なる文字コードのファイルを扱うことは不都合も多い.
よって何らかの方法で文字コードを変換することが必要となる.
ここで紹介する方法は上述の通りnkfというプログラムを使った方法である.
対応文字コードは,EUC-JP,UTF-8,Shift-JIS,ISO-2022-JPUTF-16である.

*1 : 10進法だと「65」

インストール方法

Linux(Debian)

aptitudeでインストール可能であるので特に問題ない.

Windows

リンク先からプログラムをダウンロードし,適当なフォルダに置く.
そして,環境変数を設定すれば普通に利用可能である(コマンドプロンプト上で.).
使い方はLinuxのものと変わりない.

Shif-JISをEUC-JPに変換

次のようにたたく.
ushi@BigOwl:~$ nkf -eLu --overwrite filename
こうすると,filenemeにEUC-JP(eオプション)で行末がUNIX形式(Luオプション)の文字コードへ変換された結果が上書きされる.
万に一つくらいは失敗するかもしれないが,ファイル数は増えないので扱いは楽である.
なお,nkfは入力ファイルの文字コードを自動検出してくれるので,これ以上のオプションは必要ない.
(Shift-JIS以外に,UTF-8やISO-2022-JPであっても問題ないです.)
自動検出は普通は失敗しないが,可能性はゼロではないらしい.
もし,上書きせずに別のファイルに出力したければ,以下のようにすればいいと思う.
ushi@BigOwl:~$ nkf -eLu inputfilename > outputfilename

EUC-JPをShift-JISに変換

同様に
ushi@BigOwl:~$ nkf -sLw --overwrite filename

UTF-8に変換

同様に
ushi@BigOwl:~$ nkf -w8Lu --overwrite filename
で問題ないはず.
詳しくは,次のmanページをどうぞ.2種類の文字が欠けている可能性がありますが…….
nkf-ja.pdf