タグ

ブックマーク / blog.asial.co.jp (25)

  • PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回

    こんにちは、久保田です。 皆さん正規表現は使っていますか? PHPに限らずどんな言語を使っていても、正規表現にお世話になっていないプログラマはいないと思います。しかし、その正規表現がどのように実装されているかについては知らない方が多いのではないのでしょうか。 この記事では、その正規表現エンジンの実装方法の一つである仮想マシンによる正規表現エンジンの実装方法を解説しつつ実際に簡単な正規表現エンジンを作っていきたいと思います。 正規表現エンジンの実装方法 正規表現エンジンの実装方法はいくつかあるのですが、それの一つに仮想マシンによって正規表現のマッチング処理を実行するやり方があります。PHPで利用している正規表現エンジンであるPCREはこの方式を採用しています。 仮想マシンによる実装方法は、正規表現というよりもプログラミング言語の実装方法の一つとして知られています。Rubyの最もメジャーな実装

    PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回
  • PHP5.5 Alpha1リリース! 新機能を俯瞰する

    こんにちは、久保田です。 PHP5.5 Alpha1が11/15日付けでリリースされました。この記事では以下のような新機能や変更を紹介します。 ・ジェネレータとコルーチンの追加 ・finallyキーワードの追加 ・配列や文字列のデリファレンスのサポート ・foreachの中でのlist表現 ・PCRE正規表現での/e修飾子が非推奨化 ・NEWS翻訳 ジェネレータとコルーチンの追加 PHP5.5での一番大きな新機能は、ジェネレータとコルーチンの追加です。文法にyield構文が追加されました。 まずは、ジェネレータを説明します。例えば以下の様なコードが動きます。 <?php function hoge() { yield "hoge"; yield "fuga"; yield "piyo"; } foreach (hoge() as $str) { var_dump($str); }

  • iPhone向けwebアプリを作ってみる-タッチイベント、ジェスチャーイベントに関するまとめ-

    こんにちは。普段からiPhoneを愛用している橋です。 最近、「せっかくiPhone持ってるんだし、iPhone向けのアプリ作ってみようかしら?」と思い立ったのですが、iPhoneのネイティブアプリを作るには、"Objective-C"と、"cocoa Touch"というiPhone/ipodTouch向けのフレームワークを理解する必要があり、また、自分で開発したアプリを実機に入れて動かしてみるには、そこそこの費用と各種手続きが必要だったり(iPhoneエミュレータ上で動かす分には問題ないのですが…)と、何かと大変です。 「何かもっと手軽にiPhone特有の機能を活かしたアプリを作る方法はないかなぁ。。」と考え、思い立ったのがWebアプリ。Webアプリなら、今までの知識+αでアプリを作成することが出来るのではないかと。そこで、今回から数回に渡ってiPhonejavascriptを使って

    iPhone向けwebアプリを作ってみる-タッチイベント、ジェスチャーイベントに関するまとめ-
  • HTML5+CSS3の導入時に役立つ7つの設定

    こんにちは、鴨田です。 個人的に仕事の大半はスマートフォン関連なので、 最近のマークアップはほとんど全てHTML5+CSS3で行っています。 とはいえ、PC向けのサイトではまだまだHTML4.01、XHTML1.0、CSS2.1を使用している場合が多いと思います。 ですので、今回はHTML5+CSS3を導入するにあたって、役立つと思う7つの設定について、書きたいと思います。 1.HTML5の初期テンプレート案 <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>HTML5 初期テンプレート</title> <!-- reset.cssの設定 --> <link rel="stylesheet" media="screen" href="reset.css" /> <!-- Viewportの設定 --> <meta nam

    HTML5+CSS3の導入時に役立つ7つの設定
  • PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす

    PHP                                                                        NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 20 Jun 2011, PHP 5.4.0 Alpha 1 - autoconf2.59以上が ./buildconf によるconfigureスクリプトの生成のために サポート(そして要求)されるようになった。configureスクリプトのhelpの順番が おかしくなるかもしれないのを避けるために、autoconf2.60以上が望ましい。 (Rasmus, Chris Jones) - 古い機能の削除: . break/continue $var 文法。 (Dmitry)

    PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす
  • ZendEngine勉強会で「拡張ライブラリでなるべく簡単に構文を追加する方法」というタイトルで喋ってきました

    こんにちは、久保田です。 2/16に行われたZendEngine勉強会で、「拡張ライブラリでなるべく簡単に構文を追加する方法」というタイトルで喋ってきました。 勉強会を開催したyoyaさん、会場提供して頂いたGREEさんありがとうございます。お疲れさまでした。 ZendEngineとは、PHPの内部で利用されている仮想マシン(VirtualMachie)のことです。これを知ることは、拡張ライブラリを実装したり、PHPの内部実装に精通するためには避けては通れない道です。 この記事では、ZendEngine勉強会で喋った内容をもう少し詳しくテキストにして解説します。 はじめに PHPの拡張ライブラリには、単にC/C++言語で記述されたライブラリをPHPでも使えるようにする拡張ライブラリと、PHPそのものの振る舞いを変える拡張ライブラリの二種類があります。 前者で有名なのは、画像を加工変換合成す

    ZendEngine勉強会で「拡張ライブラリでなるべく簡単に構文を追加する方法」というタイトルで喋ってきました
  • Twigでカスタムタグを追加する

    あけましておめでとうございます。小川です。 日はTwigでカスタムタグを追加する方法を紹介します。 ■Twig TwigはPHPで実装されたテンプレートエンジンの1つで、Python製のテンプレートエンジンのJinjaとほぼ同じ構文を持っています。 Webアプリケーションフレームワークsymfonyの次期バージョンでもあるSymfony2で採用されることが決定しており、Symfony界隈を中心に注目を浴びているテンプレートエンジンです。 <h1>Categories</h1> {% if categories|length > 0 %} <ul> {% for category in categories %} <li>{{ category.name }}</li> {% endfor %} </ul> {% endif %} 上記がTwigを使ったサンプルコードです。「{% %}」や

    Twigでカスタムタグを追加する
  • Symfony 2のアプリケーション構成を読む

    HelloKernel.php  cache/  config/  console  logs/ 先ほど説明をしたKernelというものが出てきます。Kernelの中にはいくつかのメソッドが実装されています。簡単に説明します。 ◆registerRootDir() Kernelのルートとなるディレクトリです。またカーネルを配置してあるディレクトリ、ここではhelloがカーネルの名称、つまりアプリケーションの名称となります。 ◆registerBundles() Bundleとは日語にすると束とか1つにまとめたものという意味です。このBundleはSymfony 2では非常に重要な役割を持ちます。 このメソッドの中でZendBundleやDoctrineBundleを返しているのをみると、Bundleは従来のPluginのように思われるかもしれませんが、あながち間違いではないでしょう。 こ

    Symfony 2のアプリケーション構成を読む
  • symfonyのフォームフィルターの活用 +α

    こんにちは。小川です。今日はsymfonyのフォームフィルターをご紹介します。 題に入る前に、symfonyに関連するお知らせが何点かあります。 まず、12月1日にsymfony 1.3/1.4がリリースされました! symfony 1.3は1.2までとの互換性を保ち古い機能を残したバージョン、symfony 1.4は1.3から古い機能を削除したバージョンになります。 大きな変更点として、以下のような内容があげられます。 ◆SwiftMailerメール送信ライブラリを標準で搭載 ◆フォームクラスの改良 ◆標準のORMがDoctrineに変更 ◆Doctrineが1.0から1.2、Propelが1.3から1.4へバージョンアップ 詳しいことについては、以下のリンクをご参照ください。 symfony 1.3/1.4 の新しい機能 プロジェクトを1.2から1.3/1.4にアップグレードする あ

    symfonyのフォームフィルターの活用 +α
  • symfonyのルーティングでメモリが肥大化する問題と対処法

    こんにちは。小川です。 先日、symfony(v1.2.7)で番(prod)環境に設定した場合に開発(dev)環境の数倍のメモリが消費されるという状況に陥ってしまいました。原因を追及した結果、ルーティングの設定に問題があることが発覚したので、今日はそのことを書こうと思います。 原因先には述べてあるとおり、ルーティングの設定に問題がありました。symfony1.2ではルーティングのキャッシュということを行っており、そのキャッシュが肥大化してメモリを大量に消費する原因となっていました。 対策としてルーティングのキャッシュを無効にしてキャッシュファイルの読み書きを行わないように設定ファイルを修正したところ、上記の問題は無事に解決しました。 <strong>追記@2009/09/28</strong> symfony1.2.9以降では初期状態でキャッシュが無効になるように設定されています。sym

    symfonyのルーティングでメモリが肥大化する問題と対処法
  • symfony DoctrineのTIPS

    こんにちは、牧野です。 エアコンの入っている部屋にいることが多いせいか、最近夏バテ気味です。。。 さて、今日はDoctrineについてのTIPSです。symfonyとDoctrineの組み合わせで使う中で、役立ちそうなことをいくつか紹介します。 1.複数のデータベースに接続 config/databases.ymlとconfig/doctrine/schema.ymlを次のように書きます。 databases.yml all: main: class:        sfDoctrineDatabase param: classname:  DoctPDO dsn:        mysql:dbname=shop_test;host=localhost username:   root password: encoding:   utf8 persistent: true pooling

    symfony DoctrineのTIPS
  • 続・Flex4とsymfonyを連携させて遊んでみた。

    屋内の寒さと、屋外の暑さの差で完全に夏バテ気味の橋です、こんにちは。 早く秋がきてほしいですね。 秋いいよ、秋…。 はい。というわけで、みなさんも体調管理には気をつけてくださいませ。 さて、今回は前回に引き続き、Flex4 × Symfonyのお話です。 前回はsfAmfPluginの使い方と、データの保存処理について書きました。今回は引き続きデータの取得について書いていこうと思います。 (ちなみに、sfAmfPluginの2009/07/22現在の最新版はver.1.4.1です。前回使っていたver.1.3.0のバグがいくつか修正されているようなので、皆様こちらを使用しましょう。) データの取得についても、前回と同様に、まずsymfony側でサービスのメソッドの作成をします。 とりあえず、前回の記事で作成した保存用のメソッドに加え、取得用のメソッドを作成します。 サービス <?php

    続・Flex4とsymfonyを連携させて遊んでみた。
  • symfonyでの構築手順とよく使うプラグイン

    皆さん、ご無沙汰しております。 笹亀です。 最近は夏バテ気味で冷えピタが欠かせなくなりいつも貼って仕事をしています。 昨日は世紀の日でしたが、東京は曇っていて部分日なの上に追い打ちをかけるように微妙でしたね^^; さて、日はsymfonyを使って実際に事例を基に手順をご紹介したいと思います。 まずはsymfonyを使う場合にどのバージョンを使うのかを考えます。 下記のようにsymfonyのバージョンは互換性があまりない場合が多いので、選択する際には注意が必要です。 1.0:リリース済み ※2010/01にサポート終了 1.1:リリース済み(1.0→1.1への移行互換性がない) ※2009/06にサポート終了 1.2:リリース済み(1.0→1.2への移行互換性がない、1.1→1.2は互換性がそこそこある) ※2009/11にサポート終了 1.3:2009/11リリース予定(1.2→1.

    symfonyでの構築手順とよく使うプラグイン
  • symfony/lime + phpUnderControl を使ってみる

    こんにちは、亀です。アシアルも技術者の人数がそこそこ増えてきて、技術ブログの当番が回ってくるまで日数がかかるようになったためか、久方ぶりのブログです。 さてさて、今回はちょっとツール使う系の話です。 ちょっと前にPHP勉強会で「phpUnderControl」というツールの事が話題に上がっていたのを見たのですが、これが個人的にはなかなか惹かれるツールでした。 phpUnderContorl とは phpUnderControlとは、「継続インテグレーション」というアジャイル開発手法(厳密には、アジャイルで提唱されたというより昔からあった概念のようです)を実現するための自動ビルド/テスト/開発支援ツールです。 PHPはビルドいらずのスクリプト言語なので、自動ビルドと言われても( ゚Д゚)ハァ?って感じですが、phpUnderControlは単純なビルドにとどまらず、色々な事をやってくれます

    symfony/lime + phpUnderControl を使ってみる
  • デザイナーとsymfony

    こんにちは、アシアルの中川です。 近頃のPHP開発では、フレームワークを使うのが当たり前になってきています。 開発効率やメンテナンス性の向上など、フレームワークを使った開発の恩恵は開発者には非常にありがたいものです。 しかし、デザイナーの方にとっては、どうでしょう? フレームワークの訳の分からないディレクトリ構成や、独特のクセがあったりして覚えるのも大変だと思います。 一昔前では、Smartyという軽量のフレームワーク(テンプレートエンジン)なら、編集してもらえるデザイナーの方もいましたが、最近のsymfonyやCakePHPなどのフレームワークとなると格段に複雑さが増しています。 また、こういったフレームワークはデザイナー向けの情報がたくさんあるわけではありませんので、なかなか敬遠される傾向にあるのではないでしょうか。 そこで、PHPの代表的なフレームワークのsymfonyについて、表示

    デザイナーとsymfony
  • Flex4とsymfonyを連携させて遊んでみた。

    最近仕事で毎日PHP4と格闘している橋です、こんにちは。 さて、4繋がりということで、今日は先日β版がリリースされたばかりのFlashBuilder4を使って、 Flex4とsymfonyを連携させて遊んでみました。 Asialブログの購読者の方々の中に「symfonyって何??」って方はいらっしゃらないと思いますが、「Flexって何??」って方は中にはいらっしゃるかもしれないので、軽く説明。 Flexとは、Adobe社の提供するRIA(Rich Interface Application)開発のフレームワークです。 Adobeの得意分野であるFlashの技術をベースとしています。 インターフェースの作成には、MXMLというXMLを拡張した言語を用いて行います。 実行時には、MXMLファイルがswfファイルに変換され、クライアントのFlashPlayer上で実行されます。 Flexの開発

    Flex4とsymfonyを連携させて遊んでみた。
  • ツールチップjQueryプラグイン「qtip」を使ってみました

    皆様、こんばんは。 笹亀です。 先日、自分の開発用のサーバがお亡くなりになられて、悲しい気持ちでちゃんと供養をさせていただきました。 話は変わりますが最近、Safari4が正式リリースされ、早速ダウンロードして使わせていただいております。体感速度で若干速くなったような気がしています。見た目でも変わっていて楽しませてもらっています。 今回は、jQueryのプラグインのひとつで「qtip」を使ってみました。ツールチップ形式でポップアップで手軽に実装でき、奇麗に表示することができるのが特徴です。実際に使用したスクリプトと一緒に使った方法のご紹介をしていきます。 「qtip」を使うには「jquery-1.3.2min.js jquery.qtip-1.0.0-rc3.min.js」を読み込めばすぐに使えます!下記のURLからダウンロードできます。 http://craigsworks.com/pr

    ツールチップjQueryプラグイン「qtip」を使ってみました
  • symfony 1.2のルーティングまとめ

    皆さんこんにちは、小川です。 花粉症には厳しい季節がやってきましたが、負けずにブログを書いていきたいと思います。 今回はsymfony 1.2で新しくなったルーティングまわりについて書いてみたいと思います。 ◆ ルーティングの定義とREST 具体的に何が新しくなったのかというと、RESTfulなルーティングがサポートされました。 RESTについて非常に噛み砕いて説明すると、リソース(URI)にHTTPのGET,POST,PUT,DELETEなどといったメソッドを用いてアクセスして操作するものだと思ってください。 具体的なコードを見た方がたぶんわかりやすいと思うので進めていきます。まずは従来のルーティングです。 // apps/frontend/config/routing.yml product: url:      /product param:    { module: product

    symfony 1.2のルーティングまとめ
  • symfony1.2でカスタムタスクを作成してみる

    次に、タスクを呼び出した際に実行する処理を記述します。 生成されたクラスファイルを開いてみると、configure()とexecute()メソッドの2つが記述してあるので、execute()のほうに処理を記述することになります。 ありきたりですが、とりあえずHelloWorldを出しておきます。 protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'] ? $options[

    symfony1.2でカスタムタスクを作成してみる
  • Doctrineでサブクエリを使う : アシアルブログ

    こんにちは、小川です。 今週はsymfony 1.2がリリースされ、Jobeetという新たなチュートリアルが始まったりとsymfony界隈がとても盛り上がっていますね。symfonyに力を入れてるアシアルとしてもうれしい限りです。 さて、symfony 1.2にデフォルトで含まれているDoctrine。そのDoctrineでデータベースからオブジェクトを取得するにはDoctrine_Queryというオブジェクトを使いますが、実はこのDoctrine_Queryはサブクエリにも対応しています。今回はそのサブクエリの使い方をご紹介したいと思います。 今回使うスキーマは以下になります。 User:  actAs:    Timestampable:  columns:    id:      type: integer(4)      primary: true      notnull: tr