タグ

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

  • ハタさんのブログ : VirtualBoxでhost OSX, guest XPな環境で、バックグラウンドで動いてるWindowsにRDPを使う

    VirtualBox の VRDP な機能を使うと、バックグラウンドで動いているWindowsにリモートデスクトップなアクセスができるらしい。 ということで、最近バージョンアップしたVirtualBoxをOSXで動かしながらバックグラウンドのWindowsXPにRDPしてみる 結論から先に書くと、Microsoftが出してる、Remote Desktop Connection Client for Mac(こっちが最新?)がXPのHome Editionで使えないらしい(残念ながらProは持ってない ;-x)ので、MacPortsからrdesktopをインストールして使うようにした。 やりかたは簡単で、rdesktopをインストールして、VirtulaBoxのVBoxVRDPでlistenするだけ、一応ログとして nowel@macbook: ~> sudo port install r

    send
    send 2008/05/15
  • ハタさんのブログ : setTimeoutの実行は、functionの評価が終わってから

    たぶん、IT戦記な人とかが書いてるんだろうけど、少し書く。 setTimeoutが実行されるのは、functionの評価が終わってから。ということ。 もっというと、setTimeoutが宣言されたスコープ(コンテキスト? 関数?)の評価が終わってから、setTimeoutで登録された関数がスタックで登録される(実行待ち) その後、登録された関数を順次実行していく とりあえず、サンプル たとえば、次のコードに書かれているsetTimeoutが実行されるのは、0ms後ではなく、functionの評価が終わってから Event.observe(window, 'load', function (){ var start = new Date; console.log("start: " + (new Date - start)); setTimeout(function (){ console

    send
    send 2007/10/19
    とすると、var fn= function(){...};としてsetTimeoutすると…。あとで試す。
  • ハタさんのブログ : vimのShift-Enterとscreenのbindkey

    どうもscreen中にShift-Enter(S-CR)をvimで入力してしまうと\nMと入力される そこで、vimrcに下記のように書いてみたものの、認識してくださらない。 imap <S-CR> <CR> なんでだろなーと思ってググってみると、いくつか同じような症状で悩んでいる人がいるらしきログを発見。 vim just the usual :imap <s-cr> asdf But *only* in gvim As I said, for terminals so pressing ^[[27;2;13~ is just like pressing <Shift-CR>, and will trigger whatever Shift-CR is mapped to brian will . net ? Just what Aunt Tillie needs: Vi?!? 確かに

  • ハタさんのブログ : javascriptの暗黒面

    javascript の暗黒面については、ちょっと書かれているので何も言わずもがな。なのですが、最近こういった質問が増えてきたので少し書く。 via - JavaScript の暗黒面を覗く nullはオブジェクトだ! nullは歴史的理由からobjectです。なので、typeofするとobjectって返ってきます。 alert(typeof null); // object なので、この事に気がついている方は次のようなコードを書きます。 if(typeof hoge == 'undefined' || hoge == null){ // do something } たとえば、次のようなコード var hoge = function (a){ if(typeof a == 'number'){ // was number // 数値計算とか return a + 1; } if(type

  • ハタさんのブログ : PHP5.2.xで新しくなったインタフェース

    PHP5.2.xになってからインタフェースが進化しました。(良くも悪くも) PHP: 下位互換性のない変更点 - ManualやPHP: その他の機能向上 - Manualで少し書かれていますが、一部紹介 コンストラクタを強制することのできるインタフェース ぶっちゃけこれが5.2.xにするべき一番大きな理由になるかもしれない、変更点です。 Javaみたいな言語はinterfaceの実装にコンストラクタを定義することができなかった(クラス名メソッドがコンストラクタとするので)ためにabstractクラスを継承してたりしたんですが、PHPの__constructっていうコンストラクタ定義があるので、インタフェースでコンストラクタの定義をすることが可能になりました。 interface IComponent { public function __construct(IHoge $hoge,

    send
    send 2007/06/20
  • ハタさんのブログ : PHPの$thisはどこ?

    これはregister_tick_functionを使っているときに、出てきた現象なのですが、$thisのスコープがどうも微妙。 class Main { private static $count = 0; public function start(){ register_tick_function(array($this, 'tickscheck')); declare(ticks = 1){ echo 1; echo 2; echo 3; echo 4; echo 5; echo self::$count, PHP_EOL; } } // private で他のクラスは見えない private function tickscheck(){ self::$count++; } } class A extends Main { // tickscheck はここにはない。 } clas

    send
    send 2007/02/08
    あるある
  • ハタさんのブログ : concatやappendまわり

    send
    send 2007/01/30
  • ハタさんのブログ : 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

    send
    send 2007/01/22
  • ハタさんのブログ : ticksを使ったなんちゃってsynchronized

    PHPというか、PHP + Unixでやってみる並行プログラミングシリーズ これまた、ticksの説明が? PHPのtickってなに?くらいしか見つからなかったけど、ticksでsynchronizedっぽくしてみるテスト たぶん、ticksってPHP内部で発生するイベントの事だと思うんで、とりあえず、簡単なコード function hello(){ echo "hello", PHP_EOL; } register_tick_function("hello"); declare(ticks = 1){ echo "hoge1", PHP_EOL; echo "hoge2", PHP_EOL; echo "hoge3", PHP_EOL; echo "hoge4", PHP_EOL; echo "hoge5", PHP_EOL; } echo "---------------", PHP_

    send
    send 2007/01/22
  • ハタさんのブログ : デザパタ本には載らないデザパタ

    突然ですが、きっとあなたも使っているデザインパターンシリーズ 何気なく書いていたあのクラスが無意識的にNullObjectパターンやHook Operationパターンを適用していることがここ最近多い気がしませんか? 僕の場合はS2Daoを通して見付けた(身に着けた)ものが多いんですが、今回はそのS2Daoより、簡単に書けるHook OperationパターンとNullObjectパターンをPHP5で書いてみます。 Hook Operationパターン 「Hook Operationパターン」にも書かれていますが、あるクラスの処理の前と後ろに、別の処理を実行したいことがあります。 AOPとか特別なことはせずに、あるクラスの前処理と後処理を呼び出します。 あるクラスの処理を「Process」クラスの「execute」処理とし、別の処理(前・後)は「Hook」インタフェースを実装するクラス

  • ハタさんのブログ : javascriptでbatchっぽく

    ポスト @ 1:03:25 , 修正 @ 2006/12/01 1:26:28 | javascript     IT戦記 - 関数を非同期化して汎用性を高めるやKazuho@Cybozu Labs: JavaScript で非同期処理でやっていることの丸パクリに近いんですが、Batchっぽいのを作ってました。 こんなの。 var Batch = Class.create(); Batch.prototype = { initialize: function(callback, frequency, apply){ this.callback = (callback instanceof Array) ? callback : [callback]; this.frequency = frequency; this.apply = apply ? apply : this;

  • ハタさんのブログ : S2ActiveRecord再び

    ポスト @ 0:58:37 , 修正 @ 2006/11/30 1:00:59 | 独り言     以前(といっても今年のことだと思うんだけども)S2ActiveRecordというのをS2Daoのextensionとして提供していました。(ここやここを見ると今年の6月頃まではあったらしい) この当時は「interfaceをPHPで書くのってだりー」程度にしか思っていなかった(今は逆ですが)ので、もっと簡単に書けるのないかなーと勢い・気の赴くままに作成していました。 当時のS2ActiveRecordは結構手抜きで、Entityクラスに対してextends S2ActiveRecordとし、componentにてコンストラクタinjectionでS2Dao_DbmsやSqlCreator関係を注入した「S2ActiveRecordを継承」したコンポーネントができますよ。程度のものでしか

  • ハタさんのブログ : PhingでEntityをGenerate

    [S2Dao.PHP5] PhingでEntityをGenerateする - ヱビスブログやyonekawaのはてなダイアリーでもやっていただいていますが、ずっと上げていなかった S2DaoSkeletonTask を上げてみるテスト やっぱエンティティなんかを作るのに脳味噌を消費しちゃうのは良くないです。 ここのtaskはCreoleを使っているようなので、S2Dao_DatabaseMetaDataUtilを使いつつ、パクリながら書き直してます。 助長な部分が多いと思うので、後は任せました。 > phing Buildfile: /home/nowel/workspace/S2Dao.PHP5/build.xml s2dao.php5 > init: s2dao.php5 > prepare: s2dao.php5 > generate: [generate] [create] [

    send
    send 2006/03/23
  • ハタさんのブログ : vimスクリプトとか書いてみた。

    Comfortable PHP editing with VIM -3-で紹介されてる .vimrcはなかなかいい感じだったりするわけで、 vim上での TAB 補完をしてくれるんだけど、map! がどうも気に入らないわけです。 同じような文字列が沢山あるし、何より @since とか@author に補完してくれない。(php-doc.vim使えってわけですが...) なので、基は同じでちょっと作り替えたよ! set formatoptions=qroct let g:date = strftime("%Y/%m/%d") let g:author = "nowel" imap <C-o> ^[:set paste<CR>:exe PhpDoc()<CR>:set nopaste<CR>i map! =cls <ESC>:call InsertClassDoc()<CR> map!

    send
    send 2006/02/02
  • ハタさんのブログ : phpDocumentor for VIM 1.0.1

    vim のプラグインで phpDoc の入力ができるらしい。 ref - phpDocumentor for VIM 1.0.1 - Tobias Schlitt - a passion for php PDV :vim onlineによると BeforeがAfterに。 やばい、これは早速入れなくては

    send
    send 2005/10/12
  • ハタさんのブログ : PEAR マニュアルを cron で更新

    自分トコに置いてある PEAR マニュアルを自動的に更新するようにしてみた。 書いたのは shell スクリプトと サーバにアップするための php スクリプト クライアント(自宅鯖)実行用で、レンタルサーバなどにアップして使ってたら怒られます。きっと。 shell スクリプトは ~/bin/peardocco とでもして以下のように書いてみた。 #!/bin/sh cd /home/nowel/workspace/php cvs -d :pserver:cvsread@cvs.php.net:/repository checkout peardoc cd peardoc # ELF さんの助言により追加 make distclean # この辺は適当に。 autoconf && ./configure --with-lang=ja && make # 色づけ(でもhtmlじゃ意味ない?

    send
    send 2005/10/11
  • ハタさんのブログ : Pear::XML_sql2xmlの和訳してみたよ。

    PearのPEAR :: Package :: XML_sql2xmlっていうやつのドキュメントを和訳してみました。 rev - XML_sql2xml このXML_sql2xmlってのはすごく面白いpearパッケージです。 導入から読み進めてもらえれば分かりますが、簡単に言うとMySQLなどでApache Xindiceみたいなことができます。 例えば select * from user_table ってクエリを投げると <root> <result> <row> <id>1</id> <name>hoge</name> <sexual>male</sexual> </row> <row> <id>2</id> <name>foo</name> <sexual>famale</sexual> </row> <row> <id>3</id> <name>bar</name> <sex

    send
    send 2005/08/23
  • 1