Hatena::Diary

みずぴー日記

2010-09-05(日)

Scala座で「Scalaによる型推論の実装」という発表をしてきました

Scala座で「Scalaによる型推論の実装」という発表をしてきました - みずぴー日記 を含むブックマーク |

第一回 Scala座: 2010年9月4日(土) WINC愛知で発表してきました。

Ustもあるらしいですが、怖くて確認できていないです。

LTでもないのにScalaとあんまり関係ない話をするとか空気読めてない感じでごめんなさい。

感想

  • わらびもち!
  • 受け付けしてました。
  • 「弊社にくればScalaのお仕事あります!」っていっている人がそこそこ居て、わくわくしました。
  • 懇親会で何を話したかほとんど記憶にないのですが、id:bleis-tiftさんとかid:a-hisameさんのブログを見る感じだと、いろんな言語の話で盛り上ったり、名古屋ハッカソンの話をしてたっぽいです。名古屋ハッカソンは是非やりましょう。

2010-09-04(土)

痛Hudsonはじめました

痛Hudsonはじめました - みずぴー日記 を含むブックマーク |

f:id:mzp:20100904072132p:image

お酒を飲みながらHudsonインストールしてたら、こんなことになりました。

画像を差し替えるのは面倒だったのでmod_rewriteを使っています。

あとHudsonTwitter notifierがOAuthに対応していないのですが、みんなどうしてるんでしょう?

akihiroxakihirox 2010/09/04 11:34 issueは登録されてるようです。

http://issues.hudson-ci.org/browse/HUDSON-7365

とりあえずvoteしてみてはいかがでしょうか。
あとMLに投げないとそもそも問題として認識されない恐れもあるので、
日本語のMLでもいいのでポストしたほうが良いかも。

http://wiki.hudson-ci.org/display/HUDSON/Mailing+List

ただそもそも最近はアップデートされてる気配も無さそうなので、
パッチを送りつけるとか、コミット権もらって直接
直しちゃうのが一番はやいかも。

しかし素敵な絵ですね。

mzpmzp 2010/09/05 22:41 ありがとうございます。
自分で直したほうが早いんじゃね、と思いながら、いろいろといじってはいるんですが、なかなかうまくいってない感じです。
とりあえずあとでvoteしておきます。

2010-08-31(火)

buffalo

| buffalo - みずぴー日記 を含むブックマーク |

30分プログラム、その799。anarchy golf - Buffaloインスパイアされました。

"Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo"という文法的に正しい英文を出力するプログラムです。

使い方

16> buffalo:main().
"Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo"

ソースコード

-module(buffalo).
-compile([export_all]).

capitalize([])->
    [];
capitalize([C|Cs])->
    [string:to_upper(C)|Cs].
id(X) -> X.

main()->
    C = fun capitalize/1,
    I = fun id/1,
    string:join(lists:map(fun (F) -> F("buffalo") end ,
			  [C,I,C,I,I,I,C,I]),
		" ").

参考

トラックバック - http://d.hatena.ne.jp/mzp/20100831

2010-08-30(月)

明日(8/31)、名駅付近でもくもく会をやります。

明日(8/31)、名駅付近でもくもく会をやります。 - みずぴー日記 を含むブックマーク |

Scala座で発表するはずのスライドの作成状況が危機的になっております。

というわけで、明日(8/31)に名駅付近でもくもく会をやります。暇な人とか、逆にタスクがいっぱいある人とかは、一緒に作業しましょう。

いっしょに夏休みの宿題をかたづけましょう。

もくもく会とは

もくもく会とは喫茶店やカフェなどに集まって各自もくもくと勉強したり仕事したりする会です。家ではどうも仕事や勉強に集中できない、さぼってしまいがち…というフリーランスの人や学生の人におすすめです。気軽に参加(もしくは開催)してみてください。

もくもく会ポータルより。

場所・時間

参加方法

上記の場所と時間を参考にぶらっときて、ぶらっと帰っていくといいと思います。

異様な雰囲気を放つ集団なので、たぶん「待合せをしてるのですが...」と言うと案内してもらえると思います。「PCを広げてるの思うのですが..」と言えば完璧です。

ダメなときは@replyをください。

ネットワークとか

  • CAFE Z-TRESに居る間は、電源と無線LANが使えます。
  • 三省堂CAFEに移動すると電源が使えなくなります。5人までならボクのPocketWifiをお貸しします。

参加するかもしれない人

  • @
  • @
  • @

漢数字への変換

| 漢数字への変換 - みずぴー日記 を含むブックマーク |

30分プログラム、その798。数字から漢数字への変換をやってみました。

1以上1億未満の数字にのみ対応してます。

使い方

*Main> kanji 10
十
*Main> kanji 42
四十二
*Main> kanji 12345
一万二千三百四十五

ソースコード

import qualified System.IO.UTF8 as U

right  = ["", "一", "二","三","四","五","六","七","八","九"]
left = ["", "二","三","四","五","六","七","八","九"]
sep p xs ys  = ys ++ [ x ++ p ++ y | x <- xs, y <- ys]

xs = sep "万" (tail ys) ys
    where ys = foldl (\x p -> sep p left x) right ["十","百","千"]

kanji n = U.putStrLn (xs !! n)

参考

clairvyclairvy 2010/08/30 18:44 ごぬんなさい.
間違いなく仕事です.
一応行ってみようと思いますが,
普通の時間には行けそうにないです.自分がヤバス

トラックバック - http://d.hatena.ne.jp/mzp/20100830

2010-08-29(日)

Coq庵で発表してきました

Coq庵で発表してきました - みずぴー日記 を含むブックマーク |

トラックバック - http://d.hatena.ne.jp/mzp/20100829

2010-08-28(土)

OCamlMeeting 2010 NagoyaでLTしてきました

OCamlMeeting 2010 NagoyaでLTしてきました - みずぴー日記 を含むブックマーク |

OCamlMeeting 2010 NagoyaでOCamlAPISearchのLTをしてきました。

半年前に書き捨てたコードなので、よく覚えてなかったです。もうちょいコード読んで記憶を取り戻してから発表に挑むべきだった気がします。

感想

00:23 |  感想 - みずぴー日記 を含むブックマーク |

  • 名古屋開催だったのに東京の人が多くて驚いた
  • 第一級モジュールの話はよくわかんなかったですけど、すごそうな気がしました
  • OCamlTシャツありがとうございます
  • ラムダプラスありがとうございます

Scala座で発表します

Scala座で発表します - みずぴー日記 を含むブックマーク |

OCamlミーティングが終った直後であれですが、来週9/4(土)にScala座というイベントがあります。

Scalaあるところにkmizuさんあり」と評判のkmizuさんも来るので、暇な人もそうでない人も来るといいと思います。

ちなみに、ボクも空気を読まずにScala型推論を実装した話をするらしいですが、そっちはスルーする方向でお願いします。

トラックバック - http://d.hatena.ne.jp/mzp/20100828

2010-08-24(火)

改行しかしない

| 改行しかしない - みずぴー日記 を含むブックマーク |

30分プログラム、その797。anarchy golf - Carriage no returnインスパイアされました。

使い方

- no_return "abc\ndef";
val it = "abc\n   def" : string

ソースコード

fun lines s =
    String.tokens (fn c => c = #"\n") s;
fun unlines xs =
    String.concatWith "\n" xs;

fun pad n =
    String.implode (List.tabulate (n,(fn _ => #" ")));

fun fst (x,_) = x;
fun snd (_,y) = y;

fun concat_with_pad xs =
    List.foldl
	(fn (x,(n,ys)) => (String.size x + n, (pad n) ^ x :: ys))
	(0,[])
	xs;

fun no_return str =
    unlines (List.rev (snd (concat_with_pad (lines str))));

参考

トラックバック - http://d.hatena.ne.jp/mzp/20100824

2010-08-22(日)

ローマ数字の変換

| ローマ数字の変換 - みずぴー日記 を含むブックマーク |

30分プログラム、その797。500 - Internal Server Errorインスパイアされました。

ローマ数字をIntに変換します。面倒だったので、I,V,Xにしか対応していません。

使い方

scala> Roman.toInt("II")
res39: Int = 2

scala> Roman.toInt("IIV")
res40: Int = 3

scala> Roman.toInt("XIV")
res38: Int = 14

ソースコード

object Roman {
  val map = Map('I' -> 1,
		'V' -> 5,
		'X' -> 10)

  def toInt(s : String) : Int =
    s.foldRight((0,0)){ case (c, (m, current)) =>
      val n = map(c)
      if(n < m){
	(m, current - n)
      }else{
	(n max m, current + n)
      }
    }._2
}

参考

トラックバック - http://d.hatena.ne.jp/mzp/20100822

2010-08-21(土)

Googolからの引き算

| Googolからの引き算 - みずぴー日記 を含むブックマーク |

30分プログラム、その796。anarchy golf - Substract from a Googolインスパイアされて、Googolからの引き算をやってみます。

きっと、32bitの整数しか扱えない処理系でやるとエキサイティングなんでしょうけど、Gaucheだとあっさりできてしましました。ステキだと思います。

使い方

$ gosh googol.scm  0
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
$ gosh googol.scm  1
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
$ gosh googol.scm  123
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999877

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-

(define (pow n m)
  (cond
   ((eq? m 0) 1)
   ((even? m)
    (pow (* n n) (/ m 2)))
   (else
    (* n (pow n (- m 1))))))

(define googol (pow 10 100))

(define (main args)
  (for-each print
	    (map (cut - googol <>)
		 (map string->number (cdr args)))))

参考

トラックバック - http://d.hatena.ne.jp/mzp/20100821

2010-08-17(火)

各文字の出現回数を数える

| 各文字の出現回数を数える - みずぴー日記 を含むブックマーク |

30分プログラム、その795。anarchy golf - asunderインスパイアされました。

入力中のアルファベットの出現回数を数えます。たぶん暗号解読に便利な頻度表の作成に便利なんじゃないですかね(適当)。

使い方

$ echo abc | python asunder.py
A:  0
B:  0
C:  0
D:  0
E:  0
F:  0
G:  0
H:  0
I:  0
J:  0
K:  0
L:  0
M:  0
N:  0
O:  0
P:  0
Q:  0
R:  0
S:  0
T:  0
U:  0
V:  0
W:  0
X:  0
Y:  0
Z:  0
a:  1
b:  1
c:  1
d:  0
e:  0
f:  0
g:  0
h:  0
i:  0
j:  0
k:  0
l:  0
m:  0
n:  0
o:  0
p:  0
q:  0
r:  0
s:  0
t:  0
u:  0
v:  0
w:  0
x:  0
y:  0
z:  0

$ cat sample.txt | python asunder.py
A: 16
B: 19
C:  6
D: 14
E: 12
F: 11
G: 10
H: 13
I:  9
J: 10
K: 12
L:  9
M: 16
N: 11
O:  4
P: 12
Q: 13
R: 15
S:  9
T: 14
U:  9
V:  7
W: 11
X: 10
Y: 15
Z: 12
a: 13
b: 13
c:  9
d: 14
e:  5
f: 20
g:  5
h: 13
i: 10
j: 14
k: 10
l: 11
m: 11
n: 14
o: 11
p: 11
q: 15
r: 14
s:  6
t: 12
u: 12
v:  9
w: 17
x:  8
y: 15
z:  9

ソースコード

#! /usr/bin/python
# -*- mode:python; coding:utf-8 -*-
import sys

d = {}
for i in sys.stdin:
    for c in i:
        if c.isalpha():
            d[c] = d.get(c,0) + 1

for k in range(ord('A'),ord('Z')+1) + range(ord('a'),ord('z')+1):
    print "%s: %2d" % (chr(k),d.get(chr(k),0))

参考

トラックバック - http://d.hatena.ne.jp/mzp/20100817