MoxyはPerl製のオープンソース・ソフトウェア。日本において携帯電話サイトの需要は大きい。スマートフォンの活況もあって、PC向けと同時に携帯電話向けをリリースすることも多くなっている。また将来的にはPCよりもモバイルのシェアが大きくなると言われている。 携帯電話からのアクセスを模倣できる そんな携帯電話向けサイトの開発を行う場合、PCからアクセスを偽装してテストを行う必要がある。専用のソフトウェアの他、FirefoxのMobileSimulatorも使えるが、ここではWebブラウザベースのMoxyを紹介しよう。 MoxyはPerl製のソフトウェアで、専用のWebサーバとしてサービスが立ち上がる。ブラウザからアクセスすると、URLを指定して外部のWebサービスにアクセスできる。その際にはUserID、ユーザエージェント、HTTPヘッダーを任意に入れ替えてアクセスも可能だ。 Googleへ
和田 卓人(@t_wada) 作『RSpec の入門とその一歩先へ』はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスで提供されています。 東京 Ruby 会議 03 の RSpec ワークショップの資料です。このワークショップでは参加者の方に「写経」(コードを書き写すこと)をして貰い、TDD/BDD と RSpec を同時に学べるように都度説明を入れるかたちで行いました。 第2イテレーションも書きました。続きに興味ある方はご覧下さい (更新) 第3イテレーションも書きました。続きに興味ある方はご覧下さい 1st iteration favotter の みたいな NG ワードのフィルタリング機能を RSpec で作りましょう。まずは NG ワードの検出機能を作成します。 このイテレーションでは最初ベタな形のテストコードと実装を書き、だんだんとそのコードを洗練させてゆきま
テスト駆動開発で記述されるテストケースは、作成したプログラムの動作が正しいかどうかを検証するために行う「テスト」である。テストであるという点は同一であるが、加えて、これから作成しようとするプログラムに期待される「振る舞い」や「制約条件」、つまり「要求仕様」に近い形で、自然言語を併記しながらテストコードを記述する。テストフレームワークのメソッド名も自然言語(英語など)に近い形をとっている。 テストコードの可読性があがる上、テストコードが要求仕様となりうる。要求仕様からテストコードを起こす際も、スムーズにコードに移行しやすい。 BDDではスペック(仕様)とテストは限りなく近い物である。従って、テスト駆動開発における「テストファースト」は、BDDにおいては「スペックファースト」となり、スペックを作ってから実装するという、より自然な形でのプログラム製作を実現している。 いくつかのテストフレームワー
言語やインタフェースの設計には「驚き最小の原則」というのがある。まつもとさん本人はそんなこと言っていないようだが、かつて、Rubyはその原則に沿った言語と言われていた。一方、JavaScriptはそれに反する言語と未だに見なされているようだ。多くの場合、よく理解していないのが原因である。理解した上でも、やっぱりおかしいよ、というのもあるかも知れないが、じゃ、その場合どう定義したらよいんだ、というのはいろいろ難しい問題がある。 wtfjs(http://wtfjs.com/)にはJavaScriptのそんな「変な挙動」が集められている。wtfなんてタイトルをつけているくらいなので、あまり真面目に見る必要はないのかも知れないけれど、主なものについて古い順から軽く解説してみた。ちなみに、wtfはWhat The F*ckの略。 typeof NaN === 'number' // true In
883 水先案名無い人 :2010/02/23(火) 23:54:04 ID:e3SP+OZ80 ヒゲwww 884 水先案名無い人 :2010/02/23(火) 23:56:18 ID:cF9FwFSO0 こんな上質な無駄知識はそうそう無いw 885 水先案名無い人 :2010/02/24(水) 00:04:12 ID:8cXX6FZf0 カストロヒゲの謎が溶けた
はじめに 今日読んだところ 160 ページ〜 174 ページ 前回はこちら Effective Java 読書会 8 日目 「それ enum で出来るよ」 - IT戦記 enum は継承できない 混乱するので、あまり出来ないほうがいいけどね! オペコードのようなものは インタフェースを切って enum が継承してやれば拡張可能に出来るよ! たとえば、 jython のバイトコードは package org.python.bytecode; public interface Instruction { void accept(BytecodeVisitor visitor); } って感じのインタフェースを以下の enum で実装してる package org.python.bytecode; public enum BytecodeInstruction implements Instru
久々に Perl 書いた #! /usr/bin/perl use strict; use warnings; use utf8; use DBI; use HTTP::Date; use Net::Twitter; use File::Basename; use Data::Dumper; use Config::Pit; my $config = pit_get('twitter.com'); my $dbh = DBI->connect('dbi:SQLite:twitter.db', '', '', { AutoCommit => 0 }); die DBI->errstr unless $dbh; my $twitter = Net::Twitter->new( username => $config->{username}, password => $config->{pass
はじめに 今日読んだところ 143 ページ〜 159 ページ 前回はこちら Effective Java 読書会 7 日目 「PECS! PECS! PECS!」 - IT戦記 int 定数とか使わない 型安全じゃないから enum 使う enum Hoge { FOO, BAR; } 簡単 メソッドも持てる enum Hoge { FOO, BAR; void a() { /* (snip) */ } } で、以下のように使う Hoge.FOO.a(); シングルトンも 最近の Java では enum でやるらしい! switch 文の代わりに固有メソッド enum Hoge { FOO { void a() { /*snip*/ } }, BAR { void a() { /*snip*/ } }; abstract void a(); } 以下のコードが // これはダメ swit
はじめに 今日読んだところ 126 ページ〜 142 ページ 前回はこちら Effective Java 読書会 6 日目 「ジェネリクス!」 - IT戦記 Object を使ったその瞬間が ジェネリック型を使うチャンスなのです!!! たとえば、以下みたいな public class Stack { /* snip */ public Object pop() { /* snip */ } public void push(Object e) { /* snip */ } } こうなる public class Stack<E> { /* snip */ public E pop() { /* snip */ } public void push(E e) { /* snip */ } } Object を使わなくすると キャストがなくなる キャスト良くない!例外でるからね! どうしてもキ
はじめに 今日からついにジェネリクスに突入しました! 今日読んだところ 101 ページ〜 125 ページ 前回はこちら http://d.hatena.ne.jp/amachang/20100222/1266850995 関数オブジェクト インスタンスメソッドを一つだけ持っているクラスのオブジェクト。 C++ の関数ポインタのような、 JavaScript のクロージャのような使われ方をする。 ストラテジーパターンで ストラテジーだけを渡すときに使う。 関数オブジェクトのインスタンスは複数いらない 以下のように、シングルトンにしたり、 public static final なフィールドに入れられたりする。 import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import j
はじめに 今日も継承三昧>< 今日読んだところ 86 ページ〜 100 ページ 前回はこちら Effective Java 読書会 4 日目「最近はあまり継承とか使わないらしい」 - IT戦記 オーバーライド可能なメソッド自己利用(self-use)のドキュメント化 たとえば、 AbstractCollection#remove の以下の部分 This implementation iterates over the collection looking for the specified element. この実装は、指定要素を探すために走査をします。 If it finds the element, it removes the element from the collection using the iterator's remove method. 要素が見つかればイテレータの
はじめに らんらーらららんらんらーん♪(なうしか)っと ( ´ー`)フゥー...(゚Д゚)ハッ! 嘘です><ちょっと言ってみたかっただけです>< 今日読んだところ 67 ページ〜 85 ページ 前回はこちら Effective Java 読書会 3 日目「それ Apache Commons で出来るよ」 - IT戦記 情報隠蔽、カプセル化 API 以外の情報をモジュール外から見えなくすること 余計なテストとか書かなくていいから楽だよね。 パッケージプライベート 同じ jar の同じパッケージからのみ参照できる protected, public 完全公開 API として保守していかなければならないよ。 private とパッケージプライベートとは全然違うレベルよ インスタンスフィールド private にしる! public static final で、その参照先が不変クラスな場合に限り
はじめに じゃっばじゃばにしてやんよー♪っと ( ´ー`)フゥー...(゚Д゚)ハッ! どーん 今日読んだところ 45 ページ〜 66 ページ 前回はこちら Effective Java 読書会 2 日目 「equals night」 - IT戦記 hashCode 2 契約 シグニフィカントなフィールドを変更しなければ、いつ hashCode を呼び出しても値は変わらない x.equals(y) が true の場合は、 x.hashCode() == y.hashCode() が true equals をオーバーライドしたら hashCode もオーバーライドすべき 前述の 2 契約を守るために必要 x.equals(y) が false の場合 かならずしも、 x.hashCode() != y.hashCode() になる必要はないが、 値がバラけているほうが HashMap の
Meta See the related blog post: Under jQuery's Bonnet I was sick and tired of having to scroll through a raw copy of jQuery everytime I wanted to view a method's implementation... so I decided to have a go at creating a faster, more usable interface which would allow me to quickly traverse each method's source. It's dead simple. Type in a jQuery method name (then wait a bit) and the corresponding
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く