December - 03 , 2011
文字コード一括変換
複数のファイルを一括して、処理したいことがある。
そのときは、find + xargsを使うのが常套手段だが、
こういうときはどうするんだろうと考えてみた。
「あるフォルダにある*.c, *.h *.cppファイルのみ、Shift-JISからUTF-8に変換したい。」
これがなかなか難しい。
find . -iregex ".+\.\(c\|cpp\|h\)" | xargs -I{} perl -e "system(\"iconv -f SHIFT_JIS -t UTF-8 {} > temp; mv temp {} \");"
うーん、perlのsystem()を使うなんて、いまいちだと思う。
もっと美しいコードはないかなぁ。
iconvの代わりにPerlのEncodeを使うと、
sjis2utf8.pl
#!/usr/bin/perl # # Convert Shift-JIS(CR/LF) to UTF-8(LF) # # use Encode; use File::Temp qw/tempfile/; use File::Copy qw/copy/; my $in = shift or die "Any files are not given.\n"; my $out = shift or die "Output file is not given.\n"; if($in eq $out){ my $fh = File::Temp->new(TEMPLATE=>"tempfileXXXX", SUFFIX=>".dat"); $out = $fh->filename; convert($in,$out); copy $out, $in; close($fh); } else{ convert($in,$out); } sub convert{ open(IN,"<:encoding(shiftjis)",$_[0]); open(OUT,">",$_[1]); while(my $line=<IN>){ $line =~ s/\r//; print OUT encode('utf8',$line); } close(IN); close(OUT); }
と書いて、
find . -iregex ".+\.\(c\|cpp\|h\)" | xargs -I{} ./sjis2utf8.pl {} {}
とした。
こちらの方が実用的。
プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/18
- メディア: 単行本(ソフトカバー)
- 購入: 33人 クリック: 532回
- この商品を含むブログ (120件) を見る
PERLクイックリファレンス (クイックリファレンスシリーズ)
- 作者: エレンシーバー,ネイザンパトワーダン,ステファンスペインアワー,Ellen Siever,Nathan Patwardhan,Stephen Spainhour,近藤嘉雪,山本浩,台場圭一,イエローレーベル
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2000/03
- メディア: 単行本
- クリック: 7回
- この商品を含むブログ (4件) を見る
December - 09 , 2010
Redmine on CentOS 5.5
CentOS 5.5上でRedmineのインストールに少々手こずったのでメモ。
yum install mysql-server.x86_64
yum install mysql-devel.x86_64
chkconfig mysqld on
grant all on redmine.* to username@localhost identified by "password"
create database redmine
/etc/my.cnfの設定
[mysql]
default_character_set=utf8
[mysqld]
default_character_set=utf8
character_set_server=utf8
skip_character_set_client_handshake
- 3 OpenSSLのインストール
yum install openssl-devel.x86_64
tar xzf ruby-1.8.7-p302.tar.gz
cd ruby-1.8.7-p302
./configure
make
make install
cd ruby-1.8.7-p302
cd ext/zlib
ruby extconf.rb
make
make install
cd ext/openssl
ruby extconf.rb
make
make install
cd rubygems-1.3.7
ruby setup.rb
- 8 Redmineの構築
redmine-1.0.3/config/database.ymlの編集
rake config/initializer/session_store.rb
rake db:migrate RAILS_ENV=production
rake load_default_data RAILS_ENV=production
- 9 Redmineの起動
cd redmine-1.0.3
script/server -e production
- 10 起動の確認
November - 03 , 2010
RedHat Enterprise Linux 5.5 vsftpdでダウンロード
SELinuxを使っていると、色々と面倒で、
ファイルの受け渡しも難しい。
ただ、SELinuxを理解していないだけだ。
今回は、ただ、Linuxのvsftpdを利用して、他の端末からファイルを
ダウンロードするところまでを紹介。
まず、vsftpdのインストール
yum install vsftpd
vsftpdを自動起動
chkconfig vsftpd on
今からvsftpdを起動
service vsftpd start
セキュリティの観点から拒否される。
で、anonymousユーザでログインする。パスワードは要らない。Enterを入力。
localhost:~ unixuser$ ftp 192.168.0.1
Connected to 192.168.0.1.
220 (vsFTPd 2.0.5)
Name (192.168.0.1:unixuser): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||10144|)
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Nov 03 09:01 pub
226 Directory send OK.
October - 17 , 2010
2010-10-16 熱海 沈船ファンダイブ
実は、熱海で潜るは初めて。
しかも、沈船を見るのも初めて。
ボートダイブは久しぶり。
天気もよくて、良かった。
ポイントからロープをつたって潜行すると、
1986年1月に沈没して真っ二つに折れてしまった、「あさひ」という沈船の
甲板にたどり着く。
そして、ソフトコーラルが見事に色とりどりで綺麗だった。
サクラダイも撮影。
船の甲板には下におりる階段が残っています。
2本目は、ソーダイ根というポイント。
いやー楽しいですね、ダイビングは。
今度は来月、大瀬崎に行く予定です。


































