BLOGTIMES
» ArchiveList (Tag for "php" )
«Prev || 1 · 2 · 3 · 4 · 5 · 6 ·... | | Next»
2015/12/04

PHP7 が正式版に

php 

PHP 7 の正式版がリリースされました*1。PHP 5 の次が PHP 7 なので、PHP 6 は?という感じになりますが、Unicode をサポートするバージョンとして開発された PHP6 はその後の紆余曲折でプロジェクトがキャンセルされたのでリリースされていません。このためPHP 6はそのまま欠番になっています。

「PHP 7」、ついにリリース | OSDN Magazine

PHP 7の最大の特徴は実行速度だという。PHPNG(NextGen)と呼ばれる実行エンジンを搭載、PHP 5.6と比較して2倍高速になり、メモリ使用量も50%改善したという。
また、抽象構文木が導入され、静的なコード解析などが可能となった。一貫性のある64ビットのサポート、例外階層の強化なども施され、致命的なエラーが例外として処理されるようになった。サポートされていないServer API(SAPI)と拡張機能が削除され、ereg関数などの非推奨機能も削除されている。

移行作業もぼちぼち考え始めないといけないですね。。。


at 21:22 |
2015/08/29

画像への直リンを Twitter Cards に対応させる

twitter  php 
画像直リンの Twitter Cards - 画像への直リンを Twitter Cards に対応させる

サイトはしばらく前に Twitter Cards に対応させたので、エントリへのリンク ( https://blog.cles.jp/item/7854 ) をツイートに貼ると概要が TL に表示される状態になっていましたが、最近ちょっと気になっていたのは画像へのリンクです。

画像のリンクはそれ自体が HTML ではないため Twitter Cards に対応させることができませんが、今回はそれをちょっとした工夫で乗り切ってみたのでメモ。ちなみに Cards については3月に見直しがあり、Photo, Gallery, Product 形式については Deprecated になりました*1

そんなわけで今回は Photo を使わずに、マイグレーション先である Summary Card with Large Image*2を使います。

まず、実装における前提ですが Twitter は TL に流れる Cards の内容をクロールするために Twitterbot という User Agent でサイトにアクセスしてくるという性質があります。これに mod_rewrite を組み合わせて、Twitterbot が画像にアクセスしてきたときだけ Twitter Cards を含んだ HTML のクッションページを返すようにしてやるという単純なものです。

以下、実装についてのメモ。

[画像への直リンを Twitter Cards に対応させる の続きを読む]

at 15:55 |
2015/07/02

reCAPTCHA v2 に移行

antispam  google  php  integration 
私はロボットではありません - reCAPTCHA v2 に移行

今日、メールボックスを確認すると、Google からの reCAPTCHA v2 にアップグレードしましょうという一通のメールが届いていました。reCAPTCHA v2 がリリースされたのは約半年前の昨年の12月なので、古いバージョンの廃止が迫ってきているのかもしれません。

You're receiving this email because you're registered as a website administrator for a site that uses reCAPTCHA.
Google launched reCAPTCHA v2 (i.e. No CAPTCHA reCAPTCHA) in Dec, 2014. The new version provides a more simplified user experience than reCAPTCHA v1, with an enhanced spam fighting mechanism.

というわけで、Developer's Guide に従って v2 にアップグレードしてみました。PHP の場合はコードのサンプルが google/recaptcha にあるのと、v1 よりもプロトコルもシンプルになったので簡単に移行することができました。

API 用のキーは v2 専用のものが必要になるので、こちらから新規生成しておく必要があります。Analytics がついていて、スパムの着弾具合の統計も見られるようになっているんですね。


    at 23:12 |
    2014/06/14

    JSON と 日本語と PowerShell

    php  powershell  javascript  charset 

    ちょっとしたデータ保存に JSON を使おうと思って JSON をいじくり回していたのですが、いろいろなデータを入れていくうちに、日本語が \u#### でエスケープされていることに気づきました。この辺は PHP の json_encode()*1 や Ruby の gem json*2 でも全く同じ挙動のようです。

    $ php -r 'echo json_encode(array("hoge"=>"ほげ","fuga"=>"ふが"));' {"hoge":"\u307b\u3052","fuga":"\u3075\u304c"} $ ruby -r rubygems -e 'require "json"; puts({"hoge" => "ほげ","fuga"=>"ふが"}.to_json)' {"fuga":"\u3075\u304c","hoge":"\u307b\u3052"}

    普段、英数字しか入れてなかったのでよく理解していなかったのですが、そういえばTwitter の全発言アーカイブをダウンロードしたときは確かエンコードされていたような気もします。そんわなけで、ちょっとJSON の仕様*3*4を紐解いてみると、文字は Unicode に従うと書いてありますが、エンコードの種類は指定されていないようなので、UTF-8, UTF-16 などいろいろなエンコードが許容されるようです。もちろん \u#### も許容されています。

    もちろんどちらも元に戻るので、PHP <-> Ruby 間で相互運用性に問題が生じることはありません。

    $ echo '{"hoge":"\u307b\u3052","fuga":"\u3075\u304c"}' | php -r 'var_dump(json_decode(file_get_contents("php://stdin"),true));' array(2) { ["hoge"]=> string(6) "ほげ" ["fuga"]=> string(6) "ふが" } $ ruby -r rubygems -e 'require "json"; puts JSON.parse(ARGV[0])' -- '{"fuga":"\u3075\u304c","hoge":"\u307b\u3052"}' fugaふがhogeほげ

    これをちょっと Windows 上でもお手軽にやろうと思って PowerShell での処理に挑戦してみました。

    [JSON と 日本語と PowerShell の続きを読む]

    at 21:01 |
    2014/04/06

    FC2 ブログが MIT ライセンスで OSS になってた

    opensource  php 

    ちょっと見落としていましたが、3月19日に FC2 ブログのソースが GitHub で公開されていました。
    ライセンスは MIT ライセンスで、動作環境は PHP 5.2.17 以降MySQL 5.1 以降となっています。

    自社サービス用なのでインストールが面倒なのかなと思っていましたが、意外にもちゃんとインストーラーがついてます。そんなわけで、インストールは MySQL のデータベースとユーザーの作成、ソースが入った zip の展開、config.php の編集くらいで簡単にインストールできました。最近は自分でブログエンジンをインストールするよりは、ASP を利用するほうが簡単なのであまり使う人も多くないと踏んでの公開でしょうかね。

    FC2総合インフォメーション 【ブログ】「FC2ブログ」をオープンソースで公開!より自由にカスタマイズ可能!

    この度、FC2ブログ( blog.fc2.com )にてブログをオープンソース(MITライセンス)で公開しました。
    独自のカテゴライズや情報サイトの構築など、アイディア次第!
    FC2ブログをより快適に楽しいサービスやソフトウェアで彩ってみませんか

      at 19:53 |
      2013/06/21

      PHP 5.5.0 リリース

      php 

      PHP の新しいメジャーバージョン 5.5.0がリリースされました。

      OSS 化された Opcache(Zend Optimizer+)も同梱されているようです。その他にも Windows XP がサポートから外れたり、MySQL拡張モジュールなどが非推奨になったりしているので、バージョンアップする前にマイグレーションガイド*1に目を通すなど十分な準備が必要です。

      PHP: Hypertext Preprocessor

      PHP 5.5.0 released.
      20-Jun-2013 The PHP development team is proud to announce the immediate availability of PHP 5.5.0. This release includes a large number of new features and bug fixes.

      at 23:13 |
      2013/05/03

      EXIF からレンズ名を取得する(Nikon編)

      nikon  php  exif 

      以前、Panasonic 機の EXIF からレンズデータを抽出するというのをやりましたが、最近メインのカメラが D600 になったので、今回は Nikon 機の EXIF からのレンズデータの抽出にチャレンジすることにします。

      プログラミングの大きな問題点は2つ。Pana機の場合はレンズ名が直接 EXIF に埋まっていましたが、Nikon 機はレンズの ID 情報だけが埋め込まれているだけのようなので、 ID とレンズ名の関連づけは自分でやらなくてはなりません。また、Nikon 機の EXIF は項目によっては暗号化がされていて、そのままではデータが読めないようになっているので、これを復元してやる必要があります。

      レンズの ID については下記のサイトに纏められていたので、これを利用させてもらいました。

      もう一つの暗号化されたデータの復元については FITS*1 というプロジェクトに Perl で書かれた Decypt()*2 という復号化ルーチンがあったので、これを丸々 PHP にポーティングしました。
      EXIF のパースは前回と同様に、The PHP Metadata Toolkitを用います。

      [EXIF からレンズ名を取得する(Nikon編) の続きを読む]

      at 19:16 |
      2013/02/17

      Zend Optimizer+ がオープンソース化される

      php  opensource 

      PHP の高速化のために 実行コードをキャッシュする仕組みを使っている人も多いと思います。
      実装として代表的なのは APC*1 や eAccelerator*2、XCache*3 あたりでしょうか。今回話題になっている Zend Optimizer+ はその元祖ともいえる存在でしたが、オープンソースではありませんでした。ところが、この Zend Optimizer+ が GitHub で公開され、PHP 5.5 に統合されるという話が進んでいるようです。昔、PHP6 計画があったときには APC がバンドルされるとかされないとか言う話があったと思いますが、結局こういうことになるんですね。

      PHP 5.5 に Zend Optimizer は統合されるのか? - インターネットコム

      Suraski 氏は、Optimizer は APC よりも高いパフォーマンスを維持できると主張している。Optimizer を PHP にデフォルトで組み込んでしまえば、PHP はデフォルトでより高いパフォーマンスを出せるようになる、というのが同氏の考えだ。
      これを実現するため、Zend は Optimizer を PHP ライセンスのもとで完全にオープンソース化し、GitHub で公開した。

      at 23:28 |
      2012/12/21

      16進表記と base64url の容量効率

      php 

      バイナリのデータをテキストデータとして表すときに16進数表記をよく使いますが、ちょっと長すぎる場合があるのでなんとか短くできないかなと思って色々考えてみたところ、大文字小文字の区別ができる環境の場合はbase64URLを使った方が容量効率がいいという当たり前のことに気づいたのでメモ。

      バイナリのものをテキストデータに変換して扱う代表例といえば、データのハッシュ値でしょうか。例として sha256 を考えてみると、入力容量に関わらず得られるハッシュ値はバイナリで 256bit になります。これを16進数表記すると、a~z,0~9を使って1文字 (8 bit) で 4bit を表すことになるので、64文字 (512 bit) となります。テキスト化したことで容量が2倍になってしまいました。これに対して、base64url を使うと A~Z,a~z,0~9,-,_,= を使って1文字 (8 bit) で 6bit を表すことになるので、43文字 (256/6 = 42.6666667)で表すことができます。

      まとめるとこんな感じでしょうか。

      エンコード 出力容量 文字種 バイナリ x1倍 - 16進数表記 x2倍 a~z,0~9 base64url x4/3倍 A~Z,a~z,0~9,-,_,=

      ちなみに今回は base64 ではなく base64url にしているのは、これをファイル名にすることを想定しているからです。
      base64 と base64url の違いは base64 が +,/ を使っていたところを -,_ と表記するだけの違いです。

      以下、プログラミングメモ。

      [16進表記と base64url の容量効率 の続きを読む]

        at 21:20 |
        2012/10/19

        「Piwik」 Google Analytics のようなアクセス解析ツール

        webanalytics  php 
        Piwik - 「Piwik」 Google Analytics のようなアクセス解析ツール

        Piwikという Google Analytics のようなアクセス解析ツールが面白そうだったのでメモ。

        リアルタイムWebアクセス解析ツール「Piwik 1.9」リリース、トラフィック分析機能の強化などが特徴 - SourceForge.JP Magazine : オープンソースの話題満載

        PiwikはPHPで実装されたWebアクセス解析ツール。Webページにトラッキング用のJavaScriptコードを埋め込むことでトラッキングを行う。米Googleの「Google Analytics」の代替となるツールを目指しており、ユーザーは自分が管理しているサーバー上でPiwikを動かすことで、ログデータを第三者に渡すこと無くアクセス解析を行える。
        Piwik 1.9は6月に公開されたバージョン1.8以来のメジャーリリースで、3つの新機能が加わった。1つ目は、ユーザーがどこから来てどこに行ったのかを追跡するプラグイン「Transition」で、検索エンジン、サイト内のほかのページ、URLの直接入力といったページへの流入経路や、ページの閲覧後どこに移動したのかといったトラフィックの流れを正確にわかりやすく表示できるという。検索に使われたキーワードやリファラ、どのページから別のサイトに行ったのか、といった詳細情報も把握できる。

        ログの収集は JavaScirpt 、サーバ側は PHP/MySQL で動くツールで、ライセンスはGPLv3です。どれくらいの負荷に耐えられるのかというのはちょっと気になりますが、Google などの外の会社にログを渡したくないという場合にはいいかもしれないですね。英語のインターフェースしかないのかと思っていたのですが、ちゃんと日本語化されたインターフェースも用意されていました。デモサイトがあるので、使い勝手を確認してみると良いと思います。


          at 21:48 |
          «Prev || 1 · 2 · 3 · 4 · 5 · 6 ·... | | Next»
          » ArchiveList (Tag for "php" )