以前 rvm を Mac OSX にインストールして、いざ rails を実行すると、以下のようなリンクエラーが出る。
$ ./script/server start dyld: lazy symbol binding failed: Symbol not found: _libiconv_open Referenced from: /usr/local/rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.7.0/iconv.bundle Expected in: flat namespace dyld: Symbol not found: _libiconv_open Referenced from: /usr/local/rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.7.0/iconv.bundle Expected in: flat namespace Trace/BPT trap
これは要するに iconv.bundle がリンクしている先の libiconv ライブラリに存在すべきシンボルが無いという旨のエラー。発生する原因は色々あると思うけど、多いのは独自にライブラリを ports や コンパイルなどでインストールして複数存在する場合に起こる事が多いと思う。
例えば今回の場合は、独自に libiconv を /usr/local にインストールしていたため、 rvm インストール時に使用されたライブラリと、いざ実行したさいにロードしようとしているライブラリが違ってしまっているためエラーが発生する。
解決方法がいくつかあったので、それをメモ。
$ sudo -u postgres /Library/PostgreSQL/9.0/bin/pg_ctl -D /Library/PostgreSQL/9.0/data/ start
$ sudo -u postgres /Library/PostgreSQL/9.0/bin/pg_ctl -D /Library/PostgreSQL/9.0/data/ stop
iPhone/iPad apps を開発している際に結構めんどうなのが、
ad-hoc 作成した後にいちいちテスター一人一人にアーカイブと Provisioning Profile を配布すること。
アップルのサイトに公式なやり方としては書かれてない(と思う)けど、これをネットで配布する事もできるようです。
とりあえずやってみたらできたので、やり方をメモ。
Xcode のバージョンは 4.0(英語バージョン)
FLV や MP4 ファイルを Web で配信した際に、Apache では基本的にストリーミング配信はできません。
ようするに、配信中に動画の閲覧はできますが、動画の初めから見ることしかできず、
ダウンロードが完了するまで任意の場所へのシークなどができないわけです。
Flowplayer や JW Player などの Flash ベースのプレーヤーは、もちろんストリーミングに対応していますが、
サーバー側が対応していないとどうしようもありません。
Lighttpd を利用すれば、簡単にストリーミングサーバーが構築できますが、
実は apache でも PHP などのスクリプトで実行する事もできますし、
探すといくつかモジュールも存在します。
今回は mod_flvx と mod_H264_streaming を使用して、
Pseudo-streaming を実装してみたので、そのメモを残しておこうと思います。
環境は Ubuntu 10.04 LTS 。
.tables コマンドで見れます。
$ sqlite3 test.sqlite SQLite version 3.7.2 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables sql_master test_table
dbname=# SELECT * FROM pg_database;
*in MySQL
show databases;
dbname=# \d
*in MySQL
show tables;
dbname=# \c {db_name}
*in MySQL
use {db_name};
開発を行っていて、 IDE などの設定の個人差により、インデントに使われているホワイトスペースとタブが混在して Diff で差分チェックするのが困難な場合があるが、そんな時は、 svn diff --ignore-eol-style オプションを付ける事で回避できる。
$ svn diff -x --ignore-eol-style file_name
Mac に LAMP もとい MAMP 環境を構築したときのメモ。いろいろと癖もあったりはまったところもあったけど、とにかくできました。
構築する上でのポリシーとしては、
Mac にインストールされているライブラリと DarwinPorts で入れたものを混合するとコンパイルでエラーを起こすことが多いっぽい。
環境は以下の通り。
Mac OS X 10.5.6
mysql-5.1.33
postgresql-8.3.7
apache-2.2.11
php-5.2.9
毎回新しいプロジェクトを作成するたびに SVN Ignore の方法を忘れているのでメモ。
propedit で svn:ignore プロパティの値を変更してやればいい。例えば、 . ディレクトリの .project ファイルを無視リストに追加したい場合は以下のコマンドを実行する。
$ svn propedit svn:ignore .
そして開かれたファイルに .project を追加する。
最近 Mac 上で darwin port を使ったパッケージ管理に嫌気を感じ、全部コンパイルしてインストールし始めてみた。今の Macbook は Core 2 なので、せっかくだから i386 と x86_64 両方の architecture に対応したライブラリを作ってみた。
作ってみたというよりは、実際過去に i386 でコンパイルした物があり、それにリンクしているライブラリが x86_64 をインストールしたことで動かなくなったので、やらざるをえなかったわけだけど。
例としてここでは openssl-0.9.8o をインストールしてみる。コンパイラは gcc-4.5.1 を使用。
exim4 は ubuntu の標準 MTA の様で、設定ファイルは /etc/exim4/ 配下にあるんだけど、基本的にまた一から新しい MTA の設定を覚えたいとは思わない。
そんな時調べていたら、というか検索したら便利なコマンドがみつかったのでメモ。
基本的には以下のコマンドを叩いて後はインタラクティブな質問に答えていけば良い。
$ sudo dpkg-reconfigure exim4-config
Mac には ldd コマンドの代わりに otool というのがあるらしい。
$ otool -L file_name
で、ダイナミックライブラリのリンク情報が見れる。
SVN 作業時に、 svn サーバーの URL が変更になった際に、ローカルのレポジトリコピーを新しい場所に移動するには、以下のコマンドで行います。
svn switch --relocate {old URL} {new URL}
Zend Framework の Zend_Mail を使用すると色々な方法で簡単にメールが送れます。色々試してみたので、 Zend_Mail を使用して以下のそれぞれの方法でメールを送る方法のメモ。
mysqldump を行うユーザが必要な権限は以下の通り。
GRANT FILE ON *. * TO 'user'@192.168.0.200';
GRANT SELECT , LOCK TABLES , SHOW VIEW ON `db_name` . * TO 'user'@192.168.0.200';
もしダンプにプロシージャも含めたい場合のみ。
GRANT SELECT ON mysql.proc TO 'user'@192.168.0.200';
SVN で特定の branch を元の trunk に戻すには以下のコマンドを実行する。
$ svn merge --reintegrate svn://repo.domain/repo.dir/path/to/branch /path/to/working_copy
reintegrate オプションは subversion 1.4 からサポートされている。うちの環境が 1.3 だったので 1.5 にあげたんだけど、エラーが消えずにはまりかけたんだけど、 repository 自体のバージョンもあげないとだめだったらしい。
$ svnadmin upgrade /path/to/repo_dir
Apache のロードバランサーモジュールを使って、 Apache を proxy を go-lang で作った独自アプリケーションサーバと接続させる設定をした時のメモ。
基本的には RoR アプリを作成した時に Apache のバックに Mongrel を何台が走らせたりする時に使う方法と一緒。
忘れないようにメモ。
新年の大掃除という事でサーバのログアラートを眺めていたら、
mysql から innoDB 関連の以下のようなエラーがみつかったので修正する事に。
100101 2:50:34 InnoDB: ERROR: the age of the last checkpoint is 9433664, InnoDB: which exceeds the log group capacity 9433498. InnoDB: If you are using big BLOB or TEXT rows, you must set the InnoDB: combined size of log files at least 10 times bigger than the InnoDB: largest such row.
エラー発生時間から大体何が起きたのか把握できたので、 innodb_log_file_size を増やす事に。
いつものように My.cnf を修正して再起動すれば良いだろうと思ってやったら、以下のようなエラーが。
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 33554432 bytes!
どうやら、少し違ったらしい。