2011年7月30日土曜日

PHP5.4でビルトインウェブサーバーを使って反復実行環境の構築

PHPを勉強してて、コマンドラインで完結するようなphpファイルならあまり問題ないのですが、Webブラウザからアクセスして動作を確認する場合は
Apacheなどのローカルサーバに依存してて、特定のディレクトリに集める必要などがあって面倒だった。

NewImage

PHP5.4でビルトインウェブサーバーが導入されたので、phpからサーバを立ち上げてできるため、VirtualHostディレクティブなどを設定しなくても、
コマンドラインからphpを叩くだけでlocalhostにアクセスする環境が作れる。

PHP5.4はまだ正式版ではないので、自分でソースをダウンロードしてビルドする必要があります。

$ wget http://snaps.php.net/php5.4-latest.tar.gz
$ tar -xzvf php5.4-latest.tar.gz
$ cd php5.4-201107282230/
$ ./configure
$ make

makeまでにして、installはしないようにしています。

./sapi/cli/php -v
PHP 5.4.0alpha3-dev (cli)

CLIのphpが実行できるので、PHP: ビルトインウェブサーバー - Manualを参考にサーバーを立ち上げます。

準備ができたところで、こっから本題です。

自分はPHPStormを使っているので、External Toolからphpのコマンドを叩いて、
指定のファイルがディレクトリをrootにしたサーバーを立ち上げるように設定しています。

NewImage

☑Open consoleにチェックすると、PHPStorm内でコンソールを開いてコマンドを叩きます。この方法で開くとログもPHPStrom内からみられるので便利です。
プロセスの停止もPHPStorm内からプロセスを殺せます
Program: 先ほどコンパイルしたphpバイナリへのパス
Parameters:  -S localhost:8000 -t $FileDir$
これは PHP: ビルトインウェブサーバー - Manualを見るとわかりますが、
ポート番号8000で、ファイルがあるディレクトリをrootにしたサーバが起動するようにした引数です。

あとは、ブラウザで、http://localhost:8000/file.php にアクセスすれば結果が見られて確認などが便利。
同じように External Toolからopenするのもいいかもしれないです。

NewImage

$php -S localhost:8000 -t /path/to/dir/ && open http://localhost:8000/file.php

みたいに、サーバの起動と同時にブラウザも開くようにしたかったけど、やり方がよく分からなかった。

参考

2011年7月29日金曜日

githubからclone時にerror setting certificate verify locationsがでる

X / _ / X < git clone https://github.com/niklasvh/html2canvas.git
Initialized empty Git repository in D:/MyDocuments/Dropbox/workspace/toybox/html2canvas/.git/
error: error setting certificate verify locations:
CAfile: /bin/curl-ca-bundle.crt
CApath: none
while accessing https://github.com/niklasvh/html2canvas.git/info/refs

https接続するときに証明書のエラーになってるのが原因みたい。

$ git config --system http.sslcainfo \\bin\\curl-ca-bundle.crt

Windows 7 x64で、上のようにコマンドを打ったら、c:/Program Files (x86)/Git/bin/curl-ca-bundle.crt を使ってくれるようになるみたい。git config -l で確認してみると、設定値が以下のようになった。

http.sslcainfo=\\bin\\curl-ca-bundle.crt

なんで、今頃なったんだろ…

2011年7月22日金曜日

TDDの良い点、難しい点

Outsider's Dev Story :: TDD를 한달여정도 해보고 나서....よりメモ

JavaにおけるTDDを一月程実践しての話らしい

良い点

  • 開発の速度が遅くなるということはなかった
    テスト作成のために時間が減るという感じはなく、今までスコップ作業していた部分が自然に流れるようになった
  • テストを先に作成してからどう実装するかを考えると、開発の目的がはっきりした。
    理解しながら開発ができる
  • 思わぬタイミングで表示されるred(テストが失敗したときに出る赤いバー)はストレスではなく安心を与えてくれた
  • リファクタリングが非常に安心しながらできた
  • given / / when / / thenテンプレートは便利だ
    http://doortts.tistory.com/169
    テストの構造化ができてよみやすくなった

難しい点

  • TDDによってデザインがよくなるわけではない
    TDDによってこれが自動的に得られるわけではなく、やはり多くの経験と知識が必要です。
    デザインが悪いのか、テストケースが未熟なのかを判別するのが困難だった
  • テストする ということは思ったより難しい
    特にUIに関係するとどうテストするのかが難しいと感じた
  • 依存性のある部分のテストはやはり難しい
    Mockを使おうとしたけど、テストに慣れてないと難しい
  • ますます混乱するFixture
    全体的に共通のFixture テストがあまりなくて、テストケースごとにFixtureをとっていくことになった、テストが長くなり複雑になってしまった
  • リファクタリング中にテストケースを作成する自体になると困り果てる
思ったよりは順調に適応できてメリットなどを感じられるようになった。
TDDは習慣しなければならないと思った。


====

たぶん、Google先生で読むとそんな感じ。




2011年7月20日水曜日

手軽にObjective-Cのコード実行出来る方法を求める

手軽にObjCのコードを実行できる環境が欲しい。。

今やっているのは次のような感じです。
IntelliJのAppCodeを使っていますが、XCodeプロジェクトを作ってるだけなので、XCodeでも同じことができます。

New ProjectからCommand Line Toolを選んで


201107202050.jpg

TypeはFoundationを選択してFinish


201107202051.jpg

あとはmain.mファイルをいじって実行をするだけ。


201107202052.jpg

でも、この方法だと別のことを試すのにまた新しいプロジェクトを作らないと行けないのが何か嫌な感じ。
testフォルダに別のmain関数持ったものを作っても、ビルドするときにmainが重複してるからダメだしファイルを対象にして実行できるといいんだけどなー。(Vim + quickrunみたいな手軽な環境が欲しい)

Vim+quickrunでC言語の勉強環境 | MemeTodo

なぜかMacvimでvundleとかがエラー吐いて動かせないので、しばらくこれで。

http://twitter.com/#!/azu_re/statuses/93360504067727361
201107202059.jpg

2011年7月8日金曜日

Vim+quickrunでC言語の勉強環境

Vimとquickrunは各自適当に入れておく。

自分はVundleを使って入れています。

" Quick Run *vimproc
Bundle 'thinca/vim-quickrun'

Windows7なので、MinGWでgccを使えるようにします。
MinGWでC(C++とかも選べる)のコンパイラーを適当な場所(自分はD:\Programs\)にインストールしたら、パスは自動で通してくれないので自分で通す必要があります。
自分はRedmond Pathを使ってパスを通しました。(D:\Programs\MinGW\bin に対して通す)
そうすれば、コマンドプロンプトからgccが使えるようになると思う。

Quickrunには最初からgccのプリセットが入ってるので\+rをCのファイルで実行すれば、自動的に一時ファイルを作って実行できる

分割位置の設定もするといいです

学習用C言語開発環境 Ver 0.0.9.0も便利な気がするけど、何かプロジェクト単位なので少し扱いにくい。

RPGツクールから見るユーザー視点の制作物

SFCなど出ていたRPGツクールのカセットを買ってきて、その中にもしデータが残っていたらそれをプレイするという実況動画シリーズがニコニコ動画にあります。

これの面白い所は、ソフトを売った人はそれを他人に見られる事を想定してので(データが残ってる所とか)、中途半端なゲームだったり、カオスなゲームだったり、壊れてるゲームだったりいろいろと面白いものがでてきます。 (実況自体は成長しないのでアレなのですが…)

これを見てて(初期から見てたので相当前の話だけど)、よくあるミスに「RPGツクール1でカウンター越しに会話ができるようにするためには、カウンター自体にイベントをつけないといけない。」という罠にはまっているのを見かけます。

  +
  |
  |
 x|p
  |
+-+

で見ると 、カウンター内にいる人xにプレイヤーpが話しかけるには、xに会話イベントをつけるのではなくて、カウンター自体に会話イベントをつけないといけないというちょっとアレな仕様になっている(2とかで想像通りの挙動になるけど)


このおかしな挙動はテストプレイをすれば気づく可能性は高いけど、そこに至ってない(投げ出すも含めて)ユーザーの作品も多かった。
なぜこういう事が起きるのかを教訓的に考えてみると、ユーザーが必ずしも制作者という意識(プレイヤーがプレイできるものにする)を持って作るわけではなく、あくまで作る事だけを考えて満足してしまっている事がある。


RPGツクールの場合、こうやって公開される事が希なので別に問題ないけど、CGMなどそういう類いのものでも同じようなユーザー心理が働いてる可能性は存在する。 そのような作品が多く公開された状態になるのはサービス側にとってもよくないし、何とか防止する方法が必要になる。
つまり、RPGツクールを作った人とRPGツクールで作る人には何かしらの齟齬があったりするので、ユーザーに何かを作らせようとするものは、そういう齟齬を減らす工夫を考えるとよりよりサービスになるのではないかなと思った。


まあ、なんでこんな文章を書いたのかというとRPGツクール1でカウンター越しイベントは普通にバグっぽいよなって事を書きたかっただけです。はい。

2011年7月6日水曜日

Janetter上でもThinkPadのトラックポイントスクロールをできるようにした

Janetterはハッシュタグと平行して見られたりして、イベントの時とかは便利なので使ってました。でもThinkPadのトラックポイントでスクロールができないのが微妙に不便でした。
ThinkPadのThinkPointでスクロールできない

下記の記事を参考に、tp4table.dat に Janetter.exe を追加してください。

Office2007でThinkPadのThinkPointがスクロール不能の回避
http://d.hatena.ne.jp/teiiz/20070214/1171428196

※tp4table.dat が見つからない場合は、C:\Program Files\Synaptics\SynTP にあります。
TP4scrol.dat 及び TP4table.dat に追記してください。
※Win7,Vistaで書き込み権限がない場合、C:\Users\{User名}\AppData\Local\VirtualStore\ 内に
ファイルが書き出され、実際のファイルが更新されていない可能性があります。ご注意ください。

のように TP4table.dat に設定を追加して、ThinkPadを再起動すればスクロールできるようになります。(C:\Program Files\Synaptics\SynTP にあった)

; Janetter
*,*,Janetter.exe,*,*,*,WheelStd,0,9

TP4table.dat に上記を追記した。

2011年7月5日火曜日

IndexedDBについて

IndexedDBはChrome12-,Firefox4-が今のところ対応している

FirefoxではIndexedDBを使う際にはローカルデータのやつみたいにユーザーの許可が必要になる。(http://twitter.com/azu_re/statuses/87887746680627201)

image

以下、使い方やサンプルなど

IndexedDB - MDN Docs

一番よくまとまっている。
APIの使い方から対応状況とか

IndexedDB Implementations

APIごとサンプルが用意されていて、その場で実行できたりするのでIndexedDBを把握するのに便利
Google Code Playgroundみたいな感じ

image

HTML5 Rocks - A Simple TODO list using HTML5 IndexedDB

シンプルなTodoアプリを作るチュートリアル

IndexDB Demo - Version 1.0

こちらもIndexedDBを使ったサンプル。
key=value

2011年7月4日月曜日

Twitterのリアルタイム検索ができるサービス

Google リアルタイム検索が死んでしまってるので、代替になりそうなサービスを探してみる
Googleリアルタイム検索は質と言うよりは量が大事だったので、Firehoseの契約をしているかとか曖昧な単語でも検索できたり、時間軸が見られるのが結構よかった。(後、日本語、英語の切り替えが楽だったのも)

Twitter、リアルタイム検索スタートアップに消防ホースを開放とか探せば他にもありそうだけど、、、
何か良い感じのサービスはないのかな。。

追記: やっぱりFirehoseの契約が切れたので中断したみたいだ。

2011年7月3日日曜日

co.ccドメインがGoogle検索に表示されない件

site:co.cc - Google 検索を見ると分かりやすいですが、Googleがco.ccのドメインなサイトを検索結果から丸ごと消えるようにしたみたいです。

このサイトも.Co.CC+Bloggerで運営していたので、検索ハブされまてたので、efcl.info以下に引っ越しました。それに伴って今までのRSS購読やはてブなども死んでいます。(Bloggerにリダイレクト機能がないので…)
多分、これで固定になると思う。すみません。

2011年7月2日土曜日

style + contenteditable = Live style sheet editing

style要素とcontenteditableで入力したCSSを適応 - jsdo.it - share JavaScript, HTML5 and CSS

入力したCSSがその場で適応されるやつです。 (Shift+Enterで改行)
style要素にcontenteditable属性をつけた中身にCSSを書くと内容が適応されるのを利用しています。

CSSのデバッグなんかに便利な場合があるのかな。
普通にFirebugとかでもいいような気がしないでもないけど。

contenteditable + DOMCharacterDataModifiedでIME入力(変換)中のイベントも拾う

IME入力(変換)中のイベントも拾う - jsdo.it - share JavaScript, HTML5 and CSS

タイトル通りでそれ以上でもそれ以下でもないです。

FirefoxとChromeで動作確認できた。
IEは9からDOMCharacterDataModifiedをサポートしてるらしいです。
Operaはよく分からない

DOMCharacterDataModifiedはMutation Events の一つらしいですが、これ系はいつも情報が少ない… 使い道があるのかも微妙

一応元ネタ

関係しそうなの

全く関係ない事

このサイト、悪名高いco.ccドメインを使っていたので(tkドメインもそういう感じに使われがちだね)、検索ハブされたりするのはさすがに良くないので、efcl.info以下に引っ越しました。
なので、RSSやはてブとか吹っ飛んでいます。すいません。