わっとブログ

WEB技術,その他雑多記事など

Linuxで、複数ファイルの文字コードを一括変換

古ーいシステムがすべてShift-JISでエンコードされていてエライことになっていたため、文字コードを一括変換します。

参考にしたサイト
http://masaoo.blogspot.jp/2009/02/find-nkf-xargs.html

以下は、カレントディレクトリ以下の全ファイルを UTF-8 に変換する場合

find . -type f | xargs nkf -w --overwrite

findで抽出した結果を、xargs引数として渡し、nkf文字コード変換をします。
nkfのオプションは、代表的なもので以下のものがあります。

-j : JISコードを出力
-e : EUCコードを出力
-s : Shift-JISコードを出力
-w : UTF-8コードを出力(BOM無し)
-g : 自動判別の結果を表示
--overwrite : 引数のファイルに上書

今回は、UTF-8エンコードし、引数のファイルを上書きしています。なお、文字コードを何も指定しない場合はデフォルトでJISになるようです。

findの検索条件を変えれば、当然、

find -name '*.rb' | xargs nkf -w --overwrite

などとして、ある特定の条件に絞ったファイルも指定出来ます。

便利ですね。

CentOS5.8にPHPUnit3.7をインストール

レガシーコード改善ガイド読みました.

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

  • 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
  • 出版社/メーカー: 翔泳社
  • 発売日: 2009/07/14
  • メディア: 大型本
  • 購入: 44人 クリック: 640回
  • この商品を含むブログ (133件) を見る
レビューは後でするとして,これはもうテストコード書くしかねぇ!って感じなんで,とりあえず馴染みのあるPHPでやってみることに.
テストにはテスティングフレームワークPHPUnitを使うことにしました.インストールは,PHPUnit Manualを参考にしました.(http://www.phpunit.de/manual/3.7/ja/installation.html

インストール

まずはインストール.以下のコマンドを使用.

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit

以下のエラーメッセージが出る.

phpunit/PHP_CodeCoverage can optionally use PHP extension "dom" phpunit/PHP_CodeCoverage can optionally use PHP extension "xdebug" (version >= 2.0.5)

php-domとxdebugが必要らしい.yumで,php-dumをインストール.

yum install php-dom --enablerepo=epel --enablerepo=remi

peclコマンドで,xdebugを入れる.

pecl install xdebug

最後に,php.iniにxdebugを追記してくださいと言われるので,以下を追加。

zend_extension = /usr/lib64/php/modules/xdebug.so

再度PHPUnitインストール

pear install pear.phpunit.de/PHPUnit
~略~
install ok: channel://pear.phpunit.de/PHPUnit-3.7.9

コマンドで確認.

phpunit --version
PHPUnit 3.7.9 by Sebastian Bergmann.

少し使ってみる.

PHPUnitは,クラスファイルがあればテストファイルを,テストファイルがあればクラスファイルを自動で生成してくれる「--skeleton」という便利なオプションがあるので,それを使って見ることに.
...と思ったら,ver 3.7以降は、--skeletonオプションが使えないらしい.代わりにPHPUnit_SkeletonGeneratoを使うように都のことなので,インストールする.

pear install phpunit/PHPUnit_SkeletonGenerator
~略~
install ok: channel://pear.phpunit.de/PHPUnit_SkeletonGenerator-1.1.0

テストファイルからクラスファイルを作るとき

phpunit-skelgen --class HogeTest

クラスファイルからテストファイルを作るとき

phpunit-skelgen --test Hoge

クラスファイルorテストファイルと同じディレクトリ内に,生成したファイルができています.おーできてるできてる,ってことで,今日はここまで.

Mac OSXでSunOS(Solaris)にリモートアクセスした時,viが使えない

MacからSunOS(Solaris)へリモートアクセスしてviを開こうとしたら,以下のようなエラー文が出て,編集ができませんでした.

$ vi hogehoge
xterm-256color: Unknown terminal type I don't know what kind of terminal you are on - all I have is 'xterm-256color'. [Using open mode]

調べてみると,アクセス元の端末で,環境変数のターミナル名称がセットされていないのが原因でした.[環境変数マニュアル]
mac側で環境変数にターミナル名称をしっかりセットして終了.

$ emacs .bash_profile
export TERM=xterm #追記
$ source .bash_profile

mac側はemacsかよ!
っていうツッコミはなしで^^;;;
本来emacs派なので...

やっとこさ構築するWebアプリが決まりました【問題提起編】

最近全然プログラミングしていない、ヤバイ…

10月頭から何か作ろう!なにかつくろう!!なにかつk…
と思っていたらもう10月下旬(猛省)

何かシステム作らない?と同じ研究室の人に声をかけてみたら、なんとも嬉しい後輩からの提案が…!二つ返事で構築するWebアプリが決まりましたとさ。

どんなWebアプリなのか、まずは簡単な背景を。

背景

当方、軽音楽部に所属しています。
バンドや音を出して練習するときは、大学の運動場横にある部室を使用します。軽音楽部は2部屋(A室・B室と命名)設けられており、授業の1限分を1コマとして部室を使用しています。
これを、練習表と呼称しています。

この練習表は、紙ベースで管理されています。
部室の外扉に貼り付けられており、今週分と翌週分の2週分が常に貼りだされています。部員は、直接部室に来て練習表を書きに来ないといけないわけです。
(翌週分の練習表は、毎週あるミーティング時に3年生の幹部が用意してくるため、ミーティング時に書きに来ることも可能です。)

さて、このような練習表の管理下、問題点として以下のことが挙げられます。

  1. 部室orミーティングに来ないと練習予約・確認ができない
  2. 紛失した時、バックアップがない
  3. 予約したいコマが先に書かれていたら、その人の連絡先を調べ直接交渉しなければならない
  4. 紙を印刷しなければならない

とまぁ、アナログ管理ならではの煩わしい部分が多々存在するわけです。 ただ漫然と趣味や技術に走ってプログラミングをするのでは面白くない。やはり、現状の問題解決の手段としてITの力を使いたいのです。

どんな良いことが起こるか

このwebアプリを作ることで,どの様な良いことが起こるのでしょうか?

  1. いつでもどこでも練習を予約・確認ができる!
  2. (バックアップをきちんとすれば)紛失で困ることがない!
  3. (実装すれば)連絡が取りやすくなる!
  4. 紙印刷の手間がなくなる!

当たり前のようですが、こういうことを位置から整理して考えれば、開発時のモチベーションアップや、軸がブレずにモノを作り上げられると思います。

ところで,後輩と1時間の打ち合わせで問題提起と仕様の話し合い,開発環境についてまで決められました.こうやってサクサク話が決まるのはいいですねー.

次回以降の記事では,アプリの仕様と開発環境を述べていきます.