Friday, 27 July 2012

月に1度の記帳

家計簿と仕事の記帳を月に一度やっているのですが、性格的にこういうルーティンな仕事はとても苦手…。ただ以前は記帳は気がついたときにやっていたのですが、月に1回にする事で効率が全然上がりました。
郵便局の口座は特に面倒でネットバンキングがとても使えないので、通帳に記入が必用。私はもっと運動が必用なのでATMまで散歩をする良い口実になりますが…。

Wednesday, 25 July 2012

Improve your productivity with Gmail

There was a chance for me to read "Gmail超仕事術". I summarize the contents below.














General direction

1. Decide how many times to check emails. This can be one a day, twice a day or more frequent depending on your work style. Checking emails as they arrive-method generally reduces productivity.

2. Keep Inbox clear (empty)

General processing flow



Tips

- Don't user folders but labels and stars.

- You can configure gmail user interface so that starred emails are listed above other messages. http://support.google.com/mail/bin/answer.py?hl=en&answer=18522

- You can create labels which fit your work/life-style, e.g. @work, @home, @waiting response + @date, @to be processed later, @referece

- Google Chrome browser has many integrated functions for Gmail. So, this browser is recommended for Gmail users.

Search operators

Following are example of search operators.

- from:taro --> Matches emails from "taro".
- to:taro --> Matches emails to "taro".
- cc:taro --> Matches emails which have cc to "taro".
- label:task --> Matches emails which have label "task".
- has:attachment --> Matches emails which have attachment file(s).
- after:yyyy/mm/dd --> Matches emails sent after yyyy/mm/dd.
- before:yyyy/mm/dd --> Matches emails sent before yyyy/mm/dd.
- filename:pdf --> Matches emails which have pdf file.
- filename:[.jpg .png] --> Matches emails which have either .jpg or .png files.
- in:spam --> Matches email in spam folder.

Together with above operators, following operators can be used in combination.

- AND
- OR
- "-" --> exclusion

For example, "from:taro AND filename:pdf" matches emails which were sent from "taro" and have pdf file attachment.
Another example is, "from:taro -from:murao" matches emails which were sent from "taro", but not "taro murao".


Filter emails

There are emails you do not have to check immediately, e.g. email redundant email magazines, or spams.
Gmail has a spam filter. Choose a spam message and click [Report spam]. Similar messages will be automatically filtered out later.
There are email magazines you do not have to read right at the time they arrive, but want to keep. Make a filter, skip inbox and automatically archive them. Labels can be applied when automatically archiving new messages.
http://google.about.com/od/toolsfortheoffice/ss/filter-gmail-messages.htm

Relocating from and to Gmail

Import and export from POP, IMAP, Yahoo, Hotmail email servers can be done.
- From Yahoo to Gmail --> http://www.wikihow.com/Switch-from-Yahoo!-Mail-to-Gmail
- From Hotmail to Gamil --> http://www.wikihow.com/Switch-from-Hotmail-to-Gmail
- IMAP server to Gmail --> http://www.2by2host.com/articles/import-imap-to-gmail/
Even if you have already fetched email on your local machine, emails can be exported to Gmail account by first enabling IMAP on Gmail and copying local emails to Gmail's on your local machine.

Working offline

Some times, you want to check and write emails when you do not have an internet connection. If you are using Google Chrome, install https://chrome.google.com/webstore/detail/ejidjjhkpiempkbhmpbfngldlkglhimk
and enable the offline mode.

Send emails to a group of contacts

You can create a group of contacts, http://support.google.com/mail/bin/answer.py?hl=en&answer=30970, specify the group name and send emails all the member of this group instantly.

Tuesday, 24 July 2012

ドキュメンタリー映画 "Grandma, a Thousand Times"

ドキュメンタリー映画の "Grandma, a Thousand Times" を見ました。トレイラーはYoutubeで見れます。


レバノンに住んでいる普通のおばあちゃんの生活をドキュメンタリー映画にしたものですが、文化的に縁の遠いこの地域の人たちの日常の生活に少し触れることができるとても良い映画だと思いました。ただこの周辺の地区の過去の戦争のことやその他社会背景をもっと分かっていればもっと理解して楽しめたのになと残念です。また、アラブ世界の人たちは人種的に私が関わったことが少ない人たちなので、顔の表情をとってもその表情が何を表しているのか未だに分かりません。文化の面でも家族の関係が一般的に感覚としてどのようなものなのか分かっていないので、いろいろな意味でとても新鮮でした。

Monday, 23 July 2012

Ruby は殆ど知らなくてもRoRは組めるのですが

RoRはRubyで書かれたフレームワークですが、フレームワークのパーツ(scaffoldやgemなど)を集めて組み立てればRuby自体は基本的なことだけ知っていればあり程度動くウェブアプリケーションは作ることができます。セキュリティーの面でも怖ければ、セッション管理などはライブラリに任せて触らないようにすれば難は逃れられるでしょう。 

良いフレームワークは矯正ギブスのようなもので、良い習慣を身につけるのに使えるという話を以前PHPerに聞きました。この意味でRoRはとても良いと思います。最近は、小さなウェブサービスの構築だとRoRを使わずにSinatraで作れるし、実はデータベースが必要なアプリケーションも単純にgemでActiveRecordやMongoIDのようなORマッパーさえ拾ってくればRoRはなくても組めるということにも気がつきます。

 

もっと自由にRubyを使えるようになりたいと思い、以前に買ったYugui著「はじめてのRuby」を引っ張り出してきたのですが、このコンテクストでは使えないようです。この本はRubyを学び始める人に有益なように譲りたいですね…。Rubyとソフトウェアのデザインパターンを一緒に習得できる書籍を見つけます。

 

 

Saturday, 21 July 2012

Sinatra で拡張子ごとにMIME-Type (と対応するContent-Type) を設定する

*.bin 拡張子のファイルを"audio/mpeg"としてサーバからヘッダを返さないとiOSで動画が再生されないという仕様のサービスがあり、Sinatraとthinで動かしているシステムの調整が必要になりました。

結論としては

configure do
  mime_type :bin, 'audio/mpeg'
end

と書けば解決しました。書式は

mime_type :<extension name>, '<mime type name>'

のようです。

Middlewareを間に挟んで調整するかthinもしくは.ruファイルを編集する必要があるかと考えたのですが、現在Sinatraはモジュールタイプで動かしていないので面倒です。しかし、とても簡単にSinatra上でメソッドが提供されていました。SinatraはMiddlewareとしても利用できるという話ですが、さすが httpヘッダ を調整するのは簡単にできるようです。

Thursday, 19 July 2012

メソッドチェーンをRSpecでテストする

RSpecでメソッドチェーンをテストするのにどうやったものか手間取りました。

例えば

obj.do1.do2.do3

とあったときには

一気に

obj.stub(:do1.do2.do3)

とstubできないので、

res1 = stub()
res2 = stub()
obj.stub(:do1).and_return(res1)
res1.sbub(:do2).and_return(res2)

とそれぞれstubを作る必要がある様です。

メソッドチェーンはRuby(とRSpec)では推奨されないやり方なのでしょうか…

Sunday, 15 July 2012

複数言語が入り交じったの家庭の大人は頭が良い?

以前複数言語が入り交じったの家庭のこどもは常に脳がトレーニング状態にあるため、一般に頭が良いという記事をどこかで読みました。

これは複数言語が入り交じったの家庭に生きる大人にも当てはまるのでしょうか?私はこの大人が”諦めなければ”という条件付きで可能な説だと思います。


がんばれ大人です。

Friday, 13 July 2012

モデルとコントローラーのバランス

Skinny controller, fat modelというようにコントローラはできるだけ小さくするのがMVCの良いプラクティスなようです。

コントローラは「何を」するのか知っているが、「どうやって」それをするのか知らない状態が一つの目安。

Thursday, 12 July 2012

BDDのコアコンセプトは?

BDDのメソッドは何となく面白いので使ってみたいと思うのですが、その基本となるコンセプトは何か私なりにまとめてみました。

 

上のメモのように、つまりユーザー(もしくはオブジェクトなど)のリクエストというbehaviourが発生した時にソフトウェア(API、オブジェクトなど何でも) がどのようなレスポンスを返すかということに集中して開発をするということだと理解しました。

 

データベースのリレーションや、ソフトウェアのロジックは後回しにして、これをするとこういう動きが返ってくるべきだという地点から全てを開始するということですね。

 

Tuesday, 10 July 2012

Ruby " と ' の違い

特に "(ダブルクオート) と ' (シングルクオート)の違いを意識せずに使用してきたのですが、本当は " と ' はどう違うのか?と今更調べたのですが、さっと出てきた結果では ' で囲った文字列の特殊文字は解析されないということです。例えば

name = "Sam"

として、

puts "Hi #{name}!"

では

Hi Sam!

と出力されるのに対して、

puts 'Hi #{name}!'

では

Hi #{name}!

と出力されます。

もしくは

puts "a \n b \n c"

では改行が入り、

puts 'a \n b \n c'

だと

a \n b \n c

と表示されます。

ユーザに表示させる文字列には " を使い、そうでないのは ' を基本的に使う方が便利かな???というところですね。

Monday, 2 July 2012

失敗しないと半人前?

以前にインド人両親を持った香港育ちの知り合いが、香港ではビジネスに失敗したことが無い人は半人前に見做されるという話をしていました。この人たちはタフだなと思いました。

先日DNS移行の失敗でクライエント側でメールを2営業日使用できなくなるという失敗をしました。メールに対する影響のことが念頭に無く、ドメインを管理するDNS自体を移行してしまったことが原因です。メールが届かなくなったという報せを受けて調査をし、DNSの問題だということに気がつき慌てて元のDNSサーバにドメインの管理を戻してホスティングサーバのAレコードだけを書き換えて移行は完了しました。

クライエントの方には迷惑をかけましたが、コミュニケーションの問題があったことなど今回の問題の主因ではない問題も浮き彫りになりました。サイト運営の方針を転換する機会でもあると感じます。

仕事をしている身として、ミスをすることはロスをもたらすことになるので本来は起きない様にするのが第一です。しかし、ミスをしてそれを解決したことによる経験とコミュニケーションの改善というのは同時にとても貴重であることを感じました。

全てゼロに戻っても立ち直るさという割り切り、諦め、自信などが混沌とした様子です。