開発ネタではありませんが、このサイトは、購入する時に参考になります。
http://antainer.blogspot.jp/p/docomo-smartphone-monthly-support.html
ついでに
http://paro2day.blog122.fc2.com/blog-category-17.html
ここもキャンペーン情報が掲載されているのでとっても参考になります!
2012年12月18日火曜日
2012年12月14日金曜日
2012年12月11日火曜日
IISにインストールしたSSLを、Apacheに流用する方法
できるんですね。知りませんでした。以下のサイトをご参照ください。
http://webos-goodies.jp/archives/51249316.html
http://webos-goodies.jp/archives/51249316.html
2012年12月4日火曜日
Linux のパッチ情報
Redhat Linux
https://rhn.redhat.com/errata/rhel-server-errata.html
CentOS
http://lists.centos.org/pipermail/centos-announce/
https://rhn.redhat.com/errata/rhel-server-errata.html
CentOS
http://lists.centos.org/pipermail/centos-announce/
2012年11月27日火曜日
2012年11月5日月曜日
リンクが押された時にGoogle map を表示する方法
pageがloadされた時にGoogle mapを表示するのはよくありますが、リンクをクリックされた時にだけ、GoogleMap API のJSを読み込み、その後で地図を生成するには以下の方法で可能です。
1. jQueryを使うので、HEADタグ内で読み込む
<script type="text/javascript" src="../common/js/jquery-1.3.2.p.min.js"></script>
2. Google MAP APIを読み込むfunctionを作成する。HEADタグ内でOKでしょう。
この時、読み込みが終わったときのcallback 関数を指定しておきます。
function mapWrite(){
$.ajax({
async: false,
type: "GET",
url: "http://maps.google.com/maps/api/js",
data: "sensor=false&callback=mapWrite2",
dataType: "script"
});
} // end of function
3. callback関数を定義します。この中で地図の描画をします。
function mapWrite2(){
if( !$('div#map').length ){
$('table#maptbl').before('<div id="map" style="width: 400px; height: 400px"></div>');
googlemapWrite('緯度','経度'); //この中でgoogle mapを書き出す。ここはよくある記述なので省略します。
}
上の例では、div#mapが空だったときのみ、Googlemapを表示するdivタグを挿入します。
どこに挿入するかで、このあたりは変わってくるかと思います。
4. リンクを生成します。
<a href="javascript:mapWrite();">Googlemapを表示する</a>
2012年10月19日金曜日
駅データが欲しいとき
http://www.ekidata.jp/
http://express.heartrails.com/
なんかが便利です。
ekidata.jp はcsvでのダウンロードもできます。
2012年10月18日木曜日
URL rewrite の書き方
Apacheの URL rewrite の記述がわからなくなったらはここを見るべし
http://blog.dawgsdk.org/weblog/archives/411011
http://blog.dawgsdk.org/weblog/archives/411011
2012年8月29日水曜日
Metro サンプル
Windows8 Metro (Javascript) でのサンプル
言語の問題で警告が出ますが、動いているので、一旦、警告は忘れます。
- メッセージを表示させたい時。JSのalert()に相当するもの。
- 別のHTMLファイルをincludeしたい時。
言語の問題で警告が出ますが、動いているので、一旦、警告は忘れます。
- ページの移動をする
<p><a href="ms-appx:///page1.html">2ページ目へ移動</a></p>
これだけでもリンクはできるが、↓のようにするのがいいようだ。
http://msdn.microsoft.com/ja-jp/library/windows/apps/hh452768.aspx
2012年8月21日火曜日
CPAN で ftp ではなくhttp でモジュールをget する方法
# cpan -i CGI::xxxxx
CPAN: Storable loaded ok
Going to read /home/izawa/.cpan/Metadata
Database was generated on Tue, 17 Jul 2012 05:43:03 GMT
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
とここで止まってしまう場合は、ファイアウォールなんかでFTP接続ができていない。
なので、HTTP接続に変えます。
1. perl -MCPAN -e shell
2. cpan > o conf
で設定の確認
3. urllist
ftp://ftp.kddilabs.jp/CPAN/
と表示されます。まあ、当たり前か。。。
4. cpan> o conf urllist pop ftp://ftp.kddilabs.jp/CPAN
でftp設定を追い出しましょう。
5. cpan> o conf urllist push http://ftp.kddilabs.jp/CPAN
で設定を行い。
6. cpan> o conf commit
commit: wrote /usr/lib/perl5/5.8.8/CPAN/Config.pm
で設定完了。念のため、o conf で設定の確認はしましょう。
これでftpではなく、httpで接続するので、モジュールのダウンロードが可能になります。
2012年8月3日金曜日
Google Developers
https://developers.google.com/?hl=ja
Google Maps JavaScript API v3
https://developers.google.com/maps/documentation/javascript/tutorial?hl=ja
Google Maps JavaScript API v3
https://developers.google.com/maps/documentation/javascript/tutorial?hl=ja
2012年7月24日火曜日
iptables の設定
iptables で指定されたIPからのアクセスのみを許可したい設定例
- modprobe ip_conntrack_ftp を実行する
- /var/sysconfig/iptables の以下の行を追加する
- iptables-save で保存
- /etc/init.d/iptables restart で再起動をかける
# 追加する行
# for http
-A INPUT -i eth0 -s xx.xx.xx.xx/32 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# for ftp
-A INPUT -i eth0 -s xx.xx.xx.xx/32 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -s xx.xx.xx.xx/32 -p tcp --dport 21 -j ACCEPT
2012年6月29日金曜日
ログファイルから指定された部分を抽出したい時
1. cut コマンドを使う
cut -f 1,5 -d , logfile
この場合は、logfile から , をデリミターとして、分割されたパートの1つ目と5つ目を表示させる。
cut -f 1,5 -d , logfile
この場合は、logfile から , をデリミターとして、分割されたパートの1つ目と5つ目を表示させる。
2012年6月25日月曜日
基本認証をかけているディレクトリのサブディレクトリの認証を解除したいとき
.htaccess ファイルを設置。
そのファイルに、Satisfy Any と記述する。
これで、特定ディレクトリのみ解除することができます。
2012年6月12日火曜日
MT: ブログ毎にアイテムアップロードのデフォルトディレクトリを変更する
MTでアイテムをアップロードするデフォルトディレクトリを変更することができるのはご存じだと思うが、ブログ毎にそれを変えたい時はどうするか?
以下のようにすれば、ブログ毎にディレクトリを変更することができます。
変更ファイル:MTインストールディレクトリ/tmpl/cms/include/asset_upload.tmpl
</mt:if>
</select> /
<mt:ignore> ▼ ▼ ▼サンプル :これを追加▼ ▼ ▼</mt:ignore>
<mt:blogid setvar="workid" />
<mt:if name="workid" eq="20">
<mt:setvar name="updir" value="pdf" />
<mt:elseif name="workid" eq="19">
<mt:setvar name="updir" value="css" />
<mt:else>
<mt:setvar name="updir" value="img" />
</mt:if>
<mt:ignore> ▲▲▲サンプル ▲▲▲</mt:ignore>
<input type="text" name="extra_path" id="extra_path" class="text path" value="<mt:getvar name="updir">/<mt:var name="extra_path" escape="html">" />
-----
ブログIDを変数にセットして、その変数毎にディレクトリ値を変数に格納します。
最後に、getvarディレクトリ値を取得すれば完了です。
以下のようにすれば、ブログ毎にディレクトリを変更することができます。
変更ファイル:MTインストールディレクトリ/tmpl/cms/include/asset_upload.tmpl
</mt:if>
</select> /
<mt:ignore> ▼ ▼ ▼サンプル :これを追加▼ ▼ ▼</mt:ignore>
<mt:blogid setvar="workid" />
<mt:if name="workid" eq="20">
<mt:setvar name="updir" value="pdf" />
<mt:elseif name="workid" eq="19">
<mt:setvar name="updir" value="css" />
<mt:else>
<mt:setvar name="updir" value="img" />
</mt:if>
<mt:ignore> ▲▲▲サンプル ▲▲▲</mt:ignore>
<input type="text" name="extra_path" id="extra_path" class="text path" value="<mt:getvar name="updir">/<mt:var name="extra_path" escape="html">" />
-----
ブログIDを変数にセットして、その変数毎にディレクトリ値を変数に格納します。
最後に、getvarディレクトリ値を取得すれば完了です。
2012年6月4日月曜日
oracle 自動起動&停止
- /etc/oratab で自動停止したいインスタンスをYにする
インスタンス名:/opt/oracle/product/11.2.0/dbhome_1:Y
- rcスクリプトは以下のようにする。 http://www.server-world.info/query?os=Scientific_Linux_6&p=oracle11g&f=5 に掲載されていました。
11.0.2.4 にしたら、リスナーの起動停止が思うようにできなかった。rootで起動したら、rootで停止しないといけないようです。
よって、以下のスクリプトは、
# su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"<
$ORACLE_HOME/bin/lsnrctl start<
のようにスイッチせず、リスナーの起動停止をしましょう。
---- 以下スクリプト
#!/bin/bash
# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management S
ystem.
#
# processname: oracle
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_USER=oracle
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORACLE_HOME_LISTNER=$ORACLE_HOME
ORACLE_UNQNAME=グローバルDB名
case "$1" in
'start')
if [ -f $LOCKFILE ]; then
echo $0 already running.
exit 1
fi
echo -n $"Starting Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch $LOCKFILE
;;
'stop')
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping.
exit 1
fi
echo -n $"Stopping Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f $LOCKFILE
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $LOCKFILE ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 [start|stop|status]"
exit 1
esac
exit 0
- rcスクリプトを登録する
/sbin/chkconfig --add /etc/init.d/oracle
/sbin/chkconfig --level 5 oracle on
2012年5月29日火曜日
Oracle いろいろ
- Oracleに出てくる名前について知りたい時
http://www.shift-the-oracle.com/config/oracle_sid-db_name-global_name.html
- インストール前のコマンド
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh
- .bash_profile に記述している環境変数
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_UNQNAME=FORK
WindowsマシンでX
フリーのXserver である、Xming。
接続するホストの設定は、
インストールディレクトリー直下にある、X0.hostsにIPアドレスの記述をしないと接続できないから注意しましょう。
おそらくホスト名でも大丈夫だと思うが、検証はしていない。
Xmingのインストールは、
http://kaiseki-web.lhd.nifs.ac.jp/gecev/xserver/main_new.htm
あたりを参考ください。
接続するホストの設定は、
インストールディレクトリー直下にある、X0.hostsにIPアドレスの記述をしないと接続できないから注意しましょう。
おそらくホスト名でも大丈夫だと思うが、検証はしていない。
Xmingのインストールは、
http://kaiseki-web.lhd.nifs.ac.jp/gecev/xserver/main_new.htm
あたりを参考ください。
後からLinuxのパッケージをインストールしたい時
初期インストール時にXWindowsを入れて無く、後から、XWindowsが欲しくなった時、依存関係を調べてインストールするのは大変です。
その場合、以下のようにすればOKです。
# yum grouplist
# LANG=C yum grouplist
# LANG=C yum groupinstall "X Window System"
こんな簡単にインストールできるのは知りませんでした。
ここを参考にしました。
ありがたい情報でした。
2012年5月25日金曜日
Google検索結果のショートカット
会社を検索した際に、ショートカットが表示されていることがあります。これって、どうしたらいいかよくわかりませんが、https://support.google.com/webmasters/bin/answer.py?hl=ja&answer=47334&topic=2371325&ctx=topic という話は見つけました。まともにサイトを作れば、ショートカットが自動で表示されるんでしょうか?
2012年5月18日金曜日
HTMLの文法チェックをするためには
このプラグインが便利です。
https://addons.mozilla.jp/firefox/details/249
Firefox12.0 で使っています。
HTML文法に間違いや警告がある場合は、Firefoxの右下に件数が表示されます。そこをクリックすると、どこに問題があるのか教えてくれるようになってます。
HTMLコーダーさんからもらったHTMLテンプレートを組み込む際に間違えてしまうことが多いので、このプラグインで確認をしています。
https://addons.mozilla.jp/firefox/details/249
Firefox12.0 で使っています。
HTML文法に間違いや警告がある場合は、Firefoxの右下に件数が表示されます。そこをクリックすると、どこに問題があるのか教えてくれるようになってます。
HTMLコーダーさんからもらったHTMLテンプレートを組み込む際に間違えてしまうことが多いので、このプラグインで確認をしています。
鍵を使ってサーバにログインするための設定
ここがわかりやすい!
http://ysweb.blogspot.jp/2008/07/no002ssh.html
新規でユーザを発行する時、コマンド、手順を忘れてしまっているので、その時にはこのサイトを見ています。
http://ysweb.blogspot.jp/2008/07/no002ssh.html
新規でユーザを発行する時、コマンド、手順を忘れてしまっているので、その時にはこのサイトを見ています。
2012年5月14日月曜日
2012年5月10日木曜日
MT: 特定カテゴリのサブカテゴリを表示する
- 登録されているカテゴリを表示させたい場合
ある特定カテゴリに所属しているサブカテゴリのみを表示したい場合は、以下のようにする。
<mt:SubCategories category="hogehoge">
<$mt:CategoryLabel $>
</mtSubCategories>
これで、hogehogeというカテゴリに属しているサブカテゴリのみを表示することができる。
- 記事に設定されているカテゴリを表示させたい場合
<MTEntryCategories glue=" ">
<$MT:CategoryLabel $>
</MTEntryCategories>
これでは余計なカテゴリまで表示されてしまう場合は、IFなどで判定するようにする。例えば、
<MTEntryCategories glue=" ">
<MT:If tag="cat_type" eq="hogehoge">
<$MT:CategoryLabel $>
</MT:If>
</MTEntryCategories>
MT: 文字列の置換
文字列の置換
<mtunless regex_replace="/mt-dev.test-hoge.co.jp/g","www.hogehoge.co.jp">
これで<mtunless>ブロックに含まれる mt-dev.test.co.jp が www.test.co.jp に置換される。
テスト環境と本番環境との差を吸収するために使うことがある。
まあ、サイトルートから記述するようにすればいいんだが、RSSなどにはhttp://からの記述が必要のため、たまに使うことがあります。
<mtunless regex_replace="/mt-dev.test-hoge.co.jp/g","www.hogehoge.co.jp">
これで<mtunless>ブロックに含まれる mt-dev.test.co.jp が www.test.co.jp に置換される。
テスト環境と本番環境との差を吸収するために使うことがある。
まあ、サイトルートから記述するようにすればいいんだが、RSSなどにはhttp://からの記述が必要のため、たまに使うことがあります。
MT:ブログ記事でカスタムフィールドに追加した画像を表示させたい時
カスタムフィールド
とし、ブログ記事表示は、以下のようになります。
<MTIfNonEmpty tag="Image2"><MT:Image2Asset><img src="<$MTAssetURL$>" /></MT:Image2Asset></MTIfNonEmpty>
使用バージョン:Movable Type Pro Version 5.13-ja
- システムオブジェクト:ブログ記事
- 種類:画像
- テンプレートタグ:Image2
とし、ブログ記事表示は、以下のようになります。
<MTIfNonEmpty tag="Image2"><MT:Image2Asset><img src="<$MTAssetURL$>" /></MT:Image2Asset></MTIfNonEmpty>
使用バージョン:Movable Type Pro Version 5.13-ja
2012年4月11日水曜日
Movable Type version5.13インストールではまったこと
ApacheにNamedベースのバーチャルホストを設定して、WindowsマシンのhostsファイルにIPアドレスを記述してインストールを開始した。
しかし、インストールが先に進まない!エラーも表示されない。かなりはまってしまったが、Apacheマシン上でバーチャルホストの名前解決ができないのが原因だった。/etc/hostsにホストを記述したところ、先に進めることができ、無事にインストールが完了した。
FAQにのせておいてほしかった。。。。>Six Apartさん
しかし、インストールが先に進まない!エラーも表示されない。かなりはまってしまったが、Apacheマシン上でバーチャルホストの名前解決ができないのが原因だった。/etc/hostsにホストを記述したところ、先に進めることができ、無事にインストールが完了した。
FAQにのせておいてほしかった。。。。>Six Apartさん
2012年3月21日水曜日
phpを高速化する60の方法
http://suzuzuzuru.blogspot.jp/2012/03/php60.html からの転載です。
-----
phpを高速化する60の方法
01. static にできるメソッドは static として宣言しよう。(4倍速い)
02. echo の方が print より速い。
03. echo ‘文’,'字’; (カンマ区切り)の方が、’文’.'字’ (ドット連結)より速い。
04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。
05. 大きい配列のような変数は unset() してメモリを解放しよう。
06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。
07. require_once はハイコストなのです。
08. include や require でファイルはフルパスで指定しよう。
09. スクリプト開始時間は time() でなく $_SERVER['REQUEST_TIME'] で取得。
10. 可能であれば、正規表現より strncasecmp、strpbrk、stripos を使おう。
11. strtr(str_replace の4倍速い) > str_replace > preg_replace の順に速い。
12. 引数に配列、文字列両方を受け入れるような関数は避け、個別に関数化しよう。
13. if をたくさん使ってるなら switch を活用しよう。(訳注:ってことでいい?)
14. @によるエラー制御はすんごく遅い。
15. Apache の mod_deflate(Apache2系) を ON にしておこう。(No.42 参照)
16. 処理が終わったらデータベースの接続は切っておこう。
17. $row['id'] は $row[id] より7倍速い。
18. エラーメッセージはハイコスト。
19. for 文の条件式には count($array) のような関数をいれない。(変数に格納)
20. メソッド内ではローカル変数をインクリメントするのが一番速い。
21. グローバル変数のインクリメントはローカル変数より2倍遅い。
22. オブジェクト変数(例:$this->v++)のインクリメントはローカルより3倍遅い。
23. 未定義のローカル変数のインクリメントは定義されたものより9~10倍遅い。
24. 未定義のグローバル変数についても同様。
25. メソッドの起動コストはクラス内のメソッド数とは無関係。
26. 派生クラス内のメソッドは、基底クラスで定義されたメソッドよりも速い。
27. 引数1つの空関数を呼び出すのにも、ローカル変数 $local++ 7~8回分のコスト。
28. ダブルクォート より シングルクォート の方が若干速い。
29. 03 と重複か。(注:これは複数の引数を受け取る echo でのみ有効)
30. PHP スクリプトは静的な HTML ページよりも2~10倍の時間がかかる。
31. キャッシュを利用しよう。通常、コンパイル回数 x 25~100% 分速くなる。
32. これもキャッシュについて。memcached とか使おうよ。
33. if (strlen($foo) < 5) を調べたいなら if (!isset($foo{5})) と書くと速い。
34. $i++ より ++$i の方が速い。(そういう opcode optimizer が走ってる場合)
35. 全部が全部 OOP でなくても良い。(コストやメモリの浪費になってるかも)
36. すべてのデータをクラスにしようとしないこと。配列も十分便利です。
37. メソッドを分割しすぎない。(どれを再利用するのかよく考えよう)
38. メソッドを分割したくなったら後でいくらでもできる。
39. もとから用意されてる 関数たち を活用しよう。
40. 非常に時間のかかる関数 → C言語による拡張モジュール化も検討しよう。
41. コードをプロファイリングしてボトルネックを見つけよう。Xdebug とか。
42. Apache の mod_gzip(Apache 1系)は、転送量を最大80%減。
43. : A HOWTO on Optimizing PHP with tips and methodologies を見てね。
44. ループ処理には foreach を使おう。
45. 複雑なクラスを作ってるなぁと思ったら → Singleton モデルを検討しよう。
46. DB に入れる値なら GET より POST を使おう。(パフォーマンスが上がる)
47. 可能なら正規表現より、ctype_alnum、ctype_alpha、ctype_digit を使おう。
48. ファイル指定は basename / file_exists / open_basedir よりフルパス指定が速い。
49. require_once より require を使おう。(opcode キャッシュがらみの理由で)
50. 一時的なファイルを作るときには tmpfile や tempnam を使おう。
51. 外部サービスに XMLHTTP で接続するときにはエラー回避のため Proxy を使おう。
52. デバッグするときは error_reporting (E_ALL); にしておこう。
53. Apache の allowoverride を “none” にしておくとパフォーマンスが向上。
54. 静的なコンテンツには thttpd のような高速なファイルサーバを使おう。
55. パスなどの設定パラメータは配列に serialize して入れ、キャッシュしておこう。
56. アクセスの多いページには PHP の 出力バッファリング を使おう。
57. DB 固有の prepare メソッドではなく PDO::prepare を使おう。
58. SELECT * (ワイルドカード)を使うのはやめよう。
59. PHP より賢い DB ロジック(queries, joins, views, procedures)を活用しよう。
60. SQL の省略表記を活用しよう。
02. echo の方が print より速い。
03. echo ‘文’,'字’; (カンマ区切り)の方が、’文’.'字’ (ドット連結)より速い。
04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。
05. 大きい配列のような変数は unset() してメモリを解放しよう。
06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。
07. require_once はハイコストなのです。
08. include や require でファイルはフルパスで指定しよう。
09. スクリプト開始時間は time() でなく $_SERVER['REQUEST_TIME'] で取得。
10. 可能であれば、正規表現より strncasecmp、strpbrk、stripos を使おう。
11. strtr(str_replace の4倍速い) > str_replace > preg_replace の順に速い。
12. 引数に配列、文字列両方を受け入れるような関数は避け、個別に関数化しよう。
13. if をたくさん使ってるなら switch を活用しよう。(訳注:ってことでいい?)
14. @によるエラー制御はすんごく遅い。
15. Apache の mod_deflate(Apache2系) を ON にしておこう。(No.42 参照)
16. 処理が終わったらデータベースの接続は切っておこう。
17. $row['id'] は $row[id] より7倍速い。
18. エラーメッセージはハイコスト。
19. for 文の条件式には count($array) のような関数をいれない。(変数に格納)
20. メソッド内ではローカル変数をインクリメントするのが一番速い。
21. グローバル変数のインクリメントはローカル変数より2倍遅い。
22. オブジェクト変数(例:$this->v++)のインクリメントはローカルより3倍遅い。
23. 未定義のローカル変数のインクリメントは定義されたものより9~10倍遅い。
24. 未定義のグローバル変数についても同様。
25. メソッドの起動コストはクラス内のメソッド数とは無関係。
26. 派生クラス内のメソッドは、基底クラスで定義されたメソッドよりも速い。
27. 引数1つの空関数を呼び出すのにも、ローカル変数 $local++ 7~8回分のコスト。
28. ダブルクォート より シングルクォート の方が若干速い。
29. 03 と重複か。(注:これは複数の引数を受け取る echo でのみ有効)
30. PHP スクリプトは静的な HTML ページよりも2~10倍の時間がかかる。
31. キャッシュを利用しよう。通常、コンパイル回数 x 25~100% 分速くなる。
32. これもキャッシュについて。memcached とか使おうよ。
33. if (strlen($foo) < 5) を調べたいなら if (!isset($foo{5})) と書くと速い。
34. $i++ より ++$i の方が速い。(そういう opcode optimizer が走ってる場合)
35. 全部が全部 OOP でなくても良い。(コストやメモリの浪費になってるかも)
36. すべてのデータをクラスにしようとしないこと。配列も十分便利です。
37. メソッドを分割しすぎない。(どれを再利用するのかよく考えよう)
38. メソッドを分割したくなったら後でいくらでもできる。
39. もとから用意されてる 関数たち を活用しよう。
40. 非常に時間のかかる関数 → C言語による拡張モジュール化も検討しよう。
41. コードをプロファイリングしてボトルネックを見つけよう。Xdebug とか。
42. Apache の mod_gzip(Apache 1系)は、転送量を最大80%減。
43. : A HOWTO on Optimizing PHP with tips and methodologies を見てね。
44. ループ処理には foreach を使おう。
45. 複雑なクラスを作ってるなぁと思ったら → Singleton モデルを検討しよう。
46. DB に入れる値なら GET より POST を使おう。(パフォーマンスが上がる)
47. 可能なら正規表現より、ctype_alnum、ctype_alpha、ctype_digit を使おう。
48. ファイル指定は basename / file_exists / open_basedir よりフルパス指定が速い。
49. require_once より require を使おう。(opcode キャッシュがらみの理由で)
50. 一時的なファイルを作るときには tmpfile や tempnam を使おう。
51. 外部サービスに XMLHTTP で接続するときにはエラー回避のため Proxy を使おう。
52. デバッグするときは error_reporting (E_ALL); にしておこう。
53. Apache の allowoverride を “none” にしておくとパフォーマンスが向上。
54. 静的なコンテンツには thttpd のような高速なファイルサーバを使おう。
55. パスなどの設定パラメータは配列に serialize して入れ、キャッシュしておこう。
56. アクセスの多いページには PHP の 出力バッファリング を使おう。
57. DB 固有の prepare メソッドではなく PDO::prepare を使おう。
58. SELECT * (ワイルドカード)を使うのはやめよう。
59. PHP より賢い DB ロジック(queries, joins, views, procedures)を活用しよう。
60. SQL の省略表記を活用しよう。
2012年3月9日金曜日
2012年1月15日日曜日
Android標準ブラウザの about:debug
Andoridの標準ブラウザにはdebugモードが存在する。そのやり方は以下のとおりです。
[設定]メニューに追加される項目には以下です。
Show JavaScript Console
Single colum rendering
Use wide view point
Normal rendering
Enable tracing
Enable light touch
Enable nav cache dump
Set JS flags
UAString
が追加されます。この中でできることをまとめてみます。
このdebugモードをやめたい場合は、ブラウザプロセスを終了させ、再度起動させればもとに戻ります。
1. ユーザーエージェントの変更
私の端末は F-05D ですが、標準のUserAgentは、"Mozilla/5.0 (Linux; U; Android 2.3.5;ja-jp; F-05D Build/F0001) AppleWebKit/533.1 (KHTML, likeGecko)Version/4.0 Mobile Safari/533.1"です。[UAString]で変更すると以下のようになります。
"Desktop"
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16
"iPhone"
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
"iPad"
Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10
"Froyo-N1"
Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
- URL欄に about:debug と入力する
- ブラウザの[メニュー]-[その他] で、[設定]の下に、[Dump navigation cache] と[Dump V8 counters]が表示されていればdebugモードになっています。
[設定]メニューに追加される項目には以下です。
Show JavaScript Console
Single colum rendering
Use wide view point
Normal rendering
Enable tracing
Enable light touch
Enable nav cache dump
Set JS flags
UAString
が追加されます。この中でできることをまとめてみます。
このdebugモードをやめたい場合は、ブラウザプロセスを終了させ、再度起動させればもとに戻ります。
1. ユーザーエージェントの変更
私の端末は F-05D ですが、標準のUserAgentは、"Mozilla/5.0 (Linux; U; Android 2.3.5;ja-jp; F-05D Build/F0001) AppleWebKit/533.1 (KHTML, likeGecko)Version/4.0 Mobile Safari/533.1"です。[UAString]で変更すると以下のようになります。
"Desktop"
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16
"iPhone"
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
"iPad"
Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10
"Froyo-N1"
Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
登録:
投稿 (Atom)