はてなブックマーク - ファイル・ディレクトリ名コレクション
    このエントリーをはてなブックマークに追加

    Fusic 中野です。
    暑い中昼休みにゲームソフトを買いに行ったら、来週発売でした。

    ちょっとした小ネタ。

    弊社は主にRubyかPHPでプログラムを書くことが多い会社なので、今回はGo言語とHaskellについて
    書いてみようかと思います。

    Haskell製の自作ツールをGo言語で書き直していたのですが、あるディレクトリ配下のファイル一覧を
    取得する処理を簡単に記述できたので、ちょっと比較をしてみようかと思います。

    Go言語(MacOSX go1.3 darwin/amd64)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    package main
    import (
    	"fmt"
    	"os"
    	"path/filepath"
    )
     
    func main() {
    	var result []string = make([]string, 0) // グローバルはいや!
    	walk := func (p string, info os.FileInfo, _ error) error {
    		if info.IsDir() {
    			result = append(result, "Directory: " + p)
    		} else {
    			result = append(result, "File: " + p)
    		}
    		return nil
    	}
    	filepath.Walk(".", walk)
    	fmt.Println(result)
    }

    Haskell(MacOSX ghc version 7.6.3)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    module Main where
     
    import Control.Monad.Writer
    import Control.Monad.State
    import System.FilePath
    import System.Directory
     
     
    main :: IO ()
    main = go "." >>= print
        where
            go p = execWriterT $ runStateT walk [p] -- go :: FilePath -> IO [FilePath]
            walk = do -- walk :: StateT [FilePath] (WriterT [FilePath] IO) ()
                p <- get
                case p of
                    (x:xs) -> do
                        d <- lift . lift $ doesDirectoryExist x
                        if d then do
                            files <- lift . lift $ getDirectoryContents x
                            put $ xs ++ [x </> f | f <- files, f /= "." && f /= ".." ]
                            tell ["Directory: " ++ x]
                            else do
                                put xs
                                tell ["File: " ++ x]
                        walk
                    _  -> return ()

    たぶん、似たようなことをしているかと思います。

    まとめ

    今日はGo言語が1.3がリリースされました。もう、心がぴょんぴょんしてきます。

    また、もっと簡単にかけるぜ!という方、もしくは、PHPやRubyなどに興味があり、
    Fusicで一緒に働いてみたいという方はこちら
    フォームからご応募くださいませ。

    それでは。

      はてなブックマーク - Fusic勉強会10回開催報告+不定期開催への変更のお知らせ
      このエントリーをはてなブックマークに追加

      小山です。

      先日、YCAMに池田亮司 “supersymmetry”の作品とライブパフォーマンスを観に行ってきました。圧巻でした。お近くの方は是非。

      Fusic勉強会、10回開催

      Fusic勉強会を社外に公開することにしてから無事10回を開催することができました。

      もともとが社内勉強会だったものを「より内容をクォリティを高く」という視点から社外への公開へ踏み切りましたが、一定の効果は得られたのではないかと思います。少なくとも社内では「以前の勉強会よりも質が高くなった」という評価でした。

      やはり「外部の人に見られる」という点は、刺激が得られますね。

      一方で「もう少ししっかり告知をして、いろいろな人に見てもらえるようにしたほうが良かった」というのは反省点です。

      Fusic勉強会のこれからと期待すること

      無事10回を開催したわけですが、このままだらだらと開催していてもしょうがありません。どうせ開催するなら「もっと、より、効果があったほうがいい」ですからね。

      最近は、各プロジェクトにおける技術要素が異なってきています。また、社外の勉強会に参加する人が増えてきました。
      そうなると、「いまのままの方法での」「定期開催な」Fusic勉強会だとちょっとお荷物になりかねません(効果と、スケジュール的に)。

      というわけで「定期的な情報交換」という要素は他のやり方で検討するとして、社外に公開するFusic勉強会は不定期開催とすることにしました。

      社内では「もったいない」という声もありましたが、そういった人たちからまた新しい勉強会が出てきそうなので、逆に期待です。

      個人的にもFukuoka.rbにずっと参加させてもらっていて、「ストイックにもくもくやるの、いいなあ」などと思っているところです。

      というわけで

      別にFusic社員が外に出なくなるわけではなく、むしろ出ていくことが多くなるかと思いますので、
      今後ともFusicをよろしくお願いいたします。

        はてなブックマーク - Fusic勉強会でdotfilesの管理について話しました
        このエントリーをはてなブックマークに追加

        最近Rebuildが楽しみな小山です。
        早く社内でも「Rebuild聞いた?」という話題で盛り上がればいいなと思っています。

        さて、今回のFusic勉強会ではちょっと細かい話をしました。

        環境管理の必要性

        Rebuildでも「前時代的」で有名なEmacsですが、自分はそのEmacsを利用しています。

        さらにターミナル越しに使うことを徹底しています。
        その理由も今ではレガシーなのですが、もともとは「会社の完全体開発環境をVPNごしでいつでも使えるようにするため」だったりします。開発環境をもう一度構築する大変さを実感していたからでしょうね。

        ところが今では「不十分ながら」もEmacsにもパッケージ機構がつきましたし、MacならばBrewfileまで登場しています。

        これはいける!ということでhomesickにまで手を出し始めました。

        github.com/technicalpickles/homesick

        github.com/k1LoW/dotfiles

        やってみた結果

        Vagrant上の開発環境にもコマンド1つで自分の最新開発環境が作れるのはとてもいいです。自分のVagrantの使い方は多少寿命が長いので、いい感じです。

        あと、自作elのモダン化が辛いです(鋭意MELPAに登録中)。

        まとめ

        Rebuild聞いた?