2009年11月16日月曜日

golang メモメモ

メンバ変数だけの構造体を定義したり、
メンバ関数だけのインタフェースを定義する。

C#3.0の拡張メソッドのようにメンバ関数を実装していく。

特徴的やなーと思ったのが複数の戻り値を定義できること。
戻り値もreturnで値を返すのではなく、関数中に代入して関数の終わりはreturn;というのもあり。

ループは全てForで統一
Cのfor や while 無限ループの3種類を一つのforで扱える。
do-whileは記述できるのかは不明。

elseifでつなげていたのをswitchで書けるのが便利そう。


switch {
case a < b:
  return -1
case a == b:
  return 0
case a > b:
  return 1
}


とりあえずこんな感じで。

まとまりねー。
.

2009年11月14日土曜日

Googleのプログラミング言語 GOのインストール(MacOS X)

Googleのプログラミング言語GOがリリースされたということで、
go lang 公式サイト:http://golang.org/
GOプログラミング言語のサイトにインストール方法が載っていたので、
手元のMacbookにインストールをしてみました。
http://golang.org/doc/install.html

まずは環境変数を設定。


MacBook:~ mezashi184$ vi .bash_profile
export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=386
export GOBIN=$GOROOT/bin
export PATH=$GOBIN:$PATH


設定した内容を反映。

MacBook:~ mezashi184$ source .bash_profile


ちゃんと反映されているか確認します。

MacBook:~ mezashi184$ env | grep '^GO'
GOBIN=/Users/mezashi184/go/bin
GOARCH=386
GOROOT=/Users/mezashi184/go
GOOS=darwin


hgコマンドがあるか確認。

MacBook:~ mezashi184$ which hg
/usr/local/bin/hg


hgコマンドが無い場合はインストールします。

MacBook:~ mezashi184$ sudo easy_install mercurial
Searching for mercurial
Reading http://pypi.python.org/simple/mercurial/
Reading http://www.selenic.com/mercurial
Best match: mercurial 1.3.1
Downloading http://mercurial.selenic.com/release/mercurial-1.3.1.tar.gz
Processing mercurial-1.3.1.tar.gz
Running mercurial-1.3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-JZ0oPU/mercurial-1.3.1/egg-dist-tmp-uLZ_gk
zip_safe flag not set; analyzing archive contents...
mercurial.extensions: module references __file__
mercurial.i18n: module references __file__
mercurial.lsprof: module references __file__
mercurial.templater: module references __file__
No eggs found in /tmp/easy_install-JZ0oPU/mercurial-1.3.1/egg-dist-tmp-uLZ_gk (setup script problem?)


しかし!エラーが出てしまいました。

No eggs found in /tmp/easy_install-JZ0oPU/mercurial-1.3.1/egg-dist-tmp-uLZ_gk (setup script problem?)


エラーを取り除くために以下のサイトを参考にセットアップツールをインストール
http://douglasfshearer.com/blog/easy_install-leopard-bug-no-eggs-found

MacBook:~ mezashi184$sudo easy_install http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c9-py2.5.egg
Downloading http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c9-py2.5.egg
Processing setuptools-0.6c9-py2.5.egg
Moving setuptools-0.6c9-py2.5.egg to /Library/Python/2.5/site-packages
Adding setuptools 0.6c9 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.5 script to /usr/local/bin

Installed /Library/Python/2.5/site-packages/setuptools-0.6c9-py2.5.egg
Processing dependencies for setuptools==0.6c9
Finished processing dependencies for setuptools==0.6c9


再度mercurialをインストール今度は正しくインストールできました♪

MacBook:~ mezashi184$ sudo easy_install mercurial
Searching for mercurial
Reading http://pypi.python.org/simple/mercurial/
Reading http://www.selenic.com/mercurial
Best match: mercurial 1.3.1
Downloading http://mercurial.selenic.com/release/mercurial-1.3.1.tar.gz
Processing mercurial-1.3.1.tar.gz
Running mercurial-1.3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-9-mUQT/mercurial-1.3.1/egg-dist-tmp-NfqiQx
zip_safe flag not set; analyzing archive contents...
mercurial.extensions: module references __file__
mercurial.i18n: module references __file__
mercurial.lsprof: module references __file__
mercurial.templater: module references __file__
Adding mercurial 1.3.1 to easy-install.pth file
Installing hg script to /usr/local/bin

Installed /Library/Python/2.5/site-packages/mercurial-1.3.1-py2.5-macosx-10.5-i386.egg
Processing dependencies for mercurial
Finished processing dependencies for mercurial


golangのソースコードを取得します。

MacBook:~ mezashi184$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 4016 changesets with 16888 changes to 2931 files
updating working directory
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved


ソースコードをビルドします。

MacBook:~ mezashi184$ cd go/src
MacBook:~ mezashi184$ mkdir $GOBIN
MacBook:~ mezashi184$ ./all.bash


以下のソースコードをコンパイル・実行してみます。

MacBook:~ mezashi184$ vi hello.go
package main

import "fmt"

func main() {
fmt.Printf("hello, world\n")
}

MacBook:~ mezashi184$ 8g hello.go
MacBook:~ mezashi184$ 8l hello.8
MacBook:~ mezashi184$ ./8.out
Hello, World


これにてインストールと動作確認おしまい。

しかし、インストールしたものの何に使えるのかな?
.

2009年10月27日火曜日

詳細なUMLを書くこと

最近、UML図を書くことに抵抗が出てきた。
詳細な図を書けば書くほど、コードに修正が入るたびにメンテナンスが必要になってくる。
メンテナンスするコストが大きいため、悪いコードもそのままになってしまい、
より良いコードにリファクタリングしていくことが出来なくなるのではないかと思います。

UML図は上流工程から下流工程まで使えるのは便利なのですが、
下流工程で詳細な図を書けば書くほどリファクタリングコストがかかってしまいます。

あくまでも情報を伝えるための道具として使えば便利なのではないでしょうか。
たとえば、開発者同士で設計案をあれこれ考えるときや開発に入る前に大枠のUML図があると
スムーズに開発の設計方針などが解るので便利だと思います。
また、お客様とどこまでをソフトにするかという線引きにも使えるでしょう。

そういっても詳細な図を書いてからコーディングというのもあるでしょうが、
この場合に書いたUML図はメンテナンスしない使い捨てと考えているのであれば、問題なさそうですね。

詳細なUML図をメンテナンスする工数ってかなり膨大で、
リファクタリングのボトルネックになっている感じているのは僕だけなのでしょうか?

.

2009年10月17日土曜日

よく使うiPhoneアプリ

気がついたら既にiPhoneを1年以上使ってるのよね。
ここいらでよく使っているアプリを紹介してみようかなと。

■Best!価格
価格.comのサイトを見るためのアプリです。
ちょっとした電化製品とか買うときは必ずここで口コミ情報などを
チェックして買い物してますね。

■PhotoShare
最近ではめっきり自分で投稿する機会は減りましたが、
たまーに他の人の投稿を覗いては楽しんでます。
美味しそうな料理とか、笑っちゃうような写真がいっぱいです!

■Evernote
これは便利!
テキストや画像・音声などを保存して、PCからも閲覧できるもの。
個人的な日々の日記やメモなど色々と使わせてもらっています。
PCから整理できるのも大変助かります。

■Things
Todo管理ソフト、シンプルで使いやすいのがええですね。
GTDを使っている人ならオススメです。
ちょいと値段はしますが、それだけの便利さはありました。

■Echofon
Twitter用のアプリ、個人的に無料の中では使いやすかったですね。

.

2009年10月4日日曜日

SharpDevelopを使ってみた。

C#のオープンソースIDE『SharpDevelop』を使ってみました。
http://www.icsharpcode.net/OpenSource/SD/

標準でNUnit・PartCover・Subversionに対応しており、全てGUIから操作が可能で、
テストとカバレッジ表示もソースコードと連動していてかなり便利です。

C#のMono Compilerにも対応しているのも良い点です。

個人的に評価しているのはTODOなど特定の文字列でコメントした箇所を一覧で表示できることですね。
関数やクラス名の変更などリファクタリングに対する機能はVisualStudioがかなり充実している感じました。

コードを綺麗にするリファクタリングを行いにくい点以外はVisualStudioより良いと思いました。
※拡張機能を何もインストールしていない状態での個人的な意見となります。
あくまでもご参考までに。

.

2009年9月27日日曜日

地図みたいな検索 Blogopolis

■『Blogopolis』
http://blogopolis.jp/

地図みたいな形の検索サイトです。
サイトについているランクによってビルが大きくなるみたい。

ここで僕のサイトが小さいながら存在しているのが嬉しかったですね。
ビルの屋上に画像を貼り付けれるということで早速貼り付けてみました!

先日自分で書いた絵なんですけどね。
愛嬌がありますよ。

http://blogopolis.jp/view/http://mzs184.blogspot.com/

.

2009年9月26日土曜日

GoogleChromeのテーマ変更ができる

いつの間にって感じです。
新しいタブに表示されている、よくアクセスするページに見知らぬサイトが。。。
何だろうと確かめてみたら。

なんとChromeのテーマ変更のページじゃないですか。
とにかく色々試してみて、黄色が好きな私は『Vertical Stripe』にしてみました。

お気に入りのテーマが見つかるとよいですね。
以下のサイトからテーマを変更できます。
https://tools.google.com/chrome/intl/en/themes/index.html

.

ラベル