まーのすけRoom

忘れると後で困りそうなことをMemoしておきます…

OS Xの便利ツール FileMerge.appで日本語

2012-05-04 09:56:54 | Mac
OS XのDeveloperツールをインストールすると、
/Developer/Applications/Utilities/
に便利ツールが入っている。

ファイルを比較して差分を表示してくれるソフト
FileMerge.app
以下の様にすると、日本語の文書も比較してくれる。

Preferencesを表示し、Filtersタブに
*** /usr/bin/iconv -c -f UTF-8 -t SJIS $(FILE)
という行を追加。
(***は使用したいファイルの拡張子)

こちらで見つけました。
他にnkfを使用する方法もネット上にあるけど、私の所では上記iconvを使う方がうまくいきました。

Mac Portsでエラー

2012-02-02 12:28:08 | Mac
Mac Portsでphp5-sqliteをインストールしようとしたら、
Warning: No port p5.12-locale-gettext found in the index.
というエラーが出て途中で止まってしまう。

調べたら、既知のバグらしく
port selfupdate
を2回やると解消されるとの事。

php5-sqliteのインストールの前に、すでにport selfupdateをしていたので、試しにもう一回port selfupdateをしてから、改めてphp5-sqliteをインストールしたら、何も無かったかのようにp5.12-locale-gettextがインストールされて、php5-sqliteのインストールが完了した。

MacでFTPならFileZilla

2011-10-20 14:33:09 | Mac
MacでのFTPにFileZillaを使い出して、1年位になる。

フリーで、リモートとローカルを同期させて移動できるので、サイト管理にとても便利なのだが、フォルダまるごとサーバーへアップロードすると、Macの隠しファイルである.DS_Storeまで転送されるのだけが、困りモノだった。

ググってみてもFileZillaに関する日本語の記事が少なく、何度か調べてみては、断念していたが、今日何気に「FileZolla .DS_Store」で調べたら、英語のサイトで「You can use the filters.」という回答を発見!

え…ずっと探してたのに…どこにフィルターなんてあるの…
Preferenceメニューばっかり探していたけど、どこか別の場所にあるのか…
見つけました!

メニューの「表示」→「ファイル名のフィルター」でフィルター設定ウインドウを開き、一番下の「フィルタールールーの編集」をクリック。左側のフィルターをクリックすると右側に設定内容が表示される。Thumbs.db, desktop.ini, ehthumbs.dbを除外する設定があるので、右端の「+」をクリックし|ファイル名|等しい|.DS_Store を追加して「OK」を押し、フィルターリストでローカルフィルター側で、先程編集したフィルターにチェックを付けて「OK」で完了。
ローカルの.DS_Storeファイルが表示されなくなった。

リモートフィルター側はチェックを付けないままにしておいて、以前アップロードされてしまった.DS_Storeファイルがあった場合に表示されるようにしておいて、発見するたびに削除しておけば、サーバー側がすっきりして、WindowsでFTPしてくる人にも変なファイルがあると思われないで済みます。

Safari5.1でYouTubeダウンロード

2011-08-05 10:27:33 | Mac
Safariの構成ファイル一覧からダブルクリックでYouTubeのムービーをダウンロード出来たのに、Safari5.1になったら、新規ウインドウでムービーが開いてしまい、保存出来ないで悩んでいた。

ダウンロードソフト等をインストールする手間もなく、手軽だったのに残念…と諦めていたら、Optionを押しながらダブルクリックで、今まで通りダウンロード出来るとの情報を知り、さっそくやってみたら、今まで通りダウンロードすることが出来た!

PostgrSQLの50音ソートが変

2011-04-28 00:26:12 | Mac
MacPortsで入れたPostgreSQL 9の50音ソートが変なことに気付いた。
あめ
いか
あずき
うさぎ
かもめ
あらかわ
えのしま
の様に文字数の順番で並んでいる。

ロケールの設定がおかしいとこうなるらしい。
pg_controldataで調べるとLC_COLLATE、LC_TYPEがen_US.UTF-8になっているとネットには書かれていたが、
/opt/local/lib/postgresql90/bin/pg_controldata /opt/local/var/db/postgresql90/defaultdb
をしてもそんな項目は出て来なかった。PostgreSQL9で出力内容が変わったのか?
PostgreSQL 8.1.23のサーバーでpg_controldataをチェックしたら
LC_COLLATE: ja_JP.UTF-8
LC_CTYPE: ja_JP.UTF-8
と出た。

解決方法は --no-local を付けて initdb をすると良いそうで、pg_dumpall でDBをバックアップして、DBを停止させ、DBのデータフォルダ(ウチのMacは/opt/local/var/db/postgresql90/defaultdb)をリネームして、
initdb -D /opt/local/var/db/postgresql90/defaultdb --no-local
DBをスタートさせ
psql -f [pg_dumpallしたデータ] postgres
でDBデータを読込み、元通りに。

50音ソートの結果は
あずき
あめ
あらかわ
いか
うさぎ
えのしま
かもめ
と正しくなった!

【2011.4.26追記】
別のMacで上記の様にやっても50音ソートがうまくいかず、--no-locale の前に -E UTF8 を追加して、
initdb -D /opt/local/var/db/postgresql90/defaultdb -E UTF8 --no-locale
としたら50音ソートがうまくいく様になった。

【2011.4.27追記】
initdb --no-locale
とすると、templateが
Encoding:SQL_ASCII Collation:C Ctype:C
で作られる。
この場合はcreatedb時に
createdb -E UTF8 -T template0 [DB名]
とすると、新しいデータベースが
Encoding:UTF8 Collation:C Ctype:C
で作られる。

2011.4.26追記の様に
initdb -E UTF8 --no-locale
とすると、templateが
Encoding:UTF8 Collation:C Ctype:C
で作られるので、新しいデータベースは普通に
createdb -E UTF8

Encoding:UTF8 Collation:C Ctype:C
になる。

どちらにしても、Collation:C にならないと50音ソートが期待した通りにならないので、
とりあえずこのどちらかを使って様子見する事にします。

【2011.4.28追記】
initdb コマンドで --locale=C と --no-locale は同じ意味だそう。
http://lets.postgresql.jp/documents/technical/text-processing/2



MySQLでローカルファイルからインポート

2011-04-25 17:06:26 | Mac
MySQLにログインする際にmysql --local-infile=1を追加。
/opt/llocal/bin/mysql5 -u root -p --local-infile=1 [DB名]

mysql> load data local infile "[ファイルのパス]" into table [テーブル名] fields terminated by "\t";
これでpostgrSQLのcopyで吐き出したタブ区切りのデータをインポート出来た。

プログレッシブJPEGかどうかコマンドラインで判別

2011-04-15 22:05:51 | Mac
携帯サイトを納品したら、一部のJPEGがauで表示されないという現象に遭遇。
調べたところauではプログレッシブJPEGが表示出来ないと判明。
標準の(ベースライン)JPEGじゃないとダメだそう。

そこで、表示されなかった画像がプログレッシブJPEGなのかどうか調べようと思って探したら、コマンドラインでの判定法を発見!
プログレッシブJPEGやCMYKモードのJPEGをUnix環境で判別(判定)

[rdjpgcom]というコマンドだそうだが、試しにMacのターミナルでrdjpg[タブ]と打ったら、見事drjpgcomと出た!やったー!入ってたー!Macエライ!

さっそく表示されなかった画像をチェック

$ rdjpgcom -verbose [表示されなかった].jpg
~中略~
JPEG image is 148w * 99h, 3 color components, 8 bits per sample
JPEG process: Progressive

おお!やはりプログレッシブJPEGだった。
試しにPhotoshopでプログレッシブにチェック付けずにWeb用に保存した画像を見ると

$ rdjpgcom -verbose [プログレッシブでない画像].jpg
~中略~
JPEG image is 148w * 99h, 3 color components, 8 bits per sample
JPEG process: Baseline

ちゃんとBaselineと表示されました。
便利だけど、すぐ忘れてしまいそうなコマンドでした。

PHP5 date.timezoneの設定

2011-03-31 12:08:43 | Mac
macportsでphp5.3.6にアップグレードしたら、date.timezoneが設定されていないとエラーが出た。
php.iniのdate.timezoneを = 'Asia/Tokyo' としてApache再起動で解決。

postgreSQL、MySQL、SQLite、mbstring等が、
port install php5-****
で手軽に追加出来る様になり、とっても便利になりました!

でも、アップグレード後に古いphp.iniを使っていたら、php5-postgresql等をインストールしたのに認識されず、しばらく悩んだ。
古いphp.iniをphp.ini-developmentのコピーで置換えたら、インストールした各php5-****が認識された。
そのかわり冒頭のエラーに遭遇。

apacheのエラー

2011-01-16 16:12:36 | Mac
サーバーのHPが表示されなくなっていたので、ログを調べるとaccess_logは4時のlog rotate以降真っ白…、error_logには
[notice] child pid ***** exit signal Segmentation fault (11)
というログが何千行も記録されており、最後に
[error] NSS_Initialize failed. Certificate database: /etc/httpd/alias.
[error] SSL Library Error: -8038 SEC_ERROR_NOT_INITIALIZED
というメッセージが。

何のことか分からず、ググったら、日本語でヒットしたのは一件のみ。
http://www.ryuuo.com/moze/SrcPeriod?date=2010-01
ここに書いてある通り
/etc/httpd/alias/
内の.dbファイルのパーミッションとグループを変更してhttpdを再起動したら、HPが表示されるようになった。

今後のために引用
---------------------------------------------------
# cd /etc/httpd/alias/
# ls -l
合計 112
-rw------- 1 root root 65536 2008-04-06 16:15 cert8.db
-rw------- 1 root root 7420 2008-04-06 16:15 install.log
-rw------- 1 root root 16384 2008-04-06 16:15 key3.db
lrwxrwxrwx. 1 root root 26 2010-03-19 09:37 libnssckbi.so -> ../../../lib/libnssckbi.so
-rw------- 1 root root 16384 2008-04-06 16:15 secmod.db

# chmod 640 *.db
# chgrp apache *.db
# ls -l
合計 112
-rw-r----- 1 root apache 65536 2008-04-06 16:15 cert8.db
-rw------- 1 root root 7420 2008-04-06 16:15 install.log
-rw-r----- 1 root apache 16384 2008-04-06 16:15 key3.db
lrwxrwxrwx. 1 root root 26 2010-03-19 09:37 libnssckbi.so -> ../../../lib/libnssckbi.so
-rw-r----- 1 root apache 16384 2008-04-06 16:15 secmod.db
# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
---------------------------------------------------
原因は、良く分からない…

【2011/1/19追記】
サーバー管理会社から、この件に関してお知らせメールが来た。
以下部分転載
---------------------------------------------------
 パッケージ mod_nssが1.0.8-3.el5 にアップデートされているサーバ。
 2011/01/14(金)に自動アップデートされております。

■問題
 mod_nssが1.0.8-3.el5 にアップデートされた状態で、httpdのサービス(プロセス)
 を再起動すると、HTTP,HTTPS接続ができなくなる場合がございます。
---------------------------------------------------
解決方法はまさしく上記に掲載したとおり/etc/httpd/alias/ 内の.dbのパーミッション変更だった。
って、今頃…知らされても…
まさか4日間もHPが表示されないままだった人も居たりして~… (@_@;)