ul li を利用した横メニューの表示
http://f55.aaa.livedoor.jp/~catbob/reference_css/list/sample-list-menu-line.htm
2010年9月5日日曜日
2010年8月17日火曜日
klabのソーシャルアプリ勉強会に参加してきた
ちょっと古い話になってしまいましたが、【LAMPで作るソーシャルアプリの負荷対策 ~アプリとインフラの調和のテクニック~】に参加してきたので、内容をまとめてみようと思います。
主に、klabが提供しているヒットソーシャルアプリ「恋してキャバ譲」を開発、運用する上で得たノウハウの話でした。
システム構成
主に、klabが提供しているヒットソーシャルアプリ「恋してキャバ譲」を開発、運用する上で得たノウハウの話でした。
システム構成
- フロントWebサーバー
ソフトウェア- apache-2.2系- php-5.2系
負荷対策
- 各種データのキャッシュ
apcを利用しており、さらに、apcの以下の関数で各種変数をキャッシュしている。
apc_store
apc_fetch
apc_delete
- HTTPの待ち行列を取り除く。
具体的には……
mysqlのレプリカにselect文を発行する。
snsのプロフィールを取得するような外部APIの利用とDB接続を混同しないようにする。
駄目な例
1,mysqlへの接続2,snsのプロフィール取得3,mysqlのクエリーの発行4,mysqlの切断
良い例
1,mysqlへの接続
2,mysqlのクエリーの発行
3,mysqlの切断
4,snsのプロフィール取得
- xdebug
遅い処理を検出する
スケールアウト
LVS配下に新しいホストを立てて負荷分散する。
- memcacheサーバー
全フロントサーバーからアクセスできるキャッシュサーバー
利用用途:セッション情報の保存する。目的:各フロントサーバーのセッション情報を一元管理する。
利用用途:DBのクエリー情報をキャッシュする。目的:DBの負荷を下げる。
利用用途:snsのプロフィール情報をキャッシュする。目的:外部API接続を行わないようにして、処理を高速化する。
- DBサーバー
ソフトウェア
mysql-5.1系
負荷対策
- my.cnf でスロークエリーを検出して、プログラム修正を行う。
log-queries-not-using-indexes
インデックスを利用しないqueryを検出
slow_query_log
パラメータに閾値を設定して利用(1sec)
スケールアウト
write系のDBは、ハードウェアの性能アップ
read系は、スレーブの数を増やす。
- サーバーの監視
Ganglia
http://ganglia.info/
2010年8月11日水曜日
twitterの情報を外部サイト(ブログ等)に貼る方法
公式のtwitterウィジェットのタグが発行されているようです。
ここで各種設定をすると、ブログに貼れる様になります。
http://twitter.com/goodies
詳しい使い方は以下のブログが分かりやすかったので。
http://r.nanapi.jp/569/
ここで各種設定をすると、ブログに貼れる様になります。
http://twitter.com/goodies
詳しい使い方は以下のブログが分かりやすかったので。
http://r.nanapi.jp/569/
2010年8月10日火曜日
iTunesのアップデートで英語になった場合の対処
iTunesはいつのまにやらアップデートされたりしますが、アップデート直後に、言語設定が日本から、英語に勝手に書き変えられてしまう現象が発生してしまいました。
編集 > 設定 > 言語 の手順で変えられそうですが、上手く行きませんでした……。
というわけで色々情報を探し回っていたら、同様の現象ではまっているブログ記事を発見してさっそく実行したら上手く行きました。
解決手順は以下のシンプルな手順。
WindowsのプログラムメニューからiTunesを起動する
です。
いつもの癖でショートカットから起動していたのが問題だったようです。
参考元:
http://kohchi.vox.com/library/post/itunesが英語表記になった件.html
編集 > 設定 > 言語 の手順で変えられそうですが、上手く行きませんでした……。
というわけで色々情報を探し回っていたら、同様の現象ではまっているブログ記事を発見してさっそく実行したら上手く行きました。
解決手順は以下のシンプルな手順。
WindowsのプログラムメニューからiTunesを起動する
です。
いつもの癖でショートカットから起動していたのが問題だったようです。
参考元:
http://kohchi.vox.com/library/post/itunesが英語表記になった件.html
2010年8月9日月曜日
pythonの変数
昔読んだ python 本で変数の説明について、pythonはスコープの狭い方から評価される、という記述を見かけたのですが、それをすっかり忘れていて、その法則を久々思い出すパターンにハマったので、メモ代わりに記事にしておこうかと思います。
以下のソースでは、Line 4 でグローバルスコープの hoge を宣言して、関数 func1, func2 で参照しています。
ただし func2 では func2 の関数中で value == 3 の場合、変数 hoge への代入を行っています。
この代入があるせいで func2 内では hoge は func2 のローカル変数になります。
python のソースがバイトコードに変換される際に func2 内の hoge はローカル変数として予約されるので value == 2 のように if 文を通過しない際には func2 内で hoge が宣言されず UnboundLocalError: local variable 'hoge' referenced before assignment という例外を発生してプログラムが終了します。
スコープを股がって変数を利用する際には注意が必要ですね……。
以下のソースでは、Line 4 でグローバルスコープの hoge を宣言して、関数 func1, func2 で参照しています。
ただし func2 では func2 の関数中で value == 3 の場合、変数 hoge への代入を行っています。
この代入があるせいで func2 内では hoge は func2 のローカル変数になります。
python のソースがバイトコードに変換される際に func2 内の hoge はローカル変数として予約されるので value == 2 のように if 文を通過しない際には func2 内で hoge が宣言されず UnboundLocalError: local variable 'hoge' referenced before assignment という例外を発生してプログラムが終了します。
スコープを股がって変数を利用する際には注意が必要ですね……。
# -*- coding: utf-8 -*-
#global変数
hoge = "hoge"
def func1():
return hoge + " return by func1"
def func2(value):
#ここではローカルで hoge が利用される可能性があるので、
#hogeはローカル変数として割り当てられている
if value == 3:
hoge = "value is 3"
return hoge
print func1() #成功
print func2(3) #成功
print func2(2) #hoge がなくて、失敗
test syntax high light
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
2010年7月15日木曜日
登録:
投稿 (Atom)