wav形式からcaf形式のサウンドファイルへ変換

2010年7月26日

Filed under: iPad,iPhone — admin @ 2:09 AM

iPhone/iPadアプリの開発が楽しいです。今回は、音を扱う上で Core Audio Format(.caf)という形式に変換する必要があったので、そのコマンドをメモっておきます。

CODE:
  1. % afconvert -f caff -d ima4 -d LEI16@22050 -c 1 -o [出力ファイル名].caf [入力ファイル名].wav

これでサクッと変換できちゃう。

Arduino 入門してみた – フィジカルコンピューティング

2010年7月18日

最近は割とWeb方面に飽きてきたので、ちょっと新しい趣味がてら、話題になっている(?)フィジカルコンピューティングなるものに入門してみた。
GainerやらArduinoやらたくさんのマイコンがあるのだけれど、Arduinoが一番ドキュメント類や書籍が充実してそうだなと思い、Arduinoに入門してみた。

まずは何もないと始まらないので、Amazonで下記の二つを買った。

▽Arduinoをはじめようキット

▽Arduinoをはじめよう

早速組み立ててみた。



Arduino SDK でC言語でProcessingに似た形式でプログラムを書くことができる。

C:
  1. #define LED 13
  2.  
  3. void setup(){
  4. pinMode(LED, OUTPUT);
  5. }
  6. void loop(){
  7. digitalWrite(LED, HIGH);
  8. delay(1000);
  9. digitalWrite(LED, LOW);
  10. delay(1000);
  11. }

1秒ごとにLEDが点いたり消えたりするようになった。

まさかの4ヶ月待ち。GuruPlugが届いた!

2010年7月13日

Filed under: GuruPlug,Linux — admin @ 2:46 AM

ついに念願のアレが届いた。
SekenではiPhone4やらiPadやら話題になりまくってるけど、どんなApple製品よりも手に入りにくくて品薄な商品が世の中にはあるんだぜ…。

それがこちら↓

GuruPlug!電源内蔵のプラグコンピュータとして話題になったSheevaPlugの後継機!
なんと無線LANも使えちゃうんだってばよ。

形はACアダプタと同じ形だけど重さはタバコ2箱分くらいの重さでむちゃくちゃ軽い。
これがパソコンだなんて全然見えないんす。

これも製造元(US)に直接発注して、製造が追いつかず、発注から約4ヶ月の時を経てようやく我が家に届きました。日本には代理店なども特にないので、直接個人輸入しないと手に入らないのです。

これ10台繋いでグリッドコンピューティングしてみたいすな!

CentOS5.xにPostgresqlをyumでインストールする

2010年7月6日

Filed under: CentOS,Linux,PostgreSQL — admin @ 10:57 PM

MySQLしか使ったことないのですが、案件でPostgresqlを使うことになりまして、CentOS5系にインストールしてみました。
クライアント認証につまづいてなかなか壁を突破できませんでしたがググって頑張りましたよっと。

まず、yumで必要なモジュールをインストール。

CODE:
  1. [root@localhost ~]# yum install -y postgresql-tcl postgresql-server postgresql-contrib postgresql php-pgsql

今回はPHPとの連動を行うので、下記もインストール

CODE:
  1. [root@localhost ~]# yum install -y php-pgsql

ひととおりインストールが終わったらpostgresqlを起動。

CODE:
  1. [root@localhost ~]# /etc/rc.d/init.d/postgresql start

それでは初期設定を行っていく。
MySQLと違って、postgresというユーザーでログインしないと設定が行えない。

CODE:
  1. [root@localhost ~]# su - postgres
  2. -bash-3.2$ psql -l
  3.         List of databases
  4.    Name    |  Owner   | Encoding
  5. -----------+----------+----------
  6.  postgres  | postgres | UTF8
  7.  template0 | postgres | UTF8
  8.  template1 | postgres | UTF8
  9. (3 rows)

ユーザー名"test"、パスワード"test" のユーザーを作成する。
権限はデータベースの作成を可能にする。

CODE:
  1. -bash-3.2$ psql
  2. Welcome to psql 8.1.21, the PostgreSQL interactive terminal.
  3.  
  4. Type:  \copyright for distribution terms
  5.        \h for help with SQL commands
  6.        \? for help with psql commands
  7.        \g or terminate with semicolon to execute query
  8.        \q to quit
  9.  
  10. postgres=# CREATE USER "test" CREATEDB PASSWORD 'test' LOGIN;
  11. CREATE ROLE
  12. postgres=# \q
  13. -bash-3.2$ exit
  14. logout
  15.  
  16. [root@localhost ~]#

これで、Linux上のユーザー"test"からPostgresqlを操作できるようになる。
そしたら、"test"ユーザーが使えるデータベース"test"を作成する。
文字コードは"EUC_JP"にする。

CODE:
  1. [root@localhost ~]# su - test
  2. [test@localhost ~]# createdb test -E EUC_JP
  3. CREATE DATABASE
  4. [test@localhost ~]$ psql -l
  5.         List of databases
  6.    Name    |  Owner   | Encoding
  7. -----------+----------+----------
  8.  test      | test     | EUC_JP
  9.  postgres  | postgres | UTF8
  10.  template0 | postgres | UTF8
  11.  template1 | postgres | UTF8
  12. (4 rows)
  13. [test@localhost ~]$

ちなみにただ単に "creatdb test" とした場合、文字コードはデフォルトで"utf-8"になる。
データベースを削除する場合は、"drop データベース名" とすれば良い。

最後に、PHPなどと連携する場合は、クライアント認証ファイルを編集する必要がある。

CODE:
  1. [root@localhost ~]# vi /var/lib/pgsql/data/pg_hba.conf
  2. #local  all         all                               ident sameuser  #コメントアウト
  3. local   all         all                               trust
  4.  
  5. #host   all         all         127.0.0.1/32          ident sameuser  #コメントアウト
  6. host    all         all         127.0.0.1/32          password

postgresqlとapacheを再起動する。

CODE:
  1. [root@localhost ~]# /etc/rc.d/init.d/postgresql restart
  2. Stopping postgresql service:                               [  OK  ]
  3. Starting postgresql service:                               [  OK  ]
  4.  
  5. [root@localhost ~]# /etc/rc.d/init.d/httpd restart
  6. Stopping httpd:                                            [  OK  ]
  7. Starting httpd:                                            [  OK  ]

phpファイルを書いて、接続テストする。

PHP:
  1. <?php
  2.  
  3. $data = "host=localhost user=test dbname=test password=test";
  4. $pg = pg_connect($data);
  5.  
  6. if(!$pg){
  7.   echo '接続できませんでした。';
  8. }
  9. else{
  10.   echo '接続しちゃいました<br />';
  11. }
  12.  
  13. if(!pg_close($pg)){
  14. }
  15. else{
  16.   echo '接続を閉じました。';
  17. }
  18.  
  19. ?>

特に問題なく接続できたら下記のように表示される。

CODE:
  1. 接続しちゃいました
  2. 接続を閉じました。

クライアント認証んとこは本当にわかんなくてつまづいたけど、ちゃんと繋がると感動ですね!

rsyncでデータバックアップ的な。

2010年7月1日

Filed under: Rsync — admin @ 11:50 AM

Rsync便利です。よく使うのでここにメモっときます。

参考サイト
http://www.aconus.com/~oyaji/backup/rsync.htm

SSHでの基本的な使い方(詳細は省きます。)

CODE:
  1. rsync オプション [ホスト名:]コピー元ファイル/ディレクトリ名 [ホスト名:]コピー先ファイル/ディレクトリ名

いつもこんな感じでつかってる。

CODE:
  1. rsync -avz -e ssh /home/hoge/public_html/ backup@backup.hostname.com:/home/hoge/public_html/

Rsync、かわいいよ、Rsync。

Xcodeをアンインストールする

2010年6月20日

Filed under: MacOSX,Objective-C,Xcode — admin @ 4:01 AM

iPhone SDK4.0 GM版が何かと曲者で不便なので、3.2に戻す。今インストールされているXcodeをアンインストールする。

CODE:
  1. $ sudo /Developer/Library/uninstall-devtools --mode=all

その後、iPhone SDK3.2をインストールすれば元通り!

Spamassassin が動いてない

2010年6月17日

Filed under: Linux,Spamassassin — admin @ 1:27 AM

スパムメールが増えたのかなんなのか、ウチのサーバのログが暴れだしたので、ちょこっと調べてみることにした。

CODE:
  1. host spamc[9130]: connect to spamd on 127.0.0.1 failed, retrying (#1 of 3): Connection refused
  2. host spamc[9130]: connect to spamd on 127.0.0.1 failed, retrying (#2 of 3): Connection refused
  3. host spamc[9130]: connect to spamd on 127.0.0.1 failed, retrying (#3 of 3): Connection refused

このようなログがけっこう前からあった。どうも Spamassassin が動いていないようだ。
リブートしてみようと思い下記のコマンドを実行

CODE:
  1. [root@host]~# /etc/init.d/spamassassin start
  2. spamd を起動中: child process [14793] exited or timed out without signaling production of a PID file: exit 255 at /usr/bin/spamd line 2588.

なんだか調べていったら下記のページにたどり着いた。
http://www.komine.biz/modules/d3forum/index.php?topic_id=34
http://www.gossamer-threads.com/lists/spamassassin/users/151177?page=last

そこでは、

Hi
Just found the solution: Run the command 'sa-update'
Note: Found the hint, after I tried to run spamd without '--daemonize'
Hope this works also for others!

と書いてあるので、下記コマンドを実行後、改めてSpamassassin を起動してみた。

CODE:
  1. [root@host]~# sa-update
  2. [root@host]~# /etc/rc.d/init.d/spamassassin start
  3. spamd を起動中:                                            [  OK  ]

おぉ、無事に起動した!あとはこれで様子見である。

配列と多次元配列 – Objective-C

2010年5月21日

Filed under: C言語,Objective-C,配列 — admin @ 5:45 PM

JavaScriptしかロクに書けない自分です。こんぬつわ。
C言語における配列をメモって置きます。

JSだと配列ってすごい簡単に扱えますが、C言語だとリソースをきちんと確保してあげないとダメなんですね。ちゃんと頑張って書いてみましたよっと。

まずは配列。

C:
  1. //配列の初期化
  2. int ary1[] = {0,1,2,3,4,5,6,7,8,9};
  3.  
  4. //lengthの取得
  5. const int _ary1Length_ = sizeof ary1 / sizeof ary1[0];
  6.  
  7. //配列の中身をすべて取り出す
  8. for( int i = 0; i <_ary1Length_; i++ ){
  9.     NSLog(@"%d", ary1[i]);
  10. }

多次元配列の場合。

C:
  1. /**
  2. * 多次元配列処理
  3. */
  4. int ary2[7][10] = {
  5.     {0,1,2,3,4,5,6,7,8,9},
  6.     {10,11,12,13,14,15,16,17,18,19},
  7.     {20,21,22,23,24,25,26,27,28,29},
  8.     {30,31,32,33,34,35,36,37,38,39},
  9.     {40,41,42,43,44,45,46,47,48,49},
  10.     {50,51,52,53,54,55,56,57,58,59},
  11.     {60,61,62,63,64,65,66,67,68,69}
  12. };
  13.  
  14. const int _ary2Length_i_ = sizeof ary2 / sizeof ary2[0];
  15. const int _ary2Length_j_ = sizeof ary2[0] / sizeof ary2[0][0];
  16. for( int i = 0; i <_ary2Length_i_; i++ ){
  17.     for( int j = 0; j <_ary2Length_j_; j++ ){
  18.         NSLog(@"%d", ary2[i][j]);
  19.     }
  20. }

JSだとarrayObj.lengthとかで簡単にとれるものも、きちんと計算してあげないととれないんですね。これはなんだか挫けそうです!w

zshでテトリス

Filed under: Linux,zsh — admin @ 1:02 PM
CODE:
  1. zsh
  2. autoload -U tetris
  3. zle -N tetris
  4. bindkey '^T' tetris

Control-T を押せばゲーム開始。zsh最強!
しかもちょっとキー操作が難しい。

Objective-Cにおける文字列の連結

2010年5月14日

Filed under: Objective-C,iPad,iPhone — admin @ 4:46 PM

JavaScriptやRubyやPHPといったインタプリタな緩くて便利な言語しか使ったことがないので、C言語の文字列の扱いが非常に難しかった。というかC言語単体は挫折したけど…。

Objective-Cに置いてはクラスが拡張されているのでやはり文字列の扱いはものすごい便利になっている。それでも記述する内容多すぎなんだけどね…。

JavascriptとObjective-Cでの書き方をメモっとく。

JavaScript:
  1. //文字列を代入
  2. var str1 = "あひゃ!";
  3. var str2 = "ヒーハーッ!";
  4.  
  5. //文字列の連結
  6. var str3 = str1 + str2;
  7. var str4 = str3 + str1 + str2;
  8.  
  9. //出力
  10. alert(str1); //あひゃ!
  11. alert(str2); //ヒーハーッ!
  12. alert(str3); //あひゃ!ヒーハーッ!
  13. alert(str4); //あひゃ!ヒーハーッ!あひゃ!ヒーハーッ!

C:
  1. //文字列を代入
  2. NSString *str1 = @"あひゃ!";
  3. NSString *str2 = @"ヒーハーッ!";
  4.  
  5. //文字列の連結
  6. NSString *str3 = [str1 stringByAppendingString:str2];
  7. NSString *str4 = [str3 stringByAppendingString:[str1 stringByAppendingString:str2]];
  8.  
  9. //NSLogで出力
  10. NSLog(@"\n%@",str1); //あひゃ!
  11. NSLog(@"\n%@",str2); //ヒーハーッ!
  12. NSLog(@"\n%@",str3); //あひゃ!ヒーハーッ!
  13. NSLog(@"\n%@",str4); //あひゃ!ヒーハーッ!あひゃ!ヒーハーッ!

ちなみにメッセージ式の書式もメモっとく。

C:
  1. //メッセージ式
  2. [オブジェクト メッセージ];
  3.  
  4. //メッセージ式の戻り値を変数に代入
  5. 変数 = [オブジェクト メッセージ]
  6.  
  7. //引数を1つもつメソッドの呼び出し
  8. [オブジェクト メソッド名:引数]
  9.  
  10. //引数を複数もつメソッドの呼び出し
  11. //※ラベルとは引数の説明のような文字列
  12. [オブジェクト メソッド名:引数1 ラベル:引数2]

他にインスタンスメソッドとクラスメソッドが存在するが、次の機会に書けたら書きます。

次ページへ »