読者です 読者をやめる 読者になる 読者になる

アジャイルユーザビリティ

ソフトウェアの開発において、それが使いやすいのかどうかを判断するのは大切なこと。でも、開発チームのメンバー、プログラマやデザイナが見ていても、本当に迷わずに使えるのかどうか調べることはとても難しい。よろしい、それではユーザーテストだ。アジ…

UnificationAssertionをgithubに公開しました

https://github.com/soutaro/unification_assertionGemにしました。Bundlerがあれば簡単にインストールできるよ!もうちょっと手元で使ってみてから、どっかで宣伝する。 単一化でテストすれば良いじゃない - soutaroにっき

単一化でテストすれば良いじゃない

最近、こんなテストをいくつか書いていて、イラっとしました。 post(:create_note, { :note => { ... } }) assert_equal( { "id" => 13, "created_at" => Time.now, "updated_at" => Time.now, .... }, JSON.parse(@response.body)) このテストにはいくつか…

インターネットちょっと舐めてたわ

http://headlines.yahoo.co.jp/hl?a=20120210-00000022-zdn_b-bus_all こういうことがありました。つまりYahoo!のトップページにユビレジへのリンクを含む記事が掲載されたということです(当初リンクがありましたが、サーバに全くアクセスできなくなって、…

String#succは、辞書順ではない

ぼけっとしてて気づいてなかった。"999"の辞書順で次の文字列は、"999a"や"9990"であって、"1000"ではない。 ["999", "1000"].max => "999" ["999", "999".succ].max => "999" 後者は直感的に変だと思うんだけど。ひとまず、適当に辞書順になりそうな感じの…

@kmizuがjoinしました

ちょっと前の話になるのですが、忙しくて記事にできていなかったので記事にします。@kmizuがユビレジで働くことになりました。1月4日からです。そういうわけで、これからユビレジは全力でScalaに移行します。Good by Rails!!ということにはならないのですけ…

綺麗なプレゼン用スライドを作るときに使う写真を探す、1つのテクニック

写真素材を探すには、Googleの画像検索が便利です。 綺麗なプレゼン用スライドを作る、10のテクニック | Take it easy! - mauekusa 's BLOG - 私は、内輪で使うスライドを作る場合はGoogle画像検索を使うことがありますが、そのスライドを見る人が多い場合、…

公衆無線LANに接続して認証してない状態だと、インターネット接続はどうなってるか?

なんか、その辺が疑われる問題が報告されていたので、気になって近所のマックで試してみました。この場合はマックってマクドナルドのことだよ! iPhoneで試すよ! なんかmobile pointにwi-fiが接続できた時点で、インターネットに繋がってしまいました……orz…

Googleにも知らないことがあることを知った冬の夜

Googleはなんでも知っている。近所に新しくできたスーパーのことも知っていたし、美味しいお弁当やさんのことも知っていたし、苗場のことも知っていた。なんでも知っていると勝手に思い込んでいた。 iOS5ではNested Managed Object Contextという新機能が導…

iOSプロジェクトをJenkinsでビルドする話の続き

http://d.hatena.ne.jp/soutaro/20111203/1322916503 Distribution用の証明書と鍵をインストールしておく。インストールするキーチェーンを「ログイン」ではなく、「システム」にしてしまうと、キーチェーンのアンロックを考えずにすむので楽。 これがなんか…

あとJenkinsはおっさんの顔がとても気に入らない

ボタンをグリーンにするプラグインとかつまらないもの書いてないで、おっさんを入れ替えるプラグインを書くべき。絶対だれか書いてるとは思うけど。

結局CIってなんなん

インテグレーションとか言われると良くわからなくなる。ビルドすることか?「リポジトリを監視してて、なんかあったときに、なんかする」システムのことだと理解している。

iOSのプロジェクトをJenkinsでビルドする

情報がまとまっていなくて苦労したので書いておく。やってしまえば簡単。 やりたいこと githubにpushした時点でビルドする ビルドしてテストを実行する(まだできてない) ビルドして、Testflightを使って、弊社のセールス・サポートチームに配布する Provis…

Arelでjoinしたときにscope(とか検索の条件)を再利用する

会計(Checkout)があって、売られたアイテム(CheckoutItem)をhas_manyしているような状態。さて、今日の会計の売られたアイテムを調べよう!今日の会計はこう。 today_range = Date.today ... Date.today + 1 today_checkouts = Checkout.where(:created_at =…

capybara-webkitを使ってインテグレーションテストする方法を探す

弊社でもAjax的なプログラミングを少しずつ始めていまして、ちゃんとインテグレーションテストする方法が欲しくなってきたところでした。で、いろいろ見てみると、capybara-webkitとか言うのが良さそう。でも、ちゃんとテストできるまで、なんか妙に苦労した…

Evernote Synchronization via EDAMを読みました

Documentation - Evernote Developersの「Synchronization spec」の文書です。こういうWebサービスとクライアントアプリがいて、データ同期をとるようなアルゴリズムって、別に難しいことはないような気もしますが、一方で綺麗に書くためのベストプラクティ…

恥ずかしい

でも面白いからほっとこう。

20倍

メンテナンス作業終了しました。3分で終わってしまった・・・ @ubiregi というわけで、実際のmigration作業に20〜30分、トラブルにも対処できるよう余裕を持ってその倍、切りが良い感じで1時間、と計画していたメンテナンス作業が3分で終わりました。20倍の…

CoreDataでうまいことMigrationする

CoreDataで定義した「モデル」を更新するには、Migrationを使います。モデルを「新しいバージョンを作成」して、これまでに公開したアプリとかで使ってる旧いモデルのデータを移行するMappingを定義します。CoreDataのMappingには2種類あり、自動でうまいこ…

文章を書くときに気をつけていること

機械的にチェックできること。読みやすいとか、そういうレベルの前の話。 誤字脱字 変な漢字 句読点 リッチテキストのフォーマット ちょっと考える必要があること。ちゃんと伝わるものになるか、ウソをついていないかという話。 説明不足 正しい単語か 誤字…

Capistranoで、:deploy_via => :remote_cacheのときに、git pushせずにdeployしてしまうのを防ぐ

https://gist.github.com/1111375 namespace :git do namespace :ensure do desc "Check if your local branch is synched with remote branch" task :pushed do local = `git rev-parse #{branch}`.chomp remote = `git rev-parse remotes/origin/#{branch}…

Mac OS X Lion

さっそくインストール。一度、普通にインストールしたら、再起動したあと起動してこなくて、HDDぶっこわれてるよ!とか言われて肝を冷やしたりもした。結局どうしようもなくて、Snow Leopardを一度インストールしてから、Lionをインストール。SSHの秘密鍵を…

RailsがJavaより100倍遅くても気にしない理由

やっぱやめた。

udevのイベントから、システムが起動中かどうか調べる

https://ubiregi.com/ja/exユビレジエクステンションというアホみたいな名前のデバイスがありまして(※発案者が言っています)、レシートプリンタをUSBで刺して無線LANでiPadからレシート出るようにできるよ! すごい! みたいなやつです*1。あ、ハードウェアは…

求人しています

Find Job!の掲載期間は終了しています。興味をお持ちの方は、なんとかして私に直接連絡をお願いします。メールアドレス、Twitter、Facebook、あと電話番号も探せば見つかりますので、なんでも良いです。あと、この記事で書いていたのとはちょっと別の比較的…

MacBookにコーラを飲ませてしまった件

私が使っているPCはMacBook Proの15インチ、2010年のモデル(Corei5)なのだけど、こいつにコーラをこぼしてしまった。iPad2を手にとろうとしたときに、USBの線が左手に置いてあったコーラの紙コップをまきぞえにし、それもう盛大にがばっと。慌てて電源を落と…

CoreDataのためのNSFetchRequestをArelみたいに作るためのライブラリを公開しました

https://github.com/soutaro/ArelishCoreDataを使わずにObjective Cのプログラムを書いていると、馬鹿みたいなことを馬鹿みたいに繰り返しやるはめになって馬鹿みたいである。しかしCoreDataを使ったとしても、NSFetchRequestを作るために馬鹿みたいなプログ…

Railsアプリをインテグレションテストするために、Capybaraをtest-unitといっしょに使う

「Capybara test unit」とか検索すると、なんか正解が出てこない気がするので、メモ。test-unit-capybaraとかあるけど、なにをやってくれるのか良くわからん。結局のところ、必要なのは次の3つ。 Gemfileに書く capybara/railsをrequireする IntegrationTest…

hungry-delete.elを公開しました

https://github.com/soutaro/hungry-delete.el相当前に一度はてなに書いたことがありましたが、githubで公開してみました。ソフトタブを使うとアホみたいにバックスペースを叩かないと行頭まで移動できなかったり、ハードタブなら問題ないかというと途中でホ…

宗太郎なう

なんのきっかけだったか覚えてないのですが、ふとGoogleで「宗太郎」と検索したのが、3年くらい前だと思います。で、出てきたのが大分の宗太郎駅。まあこれは行くしかないでしょう。そうは言っても、九州行ったことないし、大分は遠いし。ずっと行きたいと思…

ユビレジのサーバを変更しました

なんかVirtuozzoのシステムが気に入らないので(曖昧な表現)、VPSの業者を変更しました。 事前に準備したこと 契約する メモリ、HDD容量、OSを合わせた仮想マシンを作った 必要なソフトウェアのインストールから設定、ユビレジの導入までやってみる 利用者に…

Rubyとか意味がわからない

assert_equal sales[:pcount], checkouts.inject(0) do |acc, checkout| if checkout.price >= 0 acc + 1 else acc end end これがエラーになって悩んだ。正しくは、 assert_equal sales[:pcount], (checkouts.inject(0) do |acc, checkout| if checkout.pri…

テストに関する戦略

こないだから、テスト不足で「ぎゃー」ってなることが多いので、なんとかしないといけない。こうすると良いよね♪みたいな話ではなくて、こうしたい、という決意表明的なもの。 昼食後の2時間をリファクタリング・テストタイムに使う 午前中、うまくいけば2時…

ユビレジあれ?カッコでくくらないとリンクされない?まあいいか。

はてなキーワードにユビレジを登録しました

これって自分の製品とか勝手に登録して良いもんなんでしょうか。ユビレジ←テスト「ビレ」になっちゃうのが不愉快だったので登録しました。

Paypalで支払いを受ける

ユビレジでPaypal支払いを受け付けるようにしました、という話。意外と簡単で、意外とめんどくさい。当初、支払いの受付は銀行振込のみでした。支払いを受けるシステムを作るのがめんどくさいというのが、その理由。いきなり爆発的に利用者が増えるというの…

Mail gemでメールを転送する

お客さんとメールしているうちに、なんかわけわかんなくなっちゃうことが頻発したので、なんとかしたいと思ったというのが最初。普通に関係者全員CC付けておけば、とりあえずは見える状況になるはずなんだけど、わざわざCCを抜いて返信してくるお客さんとか…

地震

幸いなことに、公私ともに特に大きな被害を受けることなく過ごしています。遅くなりましたが、もしかしてはてなしか見てない友人・知人いるかもしれないので。

37signalsのBasecampを使っています

弊社ではプロジェクト管理用にBasecampを使っています。DHHで有名な37signalsの製品ですね。良くできていると思うのですが、一つだけ問題があって、 メッセージをメールで投稿すると日本語が変になる という致命的なもの。メッセージというのは、BBS的なもの…

HIMA' #5に行ってきたよ

HIMA' #5: 型推論 - PARTAKEHaskellが全然読めなくてちょっと面白かったです。いくつか説明が抜けてたような気がしたので、勝手に補足。 多相型の定義 普通、MLとかHaskellとかでは、ネストした多相型は推論されません*1。 ∀α . α → αはOKですが、 ∀α. (∀β. …

UIViewControllerの罠

iOS

最近ちょっとはまった罠を二つ。 deallocでautoreleaseすると変なところでBAD_ACCESSがでる deallocでアウトレットなViewにnilを代入するとか、やらないといけないことになってるわけですが、これやると微妙な感じになることがあります。 -(void) dealloc { …

iPhoneのアラーム

昨年、「サマータイム切り替えの時期にiPhoneがアラーム鳴らなくて、遅刻者続出」というニュースを見たときには、んなアホな……とか思ってましたが、ばっちりやられました。http://www.cnn.co.jp/business/30001395.html1日2日は、あれ?鳴ったのかな?鳴らない…

年末なのでまとめ

去年はもしかして書いてないのか。まあ、学位論文書きながら、ニートになる可能性について真剣に検討してたしなぁ。 今年あったこと。 修了しました→大学を離れました 就職しました→取締役になりました RubyKaigiで当日スタッフをやりました iOSプログラミン…

GCD!

GCDをやっと使ってみたよ!ブロックを受け取って、HTTPのリクエストが完了したときに起動するやつを書いてみた。 @implementation NSURLConnection (AsyncRequestWithContinuation) +(void) sendAsynchronousRequestWithContinuation:(NSURLRequest*)request …

こないだcontraについて考えたおかげで、ProsとConsのどっちがどっちか迷うことがなくなった

ContraのConですね。

Arelでorってどうやって書くん?

Arelで楽しくSQL書いてたんだけど、ちょっと困ったことがあった。orできない。andは簡単なんですよ。 scope :hoge, where(...) scope :huga, where(...) scope :hoge_and_huga, hoge.huga でできるはず。できなかったとしても、where繋げるだけだし。ここま…

Rails3

いろいろ。 rails runner filename toolsとかディレクトリを作って、そこにいろいろスクリプトを入れてます。DBの初期データとか入れるやつとか。(どこに入れるのが良いんでしょうか?)で、toolsディレクトリで$ rails runner ./import-something.rbとかやる…

Varianceのはなし

http://togetter.com/li/66412Variant、in-variant、co-variant、contra-variant。なんだろう、単語のイメージについてわかると良いのかな。Variantが変化するやつ。CS業界では「loop variant」みたいな言葉があります(ホーア論理)。VariableとかVariationと…

動画を作ってみました

ユビレジの紹介ビデオを作ってみました。いろいろと今一つな点もたくさんあるんだけど、とりあえず公開しました。今一つでも、公開しないよりはマシでしょう。 機材とかソフトとか 機材とかの説明をしたいと思います。まず動かせないものから。動画の編集に…

こんぴゅーた

いつも思ってること。 なんか変なことが起きたら、それはユーザーじゃなくてコンピュータが悪い なんか思った通りに動かないとか、ちょっとめんどくさいとか、意味わかんないとか、そういう風に思うことがあったら、それは5割方コンピュータが悪いです。その…