鹿駆動勉強会に参加しました。
初のLTということで緊張しましたが、スタッフ・ご参加の皆さんのおかげで楽しい勉強会となりました。
私が発表したのは「PHPフレームワークKohana」についてです。スライドをアップしました。
PHPフレームワークKohana
修行の日々を淡々と
鹿駆動勉強会に参加しました。
初のLTということで緊張しましたが、スタッフ・ご参加の皆さんのおかげで楽しい勉強会となりました。
私が発表したのは「PHPフレームワークKohana」についてです。スライドをアップしました。
PHPフレームワークKohana
Kohanaのビューを表示するにはテンプレートファイルを作成してコントローラーに以下のように記述します。
$view = View::factory('index'); // テンプレートファイルが view/index.php $this->response->body($view);
さらにビューの中に変数の値をセットしたい場合はこう書きます。
$view = View::factory('index') ->set('user','太郎'); // 変数$userに'太郎'をセット
ビューファイルには$userという変数名になります。
<?php echo $user; ?>
set()と同様にbind()も使えます。
set()が値渡しであるのに対して、bind()は参照渡しです。
$view = View::factory('index') ->set('user','太郎'); // 参照渡しで$userに'太郎'をセット
bind()は参照渡しなので以下のように定数を渡したりするとエラーになります。
$view = View::factory('index') ->set('result',true); // trueは参照渡しできないのでエラーになる
MySQL勉強会in大阪(第2回)に行ってきました。
高可用性を実現するシステム
レプリケーション
・マスター・スレーブ構成で参照性能を向上させる
・バックアップにも使える。但し、スレーブをそのままバックアップにするのはNG。スレーブを止めてフルバックアップをとる。
・MySQL5.5からは準同期レプリケーションが使える。
mySQL+DRBD
・linux専用・・・ノード間データコピー
3rdベンダー製HAソフト使用
・共有ディスクにデータを保存
4.MySQL Cluster
・マルチサイト・クラスタリング
データセンターを跨いだレプリケーション
同期レプリケーション(ネットワーク品質はかなり高いものが必要)
・シェアードナッシング型クラスタ・・・共有ディスクを使わない
データをデータノードに分散&ミラーリングすして格納する。
・MySQL Cluster 7.2はJoin性能もアップ
・NoSQL memcachedAPI対応
トランザクション対応キーバリューストア
MySQLに対応&レプリケーション対応のKVSとして使える
mysqlnd_ms
mysqlnd(MySQL native driver for PHP)
・PHPのmysql(i)拡張PDO_MySQLより早い
・商用OKなライセンス
mysqlnd_ms
MySQL向けロードバランサ
PHPから送られてきたクエリを更新か検索かで判断してマスター・スレーブに自動的に振り分ける
CentOS6.2にPHP5.3.9とMySQL5.5を導入
http://myhome.munetika.mydns.jp/ossdbwiki/index.php/CentOS6.2%E3%81%ABPHP5.3.9%E3%81%A8MySQL5.5%E3%82%92%E5%B0%8E%E5%85%A5
—-
TODO:
NoSQL memcachedAPI使ってみる
kohanaでmysqlndが使えるか確認する
先日書いたDropboxでemacsの設定を共有ですが、もう1台のmacとも設定を共有しようとしたらエラーが出ました。
emacsのバージョンが合っていないと駄目みたいなので、brewで23.3にアップデートします。
brew install --cocoa emacs
これでいけるはずが、何故かこんなエラーが・・・。
原因はここで解りました。
homebrewにバグが合ったようです。
cd `brew --prefix` git reset --hard FETCH_HEAD
homeberwをバグの無い状態にして再度実行します。
brew install --cocoa emacs ・・・ ==> Summary /usr/local/Cellar/emacs/23.3b: 3583 files, 94M, built in 5.8 minutes # インストールが終わったらアプリケーションフォルダにコピーする cp -a /usr/local/Cellar/emacs/23.3b/Emacs.app /Applications/
Dropboxでemacsの設定を共有する方法です。
ユーザディレクトリの.emacs.dには以下のファイルを作成します。
/.emacs.d (~/.emacs.d) init.el
※auto-saveファイルの保存先など、マシンごとに独立しているべきディレクトリと設定ファイルはここに置きます。
Dropboxの共有ディレクトリに.emacs.dフォルダを作成します。
Dropboxの共有ディレクトリの.emacs.dには以下のファイル/ディレクトリを作成します。
/.emacs.d(Dropbox共有でディレクトリ内) /elisp --- elispインストール用ディレクトリ※ init.el --- 共通設定ファイル init-windows.el --- Windows用設定ファイル init-macos.el --- mac用設定ファイル
※異なるアーキテクチャ間でelcを共有すると問題が出るかもしれないが、今のところ使えているので簡単のためにelispディレクトリは1つにする
ユーザディレクトリの.emacs.d/init.elの記述
;; Dropboxの共有ディレクトリにおいた.emacs.dのパスを定義 (setq dropbox-emacs-dir "c:/Users/hoge/Dropbox/.emacs.d") ;; Dropboxのinit.elを読み込む (load (concat dropbox-emacs-dir "/init"))
Dropboxの.emacs.d/init.elの記述
;; LOAD-PATHとしてDropboxのelispディレクトリを読み込む (setq load-path (cons (concat dropbox-emacs-dir "/elisp") load-path)) ;; OSごとに異なる設定ファイルを読み込む (cond ((eq window-system 'w32) (load (concat dropbox-emacs-dir "/init-windows"))) ((or (eq window-system 'ns) (eq window-system 'mac)) (load (concat dropbox-emacs-dir "/init-macos")))) ;; install-elisp.el ;; install-elispのディレクトリ先をDropboxのelispディレクトリにする (require 'install-elisp) (setq install-elisp-repository-directory (concat dropbox-emacs-dir "/elisp/")) ; auto-install.el ;; auto-installのディレクトリ先をDropboxのelispディレクトリにする (require 'auto-install) (setq auto-install-directory (concat dropbox-emacs-dir "/elisp/"))
mac OS X 10.7 Lionでジャーンという起動音を消す方法。
厳密にはログアウトするときに音量をミュートし、ログインしたときにミュートを解除する。
まずLoginHookとLogoutHookが設定されているが確認する
sudo defaults read com.apple.loginwindow LoginHook
sudo defaults read com.apple.loginwindow LogoutHook
何かHookが設定されていればHookスクリプトのパスが表示されます。
何も設定されていないときは
The domain/default pair of (com.apple.loginwindow, LoginHook) does not exist
と表示されます。
既にLoginHook,LogoutHookに何か設定されていたら、それぞれスクリプトに以下の記述を追加します。
※scriptは#!/bin/bashを想定しています。違う場合は適宜変更する。
LoginHookに追記
osascript -e 'set volume with output muted'
LogoutHookに追記
osascript -e 'set volume without output muted'
これで完了。
LoginHook,LogoutHookに何も設定されていなければ、ログイン用とログアウト用のスクリプトを作成します。
ファイルの位置はどこでもよい。
vi /path/to/login.sh
#!/bash/bin osascript -e 'set volume without output muted'
vi /path/to/logout.sh
#!/bash/bin osascript -e 'set volume with output muted'
それぞれ保存して保存して実行権限をつけます。
chmod +x /path/to/login.sh
chmod +x /path/to/logout.sh
ログイン・ログアウトのHookを設定します。
sudo defaults write com.apple.loginwindow LoginHook /path/to/login.sh
sudo defaults write com.apple.loginwindow LogoutHook /path/to/logout.sh
昔はTextile入力が嫌いだった(データに余計な文字が入るので)けど、もういろいろ面倒なのでマークアップしたい。
Wiki記法プラグインを入れようと思った。
WordPressのWiki記法プラグインは沢山あるけれど、私として外せないポイントはシンタックスハイライターと干渉しないこと。
まあそれ以外はなんでもいい。
シンタックスハイライターはSyntax Highlighter for WordPressを使っています。
何個か試したんだけど、ぴったりなのが無い。。。
[]で囲むタイプはSyntax Highlighterと干渉するし、そうじゃないのは投稿とは別にWiki固定ページを作るタイプが多い。
([]で囲むものでもPHP MarkUp方式ならSyntax Highlighterのタグを
をで囲むことで上手く動く。けどそれも面倒)
捜すのに疲れたので、方向転換してWP Zen-Codingを入れてみた。
これはとても素晴らしい。
Zen-Codingをもっとマスターしたくなった。
WordPress3.1.1/CentOSです。
WordPressで画面からプラグインのインストールを行うのにFTPとFTPS接続が使えるのですが、サーバの都合でSSHが使いたかったので、その設定メモ。
phpからssh2が使えれば、wordpressの設定画面にSSHが使えるようになるらしい。
そのためにpeclでssh2をインストールする。
pecl install ssh2
エラーが出た。
Failed to download pecl/ssh2 within preferred state “stable”, latest release is version 0.11.3, stability “beta”, use “channel://pecl.php.net/ssh2-0.11.3” to install
install failed
言われる通りにchannnelを指定してもエラーになるのでwgetで取ってくる。
wget http://pecl.php.net/get/ssh2-0.11.3.tgz
pecl install ssh2-0.11.3
またもエラー
checking for ssh2 files in default path… not found
configure: error: The required libssh2 library was not found. You can obtain that package from http://sourceforge.net/projects/libssh2/
ERROR: `/var/tmp/ssh2/configure –with-ssh2′ failed
libssh2を入れる。
yum install libssh2 libssh2-devel
もう一度pecl install。これでやっとインストールされた。
pecl install ssh2-0.11.3
Build process completed successfully
Installing ‘/usr/lib64/php/modules/ssh2.so’
install ok: channel://pecl.php.net/ssh2-0.11.3
configuration option “php_ini” is not set to php.ini location
You should add “extension=ssh2.so” to php.ini
ライブラリを読み込むようにする
echo “extension=ssh2.so” > /etc/php.d/ssh2.ini
/etc/init.d/httpd restart
SSHのキーを作成する。このキーはWEBからアクセスできないところに置く。
cd /var/www/
mkdir wp-ssh-key
ssh-keygen -b 2048 -t rsa -f wp-ssh-key/id_rsa # パスフレーズは入れても入れなくても良い
chown -R apache.apache wp-ssh-key/ # apacheからアクセスできるように
authorized_keysに登録
cat wp-ssh-key/id_rsa.pub >> ~/.ssh/authorized_keys
WordPressの設定に追記。 wp-config.php
// SSH Settings define('FS_METHOD', 'ssh2'); define('FTP_PUBKEY', '/var/www/wp-ssh-key/id_rsa.pub'); define('FTP_PRIKEY', '/var/www/wp-ssh-key/id_rsa'); define('FTP_USER', 'username'); //define('FTP_PASS', 'passphrase'); // パスフレーズを付けたときはここに書く define('FTP_HOST', 'www.example.com:22');
メモ。
@kiy0taka ソースコードレビューシステムGerritとの連携
Gerritの読み方はゲリット。Android界隈で使われているらしい。
レビューとベリフィケーション管理が出来る。チームで使う前提なのかも知れない。
@ikikko 中規模プロジェクトでのJenkinsの運用を支える技術
ライブラリ管理ツールにGradle
プロジェクトに対する一括変更スクリプトコンソール
Jenkinsアドベントカレンダー要チェック
@tamagawa_ryuji Amazon EC2でJenkinsを使ってみる
EC2使ってみたい。課金は1時間単位。
スレーブへのビルドが簡単にできる。
@kohsukekawa Building Jenkins plugin with Ruby
RubyだけでJenkinsプラグインを作るツール
@haradakiro Arduino でつくる XFD のつくり方とその効果
Jenkinsのステータスを読み取り、Arduino経由でランプを光らすデモ。
Arduino買ったままになっていたことを思い出した。
kohanaをインストールしたままの状態ならば、各ページへは
/index.php/コントローラー名/アクション名
という形式でアクセスするようになっているでしょう。
ここからindex.phpを取り除くにはmod_rewriteを使います。
.htaccessに以下の記述をします。
RewriteEngine On RewriteBase / RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT]
これで”/コントローラー名/アクション名”の形式でページにアクセスできるようになります。
でもまだkohanaが生成するurlにはindex.phpが付いていますね。
ここからもindex.phpを取り除きたい場合はapplication/bootstrap.phpを編集します。
Kohana::init()の呼び出し部分をこのように変更します。
Kohana::init(array( 'base_url' => '/', 'index_file' => '', ));