PHPの比較とBOOL/NULL型の話
先日、10年以上勘違いをしていたことがPHPの開発者MLで議論して発覚したので、その大恥を披露します。
PHPの比較とBOOL/NULL型の話です。
先日、10年以上勘違いをしていたことがPHPの開発者MLで議論して発覚したので、その大恥を披露します。
PHPの比較とBOOL/NULL型の話です。
ChatWorkをまるごとコピーしたコピーサイトが中国に登場で紹介したように、まるごとコピーしたサイトが現れました。こういうコピーサイトが現れると、内部のソースコードが漏洩したのでは?と不安になる方も居ると思います。調べてみたので参考にして下さい。
PhantomJSはWebKitを利用したヘッドレスHTTPクライアントです。Webアプリのテストのみでなく、WebページをPDFや画像に変換する為に利用している方も多いと思います。手元のFedora19を載せているマシンでは動作せず、原因と思われる物も分ったのでエントリを作りました。
もっと読む
先月の11月号にOSSEC HIDSの記事を書いたので、次の号の日経Linux12月号も頂きました。
100の初心者から上級者向け(OpenStackなど)Tipsが載っています。
GPS将棋サーバーを作る、ownMdm (MDM: Mobile Device Management)でAndroidスマホのロック&位置取得、DAPPサーバー/DLNAサーバーを導入する、など役立つTIPSが載っています。付録のDVDに記事で利用しているUbuntuが入っているようなので初心者でも直ぐ楽しめるが良いですね。
この他にも電子工作で室温を計測し、グラフ化する記事もあります。これは自宅の温度管理(必要なのかは別にしてただ面白い)やサーバールームがある会社さんではサーバールームの温度管理などにも使えます。学生時代以来、電子工作はしていませんでしたが久々にやってみたくなりました。
PHPで開発したり、記事を執筆する時には色々な環境で試したい場合があります。自分の環境で試すのも良いですが、Webサイトにコピー&ペーストで試せると便利です。あまり知られていない(?)ようなので紹介します。
RailsはJavaScript文字列エスケープメソッドをサポートしています。JavaScript文字列エスケープのエントリで様々な議論があったようです。弊社ではRailsアプリのソースコードも検査しているので、参考としてRailsのソースコードを確認したことを追記をしたました。Rails開発者に直して頂きたいので独立したエントリにしました。
参考:
Webアプリの入力はバリデーションできない、と誤解している方は少なく無いようです。システム開発に関わる人でなければ誤解していても構わないのですが、システム開発者が誤解していると安全なシステムを作ることは難しいでしょう。
Webアプリの入力はバリデーションできない、と誤解している開発者にも理解できるよう噛み砕いて解説してみます。
いろんなコピー品がある中国ですが、私も利用しているChatWorkをまるごとコピーしたコピーサイトが中国に登場したようです。
JavaScriptの文字列をエスケープのエントリでJavaScript文字列をエスケープ後に直接出力するより、DOMから取得してはどうか?という提案があったのでエントリを作成しました。
出力先のシステムが同じでも、出力先が異なる場合はよくあります。これを意識していないとセキュリティ問題の原因になります。
もっと読む
翔泳社さんよりPHP逆引きレシピを献本いただきました。
870ページ以上もある大作です!
PHPを使ってアレがしたい、コレがしたい、といった項目が網羅されています。Webで検索するのも良いですが、私のように詳しく書かない人も多い(?!)ので、PHPでWeb開発している会社さんなら一冊手元に置いておいて損はないと思います。
JavaScript文字列のエスケープの解説というか補足です。
少し設計よりの話を書くとそれに関連する話を書きたくなったので出力の話は後日書きます。
契約による設計(契約プログラミング)(Design by Contract – DbC)は優れた設計・プログラミング手法です。契約による設計と信頼境界線について解説します。
もっと読む
サーバー側のプログラムでJavaScriptの文字列にデータを出力するケースはよくあります。このような場合、エスケープ処理を行うことが必須です。
JavaScript文字リテラルは次のように定義されています。(ECMAScript 5.1)
XPathクエリ(1)の続きです。
現在のPHPのXPathクエリの問題はXPath 1.0である事です。通常の仕様書であれば特殊文字のある文字列の場合はエスケープ方法やエスケープAPIが定義されています。エスケープ方法が定義されていなければ「特殊文字を入力することができない」からです。エスケープ方法が無い場合は「エスケープが必要ないAPI」を用意すべきです。
しかし、XPath 1.0ではエスケープ方法もエスケープAPI、エスケープが必要ないAPIも定義されていません。このような場合、仕様を実装しているライブラリの実際の挙動を確認して利用することになります。PHPのSimpleXML、XMLXpathクラスの場合はlibxml2を利用しているので、libxml2の動作を確かめる必要があります。