おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

情報過多

情報を制限したい。

などが自分の主な情報源ですが、情報が多すぎて消化不良。はてブの「あとで読む」タグがついた記事だけがたまっていっています。
本当に必要な情報だけを残して、後は全部消すようなシステムって作れないかなー

rspec事始め

rspecをちょこちょこ勉強しています。とりあえず下記を一通りやってみました。

Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

やってみた感想としては

  • テストの構成単位を小さくできそう
  • テストのコメント書きをしっかり書くようになりそう

と、テストをきちんとこなすための良い習慣がつくかも?という感じ。でもまだ始めたばかりなので、もう少し使ってみて判断してみます。

最適なメモ帳とは?

最近、いろんなことをメモっています。

  • 技術的なところ
  • こんなサービスあったらなーということ
  • 疑問に思ったこと
  • プライベートなこと

今は、まずemacsにメモして、プライベートモード&その場編集機能はてなダイアリーサブアカウント)に貼付けという方法でメモっていますが、いまひとつです。その場編集機能はとても便利なのですが、一日にいくつもエントリを書いたときに、そのうちの一つだけ削除するということができなくなってしまいます。また、タグの一括変更もサポートしていないので、記事の編集が大変。

そんなわけで、ちょっとメモ帳として使っている/使えそうなものを整理してみました。

emacs

  • 使い勝手は最強
  • でもオフラインのみ

macのメモ帳widget(bit memo)

  • すぐ呼び出せるのが良い
  • 保存のタイミングが、別のメモを参照したときまたは終了したときのようで、編集途中で終了してしまうと消える(一回消してしまって、それ以来使う気が萎えてきた)
  • あとやっぱりオフライン

アップル - ダウンロード - Dashboard ウィジェット - bitmemo

google notebook

  • オンラインで使える
  • それなりに使える印象

はてなダイアリーサブアカウントその場編集機能

  • オンラインで使える
  • そのままメインのはてなダイアリーに貼付けられる
  • 一度書いたエントリの削除/編集が面倒

wiki

  • オンライン
  • その場編集はできない
  • 一度書いたエントリの削除/編集が楽
  • 以前Ctrl+pがプレビューになってしまうという現象に悩まされ疎遠になっていた*1けれど、firemacsを使ったら問題解決していた。

まとめ

まずオフラインでまとめて、その日に書いたものをオンラインにアップして編集していくっていうのがいい気がします。ローカルではemacsを使って、wikiに保存するのが今時点のベストかな。


emacsから直接wikiを編集するとかできないのかな?今度調べよう。

はてなダイアリーでkwout

はてなダイアリーで、kwoutで使われるmapタグが利用できるようになったらしいのでテスト。

[http://d.hatena.ne.jp/hatenadiary/20080410/1207821427:title=Webページを画像化して引用できる「kwout」の貼り付けに対応しました - はてなダイアリー日記]

追記

あれ?mapタグ効いてなくない?

うーん

mapタグがエスケープされなくなっただけに見えるなあ

javascriptの初歩

javascriptはまだまだ素人同然ですが、とりあえず今日勉強したことを書いときます。

javascriptでページを開くには

別ウィンドウで、あるページを開くときはwindowオブジェクトのopen()メソッドを使う。

window.open("http://level20.jp/);

同じウィンドウで開くときはlocationプロパティを使う

location = "http://level20.jp/";

こんな方法もある。でもこれは履歴に残らない

location.replace("http://level20.jp/")

ページのurlが格納されているところ

  • location.href
  • document.location
  • document.URL

基本的にはどれも同じだが、リダイレクトされた時に異なる値を持つ。

window.location.href
最初にロードしたURLが格納される
document.locationとdocument.URL
実際にロードしたURLが格納される

location.hrefとdocument.locationは混同しやすいので、document.URLを使うのが推奨されているらしい。

その他

firebugのコンソールにちょこちょこっと書いてすぐ実行できるのが楽しい!
早くjavascriptの勉強に本格的に取り組みたいなー

rails de REST

railsでRESTを実現するための方法についてまとめ。

RESTとは

  • Representational State Transferの略
  • URI(名詞)とmethod(動詞)で振る舞いを決める

RESTにするメリット

  • 変わりにくいURI「Cool URI」が実現でき、ユーザビリティがあがる
  • インタフェース構築手法が統一されるため、作るのが楽になる

railsでRESTするには

ここからが本題。RAILS_ROOT/config/routes.rb内に下記のような文を追記する

map.resources :articles

そうすると、下記のようなRESTなルーティングが自動的に生成される。*1らくちん。

メソッド URLのパス アクション ヘルパー "index")と同じ。">*2
GET /articles index articles_url
POST /articles create articles_url
GET /articles/new new new_article_url
GET /articles/1 show article_url(:id => 1)
PUT /articles/1 update article_url(:id => 1)
GET /articles/1/edit edit edit_article_url(:id => 1)
DELETE /articles/1 destroy article_url(:id => 1)

単数系と複数

controller名の単数形複数形、map.resourceの単数形複数形で振る舞いがいろいろ変わってくる。なのでcontrollerを作るときは単数系と複数形をきちんと意識した方がいいみたい。少なくともRESTを使うcontrollerの名前は複数形したほうがいい。もしかしたらcontrollerの名前は全部複数形に統一したほうがいいのかもしれない。*3


以下どのように変わるかのメモ。

map.resources :article

controller名を単数形にすると、indexアクションのヘルパーが変化する。controller名が全部単数形になる。他は同じ

メソッド URLのパス アクション ヘルパー
GET /article index article_index_url
POST /article create article_index_url
GET /article/new new new_article_url
GET /article/1 show article_url(:id => 1)
PUT /article/1 update article_url(:id => 1)
GET /article/1/edit edit edit_article_url(:id => 1)
DELETE /article/1 destroy article_url(:id => 1)
map.resource :article

resourcesの方を単数形にすると、idを取り扱わないアクションとしてルーティングが作られる。

メソッド URLのパス アクション ヘルパー
POST /article create article_url
GET /article/new new new_article_url
GET /article/edit edit edit_article_url
GET /article show article_url
PUT /article update article_url
DELETE /article destroy article_url

この時、パスは単数形(article)でもルーティング先のcontrollerの名前は複数形(articles)になる*4

map.resoucesの拡張

map.resoucesでルーティング定義したcontrollerに、newとかupdateとかデフォルトで定義された以外のアクションのルーティングを定義する場合。

/article/1/recentのように、各IDごとに作用するアクションのルーティングを定義する場合

map.resources :articles, :member => { :release => :put }

/article/releaseみたいな場合

map.resources :articles, :collection => { :recent => :get }

/articles/new/shortformのように、既存のアクションnewアクションに上乗せしたルーティングを定義する場合

map.resources :articles, :new => { :shortform => :post }
修正
2008/06/12
memberとcollectionが逆なのを修正、newオプションの説明を修正

map.resouces以外でRESTしたい場合

map.resourcesを使わないでRESTを実現したい(editとかupdateとかのアクション名が嫌いとか)
人は以下のようにしてひとつづつルートを設定する必要がある。面倒。

map.connect 'articles/:id',
  :conditions => { :method => :put },
  :action => 'updatedayo'

参考資料

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発 第2版

WEB+DB PRESS Vol.38

WEB+DB PRESS Vol.38

*1:あとformatの分もあるけどそれは省略

*2:名前付きルートのこと。articles_urlはurl_for(:controller => "articles", :action => "index")と同じ。

*3:でもcontrollerによっては複数形がそぐわない場合もあるので、そういう時だけ単数形がベストかな?

*4:だからやっぱりcontrollerの名前は複数形がいい

mac de office

mac使いになって約半年。これまでoffice系のソフトは入れずに、previewの閲覧だけでなんとかしてましたがそろそろ本格的に
officeを使う手段が必要になってきました。で、どうやってmac de officeしようかともやもや考えています。


以下もやもやログ。

mac版のoffice使う

これが一番簡単な解決策。ファミリー版なら約2万ちょい。
不安材料としては、最新のoffice2008の評判が悪いこと。レビューを見たところ

  • 不安定
  • excelでマクロが使えない

というような書き込みがあり、踏み込めない。

Office 2008 for Mac ファミリー&アカデミック

Office 2008 for Mac ファミリー&アカデミック

iworkの互換機能

keynoteとか使ってみたいなーというのがあり選択肢の一つにしてみた。価格は約1万。officeより安い。
でも体験版を試してみた時にexcelの表示が少し崩れたので、本気でofficeを使いたいなら対象外かな。

iWork '08 ファミリーパック

iWork '08 ファミリーパック

openoffice

windows時代はこれ使ってた。価格は0円。一番安価な解決策。
でもmacopenofficeはα版で不安定なよう。

Please make sure that you backup any documents used in OpenOffice.org Aqua. Time Machine is a backup system built into Leopard that you can use.

porting: OpenOffice.org for Mac OS X : Download Aqua

こんなの書かれてたら入れる気なくすよ。

windows環境を入れる

macでのoffice環境を調べている際に、互換性の問題は何を使うにしろ残るなと感じたのでwindows環境を導入することも選択肢に。
エミュレータソフト価格は1万前後(parallels or vmware)+windowsの料金2万強+officeの料金4万
互換性の問題を考えなくていいのと、ついでにIEでのレンダリングチェックもできるのがメリット。だけど高いし面倒。

Vmware Fusion 日本版 アクト・ツー版

Vmware Fusion 日本版 アクト・ツー版

Parallels Desktop 3.0 for Mac

Parallels Desktop 3.0 for Mac

Microsoft Windows XP Home Edition Service Pack 2 通常版

Microsoft Windows XP Home Edition Service Pack 2 通常版

Microsoft Office 2007 Standard

Microsoft Office 2007 Standard

まとめ

  • 価格
  • 手間
  • 安定性

などを総合的に考えると、今のところmac版officeが一番な気がしています。これ以外に誰かいいアイデアがあったら教えてください。