タグ

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

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

    こんにちは。宇都宮です。 「特定ディレクトリ以下のファイル全てに対して処理を行うプログラム」を書く機会というのは、たまにありますね。 「PHP ファイル 再帰的」といったワードで検索すると、色々引っかかります。それぞれ一長一短あります。「特定ディレクトリ以下のファイル全てに対して処理を行うプログラム」の様々な実装例を紹介します。 1. scandir()とis_file()/is_dir()を組み合わせる <?php function getFileList($dir) { $files = scandir($dir); $files = array_filter($files, function ($file) { // 注(1) return !in_array($file, array('.', '..')); }); $list = array(); foreach ($files

    (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開発まとめ

    9月/10月社内Tech勉強会レポート – NodeJS/Privacy Sandbox API/3rdPartyCookie/NodeJS/PromiseAll/cascae/

    最近のJavaScript開発まとめ
  • PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回

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

  • 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を触ってみよう

    <?php $url = 'https://www.google.com/accounts/ClientLogin'; // signupページで入力したgoogleアカウントのIDとパスワード $google_id = 'メールアドレス'; // 送信者ID $google_pwd = 'パスワード'; $header = array( 'Content-type: application/x-www-form-urlencoded', ); $post_list = array( 'accountType' => 'GOOGLE', 'Email' => $google_id, 'Passwd' => $google_pwd, 'source' => 'sample-sample', 'service' => 'ac2dm', ); $post = http_build_query($

    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

    $ wget https://raw.github.com/facebook/codemod/master/src/codemod.py $ chmod +x codemod.py

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

    $ git config --global user.name "yoshiki" $ git config --global user.email "yoshiki@example.com" ■カラーリング git status や git diffなど、デフォルトでは味気ない文字がズラズラと画面に表示されますが、それを見やすいようにカラーリングすることができます。

    Gitを使い始めたらやっておきたい便利な設定いろいろ
    shin1x1
    shin1x1 2011/09/04
  • PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす

    こんにちは、久保田です。 先月6月28日、PHP5.4 alpha1がリリースされました。PHP5.3では、名前空間や無名関数の追加など、言語機能に大きな追加が行われました。PHP5.4 alpha1 ではtraitが実装され、オブジェクト指向言語としてのPHPに大きな機能追加が行われました。他にも、<?=記法のデフォルト有効化、array dereferenceの追加、無名関数内の$thisの扱いの変化、JsonSerializableインターフェイスの追加など筆記すべき様々な機能追加、改善が見られます。この記事ではPHP5.4 alpha1で見えてきた新機能をサンプルコードを交えながら概観します。 とりあえずNEWSを訳す PHP5.4 alpha1の変更点を記述した NEWS ファイルを翻訳してみたのが以下です。 <?php trait A { protected $hoge = "

    PHP5.4 alpha1リリース! PHP5.3からの新機能を見わたす
    shin1x1
    shin1x1 2011/07/08
    よいまとめ
  • サーバサイドでCanvasを利用する(node.js)

    // sample.js var Canvas = require('canvas') , http = require('http'); http.createServer(function (req, res) { var canvas = new Canvas(200,200); var ctx = canvas.getContext('2d'); // 四角形描画 ctx.fillStyle = 'rgba(0, 0, 255, 0.5)'; ctx.fillRect(10, 10, 190, 190); // テキスト描画 var text = "Canvas Test"; ctx.font = '30px Impact'; ctx.rotate(.1); ctx.fillStyle = 'rgba(0, 0, 0, 1.0)'; ctx.fillText(text, 10, 1

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

    こんにちは、中川です。 日々の運用をしていると、サービス運用の担当者から「管理画面で、あの操作はだれがやったか調べられませんか?」なんて質問を受けることがあります。 しっかりと操作ログをとるようなシステム要件でないとApacheのログを追うしかありませんが、通常はIPアドレスやブラウザ程度しか調べようがありませんよね。。。 しかし、初期開発であらゆる操作ログをしっかりシステムに組み込む余裕なんてないという場合もあります。そんな時のために事前にやっておくとちょっと便利で、非常に簡単なTIPSを。 ————————————————- ■追記 dandaso様 よりコメントいただきました。 確かにApacheへのログ用途ですので、apache_noteを利用するのが適切ですね。 dandaso様ご指摘ありがとうございます。 apache_noteを利用した場合の例も追加させていただきます。 ■a

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

    ■■■概要■■■ ・アプリ概要 ・・Canvas + WebSocket ・対応ブラウザ ・・Chrome or Safari (他、WebSocketが使えるブラウザ) ・サーバ側プログラム ・・node.js 0.2.0 ・・express@1.0.0rc2 ・・websocket-server@1.3.50 ※express, websocket-server は node.js のパッケージ管理システムの npm ( http://github.com/isaacs/npm ) でインストールしました。 node.js用のwebsocketサーバは何個かあるみたいですが ( 参照: http://github.com/ry/node/wiki/modules )、 今回は、比較的更新もされていて、手軽に利用できそうな node-websocket-server を使ってみました。

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

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

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

    <?php // Entity/User.php namespace Entity; class User { private $name; private $gender; public function __construct($name, $gender) { $this->name = $name; $this->gender = $gender; } public function getName() { return $this->name; } private function getGender() { return $this->gender; } } 名前を保持するnameプロパティと、性別を保持するgenderプロパティを定義します。genderプロパティに対するゲッターメソッドはprivateにしてあります。 ■ ReflectionClass まずクラスの情報を抜

    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回