memcached のインストール。作業メモ
作ったもの
memcached 環境作成(ローカルホスト)
環境は Cent 最新。
yum install -y memcached memcached-devel php-pecl-memcached chkconfig memcached on /etc/init.d/memcached start /etc/init.d/httpd restart
とりあえずこれだけ。
設定ファイルは /etc 配下。 とりあえずデフォルトのまま。
% cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS=""
munin で監視
プラグインフォルダに memcached_ というファイルがあるが、そのままでは動かないらしい。
こちらを参考に http://d.hatena.ne.jp/strkpy/20101106/1288975589
$ cd /etc/munin/plugins $ ln -snf /usr/share/munin/plugins/memcached_ memcached_bytes $ ln -snf /usr/share/munin/plugins/memcached_ memcached_counters $ ln -snf /usr/share/munin/plugins/memcached_ memcached_rates
設定ファイルの追記
/etc/munin/plugin-conf.d/munin-node [memcached_*] env.host 127.0.0.1 env.port 11211
そして再起動。
php からアクセス
<?php $memcache = new Memcached(); $memcache->addServer("localhost", 11211); for ($i = 0; $i < 100; $i++) { $memcache->set("mykey" . $i, "myvalue". $i); }
適当に100件程突っ込んでみる。
内容をリストアップするようなメソッドが無いので、内容の確認は memcached-tool dump で。
php のセッションを memcached に保存
yum でインストールすると、設定ファイルが作成されている。
$ cat /etc/php.d/memcached.ini ; Enable memcached extension module extension=memcached.so ; ----- Options to use the memcached session handler ; Use memcache as a session handler ;session.save_handler=memcached ; Defines a comma separated list of server urls to use for session storage ;session.save_path="localhost:11211"
その他
エディタ(Eclipse PDT) がPHP のメソッドを補完してくれないのでスケルトンを作成
https://gist.github.com/4472094
適当な場所に設置して読み込ませるとちゃんと補完してくれるようになる。
JavaScript でイベント伝播の止め方いろいろ
JavaScript でイベント伝播の止め方いろいろ
- event.preeventDefault()
- event.stopPropagation()
- jQuery.bind("…", function(){reutnr false;})
等の細かい挙動を確認.
結果
jQuery.bind
parent | link | bind2 | |
---|---|---|---|
指定なし | ○ | ○ | ○ |
e.preventDefault() | ○ | × | ○ |
e.stopPropagation() | × | ○ | ○ |
return false; | × | × | ○ |
element.onclick
parent | link | |
---|---|---|
指定なし | ○ | ○ |
e.preventDefault() | ○ | × |
e.stopPropagation() | × | ○ |
return false; | ○ | × |
まとめ
- preeventDefault() はブラウザのデフォルトの挙動をキャンセルする.
- stopPropgation() は親要素へのイベント伝播を止める.
- return false; の挙動は jQuery と onclick で変わるので注意
- jQueryで、同じ要素に複数のリスナを bind した場合は、両方動く
( 止めたかったら独自のフラグを持たせるか、unbind する )
深く考えない時は、jQuery + return false; だけで書いておけば良さそうでしょうか?
検証コード
※ 検証時は、コメントアウトしながら切り替えてます。
Mac で ssh config を設定した後、 「Too many authentication failures for xxxx」エラーへの対応をして、さらに鍵使用時に毎回パスフレーズを訊かれないようにする。
一人でいろんな設定のサーバーと同時に戦う時のメモ。
1. ssh の設定を config で便利に管理
Mac / Linux で ssh 接続をする際、~/.ssh/config ファイルの設定をすると、毎回接続するサーバーの設定のを打ち込む手間が省けます。
$ vi ~/.ssh/config
Host server1
HostName 192.168.0.100
Port 22
User myuser
IdentityFile ~/.ssh/id_rsa
# ログイン
$ ssh server1
ログイン用のシェルを書いてパスを通すか、aliasにでも書いたら? と思ったが、 rsync/scp/git 等のコマンドでも同じ設定が使えるので、こっちの方が俄然便利。
# scp も行ける。
$ scp server1:~/src.file dst
詳細はこちら
http://www.unixuser.org/~euske/doc/openssh/jman/ssh_config.html
踏み台とかもマニアックに設定できる。
2. config を使わないサーバーへ接続する際にエラーが出る際の対処
configの設定が多くなってくると、今度は普通にパスワードで入りたい時に
# 普通にログイン $ ssh user@192.168.1.100 Received disconnect from 192.168.1.100: 2: Too many authentication failures for user
のエラーが頻発するようになる。
これは、サーバーに接続できなかった際に、config で設定されてるで接続を試すため、
失敗の上限に引っかかって起きるエラー。
これを避けるために ssh のオプションでパスワードを強制する。
$ ssh user@192.168.1.100 -o PreferredAuthentications=password
もしくは、~/.ssh/config に別の設定を試さないように指定
# 別のホストの設定を試さない
IdentitiesOnly yes
の記述を追加すれば良い。
3. IdentitiesOnly を設定した際に、毎回パスフレーズを聴かれない様にする
上記のオプションを打つのが面倒なので、 config の設定を行うと、
パスフレーズ設定をしている ssh 鍵が、Macのキーチェーンを参照しなくなり、
毎回キーチェーンが起動するようになる。
※ 「パスワードをキーチェーンに保存」にチェックを入れても、効かない。
キーチェーンを使わないで済む様に、鍵ファイルにパスフレーズを書き込む
$ openssl rsa -in org.key -out new.key # < パスフレーズの入力
( これは Apache で SSL の自動起動設定をする時に使うヤツ )
( 当然、鍵のパーミッションは400で )
ここまで設定すると、キー登録しているホストへは一発で接続でき、普通にユーザー名とパスワードでログインしたいサーバーへは
$ ssh user@192.168.1.100 user@192.168.1.100s password:
と普通にログインできるようになる。
めでたし。
MacでJSLintをの実行環境をいい感じに整える。
参考
http://d.hatena.ne.jp/shobonengine/20110806/1312588647
本体のダウンロード
https://github.com/douglascrockford/JSLint
実行環境の設定
https://gist.github.com/858343
同じディレクトリに放り込んでパスの微修正
( この辺の構成は好みで )
jslint.sh
JSLINT=`dirname $0`/jslint.js JSC_WRAPPER=`dirname $0`/jsc_jslint_wrapper.js
パスを通す
$ alias jslint=/path/to/JSLint/jslint.sh
ちゃんと動くようなら.bash_profile に書く。
このままだと、日本語のコメントが全て
ERRORS: 3:8 Unsafe character. * è〓?#231;´ ã′ç?#187;é搦?#
みたいに怒られる
こちらのサイトを参考にしつつ、
http://d.hatena.ne.jp/m-hiyama/20080411/1207897935
削除するよりも、オプションでチェックを回避できるようにソースを修正
jslint.js
if (at >= 0 && option.unsafechar) { warn_at('unsafe', line, at); }
jsc_jslint_wrapper.js
goodPartsOptions = {devel: true, // (略) unsafechar: false },
せっかくだからフォークしてまとめてみた。
https://github.com/m-s-modified/JSLint
PHP の short_open_tag 爆発しろ。
PHPの short_open_tag の仕様がバージョンによってコロコロ変わるのでメモ。
まとめ
バージョン | デフォルト | 変更可能 | 備考 |
---|---|---|---|
PHP 4.0.0 | On | PHP_INI_ALL | "<?=" "<?" の両方に影響 |
PHP < 5.3 | Off | PHP_INI_PERDIR | "<?=" "<?" の両方に影響 |
PHP 5.4 | On | PHP_INI_PERDIR | "<?=" は常に使用可能 (設定を変更できない) |
※ 一部、未検証です。
※ 一部サイトで、「5.4では short_open_tag ディレクティブが無くなる」というような書き方をしていますが、"<? " を使うかどうかの指定はできました。
Basic 認証中のページで OGP のテストをする
Basic 認証中のサイトだと Facebook の OGP の確認ができない。
これは、「いいね!」ボタンを押した後に、Facebook のクローラが OGP を改めて読みにくるため。
なので、「Facebook のクローラには Basic 認証を適用しない」設定を追記すれば良い。
Facebook からのアクセスは
"GET / HTTP/1.1" 401 480 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
こんな感じのログを残すので、 『UserAgent : facebookexternalhit』を許可する
# Basic の基本設定 AuthUserFile /path/to/.htaccess AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user Satisfy Any Order Allow,Deny # 許可するIP 1 Allow from xxx.xxx.xxx.xxx # 許可するIP 2 Allow from yyy.yyy.yyy.yyy # FB のクローラを許可 SetEnvIf User-Agent "^facebookexternalhit.*$" fb_crawler SetEnvIf User-Agent "^facebookplatform.*$" fb_crawler Allow from env=fb_crawler
で、こんな感じ。