「 プログラミング 」一覧

PHPでページの実行時間を取得

PHPなページの実行時間を計測するために下記のようなコードを使っているのだが、

<?php
$time_start = microtime(true);
?>

ページ表示部分

<?php
$time_end = microtime(true); 
echo "実行時間:" . number_format($time_end - $time_start , 5) . " sec";
?>

$time_start を毎回書くのが面倒。
request_once されるような config.php的なファイルに

define('START_TIME', microtime(true));

と定義しておくといいのかもしれないが、必要な時に関数一発で時間得られるようにしたかった。

で、こんな関数を作成。PHP5.4.0以降しか使えません

function getExectime()
{
    // 小数点以下5桁まで
    $t = number_format(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'] , 5);
    return "実行時間" . $t . " sec";
}

PHP5.4.0から $_SERVER[‘REQUEST_TIME_FLOAT’]変数が追加された。
これはリクエスト開始時のタイムスタンプをマイクロ秒精度で得られる変数。

PHP5.1からは$_SERVER[‘REQUEST_TIME’]変数というのがあったのだが、こっちはマイクロ秒までは見てくれないので1秒以内の処理などは計測できなかった。
PHP: $_SERVER – Manual

これで実行時間が欲しい時に echo getExectime(); するだけでよくなった。
もうPHPファイルの最初に $time_start 書かなくてもいい。らくちん

もちろん PHPファイル内での特定の処理(ループの前後とか)の時間を計測する場合は $_SERVER[‘REQUEST_TIME_FLOAT’]使っても意味がないので、そういう用途には 従来の$time_startと$time_endの差分計測を使う。
今回はページ表示の実行時間計測なので、$_SERVER[‘REQUEST_TIME_FLOAT’]使う方がより正確な値が得られるんじゃないかな?っていうお話。

違いはどの程度になるかというと
従来方式
  実行時間:0.00410 sec
$_SERVER変数方式
  実行時間:0.01483 sec

リクエスト開始から処理開始までの0.01秒弱が加算された感じ

そもそも測定範囲が違うので、過去に計測した実行時間と比較したい場合は従来方式を使わないとダメ。

Vagrantで構築したCentOS6.4の共有フォルダのパーミッション変更

さくっと開発環境構築できると話題のVagrant+VirtualBoxを試していたのだけど、chmodで共有フォルダ内のファイルのパーミッションを変更しようとしても反映されない。ホストがWindows7なのが悪いのかなんなのか

共有フォルダをApacheのドキュメントルートとしてシンボリックリンク貼ってるので、デフォルト?の0777だと動かないPHPスクリプトやCGIスクリプトが出てくる。

とりあえずVagrantfileを編集して応急処置

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"
    config.vm.synced_folder ".","/vagrant", :extra => "dmode=755,fmode=755"

とりあえずディレクトリ、ファイル両方755で
所有権も変更するなら :extra => “uid=1000,gid=1000,dmode=0755,fmode=0755” みたいに

これはvgrantというよりVirtualBox側の仕様なのかな。

1.3.0 (September 5, 2013) から :extraは使えなくなった
代わりに
config.vm.synced_folder “./”, “/vagrant”, owner: ‘root’, group: ‘root’, mount_options: [‘dmode=777’, ‘fmode=666’]
といった感じに mount_optionsを使用してArrayとして記入する

参考環境
ホストOS Windows7 64bit
ゲストOS CentOS6.4 (BOX http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box)
VirtualBox 4.2.12 r84980
Vagrant 1.2.7

CentOS6.4にMySQL5.6.12、PHP5.4.17を入れようとしてつまづく

ちょっと最近のバージョンで環境構築しようと
CentOS6.4にOracle版MySQL5.6.12を入れた後に、remiからPHP5.4.17を入れようした

[psychedelic@local ~]$ sudo yum install --enablerepo=remi php php-mbstring php-
mysql php-gd php-pear php-xml php-mcrypt pcre-devel php-devel

お約束的にいつも入れるパッケージ達をインストール。
と思ったら事前チェックでエラー ぐぬぬ

Transaction Check Error:
  file /usr/share/mysql/charsets/Index.xml from install of mysql-libs-5.5.32-1.el6.remi.x86_64 conflicts with file from package MySQL-server-5.6.12-1.el6.x86_64
  file /usr/share/mysql/charsets/armscii8.xml from install of mysql-libs-5.5.32-1.el6.remi.x86_64 conflicts with file from package MySQL-server-5.6.12-1.el6.x86_64
  file /usr/share/mysql/charsets/ascii.xml from install of mysql-libs-5.5.32-1.el6.remi.x86_64 conflicts with file from package MySQL-server-5.6.12-1.el6.x86_64
  file /usr/share/mysql/charsets/cp1250.xml from install of mysql-libs-5.5.32-1.el6.remi.x86_64 conflicts with file from package MySQL-server-5.6.12-1.el6.x86_64
(以下略)

MySQL-shared-compat-5.6.12-1.el6.x86_64.rpm を事前にインストールしてるはずなんで
mysql-libs関連も置き換わってるはずなんだけど、、、

結局php-mysql ではなく php-mysqlndにすることで解消
いまいち理解できてないのだが、もうMySQL5.6からはphp-mysqlnd使えよっていう話なのだろうか

ROGM終わっちゃいましたね

         ,, _
       /     ` 、
      /  (_ノL_)  ヽ
      /   ´・  ・`  l    ROGMは死んだんだ
     (l     し    l)    いくら呼んでも帰っては来ないんだ
.     l    __   l    もうあの時間は終わって、君も人生と向き合う時なんだ
      > 、 _      ィ
     /      ̄   ヽ
     / |         iヽ
    |\|         |/|
    | ||/\/\/\/| |

終わっちゃいましたねぇ
冷たい空気交換しすぎて魔女の帽子の2000個まで到達できそうになかったので、仮面やらいろいろ交換して終わり。

異世界色塗りは結構やった方だと思うんですが、ほぼダンジョン専門で課金することもなく1,2期遊んでました。
ブラウザゲーはROGMが初めてだったので他のブラウザゲーと比べることができず、良さも悪さもわからなかったんですが。どうなんでしょうねぇ。どこが悪かったのかはさっぱりわからないんですが、パズドラインタビューで森下・エアギター・一喜がダメなブラウザゲーだったかスマホゲーだったかを述べてたんですが、ROGMがそれに当てはまってたな…。と読みながら思った記憶があります。

色違いキャラじゃなくて、もっといろんな絵師にキャラ絵書いてもらったら楽しめたかもなーとは思います。
次があるのかわからないけど、RO関係ブラウザゲーがまたあるならたぶんやると思うよ。

あとは、、、
ブラウザを1280×1024のサブディスプレイにフルスクリーン表示させてやってたんですが、フルスクリーンにしても画面内に収まらずスクロールバーが表示される。んでROGMは画面下部に資源や待機傭兵などの情報画面が表示されてるので、見づらくてしょうがなかった。

なので個人的にユーザーCSS当てて使ってました。
いじるにあたってソース見たんですが、CSSとかposition: absolute だらけで、うわぁって声が出た。

ベースとなってるゲームシステムの設計自体がちょっと古いからなんでしょうけど。そのせいでラジオボタンのチェック入れるのが面倒だったり、いちいちページ再描画して重かったり…。IE7以下切り捨てて今風に作ればもっと動作軽快だったのではとおもう。
IE6,7死ね! むしろXPももうじき消えるのだからIE8も一緒に死ね!
今後はIE9以降しかサポートしないWebサイトが増えるんじゃないかな

ROGMデフォルト

デフォルト
縦1024じゃ狭くて下の方が見えない

ROGMカスタムCSS

StylishでユーザーCSSを適応


派兵の合間にちょこちょこCSS弄ってたんですが、最終的には大体満足いく感じになりました。

  • 縦1024に収まるように
  • 画像をできるだけ使わない
  • キャラ絵の全身が見えるように
  • RK娘さんをちょっと痩せさせる
  • 課金アイテムボタンは抹殺

葉鯖シュバ民の皆様お疲れ様でした。またどこかで。


Windows環境下でのbootstrap less編集とCSS出力

Twitter Bootstrap便利ですよねー 細かいところいちいち調整しなくて済む (:hoverとか)

色の変更や大雑把な要素の変更程度なら公式のCustomize variablesや他のGenerator(StyleBootstrap.info)でも十分だが、それ以上の細かいカスタマイズはできない。結局自分でCSSいじるしかない。

しかしBootstrapはOOCSS(Object-Oriented CSS)な記述がされているので、1ヶ所変更するために、複数個所を書き換える必要があったり、はてしなく面倒くさい。(参考)
まぁ要素ごとに独自クラス作成して上書きしてもいいんですが、OOCSSの考えからは離れてしまう。

そこでCSS拡張メタ言語。LESSとかSCSS(Sass)が有名である。SCSSはRuby, LESSはJavascriptで利用できるようだ。Rubyは使ったことがないので Ruby on Railsの構築から始めないといけない。今はその時ではない…。
参考:CSS拡張メタ言語「SCSS(Sass)」と「LESS」の比較 – (DxD)∞

Twitter BootstrapもLESSによって構築されているようなので今回はLESSを利用してみた。なのでメモ書きを残してみる

続きを読む

スポンサーリンク
レクタングル大 広告