Syntax highlighter

2010-11-15

メジャーデビュー決まりました

Mixiで変なバトンを踏んだので・・・
これ、マイミクの部分どうすればいいんだよ・・・
しかも、足跡残らねえよ・・・

内容は以下。
☆☆☆☆☆☆☆☆☆☆☆☆

バンドバトン♪♪

見てしまった人は必ずやること♪

足跡に残るので逃げられませんよ♪

タイトルは『メジャーデビュー決まりました』にすること♪

見た以上は必ずコメントすること♪



♪本名は?

⇒外部ブログなのでさすがに伏せさせてくださいm(_ _)m

♪ステージネームは?

⇒ねえよ

♪担当パートは?

⇒Topテナー

♪そのパートを選んだ理由は?

⇒低音が出ないから、High Cとかその辺の音が出る人があんまりいないから

♪メインで使ってる楽器はどんなの?

⇒ファルセットと実声の中間

♪それを選んだ理由は?

⇒高音をきれいに出すにはと試行錯誤した結果、あんまり力まずそこそこ張れるから

♪その楽器のPRポイントは?

⇒High G(ソプラノのG)くらいまでがんばれば出せます(使い物にはならんが・・・)

♪歴はどれくらい?

⇒そろそろ10年か(でも、ここ2年はやってないからもっと少ないか)

♪初めて完コピーした曲は?

⇒ゴスペラーズの星屑の街かな

♪その曲を選んだ理由は?

⇒アカペラの曲で有名なのは少ないのよ

♪憧れのミュージシャンは?

⇒昔はパバロッティ、今は誰だろ?

♪好きなミュージシャンは?

⇒たくさん

♪好きな曲を1曲挙げるとすると?

⇒一曲なんて無理です・・・

♪好きなジャンルは?

⇒最近はHipHopとかも聞くようになったし、おそらく演歌以外すべてかと
でも、あんまり意味不明なジャンルは聞かない

♪今バンド組んでる?

⇒組んでない。
オランダ在住で、アカペラやりたい人やりませんか?w

♪バンド組んでる人はバンド名を教えて下さい

⇒組んでない

♪プロは目指してる?

⇒プロってなに?

♪ライブの失敗談はありますか?

⇒結婚式で歌ったときに、オルガンの演奏がまったく聞こえず、意味不明になった

♪担当パートの楽器にいくらぐらい遣った?

⇒無料、タダ、Free、Gratis

♪生まれ変わってもバンドをやるならパートは何がいい?

⇒楽器を使うパートかな・・・でもアカペラも楽しいんだよね・・・

♪付き合う前の好きな異性をライブに呼んだことはある?

⇒ない

♪その異性とはいい感じになった?

⇒ない

♪その異性と今は?

⇒何の質問だこれ?

♪このバトンを見た人は必ずやらなければなりませんが、中でも特にやってほしいマイミクを5人挙げて下さい

⇒マイミク少ないのに・・・
Rogさん
Zestさん
まっけんじーさん
ラフマさん
うまmiさん

バンド組んでない人は、架空のバンドを想定してくださいm(_ _)m
上三人はB.G.M.でOKだと思います。

♪最後になりますが、音楽は世界を救うと思いますか?

⇒戦闘なんてくだらねぜ、俺の歌を聞け~!!!
こうですか?

以上

☆☆☆☆☆☆☆☆☆☆☆☆

2010-11-12

syntax-case続き

とりあえず、こういう方針でいこうという考えをまとめておく。

syntax-case自体はコンパイラとは関係ない(ないことはないが)、ライブラリとする。
define-syntaxで定義された構文は変換器を返し、変換器が変換する。
(Gaucheはそうしてると思う。ソース見る限り・・・今のところsyntax-rules限定っぽいけど)
define-syntaxで定義された構文にS式が与えられた場合、構文オブジェクトとしてすべての引数を与える。
こんな感じ?
(define-syntax sample
  (lambda (x)
    (syntax-case x ()
      ....)))
(sample 1 2 3) ;; <- この1 2 3っていうのがsyntax-caseによって処理されるために構文オブジェクトになる
ということは、マクロを展開する際に、S式をいったん構文オブジェクトにする必要がありそう。 これで、syntax-caseを定義するとすると
(define-syntax syntax-case
  (lambda (x)
    ... ;; いろいろ定義がいりそう?
    ;; x は構文オブジェクト。matchはAndrew Wrightみたいなの(構文オブジェクトにも対応)
    (match x
      ((_ e ((? literal? literals) ...) clauses ...)
        ...)))) ;; きっといろいろする
っで、こいつ自体が変換器なので、syntax-rulesはこう書いて
(define-syntax with-syntax
  (lambda (x)
    (syntax-case x ()
      ((_ () e1 e2 ...)             (syntax (begin e1 e2 ...)))
      ((_ ((out in)) e1 e2 ...)     (syntax (syntax-case in ()
                                              (out (begin e1 e2 ...)))))
      ((_ ((out in) ...) e1 e2 ...) (syntax (syntax-case (list in ...) ()
                                              ((out ...) (begin e1 e2 ...))))))))
(define-syntax syntax-rules
  (lambda (x)
    (define clause
      (lambda (y)
        (syntax-case y ()
          (((keyword . pattern) template)
           (syntax ((dummy . pattern) (syntax template))))
          (_
           (syntax-violation 'syntax-rules "Invalid expression" x)))))
    (syntax-case x ()
      ((_ (k ...) cl ...)
       (for-all identifier? (syntax (k ...)))
       (with-syntax (((cl ...) (map clause (syntax (cl ...)))))
         (syntax
          (lambda (x) (syntax-case x (k ...) cl ...))))))))
syntax-rulesで定義された構文は 構文 -> syntax-rules変換器 -> syntax-case変換器 -> ごにょごにょ という感じになるはず。 こんなのは
(define-syntax print
  (syntax-rules ()
    ((_ o)
     (begin (display o) (newline)))
    ((_ o1 o2 ...)
     (begin
       (display o1)(newline)
       (print o2 ...)))))
(print 1 2)
こうなる?
(print 1 2) -> (transformer syntax-rules '(syntax-object (print 1 2)))
: with-syntaxは略
-> (transformer syntax-case '(syntax-object ...#;多分この辺にsyntax-rulesで作られたtempleteが入る (print 1 2)))

正しいのかよくわからん。その上、どう実装していいのかもよくわからん・・・

syntax-caseの実装

Schemeの話。

マクロの展開を実装しようとした際に、syntax-caseがどうしてもキーワードになる。
これはなんだ?
いや、何かはわかっているんだけど、R6RSの仕様書を見ると、こいつはライブラリだと書かれている。

っで、いろいろなR6RS準拠の処理系で試したところ、
どうもこいつはキーワードっぽい動きをする。(defineとかlambdaとか見たいな)

ということは、組み込みか、(define-syntax ...)で定義されたものかという気がする。
っで、仕様書にはライブラリと書かれている・・・
syntax-rulesとかはsytax-caseで定義できるみたいだが、
syntax-caseはどうやって定義するのだろう?
こんな感じ?
(define-syntax syntax-case
   (lambda (form literal rules)
     ...))
っで、適当にパースすればOK?

ちなみに、psyntaxはよく知らないけど、
YpsilonとかAndre van Tonderのexpanderとかだと割りと組み込みみたいな書き方してる。
(コンパイラが持ってるわけじゃないからライブラリ?)
細かいこと考えなくてもいい?
う~ん。

2010-11-05

【尖閣ビデオ】見た!!!!

昨日の夜(といっても日本時間なら午前5時か6時くらい)にYoutubeにアップされていたビデオを見た。
中国は真っ黒です!!

これみて、コツンと当たったとか、日本側が悪いとか言ってるアホ議員がいるということが正直信じられない。
個人的な意見だけど、これ逆の立場だったら中国は最大級の外交カードとして使うだろう。
そもそも、領海侵犯してる漁船が体当たり+逃亡なんてロシアとかアメリカに対してやったら船がこの世から消えてるレベル。

この動画の2分くらいのところから:

明らかにぶつけにきて、かつ逃亡。

こっちの方は海保の船「みずき」が黒煙を上げてる:


これで
こんな穴が船体右側に空くわけがない!!!
ってか、仮に先端部が当たってあいたとして、真四角の穴が開くわけないだろ!!

これで船員を釈放した無能議員とか死んでいいんじゃね?

2010-11-02

Infoseekが終了した

まぁ、2ヶ月くらい前から知っていたことではあるが、自分の過去のHPも一緒に消えた。
(メンテナンスしてなかった上に、FTPのパスワード忘れちゃったのでどうにでもなれ状態ではあったが・・・)

困るなぁと思うのは、自分のとは違って有益な情報を載せてるサイトが結構多かったので、移転せずに消えてしまったらいやだなぁということ。
有料のサービスは残るとのことなので、有益サイトがそっちだったらいいなぁ・・・

2010-10-28

Movie: It Could Happen to You(邦題:あなたに降る夢)

1994年なんだこれ・・・
実話をヒントに作られた映画。ジャンルはラブコメでいいのかな?
あらすじと実話は適当にググってください。

感想。ニコラス・ケイジ演じるチャーリーの駄目男っぷりと、その妻の強欲っぷりが素敵な映画。
ブリジット・フォンダ演じるイヴォインヌの薄幸ぶりもかな?
いや、まだ観てるんだけど実は、今のところの感想として、宝くじは結婚してから買っては駄目だね。当たったらいろいろ火種にしかならない気がする。
ってか、ニューヨーカーとマスコミは主人公2人に振り回されすぎ。宝くじが当たったからといってそこまで追跡されんと思うぞ。
(書いてる途中で終わった)

なんというか、女が腐ったような男(イヴォインヌの元夫)とか嫌いなタイプの人間が出てくる映画ってあまり好きじゃなかったり・・・
借金背負わせて逃げたくせに、2億入ったから戻ってくるって、どの面下げて(ryって感じ。

個人的に最後のお約束は要らないんじゃないかなぁとは思った。別に強欲妻は勝ち逃げでもよくね?金手に入れるために裁判して、60過ぎのおじいちゃんと結婚までしたんだから?
ま、お約束がないといかんのだろうけど、ハリウッド映画って。

見る価値は、野郎だけでなら0かな。

2010-10-20

寒い!!!

先週くらいから急激に寒くなった。
最低気温が3度とかある・・・

んで、今日は雹が降ってきた!!!
どうやら上空には寒気団があるくさい。

まだ10月なのに冬の到来を感じる。
12月とかになったら氷点下確定コースかなぁ?
-10度とか去年だけのことだと思いたい・・・

2010-10-15

契約更改の話

僕自身の契約更改は順調に終わり、無事に正社員になったわけだが、
そうでは無い人もいたという話。

実際知ったのは今日(昨日?)なのだが、僕より二週間早く入社した人が8月の段階で契約延長(もしくは正社員になる契約)をしないということだった。
そういえば今週の頭から姿を見てないなぁ、と思っていたらその通知のメールと、PC撤去が同時できた。
(ちなみに、席は僕の目の前)
理由は知らない。あまり一緒に仕事したことはないが(一時期同じプロジェクトにいたくらい)、可もなく不可もなくという感じの仕事ぶりだった気がする。
(個人的には汚いコードを書くなぁとは思っていたが・・・)

まぁ、理由は以下のどれかなのは自明で、
・解雇
・自主退職
ってか大別するとこの2つしかないわけで。

8月の時点ですでに話し合っていたということは、おそらく後者かな?
僕が契約更改の話を受け取ったのは9月に入ってからだし。最近まで何かのプロジェクトに参加してたみたいだし。
もし、解雇だとしたら、当然それは僕だったかもしれなくて、なんて考えるとちょっと複雑な気分であった。

2010-10-01

ハッシュテーブルの検索

超有名なデータ格納の方法の一つ。
諸事情により、自前でハッシュマップとハッシュセットを作る必要があったので、作ってみた。
理論上計算回数がΟ(1)でいけるはずなんだけど、どうもそんな感じがしない。

っで、STLのsetと自作ハッシュセットで比較してみた。
結論だけ言うと、
ハッシュセットは早いけど遅い。
なんのことだ?と思うかもしれないけどそんな感じ。
実装の都合上、衝突が起きた際に得られたハッシュ関数で得られたハッシュ値を増やして空きを探したり、
要素が存在しているか検索しているのだが、これがまずい。
無限の箱があってハッシュ値も衝突がおき得ないのならΟ(1)なんだろうけど、箱は有限。っで箱が50000とか超えた時に、存在しない値の検索をすると、ループが50000回走る。つまりΟ(n)になる。
う~ん、存在する値だとものすごく早くてそれこそΟ(1)に近い値が出るんだけど、う~ん。
衝突時にリストにしてもいいけど、メモリ管理が面倒な気がする・・・う~ん・・・

どうでもいいけど、
「Ο」これ「O(アルファベット)」じゃなくて「Ο(オミクロン)」だったのね。初めて知った^^;

契約更改

今の職場についてほぼ1年が過ぎようとしている。
契約は最初は1年契約なので、今日契約の更新の面接があった。

結果、無事正社員に昇格!
昇給もしたし、う~ん、いいことだ。

オランダだと一年で正社員になるというのは珍しいらしく、普通はなんだかんだ契約の延長だけというのが間々あるらしい。
マネージャー(日本語に直すとなんだ?部長とかそれ以上?)との面接で、
働きぶりに満足してるし、ここで働いてほしいというようなことも言ってもらえたのだが、
しかし、正直ほとんど何もしてないに近いくらい楽な仕事なのだが、
いいのだろうかと不安になる。
(もちろんやることはやっているのだが、いかんせん楽すぎる)

ま、プログラマは天職なんだということにしておこう。

iPhone

いろいろな経緯からiPhoneが今手元にある。
3Gなので一つ前のだ。

PDAかつiPodに電話がついてる感じで、正直もてあましてる感が大きいが今のところ気にいっている。

誰か、お勧めアプリを教えてくれ!

2010-09-26

Cygwinのメモリ

Cygwinだけなのか、Mingwもなのか、そもそもC++の企画なのか分からんけど、メモリの確保ではまった話。

Cygwin上のGCCで(正確にはG++)1M以上のメモリを確保して、そのメモリに生でアクセスしようとしたらセグメンテーションフォールトが起きた。
なんでだろうと思ったが、プログラム全体で見ると動いていたのでとりあえず放置していたのが、やっぱりおかしいよなぁと思って検証してみた。

検証プログラム
#include "test-a.h"
#include 
int main()
{
  void* p = (void*)new char[1024* 1024];
  printf("%p\n", p);

  test t;
  t.print();

  test *t2 = new test();
  t2->print();
  delete t2;
  return 0;
}
test-a.hはtestクラスを持ち、そのコンストラクタ内で1Mのメモリをoperator newで確保し、printメソッドでメモリアドレスをプリントする。それだけ。
実際はtestクラスの詳細はスタティックライブラリにしてある。スタティックライブラリの制限かなとも思ったので。

結果。
そもそも最初のnewで死んでた。
帰ってきたアドレスが、0x7fea0008。完全に死亡アドレスです。
理由は分からんが、アウトなんだろう。

しょうがないのでとりあえずWin32APIのVirtualAllocを使って回避。こっちならOKっぽい。
この制限があると、多き目のメモリープールとか不可能になる気がするが、どうなんだろう?
ってか、一気にメガ単位で確保しちゃ駄目ってこと?
誰か理由教えて(´;ω;`)

2011/10/25 追記
ひょっとしたらこの辺と関係あるかも=>Cygwinのヒープ

2010-09-13

英語の発音について

英語の発音で日ごろ理不尽に感じてることをちょっと書いてみる。
(なんで今更こんなことをとか自分で突っ込み)

同スペル、異発音
Houston:
/ˈhjuːstən/ ≒ ひゅーすとん と発音すればテキサス州の都市(が有名、ほかにもある)
/ˈhaʊstən/ ≒ はうすとん と発音すればニューヨーク市の通りの名前(が有名、ほかにもある)

読みにくい系
simultaneously:
/ˌsī-məl-ˈtā-nē-əs-ly/ ≒ さいみゅるてにあうすりぃ。
ちなみにsimulateは/ˈsim-yə-ˌlāt/ ≒ しみゅれいと だったりする。(個人的に前者は米語だと思ってる)。

cupboard:
/ˈkʌbərd/ ≒ かばーど。知らなきゃ読めない。
ちなみに、boardは/bord/ ≒ ぼーど なので、後半だけ見ると同スペル、異発音かも。

nature:
/ˈnā-chər/ ≒ ねいちゃー。でもこれ、naturalになると/ˈna-chə-rəl/ ≒ なちゅらる になる。

英語と米語で発音が違う系
tomato:
「これが、"とめいと"だと!」と中学に入ってまず間違いなくショックを受けた言葉の一つだと思う。でも、英語(イギリス系)だと"とまーと"と発音したりする。ちなみに、tamagoは「ためいご」ではないのであしからず。

あんまりぱっと思いつかなかった。
この手のねたは需要があるかテストもかねて投稿してみたり。

2010-09-03

Java: Preferenceクラス

Javaのことを書くなんて本当はしたくないがあまりにネタがないので。
(Schemeの方は遅々として進まん・・・orz)

仕事は当然Javaを使うのだが、APIではまった話。
Preferenceというクラスがあるのだが、こいつは設定とか値をプラットフォーム固有の方法で永続化して使いまわせる便利なもの(のはず)
っで、今のプロジェクトでこいつを使っているのだが、なんか値がおかしい。
Windowsなので、レジストリに登録されるのだが、どうも1個しか値が存在してない。
っで調べてみた。

JavaDocによると、こいつはノードを取得する際にクラスを要求するくせに、値の保存はパッケージごとに行われるということ。クラスを要求するのは、パッケージ名を取得するためだけみたい。
つまり、
foo.bar.Hogeと、foo.bar.FugaっていうクラスでPreferenceを使うと値が共有されるらしい。
この方がありがたい人もいれば、そうじゃない人もいるだろう。僕は後者なわけだが・・・

foo.bar.configなんてパッケージを作ってその下にいくつかの設定値クラスなんかを作った場合問題になる、というか僕の問題はまさにこれ。
パッケージごとに一個の永続値って需要があるのだろうか?
ドキュメントをしっかり読めば早期発見できた問題ではあるが・・・

2010-08-15

前回から1ヶ月くらい離れてるなぁ・・・

日本にいたときは便利だったなぁという話。

スーパーとかなら切り身で売ってるけど、
マーケットで魚を買うとあまり魚はきれいになっていない。
頭、内臓、鱗のことだけど。
鮮度とか安さとかならきっと上なんだと思うけど、よくて内臓くらいまでか、さばいてくれるの?
しょうがないので、包丁で鱗を落とすし、三枚にもおろす。
(身が骨の方にたくさんつくときもあるが)

この辺のサービスは絶対的に日本の方がいい気がする。
しても、追加料金取るとかざらだし。
こっちの人たちあんまり客を大切にしないイメージ。

日本が過剰サービス過ぎなのか?

2010-07-16

どれが正しいんだ?

Schemeでdefine-syntaxの実装をしないといけないことに気づき、ちょっと調査。
単にマクロ展開のタイミングの話なのかな?

(import (rnrs))
(define (print x)
  (display x)
  (newline))

(define x 1)
(define (incf x . i)
  (if (pair? i)
      (begin (set! x (+ x (car i)))
      (print "procedure")
      x)
      (begin (set! x (+ x 1))
      (print "procedure")
      x)))
(print (incf x 2))

(define (test x i)
  (print (incf x i)))
(test x 1)

(print "define incf as define-syntax!")

(set! x 1)
(define-syntax incf
  (syntax-rules ()
    ((_ x) (begin (set! x (+ x 1)) x))
    ((_ x i) (begin (set! x (+ x i)) x))))
(print (incf x 2))
(test x 1)
こんなコードを、Chez(7.9.4)、Ypsilon(0.9.6-update3)、Mosh(0.2.5)に食わせてみる。

結果。
Chezは正常終了。最後の(test x 1)で展開されると思われてincfマクロは展開されず。
Ypisilonは最後の(test x 1)でincfの定義がない(多分、マクロで上書きされたから?)と怒る。
Moshはincfが複数定義されたといって例外。

それぞれの結果はこれ。
Chez
------------
procedure
3
procedure
2
define incf as define-syntax!
3
procedure
4
------------

Ypsilon
------------
procedure
3
procedure
2
define incf as define-syntax!
3

error: unbound variable incf

backtrace:
0 (incf x i)
..."D:/home/t.kato/test.scm" line 18
1 (test x 1)
..."D:/home/t.kato/test.scm" line 29
------------

mosh
------------
Condition components:
1. &who who: incf
2. &message message: "multiple definitions of identifier"
3. &syntax form: incf
subform: #f

Exception:
error in raise: returned from non-continuable exception

Stack trace:
1. throw:
2. (raise c): baselib.scm:943
3. apply:
------------

これだけバラバラだとどれが正しいのかわからない・・・

2010-07-09

英語で仕事をするということ

最近、楽天の社長が社内公用語を英語にするという記事を読んだのと、
それに反応してソニーかどこかの人がTwitterで、そんなことするくらいなら公用語をC言語にする、などといったのを読んだので無駄に反応してみた。

個人的な意見。
まったく無駄だと思います。
日本に本社があって、社長も日本人で、働いてる人の95%以上が日本人の環境で、英語にする意味がない。こっちで働いていて、使用言語はオランダ語ではなく英語なわけだが、オランダ人同士が会議している場所だと当然オランダ語。
そもそも、怪しい英語で会議しても意味なくね?英語が喋れることが最重要事項な会社って、翻訳会社か何かだと思う。楽天はそっち系に変わるのかね?

できることなら日本語環境がいいなぁと思う人の独り言・・・

2010-07-02

街が揺れた日

その日は暑い夏の日だった。仕事帰りの私はいつもと同じ道を歩いていた。
突如凄まじい轟音とともに街が一瞬揺れた!

えぇ、その瞬間がオランダがブラジルを下したことが決定した瞬間です。
正直、1点とったのかなと思ったんだけど、勝ってました。
ブラジルにですよ。信じられん。

ブラジルに勝てたということはそのまま優勝ということもありえるなぁ。

2010-06-30

C++で書き始めた

Scheme処理系をC++で書き始めた。
(実際は片付いてない問題が多々あるのだが・・・)

とりあえず、コードがVectorで構成されているのでVectorを。あと物が動くとやはりうれしいので、Fixnumなクラスを作成。
xyzzyの参考に(パチッてとも言う)、クラスのタグ付けとか、即値の判定とか作成。
っで、適当にごにょごにょして動かす。

(+ 1 2 3)をコンパイルした結果をC++のオブジェクトに置き換えたものが動いた。
説明が長い・・・

気になる点としては、現状だとコードはベクターの中にベクターが入れ子になるように作ってあるのだが、これだとメモリー効率が激しく悪い気がする。
Schemeで書いてるときは気にしなかったのだが、C++で書いてみると一つのコードを書くのにベクターの割り当てが激しく出てくる感じ。
コンパイラを書き換えて全部フラットにするべきだろうか・・・するべきなんだろうなぁ・・・

2010-06-24

ワールドカップ

日本が3-1でデンマークに勝った!!
何が起きてるんだろう?天変地異の前触れか?

どうでもいいが、ここオランダではサッカーがあるとえらいことになる。
僕の住んでるライデンにはちょっとした広場が街の中央にあるのだが、そこにパブリックビューがあって結構な人が集まっていた。
酒が飲めればいいのか、騒げればいいのか、純粋にサッカーが好きなのかどれなのかは分からないが、街中がやかましい。
噂によると、サッカーの観戦をするために仕事を病欠する人がいるそうだ。
そんな国。