Scala入門。

最近、Scalaにも手をだし始めたので、 TCP/IPソケットプログラミング Java編 を見ながら、10年ぶりに近いJavaの勉強を兼ねてしまおうと、この本の一番最初に載っているローカルホストおよび引数で渡したFQDN、IPアドレスから結果返すコードをScalaで書いてみた。

import java.net._

object InetAddressExample {

  def main(args: Array[String]) {
    try {
      val address = InetAddress.getLocalHost()
      val hostname = address.getHostName()
      val hostaddress = address.getHostAddress()
      println(address + hostname + hostaddress)
    } catch {
      case e: UnknownHostException =>
        println("Unable to determine this host's address")
    }

    for (arg <- args) {
      try {
        val addressList = InetAddress.getAllByName(arg)
        println(args)
        println(addressList(0).getHostName())
        addressList.foreach(
          i => println(i.getHostAddress()))
      } catch {
        case e: UnknownHostException =>
          println("Unable to find address for" + arg)
    }
  }
}

実行するとこんな感じ。

$ scala InetAddressExample www.google.com
hoge/127.0.1.1hoge127.0.1.1
[Ljava.lang.String;@75786e64
www.google.com
66.249.89.103
66.249.89.147
66.249.89.99
66.249.89.104

Scala自体の勉強は、 Scalaスケーラブルプログラミング が中心なのだが、 プログラミングErlang を読んでからコップ本を読むと、割とすんなり頭に入ってくる。戦闘機本を読み始めた時はなかなか理解できなくて読み終わるまでにやたら時間かかったけど。

Scalaスケーラブルプログラミング第2版

TCP/IPソケットプログラミング Java編

プログラミングErlang

broadcom STAドライバが悪い訳ではないらしい。

Sid on Macbook 5,2で、無線LANのデバイスドライバは broadcomのSTAドライバ を使っているが 1 、自宅のBuffaloの無線LANルータWZR-HP-G300NHだと WPA2-AESの認証が通らない ので、他ではどうなんだろうと思っていたが保留にしていた。が、某所の環境でWPA2-AESで接続する機会があったので試してみたらちゃんと接続できた。ということは、Buffaloの無線LANルータの方の問題か…。 新しいファームウェアも出ている ので、アップデートして試してみるか。

1

実際には Debianパッケージ を使っているが

fetchmailでメール取得して処理する。

POP3などでメールを受信してメール本文のデータを処理させる場合、POP3のセッションからメール受信までコード書いてやるのはめんどい。fetchmailでそこんとこはやってしまおうと思ってmanを調べてみたら、やっぱりできるようだ。

例えば、以下のようにGmailでPOP3経由でメール受信した場合、.fetchmailrcで、mdaオプションの引数でメールをパイプで渡したいコマンドを指定すればよい。

poll pop.gmail.com with protocol pop3 port 995
        user "youraccound@yourdomain" is "yourlocalaccount" here password "yourpassword"
keep ssl fetchall mda ~/bin/cat.sh

~/bin/cat.shはこんな中身。

#!/bin/sh

cat >> hoge

単純に”>”としなかったのは、既にhogeファイルに記録されている内容が上書きされてしまうから、というのもあるが、本質はそっちではなく、複数のメールを受信する場合、最後のメールで消されてしまうからだ。メール自体の処理は、この~/bin/cat.shの代わりに処理用のコードを書くか、一時ファイルとして保存してから処理すればよろし。

風邪引いたっぽい。

しんどい。はよ寝よう。

今回は新年会。

毎年1回年末に必ずやってきた、新人研修の時のチームでの忘年会。異なる会社に属するメンバーで開催するこの会は非常に珍しく、誰に言っても驚かれる。違う会社ということではFLOSS関連の集まりもあるにはあるが、あれは同じor似た目的があって集まるが、この会はそういう類ではないので、とても貴重。

今回は予定が合わず年越したが東京駅八重洲口近くの飲み屋で開催した。「今度の4月で入社10年目だよ」そんな話から社会人になってからもうすぐ10年になるのということに時の流れは早いなと思った次第。最近は大体皆、結婚したか、子ども産まれたか、仕事の状況どう?といった当たりが年代と世間的な話題なようだ。

参加者は結局3人になってしまったが、この集まりはずっと続けて行きたい。そう思えば一方で大学の同級生=友人からの年賀状で、同窓会がたまにあると書いていたが、卒業してから一度も参加してない。まぁ連絡がないのでいつ開催されるのかも分からないんだが。”44クラス飲み”と書かれていたが、そもそも”44クラス”って何だっけ?大学の生物学科の所属人数?ではないな。20人前後だったはず。とすると、1年の時の英語のクラスの人数だっただろうか?10年経つとそんなことも忘れてしまうのだな…。