タグ

ブックマーク / blog.xole.net (16)

  • ハタさんのブログ(復刻版) : javascripterになろう。の社内勉強会

    社内で使っているモノにTitaniumとかSenchaとか増えてきたので、javascriptをより知ってもらおうと思って、社内勉強会で使った資料とか、今さら javascripterになろう。の巻1章 javascripterになろう。の巻2章 地震とか色々あって3章が紛失してしまったけど、今のところ3章まで話したハズ。 内容の校正とかしてないから、間違ってる点があるかも。

  • ハタさんのブログ : PHPで並行処理

    PHPというか、PHP + Unixでやってみる並行プログラミングシリーズ ググってみてもKoshigoeBLOG: PHPで並列処理や個人的なメモと備忘録 2003年 11月くらいしかヒットしないPHPのプロセス制御(pcntl)をやってみるテスト。 JavaをパクってThreadクラスとRunnableインタフェースを書いてみた。(正確にはProcessクラス?) interface Runnable { public function run(); } abstract class Thread implements Runnable { private $status; private $isRunning = false; public function __construct(){ } public function __destuct(){ // callee, exitti

    sotarok
    sotarok 2011/02/14
    pcntl
  • ハタさんのブログ(復刻版) : PHPカンファレンス2009「Q4MとFlareを使って スケーラブルなサービスを作る!」の資料

    すいません、遅くなっていましたが、とりあえずここに置いておきます。 ref - http://www.slideshare.net/nowelium/building-highscalable-web-applications-using-q4m-and-flare Building High-Scalable Web Applications Using Q4M and Flare View more documents from nowelium. Ustreamはこの辺 ref - http://www.ustream.tv/recorded/2107541 いくつか質問があったものは、別途書きます

  • ハタさんのブログ(復刻版) : mprofile.php

    mprofileをPHPに移植してみた。 ref - /platform/mysql/mprofile.php - CodeRepos::Share - Trac ちょっとした filter を書きたいけど、ウチには perlmonger はいないのよねぇ。って人向け。 たぶん、一緒のことはできるはず。 via - Kazuho@Cybozu Labs: MySQL のボトルネックを統計的に監視・解析する方法 使い方はほとんど一緒で、、 ./mpdump.php --host=192.168.0.123 --user=hoge --password=foobar > dump.txt でサンプリングしておいて ./mpfilter.php こんな感じ。 ちなみに、少し変更ポイントがあって、 mpdump において、SHOW FULL PROCESSLIST を拾っているコードのうち

    sotarok
    sotarok 2009/08/04
    mprofile.php
  • ハタさんのブログ : Q4MをPHP(PDO)で

    Q4Mが無事インストールできたので、PHPから触ってみる。詳細なことは今度書く。とりあえず触りだけでも テーブル定義 drop table if exists hoge_queue; create table hoge_queue( id int not null, name varchar(25) not null ) engine=queue; こんなスクリプトをガンガン回して、監視 $conn = new PDO('mysql:host=localhost; dbname=hogetest', 'user', 'password'); $wait = $conn->prepare('SELECT queue_wait("hoge_queue", 10)'); $abort = $conn->prepare('SELECT queue_abort()'); $e = $conn->pr

  • ハタさんのブログ : 第2回設計勉強会に参加してきた

    第2回設計勉強会に参加してきました。 まず、こういった機会を提供してくれた id:shimookaさん、ありがとうございます。株式会社ディノさんも会場の提供ありがとうございます。LINDさんも毎度ありがとうです。 とりあえず、資料を置いておきます。 Event Php Study Design 2 View SlideShare presentation or Upload your own. (tags: php design) ちなみに、Teedaのレイヤーは Teeda Extension featuring Goya 〜アーキテクチャ【レイヤー構成】〜 - たかのり日記 さんのを、チョーそのまま使ってます Hermit は http://svn.coderepos.org/share/lang/php/misc/Hermit/ 今回の発表は、すいません。あまりまとめきれていなく

  • ハタさんのブログ : selfと$this

    なんか、某巨大掲示板で「$thisとかselfを付け忘れるんで色々面倒だ。」みたいな書き込みをみた。 そういえば、最近自分もやらかした。 <?php class hoge { private static $nice; public function setter(){ $this->nice = "foo"; self::$nice = "bar"; } public function getter(){ var_dump( $this->nice ); var_dump( self::$nice ); } public static function sage(){ $this->getter(); self::getter(); } } ?> ってなクラスに対して $aaa = new hoge(); $aaa->setter(); $aaa->getter(); $aaa->sa

    sotarok
    sotarok 2008/02/03
  • ハタさんのブログ : PHPだけで、構文解析 + 構文木ツール(?)作る。その2

    前回からの続き。 最近は、オレオレ言語が流行っているらしく、僕も「ジョジョ言語」とか作って遊んでいたけど、どうやらこれからは、言語開発から構文解析が流行るかもしれないので、先駆けでやってみるシリーズ。 とりあえず、前回の続き的には、やはり流行ってるっぽいSchemeモドキの構文解析で。 以下はそれっぽく書いたBNF configure = new ParserConfigure; $configure->ignoreCase = true; $configure->classPrefix = 'PST'; $parser = new PSTParser($configure); $parser->TOKEN->OPEN = '('; $parser->TOKEN->CLOSE = ')'; $parser->TOKEN->NUMBER = '/^[\+\-]?[0-9]+$/'; $pa

    sotarok
    sotarok 2008/01/29
    パーサジェネレータ・構文解析 その2
  • ハタさんのブログ : PHPだけで、パーサジェネレータ作る。(仮

    JavaCC+JTreeの構文解析とかパーサジェネレータの仕組みを勉強がてら、自分でも作れるんじゃないかとPHPだけでどこまでできるかやってみた(未完成) とりあえず、BNFにあたるような部分をこんな感じで定義 $configure = new ParserConfigure; $configure->ignoreCase = true; $configure->classPrefix = 'PST'; $parser = new PSTParser($configure); $parser->TOKEN->OPEN = array('(', '{', '['); $parser->TOKEN->CLOSE = array(')', '}', ']'); $parser->TOKEN->PAD = ','; $parser->TOKEN->HOGE = 'hoge'; $parser->T

    sotarok
    sotarok 2008/01/29
    パーサジェネレータ・構文解析 その1
  • ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その2

    前回のエントリが700users突入しました。ありがとうございます。参考になれば幸いです。 ということで、その2になります。 前回書いた通り、C/Javaについてはある程度の知識がある人なので、クラスなどのオブジェクト指向はちゃんと理解されているようですが、プロトタイプ指向は初めて学ぶようです。 javascript(ECMAScript)のプロトタイプは他のプロトタイプ指向言語とはひと味違う動作をするので、その点も含めておさらい プロトタイプとはなんですか?プロトタイプとは継承パターンの一つでしかないです プロトタイプは単なる継承パターンであり、単一の方向への継承しか行わない点についてはクラスベースと同じです。 var Hoge = function (){}; Hoge.prototype.methodA = function (){ return "this is methodA

    sotarok
    sotarok 2007/12/18
    オブジェクト指向。プロトタイプ
  • ハタさんのブログ : Javascriptによる大規模開発の覚え書き。高速化編

    前回書いた「Javascriptによる大規模開発の覚え書き」が凄いことになってました。 今回は、省略した「5.高速化せよ」について書きます。 僕にとってjavascriptは非常に高速な言語です。それは何が高速か 開発速度が高速である 開発速度、及びそこに至るまでの修得速度はとても高速です。動的言語を上手く操る開発者はもちろん、開発に不慣れな(言葉が悪いけど)新人達でさえ「動く」モノをサクっと作ってしまえる。 また、プラットフォーム(? というかブラウザ)が広く普及しているので、ググればスグに問題解決もできる。 それにローカルで簡単に作れる。javascript、それは動作環境を含めて高速です。 高速にUI操作ができる(UI操作が非常に簡単である) swingとかでUI操作をするには多くのオブジェクト操作をしなければならないけど、javascript(もといDHTML)は非常に簡単に

  • ハタさんのブログ : Javascriptによる大規模開発の覚え書き

    未だに半年前のエントリにブクマされるみたいなので、もう少しjavascriptについて書いてみる。 今回は大規模化開発におけるJavascriptの注意点とかそういうの。当てはまらない環境の方もいます。(しかも基的な事だらけで大したことは書いてないです) ほぼリッチクライアントを主目的としたjavascripterとコードを対象とします。 どちらかというと、ライブラリを提供する側の視点から 1.ログを出力せよ あなたが書いたコードは遅い、と必ず言われます。なので言われる前から、自分の書いたコードの処理時間をログするようにしましょう。 次のような処理時間を計測するロガーを作ります。 var TraceLog = function (){ this.startTime = -1; var outer = document.getElementById('_outer'); if(oute

  • ハタさんのブログ(復刻版) : 私は如何にしてJavascriptのprototypeを身につけたか。

    javascriptのprototypeはなかなか理解してもらえないですねぇ。 ここ1年間でマジマジと実感しました。 特に、大規模開発をしているとこだと、いろんな知識が入り乱れていて(ホームページ時代からAjaxを読んだ人とか)が、javascriptが単なる関数型列挙な言語(語弊があるけど)という見方が大多数を占めているように見えます。 そんな中で "String.prototype.trim" みたいなコードを見せても、説明下手なのか中々上手く伝わらないですねぇ。 ということで(?)、僕がjavascriptのprototypeを身に着けるまでやったこと、とか。これも備忘 prototype.jsのソースコードを眺める Array.mapとかEnumerable, Hashは勉強になりますねー。 ただ、prototype継承されすぎて、ちょっと多すぎなこともあります。 var

  • ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その1

    僕にも教える人ができた(? というか人にモノを教える立場)になったので、とりあえず、最近はもっぱらjavascriptを教えています。 もともとCやJavaなどについてはある程度の知識がある人なので、それを少しjs的な意味で、関数言語的な教えをやっている最中のメモ 変数って何ですか?変数って値もしくは式そのものに利便的な名前をつけているものです 次のhogeとfooは値をいれる箱ではなく、値そのものに別名(もしくは分かりやすい名称)を割り当てているだけに過ぎませんよ。 var hoge = 1; var foo = [1, 2, 3]; alert(hoge + 1); // 2 alert(foo[0]); // 1 alert(1 + 1); // 2 alert([1, 2, 3][0]); // 1 つまり、関数自体を変数に代入する事ができます。(functionとは特別な呼び名

  • ハタさんのブログ : PHP開発者のためのデザインパターン。Controller

    はてブコメントにて、「シリーズ化して欲しい」とあったので、もう少し書いてみます。 今回紹介するパターンは、Controllerパターン。 たぶん、デザパタ(GoFとかのヤツ)ではControllerパターンなんてものは存在しないのですが、よく見掛けるパターンなので紹介します。 よくあるControllerパターンは、FrontControllerパターンを使ったデータ遷移パターンですが、今回僕が紹介するパターンはCommandController(これもGoFとかのパターンにたぶん無いので勝手に命名)です。 何か実行したいCommandについて、Controllerが適切に実装を振り分けその後のActionを実行するためのパターンです。 よくある実装 例えば、以下にCommandインタフェースを実装した複数のクラスがあり、そのCommandによって、実行するActionを振り分けるCo

    sotarok
    sotarok 2007/11/08
  • ハタさんのブログ : javascriptでunicode一覧(?)

    現場で、unicode一覧なるものを斜め後ろの人がjavaで作っていたので、jsでパクる こんな感じ? var chars = []; for(var i = 0; i < 0xFFFF; ++i){ chars.push(i + ': ' + String.fromCharCode('0x' + i)); } var list = document.getElementById('list'); list.innerHTML = chars.join('<br />'); 重いので注意→http://labs.s2php5.jp/misc/charcodes.html これを実行して気がついたけど、[int値 : 文字列]で出力しているハズが10590番地辺りから立場が逆転して、[文字列 : int値]みたいになってる。 この文字列は何ぞや。 ref - Unicode - Wiki

  • 1