2011年12月1日木曜日

macにffmpegをインストール

mac portsから楽にインストールできる

※手元のmac portsが古かったのでアップデート

$ sudo port selfupdat

ffmpegとコーデックのインストール(xvid, mp3, H264を一緒にいれる)

$ sudo port install ffmpeg +gpl +lame +x264 +xvid

2011年7月16日土曜日

さくらのVPSにgitのリポジトリをおいてmacから使う

さくらVPSを使って個人的なプロジェクトや設定ファイルのGitレポジトリ管理をしてみます。個人メモ。
(※gitosisなどの高度なgit管理は今回なし。あくまでも個人的にシンプルな管理で)

1.さくらのVPS上でやること

・gitをインストール
yumで直接インストールできないのでWebtaticリポジトリを追加、指定してインストール
$ rpm -ivh http://repo.webtatic.com/yum/centos/5/latest.rpm
$ yum -y install --enablerepo=webtatic git

・gitで使うアカウント作成(今回はkasahi)とりあえずwheelグループに追加
$ useradd kasahi
$ passwd kasahi
$ usermod -G wheel kasahi
$ id kasahi
uid=500(kasahi) gid=500(kasahi) groups=500(kasahi),10(wheel)

・/var/gitをリポジトリのルートにする。
$ mkdir /var/git
$ chmod 775 /var/git
$ chown root:wheel /var/git
$ cd /var/git
$ mkdir demo.git
$ chmod 775 demo.git
$ chown root:wheel demo.git
$ cd demo.git
・gitをshare用にinit
$ git init --bare --shared
Initialized empty shared Git repository in /var/git/demo.git/
これで(空の)共用demo.gitリポジトリができた。

この共用demo.gitにmacからアクセスしてみる。


2.続いて、mac上でやること

・gitのインストール(macのportsから)
$ sudo port install git-core
・git用のユーザ名とメールアドレスを設定
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com

・適当な場所で、さくらVPSで作ったdemo.gitリポジトリをcloneしてみる
$ cd ~/tmp
$ git clone ***.***.***.***:/var/git/demo.git demo-clone

・空のdemo.gitリポジトリにファイルを追加してみる
$ cd demo-clone
$ touch README.txt
$ git commit -am "initial checkin"

[master (root-commit) c045b23] initial checkin
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 README.txt

・demo.gitリポジトリにpushしてみる。
$ git push ***.***.***.****:/var/git/demo.git master

Counting objects: 3, done.
Writing objects: 100% (3/3), 261 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To 182.48.45.221:/var/git/demo.git
 * [new branch]      master -> master

・状態などチェック
$ git log
$ git status
※gitのコマンドは別途勉強。


ここまでで、macからさくらVPS上に立てたgit共用リポジトリを使うことができた。

続いて、コマンドラインからだけではなくwebからもリポジトリの状態が見れるように、gitwebを導入する。


3.gitwebの導入

以下、さくらVPSで作業する。

・まずapacheをインストール
$ sudo yum -y install httpd
・apacheを起動
$ sudo service httpd start

・gitwebをインストール
$ yum -y install --enablerepo=webtatic gitweb
・gitweb用の設定ファイルを修正
/etc/httpd/conf.d/git.conf というファイルが出来てるので修正
Alias /git /var/www/git

<Directory /var/www/git>
    Options +ExecCGI
    AddHandler cgi-script cgi 
    DirectoryIndex gitweb.cgi

    AuthType Basic
    AuthName "Please enter your ID and password"
    AuthUserFile /var/www/git/.htpasswd
    require valid-user
</Directory>

・一応basic認証をいれておく(==> htpasswdファイル生成(作成))※本当はIP制限もかけたほうが安全かも
$ vi /var/www/git/.htpasswd
修正後、 apache を再起動。
$ sudo service httpd restart


次に /var/www/git/gitweb.cgi に git のリポジトリパスを設定する。
72  # absolute fs-path which will be prepended to the project path
73  #our $projectroot = "/pub/scm";
74  #our $projectroot = "/var/lib/git";
75  our $projectroot = "/var/git";        # <---- /var/git を追加

apacheに/var/gitを読み込む権限があるか確認
$ id apache
uid=48(apache) gid=48(apache) 所属グループ=48(apache)
ないので追加
$ sudo usermod -G wheel apache

あとは、***.***.***.***/gitにアクセスすれば、web経由でリポジトリが確認できる。

便利。

macにapache、mysql、phpをインストールしてWeb開発

macでWeb開発をするときにいつもやってることメモ。

いわゆるMAMPとかを使わずに、apache、mysql、phpをインストールしてローカルで開発する手順です。自分用。
ドメインをhostsに設定して切り替えて開発します。

・ MacPortsを最新版にアップデートしておく
$ sudo port -d selfupdate
$ sudo port -d sync
・ apacheを入れる
$ sudo port install apache2
・ MySQLを入れる
$ sudo port install mysql5 mysql5-server
・ phpを入れる。オプションでpearとか有効にしておく
$ sudo port -d install php5 +apache2 +curl +mysql5 +pear +mbstring
・apache moduleのphp5を有効に。
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" /opt/local/apache2/modules/libphp5.so
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]


・MysqlのDBをセットアップ
$ sudo -u mysql mysql_install_db5
・サーバの起動
$ sudo /opt/local/share/mysql5/mysql/mysql.server restart
・Mysqlのパスワードを設定(以下はrootアカウントを設定する場合)
$ /opt/local/lib/mysql5/bin/mysqladmin -u root password '*********'
・Mysqlにログインしてみる
$ /opt/local/lib/mysql5/bin/mysql -u root -p


・apacheのconfigを修正
$ sudo vim /opt/local/apache2/conf/httpd.conf
httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

<IfModule mime_module>
    AddType application/x-httpd-php .php .html .htm
</IfModule mime_module>

# これをやらないと.htaccessが有効にならない
<Directory "/opt/local/apache2/htdocs">
    AllowOverride All
</Directory>

# Virtual hosts
Include conf/extra/httpd-vhosts.conf


・apacheのVirtualHostを設定
$ sudo cp /opt/local/apache2/conf/extra/httpd-vhosts.conf /opt/local/apache2/conf/extra/httpd-vhosts.conf_bak
$ sudo vim /opt/local/apache2/conf/extra/httpd-vhosts.conf
httpd-vhosts.conf(※hogehoge.comを適当に読み替え)
#
# Virtual Hosts
#
NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "/opt/local/apache2/htdocs/phpmyadmin"
    ServerName phpmyadmin
    ErrorLog "/opt/local/apache2/logs/error_log"
    CustomLog "/opt/local/apache2/logs/error_log" common

    <Directory "/opt/local/apache2/htdocs/phpmyadmin">
        Order deny,allow
        Allow from All 
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/opt/local/apache2/htdocs/hogehoge.com"
    ServerName hogehoge.com
    ServerAlias www.hogehoge.com
    ErrorLog "/opt/local/apache2/logs/hogehoge.com/error_log"
    CustomLog "/opt/local/apache2/logs/hogehoge.com/access_log" common

    <Directory "/opt/local/apache2/htdocs/hogehoge.com">
        Order deny,allow
        Allow from All 
    </Directory>
</VirtualHost>
・ログ用ディレクトリを作る
$ sudo mkdir /opt/local/apache2/logs/hogehoge.com
$ sudo chmod 777 /opt/local/apache2/logs/hogehoge.com
・apache再起動など
$ sudo /opt/local/apache2/bin/apachectl start
$ sudo /opt/local/apache2/bin/apachectl stop
$ sudo /opt/local/apache2/bin/apachectl restart


・MySQL用の設定を変更
$ sudo vim /opt/local/etc/mysql5/my.cnf
my.cnf
[mysqld]
max_allowed_packet=256M

・MySQL再起動など
$ sudo /opt/local/share/mysql5/mysql/mysql.server restart
(※必要ならばDB流しこみ)
$ sudo /opt/local/lib/mysql5/bin/mysql -uroot -p****** dbname < ~/hogehoge.sql


・pear関連
$ sudo pear install Cache_Lite
など。

・PHP Extension関連
$ sudo port install php5-mbstring
$ sudo port install php5-curl
$ sudo port install php5-mysql
$ sudo port install php5-iconv
($ sudo port install php5-imagick)

・hostsを編集
$ sudo vim /etc/hosts
/etc/hosts
127.0.0.1   localhost
127.0.0.1   phpmyadmin
127.0.0.1   hogehoge.com

・phpmyadminを設定
$ chmod 777 /opt/local/apache2/htdocs/
phpmyadminを落としてくる(今回は phpMyAdmin-3.4.3.1-all-languages )
$ mv ~/Downloads/phpMyAdmin-3.4.3.1-all-languages /opt/local/apache2/htdocs/.
$ cd /opt/local/apache2/htdocs/
$ ln -s phpMyAdmin-3.4.3.1-all-languages phpmyadmin


・phpの設定ファイルを修正
$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
$ sudo vim /opt/local/etc/php5/php.ini
php.ini
pdo_mysql.default_socket =/opt/local/var/run/mysql5/mysqld.sock
mysql.default_socket =/opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket =/opt/local/var/run/mysql5/mysqld.sock
short_open_tag = On

2011年7月15日金曜日

Eclipse(Ver3.7)とPDTを使ってPHP開発。あとgitも。

Eclipseでのphp開発メモ。あとgitも。


Eclipseのダウンロード
Eclipse Downloadsから、「Eclipse IDE for JavaScript Web Developers」のMAC OS X 64 bit版をダウロード。
Eclipseのバージョンは3.7 (indigo)でした。

ダウンロードしたら、インストールして起動。

はじめのworkspaceの設定は自分はDocumentRootにしています。
(macなので/opt/local/apache2/htdocs に設定)


プラグインPDT (PHP Development Tools) を入れる。
PHPの開発用プラグインを入れる。Eclipse3.7にはパッケージインされてなかったので別途入れる。

メニューの「Help --> Install New Software」から。

Work Withは、プルダウンから「 Indigo - http://download.eclipse.org/releases/indigo 」を選択。


プラグインEgitを入れる。
gitを使いたいので、上記PDTと同じくindigoリポジトリからEgitを入れる。

昔は別途インストールの必要があったみたいだけど、Eclipse3.7からは直接indigoリポジトリの中からインストールできるみたい。


プラグインVrapperを入れる。
Eclipse上でvimキーバインドで開発できるプラグイン。基本はvimを使っているので。

Vrapperのインストールは、Eclipseの更新サイトに"http://vrapper.sourceforge.net/update-site/stable"を設定してインストールする。


その他
Workspaceの文字設定をUTF-8にする。
「Preferences → General →  Workspace」をクリック。
その中の Text file encoding をUTF-8に変更。


参考
Eclipseのキーバインドをvim風にできるVrapperが素晴らしすぎる件について - ゆろよろ日記
Eclipseの文字コードをutf-8に設定する
ウノウラボ by Zynga Japan: EclipseでPHP開発

2011年6月1日水曜日

macにMail_MimeDecodeをインストール

メール投稿受付用

$ sudo pear install Mail_MimeDecode

downloading Mail_mimeDecode-1.5.5.tgz ... Starting to download Mail_mimeDecode-1.5.5.tgz (11,554 bytes) .....done: 11,554 bytes downloading Mail_Mime-1.8.2.tgz ... Starting to download Mail_Mime-1.8.2.tgz (30,914 bytes) ...done: 30,914 bytes install ok: channel://pear.php.net/Mail_Mime-1.8.2 install ok: channel://pear.php.net/Mail_mimeDecode-1.5.5

2011年3月4日金曜日

flash(ActionScript3.0)でクラスパスの設定とかComponentの配置とか。

完全なメモ。
flashでcomponents.swcとか、google analytics用のanalytics.swcを使いたい。

windowsのflash CS3の場合

・クラスパスの設定
編集 --> 環境設定 --> ActionScript --> ActionScript3.0設定 --> クラスパスを追加($(AppConfig)/ActionScript 3.0/Classes になってた)

・実際の場所
C:\Program Files\Adobe\Adobe Flash CS3\ja\Configuration\ActionScript 3.0\Classes

・swcとかのコンポーネントの配置
C:\Program Files\Adobe\Adobe Flash CS3\ja\Configuration\Components
の中にswcファイルを置く。
Adobe Flash Setup - Google Analytics - Google Codeあたりにも書いてある。

2011年2月16日水曜日

macでphp用のiconvをいれる

こんなエラーが出た
Fatal error: Call to undefined function iconv_get_encoding()

macのiconv関連php拡張が入ってないみたい。

インストール
$ sudo port install php5-iconv

これでOK。

macでyoutubeの動画をコマンドラインからダウンロード

youtubeの動画を落とすときにコマンドラインから楽に落としたい。

探してみると、Pythonで書かれたYouTubeビデオダウンロードプログラムを見つけました。
-youtube-dl
Python 2.4以降が必要みたいです。

「Download it」っていうボタンから、Pythonのプログラムをダウンロード。
ファイルがそのままテキストになってるので、自分は落としてきて、名前を「youtube-dl.py」とかにしました。
で、一応、chmodでパーミションを755にして実行権限を与えます。

あとはコマンドラインから、
$ ./youtube-dl.py http://www.youtube.com/watch?v=********* -l
とyoutubeのビデオURLを渡すだけ。-lオプションを付けてるのは、つけないとデフォルトのflvファイル名が英数字の羅列になっちゃうので。-lを付ければ名前もちゃんとつけてくれます(日本語OK)。

一応オプション。
$ ./youtube-dl.py -h
Usage: youtube-dl.py [options] url...

Options:
  -h, --help            print this help text and exit
  -v, --version         print program version and exit
  -U, --update          update this program to latest stable version
  -i, --ignore-errors   continue on download errors
  -r LIMIT, --rate-limit=LIMIT
                        download rate limit (e.g. 50k or 44.6m)
  -R RETRIES, --retries=RETRIES
                        number of retries (default is 10)
  --playlist-start=NUMBER
                        playlist video to start at (default is 1)
  --playlist-end=NUMBER
                        playlist video to end at (default is last)
  --dump-user-agent     display the current browser identification

  Authentication Options:
    -u USERNAME, --username=USERNAME
                        account username
    -p PASSWORD, --password=PASSWORD
                        account password
    -n, --netrc         use .netrc authentication data

  Video Format Options:
    -f FORMAT, --format=FORMAT
                        video format code
    --all-formats       download all available video formats
    --max-quality=FORMAT
                        highest quality format to download

  Verbosity / Simulation Options:
    -q, --quiet         activates quiet mode
    -s, --simulate      do not download video
    -g, --get-url       simulate, quiet but print URL
    -e, --get-title     simulate, quiet but print title
    --get-thumbnail     simulate, quiet but print thumbnail URL
    --get-description   simulate, quiet but print video description
    --get-filename      simulate, quiet but print output filename
    --no-progress       do not print progress bar
    --console-title     display progress in console titlebar

  Filesystem Options:
    -t, --title         use title in file name
    -l, --literal       use literal title in file name
    -A, --auto-number   number downloaded files starting from 00000
    -o TEMPLATE, --output=TEMPLATE
                        output filename template
    -a FILE, --batch-file=FILE
                        file containing URLs to download ('-' for stdin)
    -w, --no-overwrites
                        do not overwrite files
    -c, --continue      resume partially downloaded files
    --cookies=FILE      file to dump cookie jar to
    --no-part           do not use .part files
    --no-mtime          do not use the Last-modified header to set the file
                        modification time

macでyoutubeの動画をmp3にする

やり方やツールは色々あるけど。

なるべく無劣化が希望なので、方法としては、flvを落とす→flvからmp3を抽出、がよさそう。
一度mp4とかにすると(よく分からないけど)一度変換が挟まってそうなので。
あと、なるべくブラウザの拡張ではなくアプリでやりたい。

flvを落とす場合は、
-Easy Youtube Video Downloader « Google Chrome Extensions
のChrome Extensionか、
-Download Flash Video Downloader for Mac - Batch download and save streaming Flash videos. MacUpdate.com
のアプリを使うとよさげ。

Chrome Extensionだとブラウザでダウンロードすることになるので、キューとかに入れられなくてちょっと嫌だなと思って始めはFlash Video Downloaderを使ったのだけど、なんけ結構ダウウンロードに失敗する。
なので、ブラウザ経由のダウンロードでもOKな人は、Chrome Extensionのほうが安定してるかも(個人の見解)。

で、落としたflvをmp3に変換。iExtractを使う。
無劣化で音声を抽出できるらしい。

-Download iExtractMP3 for Mac - Extracts MP3 from Flash video files. MacUpdate.com

iExtractでの抽出はめちゃくちゃ早い。数秒で終わる。
すばらしいです。ありがとうございます。

Imagickで画像を正方形にリサイズ

ImageMagickのphp版Imagickを使って画像を正方形にリサイズしたい。

画像を正方形にリサイズする場合、
正方形に切り抜く場合と、余分な背景をうめて正方形にする2パターンがある

<?php
// 正方形に切り取る
$im = new Imagick();
$im->readImage('/home/kasahi/tmp/org.jpg');
$im->cropThumbnailImage(80, 80);
$im->writeImage('/home/kasahi/tmp/resize.jpg');
$im->destroy();
?>

<?php
// 余りの背景を白でうめて正方形にする場合
$im = new Imagick();
$im->readImage('/home/kasahi/tmp/org.jpg');
$sideNum = 300; // 一辺を300ピクセルにする
$im->setImageBackgroundColor(new ImagickPixel('white'));
if ($im->getImageWidth() > $im->getImageHeight()) {
    $im->scaleImage($sideNum, 0); 
    $height = ($sideNum - $im->getImageHeight()) / 2;
    $im->spliceImage(0, $height, 0, 0); 
    $im->spliceImage(0, $sideNum - $im->getImageHeight(), 0, $im->getImageHeight());
} else {
    $im->scaleImage(0, $sideNum);
    $width = ($sideNum - $im->getImageWidth()) / 2;
    $im->spliceImage($width, 0, 0, 0); 
    $im->spliceImage($sideNum - $im->getImageWidth(), 0, $im->getImageWidth(), 0); 
}
$im->writeImage('/home/kasahi/tmp/resize.jpg');
$im->destroy();
?>

ImageMagick(imagik)がsegmentation faultするようになってしまった。

kasahi memo: CentOS 5.5のImageMagickのバージョンを上げるのあとに、
cropThumbnailImage()とかspliceImage()とか使おうとすると、

$ php imagik_test.php
zsh: segmentation fault  php imagik_test.php
とかsegmentation faultを起こすようになってしまった。

むーと思って軽く調べると、

-Re: 1 2 OT ImageMagick, OpenMP and QThread Mac OS X WORKAROUND ?
-ImageMagick • View topic - ImageMagick 6.4.8 running too slower

なんだかOpenMP周りがあやしい?
--disable-openmp
を付けてImageMagickを再コンパイルしたほうがよさげ。

でもうちょっと見てみると、 
-rubyでrmagickを使うために - rderaログ

$ ./configure --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
$ make
$ sudo make install
このオプションでコンパイルしてたので先人に習ってそのままやって見る。

結果、segmentation faultが起こらなくなりました。よかった。

2011年2月15日火曜日

CentOS 5.5のImageMagickのバージョンを上げる

peclのimagickでgetImagePropertyを使おうと思ったら、なぜか
PHP Fatal error: Call to undefined method Imagick::getImageProperties()

マニュアルみたら、
PHP: Imagick::getImageProperty - Manual

ImageMagick version 6.3.2 or newer.

になってる。

で、CentOS5.5のImageMagickのバージョンを見てみると、
$ convert -v
Version: ImageMagick 6.2.8 08/28/09 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html
Copyright: Copyright (C) 1999-2006 ImageMagick Studio LLC
で6.2.8だった。

バージョンを上げないとimagickのgetImagePropertyが使えないみたい。

ということで上げる。

uninstall old ImageMagick
$ sudo yum remove ImageMagick


get new ImageMagick sources
$ wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz

untar and configure, make, install
$ tar zxvf ImageMagick.tar.gz
$ cd ImageMagick-6.6.7-7
$ ./configure --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
$ make
$ sudo make install
※configureのオプションに関しては↑を付けておいたほうがよさげ。
-->kasahi memo: ImageMagick(imagik)がsegmentation faultするようになってしまった。

チェック。
$ convert -v
Version: ImageMagick 6.6.7-7 2011-02-15 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
OK。


あとは、peclのimagickを元々使ってたので、一度削除して、再インストール

$ sudo pecl uninstall imagick

で、再インストール。
$ sudo pecl install imagick

これでOK。

そしてhttpdを再起動
$ sudo /etc/init.d/httpd restart

これで無事バージョンが上がって、関数も使えるようになりました。

CentOS 5.5にImageMagick for PHPを入れる

手始めにpecl経由でインストールしようとすると、、
$ sudo pecl install imagick

------------
.....................done: 93,920 bytes
13 source files, building
running: phpize
sh: phpize: command not foundERROR: `phpize' failed
------------
と言われる。phpizeがないみたい。

phpizeを使うために、
$ yum -y install php-devel
を入れる。

再挑戦

$ sudo pecl install imagick

------------
.....................done: 93,920 bytes
checking whether to enable the imagick GraphicsMagick backend... no
checking ImageMagick MagickWand API configuration program... configure: error: not found. Please provide a path to MagickWand-config or Wand-config pr
ogram.
ERROR: `/var/tmp/imagick/configure --with-imagick' failed
------------

ありゃ、もっかいエラー。調べる。

-参考
--[php]PECLコマンドが成功するまでのエラー解決備忘録(imagick編) : うえちょこ@ぼろぐ

ImageMagick-develを入れればよさげ。
というわけでyum経由でインストール。
$ sudo yum -y install ImageMagick-devel

------------
..........
Installed:
ImageMagick-devel.x86_64 0:6.2.8.0-4.1

Dependency Installed:
ghostscript-devel.x86_64 0:8.15.2-9.12.el5_5
lcms-devel.x86_64 0:1.18-0.1.beta1.el5_3.2 
libICE-devel.x86_64 0:1.0.1-2.1
libSM-devel.x86_64 0:1.0.1-3.1
libXext-devel.x86_64 0:1.0.1-2.1
libXt-devel.x86_64 0:1.0.2-3.2.el5

Dependency Updated:
ghostscript.x86_64 0:8.15.2-9.12.el5_5

Complete!
------------

入ったっぽい。 


再々挑戦

$ sudo pecl install imagick

------------
........
Build process completed successfully
Installing '/usr/lib64/php/modules/imagick.so'
Installing '/usr/include/php/ext/imagick/php_imagick_defs.h'
Installing '/usr/include/php/ext/imagick/php_imagick_shared.h'
Installing '/usr/include/php/ext/imagick/php_imagick.h'
install ok: channel://pecl.php.net/imagick-3.0.1configuration option 
"php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini
------------

うまく行ったっぽい。

iniファイルに追記(ファイル名はなんでもOK)

$ sudo vim /etc/php.d/imagick.ini
imagick.ini
extension=imagick.so

2011年1月26日水曜日

お名前のVPSでAPCを使う

環境はCentOS5.5です。

$ sudo yum install pcre-devel
$ sudo pecl listall apc

※もしかしたら事前にこのあたりも入れておいたほうがいいかも
( $ yum install -y php-devel )
( $ yum install -y httpd-devel )

iniファイル作成
$ sudo vim /etc/php.d/apc.ini
extension=apc.so

再起動
$ sudo /etc/init.d/httpd restart