読者です 読者をやめる 読者になる 読者になる

PHP

PHPのGDで画像の縦横比を保ったまま縮小・拡大

PHPのGDだけ使って画像の縦横比を保ったまま縮小・拡大、必要に応じて黒帯をつけるってプログラムを書いた。GDの関数、何かよくわからない名前だし、引数多いし、非常に面倒。ちゃんとしたライブラリ使えば、もっと使い勝手いいんじゃないかなー。まあ作って…

simplexml_loadとエラー処理

PHP5から標準で搭載されているSimpleXMLの関数ですが、XMLの構造がおかしかったりするとWarningを吐いてしまいます。@でつぶすのもまあありといえばありですが、XMLのどこがおかしいのかよくわからなかったりするので、そのあたりがわかるようなクラスを作り…

issetとis_null

PHPの !isset($hoge) と is_null($hoge) は、両方とも変数$hogeがnullでないことを確認できるけど、isset()は言語構造で、is_null()は関数という違いがある。なので、isset()は以下のように使うとFatalErrorとなる。

Serializeと小数

よくある2進数の罠というか。PHPのserialize()について。 Memcachedとかにデータ入れるときは自動でserializeされるので、データ量考えたらできればintで入れたいなと。ただそれだけ。

DateTimeクラスでUNIXタイムを使うときの罠

PHPのDateTimeクラスはUNIXタイムからもインスタンスを生成することができる。$date_time = new DateTime('@' . time());といった感じで。@マークを先頭につけないといけないのはPHPマニュアルに書いてあるんだけど、この前、はまった罠はタイムゾーン。手を…

ConsistentHashing法の実装

PHPでConsistentHashingの実装をしてみたので公開。 ConsistentHashingのわかりやすい説明とかメリットは以下のページが詳しかった。 スマートな分散で快適キャッシュライフ - mixi Engineers' Blog PHPで実装するにあたり、ActionScriptで実装した方がいら…

file_get_contentsのちょっとしたオプション

この前はfile_get_contents()で無理やりExceptionを投げる方法を書いたけど、今回はもともとに用意されているオプションとかについて。 POSTで送るパラメータはhttp_build_queryで作る。 file_get_contentsの取得設定はstream_context_createに配列を渡して…

Pjaxでロード

最近流行ってるらしいPjax。(pushState + Ajaxの造語らしい) ちょっと使うことがあったので、調べたこととかをメモっておく。 どういう技術かというと、例えば何かリンクをクリックしたときに、一部分だけ書き換わって、ページ全体が書き換わっているわけで…

DateTimeクラスを触ってみた

PHP5.2から導入されているDateTimeクラスが便利ということを今更ながら知りました。試しにいろいろやってみた。一番、DateTimeクラスを使う利点は関数の引数で型を指定できることかな。$date_timeみたいな引数にintで渡すべきなのかstringで渡すべきなのか悩…

PHPのfile_get_contentsでException飛ばしたい

何かと便利なfile_get_contents()なんですが、うまく取得できなかったときに、Warningだけ吐いて、Exceptionを飛ばしてくれないのが残念。 うまいことExceptionでエラー取れないかなーと、ふとob_start()とかあったなーって思ってやってみたらできたのでメモ…

為替のレートを返すAPIを作ってみた

この為替変動メーターっぽいもののためにAPIを作ったんだけど、為替ってそんなに大きく動くことはあまりなくて、数値が変わらないので、ずっと放置してる・・・とりあえずインフォシークのページから為替の情報だけを抜き出すAPIのプログラムだけ公開。excha…

デザインパターン入門:2章

結城さんの「Java言語で学ぶデザインパターン入門」を読んでいるので、載っているデザインパターンにしたがって、PHPで書いてみるの2回目です。2章のAdapterパターン。これは、理解しやすいパターンです。新しい仕様に、古い仕様のものを変換するという感じ…

デザインパターン入門:1章

結城さんの 「Java言語で学ぶデザインパターン入門」を読んでいるので、載っているデザインパターンにしたがって、PHPで書いてみる。まずは1章のIteratorパターンから。 本当はクラスごとにファイルを分けたいけど、とりあえず1ファイルで。

特定の文字列から、特定の文字列に囲まれた部分を抜き出す関数

Webページから情報を抜き出すのに、必要になったので作ってみた。