2010/01/29

ゆず酒




毎年漬けているゆず酒を今年も漬けた。

  • ゆず 1kg
  • ウォッカ 1.875リットル
  • 蜂蜜 200g
ネットで買った蜂蜜が結晶化したものだったので、ほじるのがちょっとめんどくさかったな。
実の引き上げは三月末予定。
おいしく育ちますように。

2010/01/28

Scala 入門2 - クラスとコンストラクタ

Scala でクラスを定義する。

class Test {
}
これだけ。

Scala はクラス定義と同時にコンストラクタを定義できる。

class Test(x:Int, y:Int, z:Int) {
  // 既存メソッドをオーバーライドするには override が必要
  override def toString = "x: " + x + ", y: " + y + ", z: " + z
}
val t = new Test(1, 2, 3)
println(t) // x: 1, y: 2, z: 3
ただし、これでは t.x のように外部からアクセスできない。
アクセスするために、引数をフィールドに保持する。(デフォルトでpublic)
class Test(x:Int, y:Int, z:Int) {
  val a = x
  val b = y
  val c = z
  override def toString = "a: " + a + ", b: " + b + ", c: " + c
}
val t = new Test(1, 2, 3)
println(t.a) // 1

コンストラクタのオーバーライドもできるよ。

class Test(x:Int, y:Int, z:Int) {
  val a = x
  val b = y
  val c = z
  def this(x:Int, y:Int) = this(x, y, 0)
  override def toString = "a: " + a + ", b: " + b + ", c: " + c
}
val t = new Test(1, 2)
println(t) // a: 1, b: 2, c: 0

でもこれはダメ。

class Test(x:Int, y:Int, z:Int) {
  var a = x
  var b = y
  var c = z
  def this(x:Int, y:Int) = {
    this.a = x
    this.b = y
    this.c = 0
  }
  override def toString = "a: " + a + ", b: " + b + ", c: " + c
}
val t = new Test(1, 2)
println(t)
// こんなコンパイルエラーが出る
//(fragment of test.scala):6: error: '(' expected but '.' found.
//    this.a = x
//         ^
コンストラクタをオーバーライドする場合、必ずクラス定義と同時に宣言したコンストラクタを最初に呼ばないといけない。
class Test(x:Int, y:Int, z:Int) {
  var a = x
  var b = y
  var c = z
  // こういうのはいい
  def this(x:Int, y:Int) = {
    this(x, y, 0)
    this.c = 1
  }
  override def toString = "a: " + a + ", b: " + b + ", c: " + c
}
val t = new Test(1, 2)
println(t) // a: 1, b: 2, c: 1
これも大丈夫(間接的に呼び出しているため)
class Test(x:Int, y:Int, z:Int) {
  val a = x
  val b = y
  val c = z
  def this(x:Int, y:Int) = this(x, y, 0)
  def this(x:Int) = this(x, 0)
  override def toString = "a: " + a + ", b: " + b + ", c: " + c
}
val t = new Test(1)
println(t) // a: 1, b: 0, c: 0

2010/01/25

Scala 入門1 - 変数

Scala では二種類の変数宣言がある。
var x = 10
val y = 20
var で宣言すると、後々値の上書きが可能な変数となり、val で宣言すると上書き不可となる。
この mutable と immutable の概念はその後も結構出てくる。(List とか Map にも mutable 版と immutable 版がある)
そして、関数型言語では基本的に immutable を使うそうな。
Scala も基本的に val を使い、必要な時だけ var を使うのが良いそうだ。
List や Map も import しなければ、immutable なものを使用するようになってる。
「引数を変更せずに、処理後の新しい同じ型のインスタンスを返す」ってのは関数型言語に限らず有用なテクニックなので、とくに違和感はないなぁ。

2010/01/24

vim に scala 用の設定を行う

まず、scala.vim を取得し、~/.vim/syntax に配置する。
次に scala ファイルに対して適応させるため、 ~/.vim/filetype.vim に(なければ作成)こちら の設定を行う。
とりあえずこれで大丈夫なのだが、タブが4スペース分になってしまう。
参考書では2スペースなので、それに従っておく。
~/.vim/ftplugin に scala.vim を作成し、下記を記述。
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
set expandtab
set tabstop=2 shiftwidth=2 softtabstop=2
set autoindent
set fileencoding=utf-8
set encoding=utf-8
set fileformat=unix

これでとりあえずはいいかな。

2010/01/23

Scala 始めました

Scala なる言語がおもしろそうなのでやってみる。
Scalaスケーラブルプログラミング にてお勉強。
まだ、1章と2章しか読めてないけど。
そろそろ実際に打ち込んで勉強していかないとな。
とりあえず、lift でなんか作れるぐらいまでがんばろう。

2010/01/21

Xperia が発表されましたね

NTTドコモ×ソニー・エリクソン、Android OS搭載の新端末「Xperia」を日本で正式発表--4月発売予定
http://japan.cnet.com/mobile/story/0,3800078151,20406908,00.htm

おサイフケータイさえついていれば、au から乗り換えを検討しようかと思ってたけど残念。
それ以外は十分なんだけどなー、800万画素のカメラといい、Bluetooth といい。
au が今年出すという Android ケータイに期待かな。
一番遅れているんだから、素晴らしいやつ頼みますよ。

ubuntu-desktop-ja が入らない

入らないっていうか見つからない。

wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/karmic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
これやっても、ubuntu-desktop-ja が見つからない。
apt-get update は問題なく終了している。
うーむ・・・・

2010/01/20

Mint7 → Mint8 へ

Dell inspiron mini 9 の Mint7 (Gloria) を Mint8 (Helena) へアップグレードしたときのメモ。

mini9 はいつもはクリ―インストールするのだが、なんでこんなことしたかというと、mini9 に直接 Mint8 をインストールしたら無線LANが認識しなかったから。
どうやら Min8 (というか Ubuntu9.10)には Broadcom のプロプライエタリドライバが入ってないらしい。
Mint7 (Ubuntu9.04) には入っているので、そこからアップグレードしようというわけ。

手順は http://www.linuxmint.com/blog/?p=1144 の Upgrading graphically (easier) を参照。というかこのまんま。
  1. sudo apt-get install mint-upgrade-tool-main でアップグレードツールをインストール
  2. メニューのシステム管理に Upgrade to Linux Mint 8 の項目が増えているので、これを実行
  3. あとは基本的におまかせ
  4. 途中で幾度となく「設定ファイルを置き換えていいか?」と問われるので、置換をクリック
  5. すべてインストールが終わったら再起動
  6. 若干古めかしい UI で表示されるので、壁紙とテーマを Mint8 のものへ

以上で完了した。
公式 blog の手順にあるけど、やらなくて良かった項目がいくつかあるが環境によるのだろうか?
Mint7 時代に sudo apt-get install mysql-server でインストールしていたからか、自動的に MySQL が 5.0 から 5.1 に更新された。
クリーンインストールと同じ環境にしたかったので、ちょうどよかったが人によっては注意が必要かも。
あと、いろんなところに英語の部分が目立つ。これは、Mint7 のときに ubuntu-desktop-ja を入れなかったからか?

個人的には Ubuntu より Mint の方がおススメだな。
  • Ubuntu はパネルが上下に出るが、Mint は下にひとつ
    ネットブックなどでは画面が広く使いやすい。
  • すべてのメニューがスタートメニューに集約されている。
    1 と合わせて、より Windows に近いので、初心者向け
  • デフォルトのテーマや壁紙が綺麗
    Ubuntu の茶色はどうも・・・・
  • 中身は Ubuntu + α
    Ubuntu よりも更にインストール直後の状態でできることが増えてる。そして、ほんとにほとんど Ubuntu なので、トラブルなどは Ubuntu 向け情報がそのまま使える。

このまま Ubuntu に寄り添って進んでほしいな。独自進化を遂げるようになったら Ubuntu に戻ろう。

2010/01/18

Majestouch は東芝の bluetooth スタックと相性が悪いらしい

自宅では、FILCO の Majestouch Wireless FKBT108ML/NB を愛用しています。
ところが、このキーボードは東芝の bluetooth スタックと相性が悪いらしい。

実際、我が家でも接続がすぐ切れたり、暴走して同じ文字を入力し続けたりとストレスのたまる挙動をしてくれていた。
同梱されているアダプタなら問題ないらしいのだが、すでに捨ててしまっていた。
前の PC は bluetooth 内臓だったので必要なかったからだ。
そしてこのキーボードはすでに生産終了となっているので、同梱アダプタは基本的に手に入らない。
しかたないので BlueSoleil がついてるアダプタを買うか、BlueSoleil 自体を買うか迷っていた。

しかし、よく考えたら Windows7 なんだから最初から入ってるじゃないか。
というわけで、東芝のスタックを削除して、再度キーボードとマウスを登録した。
まったく問題ないじゃないか。暴走しない、接続きれない。
なーんだ、答えはこんな足元にあったのか。
無駄な金を使わずに済んでよかった。

2010/01/16

.net by au

http://www.kddi.com/business/netbyau/index.html

au 上で .NET アプリケーションを動かす .net by au について発表されてます。
2010年3月までに申し込めば、開発に必要な各種ツールが無料で提供されるみたいです。
さっそく申し込んでおきました。

開発 PC が XP だけってのが気になるなぁ。
Windows7 が含まれていないのはまあいいとして、Vista も含まれていないってのは何か不都合があるからなんじゃないかと。
Vista で不都合あったら、Windows7 も怪しいだろうなぁ。

そして、KDDI は基本的に法人向けと考えているようで、契約も法人契約になります。(会社名必須)
今のところ対応機種は E05SH/E06SH だけですが、個人向け端末に搭載される予定はあるのかなぁ?
ぜひとも自分の携帯を便利にしていきたいんだけど。

2010/01/15

漬け初め

http://netafull.net/highball/033218.html

このエントリを読んで、今年最初の果実酒はリンゴ酒にしようと思い立った。

しかも、いつもならウォッカだけどウィスキーで。

ウィスキーで作った梅酒は大当たりだったので、これもかなり期待である。

ほんとはゆず酒を漬けようと思ってたんだけどまあいいや。

当然、ゆず酒もそのうち漬けるけどね。

2010/01/13

guake で zsh を使いたい場合

vmware player 上の mint8 の設定をちまちまと行う。
sudo apt-get install -y build-esseintial zsh zsh-doc zsh-dev lv manpages-ja
sudo apt-get install -y vim-nox vim-gnome
sudo apt-get install -y ssh apache2 subversion git-core git-doc
sudo apt-get install -y mysql-server mysql-client mysql-admin mysql-query-browser libmysqlclient-dev
sudo apt-get install -y sun-java6-jdk sun-java6-doc sun-java6-fonts scala scala-doc
sudo apt-get install -y ruby irb rake rdoc ruby-dev libmysql-ruby libopenssl-ruby
sudo apt-get install -y filezilla guake jd
sudo gem install -y wirble refe vim-ruby rails mysql jrails haml

まあ、こんな感じ。
guake がよさげだったので初めて導入してみた。
しかし、F12 を押しても一瞬それらしいものが現れてすぐ消える。
どうも zsh はうまく動かないようだ。
しょうがないので、guake では bash を使用することにした。
で、おもむろに screen とすると、zsh が立ち上がるじゃないか(ログインシェルが zsh だから当然か)
で、guake も正常動作している模様。
なるほど、しょせんエミュレータだもんな。
というわけで guake 上で zsh を使いたい場合は、screen をかませればいいようだ。