すこし古い(2012年)ハーバード大学での「動的Webサイト構築」の動画です。英語の勉強を兼て基礎からWeb開発を学ぶには良い動画です。長いので流石に全部は見ていません。しかし、ほとんどの内容は現在でも通用する物になっていると思います。
カテゴリー: Programming
-
不整合が起きてはならない場合、トランザクションはシリアライザブル
リレーショナルデータベースが優れている点はトランザクションをサポートしている点です。トランザクションは手続きが一貫性ある形で実行されることを保証してくれます。しかし、トランザクションを使えばOK、という物ではありません。
もしトランザクションさえ使っていればOKと思っていた方はトランザクション分離レベルを理解してください。
-
いちばんやさしいPHPの教本
「一番やさしいPHPの教本」を献本いただきました。表紙に書いてある通り、パソコンさえつかえれば知識ゼロではじめても挫折せずに動くプログラムが作れます。最初の一歩を踏み出すための本なのでこれだけで十分とは言えませんが、初めてWebアプリを作ってみたい、という方にはぴったりの本だと思います。

DSC_0339 -
PHPスクリプトファイルアップロード攻撃を防止する方法
PHPはスクリプトアップロードに弱いシステムですが、PHPアプリにはファイルアップロードをサポートしているアプリが数多くあります。WordPressなど自動更新を行うアプリも増えてきました。
PHPアプリの場合、MVCフレームワークなどを使っていてもエントリポイントにはPHPファイルが必要です。ファイルアップロードをより安全に使うための設定も可能ですが、WordPressのようなファイル配置で自動更新を行っているアプリの場合、攻撃を完全に防ぐ事ができません。
しかし、簡単な方法でドキュメントルート以下のPHPファイルの実行をホワイトリストで防御することができます。
-
今すぐできる、Webサイトへの2要素認証導入
Google、Facebook、Amazon(AWS)、Githubなど、大手Webサービス会社が2要素認証を取り入れてしばらく経っています。自分のWebサイトでも2要素認証を導入したい!と思ったことは無いですか?
簡単に可能です!
パスワード認証だけではもう安全とは言えません。ぜひ2要素認証を自分のサービス/プロダクトに導入してください。
-
PHP7のタイプヒントベストプラクティス
PHP 7から基本的なデータ型(整数型、浮動小数点型、配列型)タイプヒントが追加されます。直感的に書くコードと正しいコードには乖離があります。PHP7でタイプヒントを使う場合のベストプラクティスを紹介します。
タイプヒントとタイプヒントの問題点については前回のブログを参照してください。
-
PHP7で追加される整数型、浮動小数点型タイプヒントの問題点
PHP7では整数型、浮動小数点型、配列型のタイプヒントが追加されます。データ型をより厳格に取り扱うようになるのは良い事ですが、データ型を変換してしまうため問題となる場合もあります。
データ型は指定した型に変換すればよい、という単純な物ではありません。私はデータ型を変換しない方のRFCを支持していました。残念ながらこちらのRFCでなく、問題が多い方のRFCが採用されることになりました。
参考
-
PHPポケットリファレンス改訂第三版
PHP5.6にも対応したPHPポケットリファレンス改訂第三版が今月初め頃から購入可能になっています。こちらの案内もブログを書く時間がなく、ここに記載できていませんでした。
- [改訂第3版]PHPポケットリファレンス
(アマゾン)
- [改訂第3版]PHPポケットリファレンス (電子版)(技術評論社) (さらに…)
- [改訂第3版]PHPポケットリファレンス
-
PHP7の新しいセッションモジュールの性能
PHP7用の新しいセッションモジュールの準備ができたので紹介します。かなりの性能向上が期待できます。
-
PHP7の現状
PHP7が今年の秋リリースされる予定です。まだまだ多くの変更が行われる予定ですが、現状を簡単にまとめてみたいと思います。代表的な物のみ取り上げています。
ご存知ない方の為に書いておきます。現在リリースされているPHPはPHP5です。次のPHPはPHP7になり、PHP6はリリースされません。PHP6をUnicodeをネイティブ文字列としてサポートするバージョンとして開発されましたが、文字エンコーディングチェックを内部で自動的に行おうとするなど、無駄が多く遅いため破棄されました。(文字エンコーディングのバリデーションは本来アプリでするものです)このため、PHP6はスキップされ次のPHPはPHP7になります。
追記:PHP7.0は既にリリースされています。概要はPHP 7.0の概要・新機能・互換性、詳しくはマイグレーションドキュメントをご覧ください。
-
Phalcon PHPとSails Node.jsのベンチマーク
以前にフレームワーク対決:Node.js+SailsとPHP+PhalconのベンチマークとしてPhalconとSailsのベンチマークを行ったのですが、Apacheを利用した場合のPhalconの性能が全く違うので取り敢えずブログに書きます。
このエントリはPhalcon Adventカレンダー17日目として書きました。少し前に設定がおかしいことに気づいて非公開にしていた物を修正しています。
-
Phalcon 1.3 と 2.0のベンチマーク
Phalcon Adventカレンダー15日目のエントリです。Phalcon 1.3と2.0でどの程度性能差があるか簡単なベンチマークを取ってみました。
-
SQLiteデータ型の仕様とセキュリティ問題
SQLiteはファイルベースのオープンソースRDBMSです。オープンソースとしては珍しいパブリックドメインライセンスを採用しています。SQLiteはファイルベースなのでデータベースサーバーが必要なく手軽に利用できます。SQLiteは組み込みデバイスで広く利用され、Android/iOSなどでは標準的なデータベースとして利用されています。モバイルデバイス以外での利用も広がっており例えば、Drupal8はSQLite3に対応しています。
普通のRDBMSのようにSQLクエリが利用できるのでとても便利ですが、SQLiteの仕様は他のRDBMSと異なるので注意が必要です。
追記:論理的・体系的セキュリティを構築していれば、ここに書かれているようなセキュリティ上問題となる事を自身で分析/対応できるようになります。
-
安全なAPI過信症候群 – 普通のRDBMS編
昨日書いた安全なAPI過信症候群の処方箋 – execv/SQLite3編はSQLiteの仕様がRDBMSとしてエキゾチック過ぎて、さらっと書いたよくあるRDBMSでの「安全なAPI過信症候群」を全く理解して頂けなかったケースもあるようなのでもう一度書きます。
プリペアードクエリには色々問題もあり、セキュリティ対策としてそれだけ教えるのはNG、と考えている方はプリペアードクエリ過信症候群ではないので、このエントリを読む必要はありません。