タグ

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

  • (PHPで)指定ディレクトリ以下を全部チェックしてファイル一覧を取得する方法

    <?php function getFileList($dir) { $files = scandir($dir); $files = array_filter($files, function ($file) { // 注(1) return !in_array($file, array('.', '..')); }); $list = array(); foreach ($files as $file) { $fullpath = rtrim($dir, '/') . '/' . $file; // 注(2) if (is_file($fullpath)) { $list[] = $fullpath; } if (is_dir($fullpath)) { $list = array_merge($list, getFileList($fullpath)); } } return $li

    (PHPで)指定ディレクトリ以下を全部チェックしてファイル一覧を取得する方法
    shin1x1
    shin1x1 2014/03/08
    Finder 便利
  • PHP5.6.0alphaリリース!新機能を試す

    こんにちは、久保田です。PHP5.6.0alpha1が1月23日付けでリリースされました。 この記事では5.6に搭載される以下の新機能や変更を紹介します。 phpdbgデバッガ 可変長引数のための文法の追加 定数定義での計算のサポート その他NEWSファイルに記述されている変更 PHP5.6.0をビルドして試してみる PHP5.6の新機能を紹介する前に、まずはMacOSXやLinux環境にPHP5.6をビルドして試す方法を紹介します。Windows環境の場合にはビルド済みのバイナリが用意されているのでそれをダウンロードして下さい。 まず5.6.0alpha1リリースの記事にあるリンクから、PHP5.6.0alpha1のパッケージをダウンロードして解凍します。次に解凍したパッケージのディレクトリに進んでconfigureスクリプトを叩きます。

    PHP5.6.0alphaリリース!新機能を試す
    shin1x1
    shin1x1 2014/02/03
  • 最近のJavaScript開発まとめ

    こんにちは、中川です。 ここ1・2年ですが、私の担当するプロジェクトでは、 PHPよりもJavaScriptの開発が多い状態が続いております。 JSのプロジェクトを重ねるにつれ、開発環境も段々と整理されてきましたので、 一旦、最近のJS開発で利用しているライブラリやツールなどをまとめてみました。 フレームワーク ●Backbone.js http://backbonejs.org/ JavaScriptのMVCフレームワーク。 何も使わない(もしくは我流)よりは、これを使って欲しいと思えるフレームワークです。 利用者が多く日語情報も豊富にあるのと、フレームワーク自体が1500行程度と軽量なため、学習コストを低く抑えることができます。 ●AngularJS http://angularjs.org/ データバインディングを備えたフレームワーク。 高機能なテンプレートや、DIの仕組み、ルーテ

    最近のJavaScript開発まとめ
  • 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); }

    shin1x1
    shin1x1 2012/11/21
    良いまとめ / ジェネレータは kwatch さんの解説が分かりやすかった。 http://www.slideshare.net/kwatch/php55 / 本文には無いけど empty(foo()) も地味に嬉しい
  • 【Javascript】consoleオブジェクトが持つlog以外の便利メソッド18(前編)

    こんにちは、橋です。 今回と次回の2回にわたり、Safari、ChromeのWebインスペクターやFirefoxのFireBugで使えるconsoleオブジェクトの使い方について書いてみたいと思います。 Javascriptのコードをデバッグする際に、console.logを使ってメッセージやオブジェクトの内容をログに表示することがあるかと思いますが、 この「console」オブジェクト、実はlogメソッド以外にも複数のメソッドがあります。 まずは、consoleオブジェクトにどのようなメソッドがあるか、console.logを使って表示してみたいと思います。 consoleオブジェクトの中身を見てみると、__proto__オブジェクトに以下のメソッドが定義されています。 assert count debug dir dirxml error group groupCollapsed g

    【Javascript】consoleオブジェクトが持つlog以外の便利メソッド18(前編)
  • JavaScriptのコーディング規約を気軽にチェック

    こんにちは、中川です。 今回は「Google JavaScript Style Guide」を気軽にチェックできるClosure Linterをご紹介したいと思います。 http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml Google JavaScript Style Guideのいいところですが、 規約だけでなく、しっかりしたツールも揃っているところが素晴らしいと思います。 コーディング規約はあったとしても、それに従っているか定期的に簡単にチェックする方法がないと、 いつしか守られないまま開発されてしまうことになりますね。 ※今回の内容はMacにて動作確認を行なっています。

    JavaScriptのコーディング規約を気軽にチェック
  • Android開発 C2DMを触ってみよう

    こんにちは熊谷です。 前回は簡単なWEBブラウザを作成しましたが、今回はそこからちょっと離れて、Android 2.2以降から使えるC2DM(Cloud to Device Messaging)でメッセージの受信を試してみたいと思います。 今現在、C2DMを使うには http://code.google.com/intl/ja/android/c2dm/signup.html ここで登録を行う必要があります。登録フォームで必要な情報を入力し送信して、しばらく待っていると登録完了したよ的なメールが送られてきます。 そのメールが来たら早速使ってみましょう。 まずはC2DMを使って端末にメッセージを送信するため、認証Tokenを取得します。 <?php $url = 'https://www.google.com/accounts/ClientLogin'; // signupページで入力したg

    Android開発 C2DMを触ってみよう
  • PHP+Kestrel+Supervisorでお手軽タスクキューイング

    こんにちは、久保田です。 ウェブサービスでは、ユーザのアクションに従ってバッチ処理を行わなければならないケースがままあります。この記事では、バッチ処理の手法の一つであるタスクキューイングをPHPとKestrelとSupervisorを利用して行うやり方の導入を紹介します。 なぜなにタスクキューイング ウェブサービスでは、ユーザのアクションに従って非同期にバッチ処理を行うようなケースがよくあります。 例えばflickrのような写真を共有するウェブサービスで言えば、ユーザが写真をアップロードしたあとに非同期でその画像の複数のサムネイル生成や加工をしなければならないケースがあります。 よく見られるのは、DBにバッチ処理のためのタスクデータを入れておいて、後でcronで定期的に起動するワーカープロセスからバッチ処理を行う方法です。このやり方には、ワーカーを複数プロセスで扱いづらい、処理がリアルタイ

    PHP+Kestrel+Supervisorでお手軽タスクキューイング
    shin1x1
    shin1x1 2012/02/09
    supervisor と聞くと djb が思い浮かぶ。
  • jQueryだけ使うのが馬鹿らしくなる。KnockoutJSに触れる

    久保田です。最近KnockoutJSというJavaScriptフレームワークを勉強しています。 KnouckoutJSはjQueryの上に構築されているフレームワークです。jQueryのみ使うのと比べてKnockoutJSを利用すると、ウェブページ上のインタラクションを圧倒的に簡単に記述できます。この記事では、簡単にKnockoutJSの概要を説明し、KnockoutJSを用いたデモを紹介します。 このフレームワークの特徴としてあるのは、HTML内に宣言的な記述を埋め込むことでインタラクションが実装できることです。HTML5のカスタム属性(data*属性)を用いて、その要素に関する処理を宣言してきます。裏側の処理は、JavaScriptでViewModelを定義し、そこにビューが必要とする値を管理します。 例えば、あるチェックボックスにチェックを入れると下の要素がトグルする簡単な例は、以下

    jQueryだけ使うのが馬鹿らしくなる。KnockoutJSに触れる
  • リファクタリングのお供に使えるcodemod

    こんにちは、中川です。 今回はリファクタリングの際に役に立つcodemodというツールをご紹介したいと思います。 codemodとは、facebookが公開しているCUIの文字列置換ツールでpythonで作られています。 ツールといってもpythonファイルひとつですので非常に導入もしやすくなっています。 文字列の置き換えなら sed とかでできるのではと思われますが、 変換対象が多いときには、中には置換してはいけないものがあったり、 一部はそのまま置換でなくちょっと手直しが必要などがあったりしますよね。 そんな時に、codemod は変換対象をひとつひとつ確認・編集しながら置換をしていくことができます。 では、早速試してみましょう。 (※今回は手元のubuntuで試してみました。) ■インストール https://github.com/facebook/codemod から適当なディレク

    リファクタリングのお供に使えるcodemod
  • Gitを使い始めたらやっておきたい便利な設定いろいろ

    こんにちは、中川です。 Gitを使い始めてから、Subversionを使う機会がめっきり減ったこの頃です。 Gitだとローカルだけで簡単に使い始められるのもいいですが、気軽につくれるbranchや、mergeのしやすさがたまりませんね。 インストール直後の状態でも普通に利用できますが、 ちょっとした設定でさらに使いやすくなる方法をご紹介したいと思います。 ※今回ご紹介する内容はいずれも私のMacBook上での動作確認となり、Windows環境は考慮していませんがご容赦ください。 ■ユーザー名とE-mailアドレスの設定 まずは、最初にユーザ名と、メールアドレスを設定してしまいましょう。 $ git config --global user.name "yoshiki" $ git config --global user.email "yoshiki@example.com"

    Gitを使い始めたらやっておきたい便利な設定いろいろ
    shin1x1
    shin1x1 2011/09/04
  • 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からの新機能を見わたす
    shin1x1
    shin1x1 2011/07/08
    よいまとめ
  • サーバサイドでCanvasを利用する(node.js)

    こんにちは、中川です。 今年も残すところあと1週間をきりましたね。 このところ色々と忙しかったので年末年始はゆっくりとしたいと思います。 さて、今回の話題ですが、node.jsを使ってサーバサイドでCanvasが利用できるということで試してみました。 それでは、早速使ってみましょう。 ■今回の環境 Ubuntu 10.10 node.js v0.3.1 npm 0.2.12-1 node-canvas v0.4.1 ■インストール node-canvasでは、cairoを利用しますので、事前にインストールします。 // sample.js var Canvas = require('canvas') , http = require('http'); http.createServer(function (req, res) { var canvas = new Canvas(200,20

    サーバサイドでCanvasを利用する(node.js)
  • Apacheのアクセスログにユーザ情報を追加する

    # combinedのLogFormatに、%{ADMIN_ID}e を追加 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{ADMIN_ID}e\"" idcombined CustomLog "logs/access_log" idcombined と、たったこれだけで、access_logに任意の値を追加することができます。 symfonyでのプロジェクトでは、共通アクションのpreExecute内でapache_setenvしてあげるだけですね。 ■Cookieの値をログに出力 ちなみに、わざわざapache_setenvしたくないという場合には、Cookieの値をログを出力することもできます。 たとえば、cookieにADMIN_IDという値を仕込んだ場合は、 以下のフォーマッ

    Apacheのアクセスログにユーザ情報を追加する
  • はじめての共同作業 Canvas編 (node.js + websocket)

    こんにちは、中川です。 先月無事に結婚をした開発者が一名おり、近年アシアルでは徐々に既婚者が増えてきている状況です。 ということで、結婚といえば共同作業ですよね。 今までは、一人で作業していて大変なことが色々あったと思いますが、 二人(複数)でやれば、乗り越えられることもあることでしょう。 Webアプリでも最近は、より共同作業がしやすい環境ができつつあるように思います。 そこで、今回はWebSocketを使ったリアルタイム通信でのやり取りを行い、 一緒にお絵描きができるサンプルアプリを作ってみました。 ■■■概要■■■ ・アプリ概要 ・・Canvas + WebSocket ・対応ブラウザ ・・Chrome or Safari (他、WebSocketが使えるブラウザ) ・サーバ側プログラム ・・node.js 0.2.0 ・・express@1.0.0rc2 ・・websocket-se

    はじめての共同作業 Canvas編 (node.js + websocket)
  • iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (1)

    こんにちは、亀です。 今回から何回かに分けて、iPhoneの申請まわりの事に関するファイルの取り扱いノウハウを書いてみたいと思います。 ここでのファイルの取り扱い方の紹介方法は、ファイル一つ一つについて個別に言及するようなまとめ方はしません。 代わりに、そのファイルを作成・利用するタイミングを切り口として紹介し、その際にファイルをどう取り扱うべきかを、その理由とともに説明していきます。 (※なお、あくまでも個人的に感じたノウハウであって、必須事項ではありません。) 1回目は、まず触れるべきファイルの説明と、一番最初のCSR発行時に気をつけておくことを紹介します。 はじめに iPhoneの開発を始めようとすると、最初にCSRやらProvisioning Profileやら、いまいちパッとつかみづらい概念が出てきます。 このあたりのよくわからない事、けっこう悩まされてしまいますよね。 とはい

    iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (1)
  • PHPでリフレクション

    こんにちは、小川です。たまには文句でも書いてみます。 先日ふと「スパイシーチキン」という単語を聞いて、昔のアシアルブログを思い出しました。 スパイシーチキンという単語を便りに検索をしてみると、スパイシーチキンの絶頂期は2006年から2007年の初めごろ。 僕は2006年の12月18日にアシアルにアルバイトとして入社したため、スパイシーチキン時代のアシアルを知っています。 むしろ、スパイシーチキンがあったからこそアシアルに入社したといっても過言ではありません。 しかし、今はどうでしょう。日常が垣間見えるのは、おおよそ月に1度投稿される阿部さんのブログくらい・・・。 symfonyの話しかしない人もいるし。そんなだからいつまでたっても彼女ができないんですよ! ああ、、、あの頃のアシアルブログはどこへいってしまったのでしょうか。 やはりここはアシアルブログ再建のためにも、再度スパイシーチキンに登

    PHPでリフレクション
    shin1x1
    shin1x1 2010/09/21
    setAccessible()でprivateメソッドが実行できる! / これ待ってた / PHP5.3.2から
  • MacPortsの基本的な使い方とコマンド

    Macに移行して2ヶ月になりそうな今日この頃、ようやくMacになれてきた熊谷です。こんにちは。 MacというかOSX上で開発を行う上で欠かせないものにMacPortsがあります。前回もちょっと触れたのですが、今回はこれについてもうちょっと触れたいたいと思います。 MacPortsとはOSXで利用可能なパッケージ管理システムで、これを使うことによりOSX上でより良いUNIX生活を送ることができるようになります。私自身、まだMacPortsを使い始めたばかりで勉強中なんですが、それを忘れないようにするためにもメモ書きします。 まず、MacPortsをインストールするためにはOSXの開発環境であるXcode Toolsをインストールしておく必要があります。Xcode ToolsはMacに付属しているDVDかDeveloper Connectionからダウンロードしてインストールしておきます。で、

    MacPortsの基本的な使い方とコマンド
    shin1x1
    shin1x1 2010/06/25
  • IBを使わずに作るiPhoneアプリ作成入門:第2回

    こんにちは、亀です。目下の悩みはブログのタイトル欄の短さです。サブタイトルつけると長すぎてダメぽ! そんなことはさておき、前回はそこそこ反響をいただいたようで、ちょいちょいとiPhoneアプリ開発の連載を続けていこうかと思います。 最初は続きを書くか迷っていて、忙しさもあってちょっと間が空いてしまいましたが、これからはできるだけちょこちょこと書いていけるようにしていきます。 第1回はこちら:http://blog.asial.co.jp/502 第2回に今さら言うのもアレですが、全体の流れとしては、まずはいろんなView / Controllerの使い方を説明し、個別の機能を理解するとともに、iPhoneアプリケーションで採用されているMVCフレームワークの構造を紹介していきます。 それが終わった後で、何かそこそこ楽しめそうなアプリ作成を順を追って説明できればいいかな、なんて思っています

    IBを使わずに作るiPhoneアプリ作成入門:第2回