[メモ] 11 May 2011 はてなブックマーク - プレゼン用のPDFをKindle3用の画像zipに変換 Twitterでつぶやく

プレゼン用のPDFをKindle3用の画像zipに変換

ちょっとKindle3で持ち歩いて読みたいプレゼン資料があったので、プレゼン用のPDFをKindle3用の画像zipに変換するスクリプトを書いた。
ImageMagic入れておいてから下記のように入力する。
./conv4kindle.sh KVS_Introduction_v1_2.pdf
するとKVS_Introduction_v1_2.zipみたいのができるので、KindleのPicturesフォルダへコピーする。

[メモ] 11 March 2011 はてなブックマーク - 例のVPNがブロックされたので自前でlinodeにVPN立てた。 Twitterでつぶやく

例のVPNがブロックされたので自前でlinodeにVPN立てた。

上海界隈では有名なVPNが中国からブロックされたので自前でVPN立てたので、その設定メモ。オリジナルはlinodeのドキュメント(一番下の参考を参照)、消失時様にメモしておく。
ちなみに、サーバ環境、クライアント環境ともにUbuntu10.04 LTS 64bit、あとCyanogenMod6.1.1のAndroidでも確認済み。

▽ サーバ側openvpnの設定方法(rootで作業)
必要なソフトを入れる。
apt-get install openvpn udev dnsmasq
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
設定ファイル /etc/openvpn/easy-rsa/2.0/vars を適宜修正
export KEY_COUNTRY="US"
export KEY_PROVINCE="JP"
export KEY_CITY="Tokyo"
export KEY_ORG="makino-style.org"
export KEY_EMAIL="******@example.com"
サーバ証明書、鍵の構築
cd /etc/openvpn/easy-rsa/2.0/
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/clean-all
. /etc/openvpn/easy-rsa/2.0/build-ca
. /etc/openvpn/easy-rsa/2.0/build-key-server server
クライアント証明書、鍵の構築
. /etc/openvpn/easy-rsa/2.0/build-key client1
client1は適当な名前を設定してOK
次に、"Diffie Hellman Parameters"を生成(意味は知らない)
. /etc/openvpn/easy-rsa/2.0/build-dh
後でクライアントへDLしておくべきファイルは以下3つ
ca.crt
client1.crt
client1.key
openvpnサーバ起動に必要な証明書、鍵を移動
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn
サンプル設定ファイルをコピー
cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
以下は、一部linodeドキュメントとは異なる設定。 /etc/openvpn/server.conf の設定を編集、ポートの変更、pushのコメントアウト。
port 1199
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
※ ちなみにdhcp-optionは最初のdnsmasqのインストールが必須なので注意。
ここまで終わったら、openvpnを再起動
/etc/init.d/openvpn restart
先程のクライアント用のファイルをローカルで取得して接続テストする。接続ができたらいったん切断して下記のルーティングの設定にうつる。

この後の続きで、大事なルーティングの設定。
» 続きを読む

[メモ] 05 February 2011 はてなブックマーク - pearのproxy設定とPHPUnitのインストール Twitterでつぶやく

pearのproxy設定とPHPUnitのインストール

メモ。
▽ pearのproxy設定
# 設定確認
pear config-get http_proxy
# XXXXX:xxxxを設定
pear config-set http_proxy XXXXX:xxxx


▽ PHPUnitインストール
PHPUnit公式ページ
https://github.com/sebastianbergmann/phpunit/
初回のインストール作業
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install phpunit/PHPUnit


▽ Ubuntuの場合
sudo apt-get install phpunit
# 阿呆になりますな・・・

[メモ] 23 January 2011 はてなブックマーク - PECLのoauthでproxyを利用 Twitterでつぶやく

PECLのoauthでproxyを利用

メモ、メモ。
作業手順は、環境準備して、ソース落として、パッチ当ててコンパイル。

・環境準備
sudo apt-get install php5-dev php5-curl libcurl4-gnutls-devlibpcre3-dev 

・ソースDL
http://pecl.php.net/package/oauthから落として展開
wget http://pecl.php.net/get/oauth-1.0.0.tgz
tar xvzf oauth-1.0.0.tgz
cd oauth-1.0.0

・パッチ(2011/3/31 間違ってたので修正)
内容はこれ、oauth_with_proxy.patchとして保存。
--- oauth.c	1970-01-01 09:13:08.000000000 +0000
+++ ../oauth.c.patched 2011-03-31 09:58:49.225640423 +0000
@@ -1185,6 +1185,9 @@
}

curl_easy_setopt(curl, CURLOPT_URL, url);
+ // Proxy Settings
+ curl_easy_setopt(curl, CURLOPT_PROXY, "localhost");
+ curl_easy_setopt(curl, CURLOPT_PROXYPORT, "13128");

/* the fetch method takes precedence so figure it out after we've added the OAuth params */
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, http_method);

・パッチあてる
patch < ./oauth_with_proxy.patch

・phpizeして、configureして、makeする。
phpize
./configure
make

あとは、既存のoauth.soと入れ替えればOK。

[メモ] 23 January 2011 はてなブックマーク - Ubuntu 10.04 LTSにてpeclのoauth-1.0.0を入れるときのメモ Twitterでつぶやく

Ubuntu 10.04 LTSにてpeclのoauth-1.0.0を入れるときのメモ

ほんとにただのメモ。
sudo apt-get install php-pearphp5-dev php5-curl libcurl4-gnutls-dev libpcre3-dev
sudo pecl install oauth-1.0.0

[メモ] 07 August 2010 はてなブックマーク - AWSのEC2、LargeInstanceでのQ4Mベンチ結果 Twitterでつぶやく

AWSのEC2、LargeInstanceでのQ4Mベンチ結果

忙しいけど。
参考までにはっつけておきます。
・AmazonEC2(Large)+EBS
・AMIはami-57f28d05のUbuntu10.04LTS 64bit版
・mysqlはaptで導入、データディレクトリはEBS上
・Q4Mは0.9.4でconfigureは下記
./configure CPPFLAGS=-I/usr/include/mysql  
--with-mysql=/home/ubuntu/src/mysql-dfsg-5.1-5.1.41
テスト結果は、もっと読むで
» 続きを読む

[メモ] 09 July 2010 はてなブックマーク - Q4M on Ubuntu10.04 Twitterでつぶやく

Q4M on Ubuntu10.04

MySQLのQueueエンジンであるQ4MをLucidで利用するためのメモ。
ここを参考にインストール。
環境は OS: Ubuntu 10.04 64bit / Mem: 4GB / CPU: Phenom 9550 2.2GHz

▽ Q4Mについてはこちら
Q4M - a Message Queue for MySQL
http://q4m.31tools.com/

▽ インストール
1、 入れておくもの
sudo apt-get install libmysqld-pic mysql-server dpkg-dev libssl-dev

2、 mysqlのソースDL
sudo apt-get source mysql-server

3、 Q4Mダウンロード、解凍
mkdir -p ~/src
cd ~/src
wget http://q4m.31tools.com/dist/q4m-0.9.4.tar.gz
tar xvzf q4m-0.9.4.tar.gz

4、 Q4Mビルド
cd q4m-0.9.4
./configure CPPFLAGS=-I/usr/include/mysql --with-mysql=/tmp/mysql-dfsg-5.1-5.1.41
make
sudo make install
mysql -uroot -p -f mysql < support-files/install.sql


▽ テスト

※ 先にtestというdatabaseを作っておくこと!
1、 テストで利用するPerlライブラリインストール
sudo apt-get install libdata-compare-perl liblist-moreutils-perl
これ入れないとテスト実行中に下記の様なエラーがでる。
t/02-queue-cond.t ......................... Can't locate Data/Compare.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5
/usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at t/02-queue-cond.t line 6.
BEGIN failed--compilation aborted at t/02-queue-cond.t line 6.
とか
t/05-multiwait.t .......................... Can't locate List/MoreUtils.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5
/usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at t/05-multiwait.t line 10.
BEGIN failed--compilation aborted at t/05-multiwait.t line 10.
# Looks like your test exited with 2 before it could output anything.

2、 テスト実行
DBI_PASSWORD='DBのパスワード' ./run_tests.pl

3、 テスト結果
t/01-base-rnd_pos.t ....................... ok   
t/01-base.t ............................... ok
t/02-queue-cond.t ......................... ok
t/02-queue-owned-delete.t ................. ok
t/02-queue.t .............................. ok
t/03-queue-error-wait.t ................... ok
t/03-queue-error.t ........................ ok
t/04-blob-cond.t .......................... ok
t/04-blob.t ............................... ok
t/05-multireader.t ........................ 1/4

Multireader benchmark result:
Number of messages: 6400
Number of readers: 32
Elapsed: 3.444 seconds
Throughput: 1858.207 mess./sec.

t/05-multireader.t ........................ ok
t/05-multirw.t ............................ 1/4

Multi-reader-writer benchmark result:
Number of messages: 6400
Number of readers: 32
Elapsed: 7.188 seconds
Throughput: 890.400 mess./sec.

t/05-multirw.t ............................ ok
t/05-multiwait.t .......................... 1/4

Multi-reader-writer benchmark result under semi-starvation:
Number of messages: 6400
Number of readers: 32
Elapsed: 14.024 seconds
Throughput: 456.349 mess./sec.

t/05-multiwait.t .......................... ok
t/06-multi.t .............................. ok
t/07-trans.t .............................. ok
t/08-forward.t ............................ ok
t/09-pqueue-single-table-wake-listener.t .. ok
t/09-pqueue-single-table.t ................ ok
t/10-largedata.t .......................... skipped: set BIG_TESTS=1 to run theese tests
t/11-conc-compact.t ....................... ok
All tests successful.
Files=19, Tests=70718, 595 wallclock secs ( 8.33 usr 0.54 sys + 103.71 cusr 5.08 csys = 117.66 CPU)
Result: PASS

▽ Q4M関連参考
mixi Engineers’ Blog » Q4M
http://alpha.mixi.co.jp/blog/?cat=19

ハタさんのブログ(復刻版) : Q4MをPHP(PDO)で
http://blog.xole.net/article.php?id=719

Unbuntu 9.10 Server に MySQL 5.1 と InnoDB Plugin と Q4M をインストール。 - Cafe L@ Bebop
http://d.hatena.ne.jp/norizo3/20091112/1257956754

[メモ] 24 June 2010 はてなブックマーク - Extentionビルドしててpcre.hが存在しないと怒られた。 Twitterでつぶやく

Extentionビルドしててpcre.hが存在しないと怒られた。

PECLのモジュールをビルドしていて、下記の様にpcre.hが存在しないと怒られた。
/usr/include/php5/ext/pcre/php_pcre.h:29:18: error: pcre.h: No such file or directory
In file included from /home/fumitaka/Downloads/oauth-1.0.0/php_oauth.h:47,
from /home/fumitaka/Downloads/oauth-1.0.0/oauth.c:14:
/usr/include/php5/ext/pcre/php_pcre.h:37: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/php5/ext/pcre/php_pcre.h:38: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/php5/ext/pcre/php_pcre.h:44: error: expected specifier-qualifier-list before ‘pcre’
make: *** [oauth.lo] エラー 1

解決方法はlibpcre3-devを入れる。
sudo apt-get install libpcre3-dev

ちなみにlibpcre3-devは
Perl 5 Compatible Regular Expression Library - development files 構文と意味をできるだけ Perl 5 のものに似せた正規表現に対応するための関数の ライブラリです。
だそうです。

あとPHP Extentionの作り方のスライド見つけた。
Extention Writing
http://talks.php.net/show/vancouver-ext/0

[メモ] 22 March 2010 はてなブックマーク - ECCUBEの管理画面でリダイレクト先が異常な件の傾向と対策 Twitterでつぶやく

ECCUBEの管理画面でリダイレクト先が異常な件の傾向と対策

管理画面にログインしてもURLがおかしくなってリダイレクトに失敗する現象の傾向と対策。
主に、LAMP環境でECCUBEのinstall.phpで定義してあるHTML_PATHにシンボリックリンクを含むディレクトリが利用されていると発生する。
# ホスティングサービスなんかだと、ユーザは知らなくてもリンクが利用されていたりFTPでは隠蔽されていたりするのでみんな遭遇してるのでは無いかと思う。

▽ 対策
LC_Page.phpのgetRootPathメソッド以下、255行目(2.4.3の場合)にある下記
$htmlPath = str_replace("\\", "/", HTML_PATH);

を、以下のように書き換える。
$htmlPath = str_replace("\\", "/", realpath( HTML_PATH) );

▽ ポイント
URLを合成する際になぜかHTML_PATHをリアルパスへ展開後、再びリアルパスを排除するというやり方を取っているのだけれど、そのリアルパスを排除する部分ではHTML_PATHをリアルパスへ展開していないために展開したHTML_PATHが排除されずに妙な事になってしまう。

[メモ] 17 December 2009 はてなブックマーク - CodeIgniterのform_validationでcallbackを利用するときの注意 Twitterでつぶやく

CodeIgniterのform_validationでcallbackを利用するときの注意

CodeIgniterLogo
色々事情がありまして、PHPをやってるわけですが、今回はフレームワークとして軽量なことで話にあがるCodeIgniterを採用しています。
まあ詳しい部分は公式ドキュメントや、日本語化されたドキュメントが素晴らしいのでそちらを見てほしいわけです。

CodeIgniter - Open source PHP web application framework
http://codeigniter.com/

日本CodeIgniterユーザ会
http://codeigniter.jp/

で、本題にはいりますが、
form_validationでcallbackを利用するときのコールバックされるメソッド名に注意が必要
です。

ドキュメントどおりの場合、usernameのカスタムチェックをコールバックで行う場合には、CodeIgniterのコントローラー内において下記のように記述します。
ちなみこのクラスはhttp://localhost/index.php/formまたはhttp://localhost/index.php/form/indexで呼び出されるとしましょう。

class Form extends Controller {
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'ユーザ名', 'callback_username_check');
$this->form_validation->set_rules('password', 'パスワード', 'required');
$this->form_validation->set_rules('passconf', 'パスワードの確認', 'required');
$this->form_validation->set_rules('email', 'メールアドレス', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}

function username_check($str)
{
if ($str == 'test')
{
$this->form_validation->set_message(
'username_check', 'フィールド %s に、"test"は使えません');
return FALSE;
}
else
{
return TRUE;
}
}
}
?>
要するに、
$this->form_validation->set_rules('username', 'ユーザ名', 'callback_username_check');
function username_check($str)
$this->form_validation->set_message(
'username_check','フィールド %s に、"test"は使えません');
の部分が対応するわけです。

ところが!ですね。
CodeIgniterのコントローラの仕様上、標準状態ではコントローラーのメソッドが_(アンダースコア)で始まっていない場合は下記のようなURLで呼び出せてしまいます。
http://localhost/index.php/form/username_check
さらに標準の仕様では、メソッド名より後ろの部分にスラッシュで文字列を追加すると自動的に引数になってしまいます。
http://localhost/index.php/form/username_check/username
→ つまり $form->username_check('username');を実行したのと同じ。

まずいですね・・・・。
カスタムチェックでDBアクセスとかしてたらさらにまずいですね。

で、ぱっと思い浮かんだ対応方法としては

1、 _remapをオーバーライドしてコントローラの振る舞いを再実装する。
2、 コールバックメソッドを_(アンダースコア)付きにして、コールバック指定のところでちゃんと_(アンダースコア)を入れてやる。

の2つです。1はだるいので2がおすすめです。

さっきの場合だと下記のように修正します。
callback_(アンダースコア)_(アンダースコア)username_check
$this->form_validation->set_rules('username', 'ユーザ名', 'callback__username_check');
_(アンダースコア)username_check
function _username_check($str)
$this->form_validation->set_message(
'_username_check','フィールド %s に、"test"は使えません');

以上で、コールバックメソッドも無事に隠蔽されます。
他にうまい方法有ったり、間違っているようならご指摘してください。
«Prev || 1 | 2 | 3 | 4 | 5 | 6 | 7 || Next»