(4/17追記)twitter経由でタレコミがありまして、恥ずかしいミスをコッソリ直しました(32bit整数の範囲について)。どなたかわかりませんが、ありがとうございます! PHPの整数(integer型)はCのlong型をそのまま利用しています。つまり、32bit環境であれば整数の範囲は-2^31から2^31-1までとなります。また、PHP 4.4.0以降および5.0.5以降、最大の整数を表す定数PHP_INT_MAXが利用できます。 ところで、最大の整数に1を足すと何が起こるのでしょうか。PHPマニュアルの「整数のオーバーフロー」にも記述がありますが、整数の範囲を超えるような演算の結果はfloat型となります。 <?php var_dump(PHP_INT_MAX); // int(2147483647) var_dump(PHP_INT_MAX+1); // float(214748
みたいなタイトルの記事を Digg 経由で発見。チートシート代わりにと思い超訳。*1 A Software Architect PHP 最適化 ベストプラクティス! 01. static にできるメソッドは static として宣言しよう。(4倍速い) 02. echo の方が print より速い。 03. echo '文','字'; (カンマ区切り)の方が、'文'.'字' (ドット連結)より速い。 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。 05. 大きい配列のような変数は unset() してメモリを解放しよう。 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。 07. require_once はハイコストなのです。 08. include や require でファイルはフルパスで指定しよう。 09
個人的には、PHP って、嫌いな言語じゃないんだけど、とかく宗教戦争に持ち込まれやすい。攻撃する側は、「言語としてなっとらん」みたいな主張が多くて、具体的にどこが? と思っていたんだけど、これほど面白い例は無い。 PHPの比較の素晴らしさ加減は正常 「16 進数の表記は整数に変換するけど、じゃぁ、8進数は」という辺りが傑作なのだが、この挙動、結構、奥が深かった。 PHPでは"0x0A"=="10"がtrue | 水無月ばけらのえび日記 上記ページを読むと、整数に変換するかどうかは、C のライブラリ関数である strtod に依存しているらしい。で、このページのコメントに書かれているように、その strtod 自体が、コンパイラがどの規格に準拠してコンパイルしたかによって、挙動が変わってしまう。C99 準拠してコンパイルすれば、16 進数の表記は整数に変換されるが、そうでなければ変換されない
PHP 4.4.0以降およびPHP 5.0.5以降では、最大の整数が定数PHP_INT_MAXとして定義されています。 $ php -r 'var_dump(PHP_INT_MAX);' int(2147483647) 64bit環境では次のような結果になります。 $ php -r 'var_dump(PHP_INT_MAX);' int(9223372036854775807) ところで、最小の整数が必要な場合はどうすればいいのでしょうか。実は最小の整数は定数定義されていないのですが、次のようにすれば取得できます。 $ php -r 'var_dump(~PHP_INT_MAX);' int(-2147483648) 64ビット環境でも同様です。 $ php -r 'var_dump(~PHP_INT_MAX);' int(-9223372036854775808) ここで利用した~とい
Category:Libraries -> Session (Originally discussed at http://codeigniter.com/forums/viewthread/44945/) This is a session library that uses native PHP sessions. It stores data server-side, instead of client-side (like regular CI sessions). This library also supports ‘flash’ variables, as described in this forum thread. These let you set a variable that will only exist for one page load, then be a
PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはIteratorを実装しているものが多数あります。たとえば僕の手元のPHP5.2.9には24個のイテレータがあり、そのうちいくつかは十分に実用的なクラスです。ただ、日本語の資料が少ないせいか、かなり知名度は低いように思います。本記事では4つの便利な組み込みイテレータを紹介します。 SPLのクラスにはデザインパターンの考えが多く含まれています。特に、イテレータを元にイテレータを作るような使い方は、保守性の高い
早速ですが、はじめてのZendFrameworkのアプリケーションを作ってみましょう。 何事をはじめるにも最初は簡単なことからはじめるのが一番です。ゲストブックと呼ばれるアプリケーションを作ってみましょう。 ゲストブックとは 旅館やペンションにて、宿泊客が思い思いの感想を書くノートなどを見かけたことがありませんか? 感想を書いたことがある方もいることでしょう。このノートはゲストブックと呼ばれています。 ゲストブックは設計が非常にシンプルなのでコンピュータアプリケーションの入門アプリとして広く利用されています。この連載でも最初のアプリケーションはゲストブックにします。 フレームワークなしのゲストブックアプリ Zend Frameworkを利用したゲストブックアプリケーションを期待されているかもしれませんが、ちょっと我慢してください。まず最初に、通常のPHPアプリとして作られたゲストブックアプ
さて、前回記事「PHPでメモリ上に一時ファイルを作る」では、file_get_contents関数でCSVファイル全体を取得して文字エンコーディングの変換を行い、変換結果に対してfgetcsv関数を利用しました。しかし、CSVファイルが巨大な場合にはfile_get_contentsを使うとメモリ上限に引っかかってPHPが停止してしまいます。 もちろん、UTF-8のCSVファイルに対してfgetcsvを利用するのであれば、どんな大きなCSVファイルだろうと処理することが可能です。なぜなら、fgetcsvはファイルを1行単位で読み込む関数ですから、1行分のメモリ消費だけでファイル全体を読み込み続けられるからです(正確にはストリーム上のデータはバッファリングされるので、バッファサイズ分のメモリは消費しますが)。 それでは、巨大なSJISのCSVファイルをfgetcsvで処理したい場合はどうすれ
PHPをJava VMで動かしたいと思ったので、いろいろ調べてみた。 Java VM用のPHPとしては、現状でCaucho QuercusとPROJECT ZEROのP8があるようだ。 どちらもPHP5.2をターゲットにしているみたい。 P8 ここで、PROJECT ZEROのP8の方は、WebSpere sMeshの一部みたいで、単独では配布してなさそう。試してない。Tomcatで使えるんだろうか? けど、IBMがやってるということで、今後が期待できそう。 http://www.projectzero.org/ Quercus Quercusのほうは、Resin作ってるCauchoがやってる。前はResinじゃないと動かなかったようだけど、今はTomcatでも動く。ただしどこまで動くかは調べてない。 PHPの関数は全部Javaで書き直されてて、mbstringとかgdとかも実装されてる。
PHP: Hypertext Preprocessor PHP4は8月8日(米国時間)にサポート終了となった。以降、PHP4がアップグレードされることはない。セキュリティの観点からPHP4を採用している場合にはできるかぎり早いタイミングでPHP 5.2系へアップグレードする必要がある。しかし、とは言ってもPHP4からなかなか移行できないという場合も多い。PHP4から5への変更にともなう学習コストが懸念されるし、アプリケーションの更新も骨が折れる。 しかしアップデートしないわけにもいかない。Zend PHP 5 Certification BlogにDifferences Between PHP 4 and 5のタイトルのもとPHP4とPHP5の違いを簡単にまとめたものが公開されている。PHP5の学習を躊躇っている場合には概観を掴むためにもチェックしておきたい内容だ。簡単にまとめると次のよう
WarningThis extension is EXPERIMENTAL. The behaviour of this extension including the names of its functions and any other documentation surrounding this extension may change without notice in a future release of PHP. This extension should be used at your own risk. About ImageMagick ImageMagick is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in
The html blog | 10 code snippets for PHP developers I've compiled a small list of some useful code snippets which might help you when writing your PHP scripts PHP開発者が便利に使える10のスニペット集が紹介されていました。 メールアドレスチェック簡単化 php-email-address-validation クラスを使ったメールアドレスチェック http://code.google.com/p/php-email-address-validation/ include('EmailAddressValidator.php'); $validator = new EmailAddressValidator; if ($valida
YUI2.5.0の新機能、Flickr風の複数ファイルアップローダをPHPで実装してみる 2008年02月25日- YUI 2.5.0 Released ? Big upgrades to DataTable, new Layout Manager, Flickr-style multi-file Uploader, and more Yahoo! User Interface Blog The YUI Team just released version 2.5.0 of the library. We’ve added six new components ? Layout Manager, Uploader (multi-file upload engine combining Flash and JavaScript), Resize Utility, ImageCropper,
Fedora42など、Kernelが新しいLinuxではVMware Workstationのカーネルモジュールがコンパイルできず使えません。古いカーネルを使えばコンパイルできるのですが、新しいカーネルでも使いたいので調べました。 Fedora42からはSecure Boot用にカーネルモジュールへのサインも必須になっています。(無効にもできますが、サインするのは簡単) (さらに…) Dockerfileの中で永続化が必要なディレクトリ(ボリューム)としてVOLUMEを指定すると、-vまたはvolume:で明示的にマウントしないと匿名ボリューム(名前なしのボリューム)が作られます。匿名ボリュームが起動する度に新しく作成されるので放っておくとどんどん溜まります。 どのコンテナが匿名ボリュームを作っているのかはdocker inspectで判別出来るのですが、何度も、何度も、手動でやっているの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く