Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

概要 Bluebird は Promise を扱うためのライブラリです。チュートリアルや stackoverflow の回答が充実しており、初心者が学びやすいライブラリです。TC39 で提案されている機能があるので、将来の先取り学習ができます。 Bluebird は Observable を学ぶための準備教材としても評価できます。Observable は Promise、EventEmitter、ストリームなどの複数の概念を統合する概念です。Observable を扱うためのライブラリとして RxJS や xstream が挙げられます。Observable は TC39 で提案されており、将来の標準機能になる可能性があります。 Bluebird をブラウザー版アプリで採用するときの課題はライブラリのファイルの大きさです。より小さなサイズのライブラリに切り換えるか、個別の機能に特化したライ
概要 Node.js v8.4 から http2 モジュールが実験的な機能として利用できるようになりました (プルリクエスト)。スクリプトの実行時にフラグを指定する必要があります。 nghttp2 の採用 http2 モジュールの実装には nghttp2 が採用されています。nghttp2 は curl、Apache HTTP Server (mod_http2) で採用されています。 HTTP/2 の普及状況 W3Techs の統計によれば、2017年8月1日時点でHTTP/2 に対応したウェブサイトは全体の15%を超えるとのことです。同じく W3techs のサーバーシェア統計によれば Node.js は全体の0.3%を占めます。 日本国内において大手ホスティングサービスのロリポップが HTTP/2 に対応し、Let's Encrypt を利用することで独自ドメインの SSL/TLS
概要 HTTP GET と POST 以外のメソッドに対するスーパーグローバル変数の導入や $_POST を改善すべきかという PHP Internals の議論を読みました。以前の議論のリンクがまとまっているだけでなく、スーパーグローバル変数および HTTP 通信の仕様をどのように学ぶのかの情報がまとまっているので、記録に残しておくことにしました。同時に PSR-7 以降の議論についても記載しました。 スーパーグローバル変数の名前 $_GET $_GET は名前だけでは HTTP GET メッセージをあらわすものとして考えてしまいがちですが、実際には URI クエリパラメーターであり、GET リクエスト以外にも使うことができます。 $_POST $_POST はリクエストボディをあらわしますが、Content-Type ヘッダーの値が x-www-form-urlencoded もしくは
概要 リモートコード実行の脆弱性 (CVE-2016-10074) に対応するために SwiftMailer 5.4.5 がリリースされました。脆弱性の条件に該当するプロジェクトはバージョンアップやアプリケーションの修正が求められます。 該当するプロジェクト sendmail もしくは sendmail と互換性があり、-X オプションが利用可能であるプログラムを使う (postfix は -X を無効にしている) From、Sender、ReturnPath フィールドの値にユーザーからの入力を使う lsmith さんのツイートによれば、Symfony の場合、transport で smtp の代わりに mail を使っているプロジェクトが該当します。 検証コード 脆弱性を説明するドキュメントに記載されているコードは次のようなものです。 // sender フィールドをもつ問い合わせフ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 概要 2017年前半に TLS 1.3 の仕様が発行されます。TLS 1.3 では仕様の簡略化が進められ、速度が改善されるとともにプライバシーの保護の強化が図られています。Google が提唱する次世代プロトコルの QUIC は TLS 1.3 に対応し、2018年に仕様が発行される予定です。curl の開発者は QUIC 対応を表明しています。 2016年にリリースされた OpenSSL v1.1.1 は TLS 1.3 に部分的に対応し、2017年にリリース予定の v1.1.1 で完全に対応します。 OpenSSL 1.1 系には
概要 HHVM には HTTP サーバーライブラリの Proxygen が組み込まれており、コマンドラインから起動できます。Proxygen は TLS/SSL および HTTP/2 に対応しています。 PHP のビルトインサーバーは SSL/TLS、HTTP/2 に対応していないので、運用環境でHHVM を使わなくてもテスト環境での選択肢の1つとして考えることができます。HHVM のプロジェクトが配布している Docker イメージを利用することで、導入の敷居が下がります。 テスト環境のために SSL/TLS を利用するほかの選択肢として、Swoole や Event エクステンションを挙げます。コードの例はこちらの記事をご参照ください。 コマンドツールで Proxygen を起動させる HHVM のコマンドツールから Proxygen を直接させる場合、オプションに -v Server
概要 PHP 7.2 の開発版 (2016年9月時点で master ブランチ)に mb_chr、mb_ord、mb_scrub が導入されました。これらの関数は私 (masakielastic) が実装を提案し、yohgaki さんが検証と導入をしました。 PHP のソースコードの NEWS ファイルには次のような記載があります。 Mbstring Implemented request #66024 (mb_chr() and mb_ord()) (Masakielastic, Yasuo) Implemented request #65081 (mb_scrub()) (Masakielastic, Yasuo) polyfill-mbstring を利用する mbstring がインストールされていない環境もしくは PHP 7.2 以前のバージョンで mb_chr、mb_ord、m
xstream を開発する動機 xstream の開発者である Staltz さんは RxJS のコントリビューターでもあり、RxJS を使ったフレームワークである Cycle.js の作者です。Staltz さんは WHY WE BUILT XSTREAM の記事のなかで xstream を開発する動機を述べています。 ストリームとは何か、リアクティブプログラミングとは何かについては「あなたが求めていたリアクティブプログラミング入門」の記事が参考になります。「Everything is stream」(すべてがストリーム) がマントラです。 xstream の位置づけは RxJS を補うものであり、一般的なリアクティブプログラミングの用途では RxJS のほうがすぐれているとのことです。 xstream のオペレーターの数は RxJS と比べて少なく、初心者にわかりやすい直感的な名前にし
動機 数ページで構成されるサイトの運営です。更新頻度は少ないのですが、複数人で長期的な運営ができるように Facebook アプリによる OAuth 認証を利用することを検討しています。 [2017年8月7月追記] ウェブクロウの受付が終了し、スターサーバーのフリー PHP+MySQL プランにアカウントが移行される予定です。 [2017年8月8日追記] XREA で HTTP/2、独自ドメインの無料 SSL が利用できるようになりました。 サービスを選ぶ基準 最新の PHP が利用できるか? 格安の共有ホスティングを選ぶ際の課題は PHP のバージョンに無頓着なサービスが多いことです。定期的に PHP の新しいバージョンに対応するための取り組みをしているのか広報を調べましょう。PHP の開発チームがサポートするバージョンの一覧はこちらのページをご参照ください。2016年4月の時点でサポー
Cycle.js の MODEL-VIEW-INTENT のチュートリアルから MVI (Model-View-Intent) と MVC (Model-View-Controller) に関する説明を抜粋して翻訳しました。原文のライセンスは MIT です。 「Passive/Reactive プログラミングの違いを学ぶ」 をあらかじめ読んでおくと理解が深まるでしょう。筆者の André Staltz さんは Flux、Redux などのアーキテクチャの比較や評価を UNIDIRECTIONAL USER INTERFACE ARCHITECTURES と NOTHING NEW IN REACT AND FLUX EXCEPT ONE THING の記事で述べています。 MVI (Model-View-Intent) について MVI は Cycle.js の main() 関数を3つの
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? PHP のマルチバイト関数の標準化について PHP Internals に質問および提案するために、調査したことおよび自分の意見をまとめました。 概要 このドキュメントでは標準関数の strlen、substr、chr、ord のマルチバイトの文字エンコーディング対応もしくはこれらに相当する新しい標準関数の導入について検討します。 取り組む目的は CMS、フレームワーク開発のための必要最小限の関数を提供することで、mbstring、iconv、intl への依存度を下げるもしくはこれらのモジュールのポリフィルライブラリが UTF-8 以
PHP 7.0 で intl エクステンションに導入された IntlChar を使って東アジアの文字幅を求める関数を定義しました。 IntlChar について IntlChar は Unicode Character Database で配布されているデータを文字の種類の判定に使います。東アジアの文字幅の判定には EastAsianWidth.txt が使われます。 IntlChar の実装には ICU の uchar.h が使われています。 ほかの言語の実装 Java の場合、ICU4J の UCharacter.getIntPropertyValue(codePoint, UProperty.EAST_ASIAN_WIDTH) を使います。Python の場合、標準モジュールの unicodedata.east_asian_width を使います。Go の場合、golang.org/x
PHP 7.0 の開発環境を構築するために書いた Docker Compose の設定ファイルをまとめました。 Docker について Docker はコンテナと呼ばれる単位でアプリケーションを管理するソフトウェアです。 コンテナはサーバー OS にインストールされているソフトウェアと独立しているので、サーバーの環境を壊すことなく、PHP のバージョンアップや HTTP サーバーの切り替えを手軽に試すことができます。 Linux ディストリビューションのパッケージ管理ツールの apt-get や yum をより使いやすくしたものとして見ることができるでしょう。 オーバーヘッドが少ないので、さくら VPS、DigitalOcean や Vultr などの格安の VPS ホスティングサービスで使うことができます。 DigitalOcean と Vultr はコンテナの運用に特化した CoreO
ホームページビルダーでつくられた小規模なサイトをリニューアルして SPA (Single Page Application) をつくる際に検討したことをまとめました。 対象読者 小規模のコンテンツ提供と更新、ユーザー管理機能をもつサイトを題材に Silex の機能をどのように使うのかを学ぶことを主軸とします。結果として SPA に特徴的な話しはあまりありません。 フレームワークの選択肢 PHP Silex と同じマイクロフレームワークを比較検討したいのであれば、 「PHP、Node.js、Go のミドルウェアに関する調査」の記事 をご参照ください。速度を大幅に改善できるという点で、著者は Phalcon Micro に興味をもっています。 Web API に特化したプロジェクトであれば、BEAR.Sunday や API Platform を挙げます。BEAR.Sunday 開発者の ko
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く