2009年5月25日月曜日

Javaソースコードの特定位置がコードがコメントか文字列か判定する方法

まだ検証していないけどとりあえずできたので上げてみる。

まじめに構文解析しないで簡易に知る方法ないかなと思って実装してみた。言語はPython。文字列リテラルとコメント(と一応文字リテラル)の開始をサーチして、それに対応する終わりを探す。という処理を再帰で繰り返して、閉じてればNoneを、閉じてなければ対応する文字列を返却する。コメントは単純だけど文字列とかはエスケープもあるので、ちょっと不安。

import re

beginning_regex = re.compile(r'(\'|"|(?:/\*)|(?://))', re.MULTILINE)
doublequote_regex = re.compile(r'(?:[^\\]|\A)(?:\\\\)*"', re.MULTILINE)
singlequote_regex = re.compile(r"(?:[^\\])(?:\\\\)*'", re.MULTILINE)
cpp_comment_regex = re.compile(r'\n', re.MULTILINE)
c_comment_regex = re.compile(r'\*/', re.MULTILINE)


regex_map = {'"': doublequote_regex,
    "'": singlequote_regex,
    '//':cpp_comment_regex,
    '/*': c_comment_regex}
return_map = {'"': 'string',
    "'": 'char',
    '//': 'cppcomment',
    '/*': 'comment'}

def is_open(code_content,pos):
    '''
        code_content : string of whole source code
        pos : position for checking
        returns None when the string doesn't contain open comment/string literal
        otherwise, returns a string "ccomment", "cppcomment", "string" or "char"
    '''
    idx = 0
    cnt = 0
    print pos
    while True:
        match = beginning_regex.search(code_content, idx)
        if (match == None) or (pos < match.start()):
            return None
        match_head = match.group()
        end_regex = regex_map[match_head]
        idx = match.end()
        if (match_head == '"') or (match_head == "'"):
            idx =  idx - 1
        end_match = end_regex.search(code_content, idx)
        if (end_match == None) or (pos < end_match.start()):
            return return_map[match_head]
        idx = end_match.end()

#main routine
f = open(filepath)
position = 100
result = is_open(f.read(), position)
if result:
    print result + '内です'
else:
    print 'コードです'

2009年5月23日土曜日

4/11 from 京急蒲田 to 川崎

文章を綴るほど脳みそが働かないので、以前散歩したときに撮った写真を。

謎のダクト

タイトル:孤独

駐輪場

趣のある建物と歩道橋

ブルー

ブルー

イエロー

イエロー

ピクトさんx2

カラフル屋根瓦(写真斜めすぎ!)

カラフル外壁タイル

Rollover Beethoven

18

川!

Camera Girl

Bike Girl

河原ゴルファーズ

2009年5月4日月曜日

アンナ・ローリー 「リーダー・セラピー」

マイクロソフトにて"Short time corporate therapy(STCT)"を行ってきたセラピストである著者が、企業のリーダーたちが抱える問題を5つの視点-「信念」、「自信」、「自己認識・行動によるサイン」、「信頼」、「権力・野心」からとらえ、解決に至る考え方やプロセス、ツールを紹介した本。

リーダーの行動がチームに与える影響を分類して、その行動の原因となるリーダーの心理状況とはどのようなものか、さらにその心理状況をもたらしている根本原因はどういったものがあるのかを著者のクライアントのエピソードを交えながら解説していく。さらにはその根本原因にクライアント自身が気づくためにはどうしたらよいか、そしてそれを認識した上でどのように解決を図っていくかについて筆者の見解が述べられていく。そして最後の章では、これらのセラピーを自力で(おそらく「ある程度」なのだろうけど)行えるようなヒントを解説している。

僕はリーダーというポジションにはないけれど、仕事に対するあるいは人に対する自分の態度・姿勢をどのように考えるべきかという点で参考になった。特に「信念」つまり何を重要視しているのか、どのようなことが自分自身にとって正しいことであると考えているのかが、自分自身で全くわかっていないことを意識させられた。

本文中では、信念を明確化するために以下の3ステップを踏むことを提案している

  1. 自分の転機(選択を迫られた時)をリストアップする
  2. リストからストーリーにまとめ上げる
  3. チームメンバーにストーリーを話す

最後のステップはリーダーが信念をチームメンバーに伝え共有するためのものだからおいておくとしても、はじめの2個くらいはできるんじゃないかな(それでも明確に選択をしてきた意識がないので、こういうのは苦手なのだけど)。これっていわゆる自己分析ってやつかな?僕は就活の時にまじめに自己分析とかしなかったので、今更ながらやってみようかと思う。

2009年5月2日土曜日

屋久島旅行 4/4

最終日。足もなく、時間も午前中しかないため宮之浦をぶらぶらと散歩。益救(やく)神社によってみたり、mam's kitchen宮之浦店で昼食用のハンバーガーを買ったりして過ごす。mam's kitchenのハンバーガーはバンズがフォカッチャでできているのが特徴。ハンバーグがかなり家庭的な味付けで、いわゆるハンバーグとは趣がだいぶ違うけれどおいしい。

最終日も晴れました

益救神社の仁王像。文化財は大切に

帰りも高速船で鹿児島本港まで約2時間。さようなら屋久島。

さようなら

飛行機の時間まで少し余裕があるので、鹿児島でレンタカーを借り高速に乗って霧島神宮を目指す。ここから先はほとんどおまけで、あまりゆっくり見られなかったのは残念だが、霧島神宮を見物し、温泉が流れ落ちる丸尾滝に寄り、霧島温泉市場という施設で足湯と食事をとりぎりぎりの時間で鹿児島空港に。

霧島神宮

手水舎の龍

丸尾滝

屋久島楽しかった。本当に山と海しかなくて、観光客向けの施設なんかもあまりないしいいところだった。また体力を蓄えて再訪したい。

2009年5月1日金曜日

屋久島旅行 3/4

3日目。朝一で白谷雲水峡に向かう。この日は7時頃に宿を出たのだけど、向かう道が工事中で8時まで通れないという。仕方がないので朝ご飯の弁当を食べたり、周りを眺めて時間をつぶしていると程なく通行可能に。

足止め中

白谷雲水峡は宮崎駿が映画「もののけ姫」の森のモデルとしたところらしく、奥に進んだところに「もののけ姫の森」と名前がつけられたポイントが存在している。そのあたりまでは軽いハイキングのつもりでいくことができ、そこから先は登山道になっているようだった。

岩が一面苔むして、縄文杉への登山道とはかなり違う雰囲気で、この日は雨が降っていた(弱い雨だったので、周りのガイドさんは皆普通の格好だったが)ためか、苔が非常に美しい緑色をしていた。僕はどうやら苔が好きらしい。

苔むし

とりあえず「もののけ姫の森」までいって引き返す。この場所には以前はもののけ姫の絵が描かれた看板があったのだが、権利関係で撤去されてしまったらしい(宮崎駿自体はOKを出していたらしいけど)。

かなりそれっぽい「もののけ姫の森」

下山して麓にある「海舟」という店で昼食を取り、湯泊温泉に向かう。平内海中温泉の方が知名度が高いようだけど、こちらも海のすぐそばに湧いている温泉だ。足湯も整備されているとガイドブックに載っていたがぬるすぎる上に湯が汚れていてあまり使えなさそうな雰囲気だった。屋外にあるのである程度仕方のないことだが、足湯に引いている湯量が少なすぎるのかもしれない。

足湯はあきらめて浴槽の方につかる。浴槽は2つほどあって、本当に海のそばにあるものと一段高いところにあるもの。海に近い方には入らなかったのだけど、地元のおっちゃんとおぼしき人に聞いたところによると、清掃等が入らないのでそこに海草が生えているらしい。

入浴後は、レンタカーの返却時間も迫っていたため宮之浦に戻る。夕食を外で取ろうと「漁火」という店に向かうが18時前にしてすでに満席だった。そのため港方面まで歩いて行き「潮騒」に入る。鯖すきや鯖の白子、カメノテ(亀の手に形状がにている貝)など珍しい料理と焼酎をいただく。

途中猫に遭遇

鯖すき