タグ

ブックマーク / lestrrat.ldblog.jp (30)

  • 「みんなのGo言語」執筆参加しました! : D-7 <altijd in beweging>

    「あ〜、インタプリタ言語飽きた。コンパイルしてぇ」と思っていたところ見つけたGo。あれから4年ほど経ちます。 当初 「mattn さんという超絶変態ハッカーが使ってるなぁ」くらいの印象でした。そして触り始めてからも「なんだこれ、オブジェクトじゃないの…?」「interface {}って… え、あとから自動的に紐尽くの…?」「なにこれ、ポインタレシーバーとby valueレシーバーで意味違うの…?」などなど色々と自ら真っ先に罠にかかり、穴にはまりまくって「この言語大丈夫か」と皆さんもそう思っていたかもしれませんし、僕もそう思っていたことがありました。 その後、自分が罠にはまるごとにあちこちで発表したりもし、pecoという思いがけないヒットを書いてしまったり、とにかく大量のGoコードを書き続けていくうちに… Go言語は僕にとって既に無くてはならない存在になってしまいました。だって、コード書きや

    「みんなのGo言語」執筆参加しました! : D-7 <altijd in beweging>
    mattn
    mattn 2016/08/08
  • 日記風味に綴る、YAPC::Asia Tokyo 2015までの道 : D-7 <altijd in beweging>

    YAPC::Asia Tokyo 2015が終わった。厳密にはこれからスタッフ打ち上げの調整、動画関連、支払い関連、ブログ関連、写真関連の仕事がまだあるけど、まぁともかく山場は過ぎた。 今回は最大の大きさにもかかわらずいわゆるコアスタッフの面々とこれまで何回もボランティアスタッフをやってくれていた方達が次々と起こる予測していない事態や、主催の自分がセッションでの出番やMC等でいない時に進めなければいけない様々な事柄の指示を出してくれててものすごく助かった。もちろん自分も自分が指示を出せないとわかっているときはその前に責任の委譲や指示だしをやっていたけど、それ以上に自律的に動いていてくれたのでものすごく助かった。今回のYAPCは完全にスタッフのみんなの能力の勝利だった。 エモい話や将来の話とかはまたいつかするとして、このエントリではとりあえず日記風な感じで昨年9月末からの大まかなな流れを書い

    日記風味に綴る、YAPC::Asia Tokyo 2015までの道 : D-7 <altijd in beweging>
    mattn
    mattn 2015/08/23
    お疲れ様でした。
  • myfinderさんとのシンクロニシティ : D-7 <altijd in beweging>

    注:すっごくくだらない話です 先週OSCON 2015というのに行ってたのです。イベントはポートランド(オレゴン州)で開催されていたのですが、土曜日の夜にシアトル経由で羽田に到着したのですね。 で、日について早速携帯をオンにして10時間弱のフライトの間にポストされていた色々を見ていたらmyfinderさんが同じ頃に羽田空港にいて、これから同じシアトルに向かうというではありませんか そのときはそれ以上思わなかったので「入れ違いですねー」ってコメントだけして僕は家路につきました。ところが次の日にもう一度myfinderさんのポストを見るとどうやら 僕が乗っていたのと同じデルタ航空だったようで、見覚えのある席がポストされてました

    myfinderさんとのシンクロニシティ : D-7 <altijd in beweging>
    mattn
    mattn 2015/07/28
    myfinder「牧さん、席 温めておきました」
  • grpcを(Goから)かるーく触った : D-7 <altijd in beweging>

    grpcをさらっと触ってみた。僕の個人的な結論から言うと、小規模なシステムにはいれるメリットあんまりないけど、複数チームでわりとバラバラに開発をしてるけど同じRPCを叩く必要があり、なおかつそれなりのトラフィックがあるなら有効そう。 他の言語の事は知らん。とりあえずGoでさわる。github.com/grpc/grpc-commonをチェックアウトして、サーバーとクライアントを起動する。ドキュメント読んでるとProtocol Buffersの話とかでてくるけど、動かしたいだけなら全部忘れてよし。 $ cd go/greeter_server $ go run main.go $ cd go/greeter_client $ go run main.go これだけだと一回RPCが走るだけでつまらないので、client側を変えて100 goroutineでぼちぼちたっぷりのコールをするようにす

    grpcを(Goから)かるーく触った : D-7 <altijd in beweging>
    mattn
    mattn 2015/02/27
  • Software Design 2015/3月号とWeb+DB Press vol 85 : D-7 <altijd in beweging>

    Software Design 2015年3月号 ソフトウェア デザイン 2015年 03 月号 の表紙はYAPC::Asia Tokyo 2013, YAPC::Asia Tokyo 2014でもお世話になり、今年もお世話になる予定の CONBUの面々による「カンファレンスネットワークの作り方」です。普段正直ほとんど技術系の雑誌ってわざわざ買わないんだけどこの号は購入した。 文の記事ももちろんおもしろいんだけど、個人的にはやはり「YAPC」という文字列が専門誌とは言え一般的にあちこちで流通している雑誌の表紙に載っているのが胸熱…! 今までも雑誌にYAPC::Asia Tokyo関連の記事を載せてもらったり書いたりしたことはあったんだけど、もうYAPC体とはなんにも関係ないところで自然?な形でこういう形でYAPCの名前が載るのがとにかく感動であった。 Web+DB Press vol

    Software Design 2015/3月号とWeb+DB Press vol 85 : D-7 <altijd in beweging>
    mattn
    mattn 2015/02/24
    ぜんぜん関係ないけど、犬の目がめっちゃ光ってて本文どころじゃないねん
  • 急成長中の会社をサクッと辞めた事に関して色々言われるので書くつもりがなかった退職エントリを書く : D-7 <altijd in beweging>

    タイトルの通りなんですが、某急成長中/快進撃中のあの企業を11月末ですごくサクッとやめて、イベント運営サポート・チケット販売システムをやっているスタートアップであるPeatixにジョインしました。とりあえずインフラ周りをがっつり整備する方向。 この話をするとわりと真顔で「え、なんで?あの会社を辞めるなんてなんか事件でもあったの?!」って感じの反応をされるんだけど、そういうことではないのでそこだけ説明のため好きでもない退職転職エントリを書いている次第です。 まず、なにか事件があったわけではない。べつになーんもなかった。子供のお迎えとかをしてても基文句も言われなかったとか、色々融通を効かせてくれてたのは明らかだし、そのまま居れば皆も知ってる勢いのある企業でボチボチ高給取りでいられたかなーとは思う。 だから退職せずにもっと良い方法を模索すればよかったのかなぁとは思わないではないけど、やっぱり

    急成長中の会社をサクッと辞めた事に関して色々言われるので書くつもりがなかった退職エントリを書く : D-7 <altijd in beweging>
    mattn
    mattn 2015/01/05
  • Automating peco releases via Docker : D-7 <altijd in beweging>

    「なんか外部CIサービスだるいなー」「リリースとかもうローカルの環境でやりたいなー」「マシン取っ替えてもすぐ環境作れるようにしたいなー」などなどの欲求があったのと、go1.4がリリースされたのもあってDockerで全部自動化してみた。 戦略としては Travis CIとかの連携は残すけど、手元でいつでも同様のテストを走らせられるようにしておくリリースは手元でバージョン指定すれば基的に一発で通るようにしておく実装は単純で、ubuntuベースのイメージに必要なgoのバージョンとツール類(goxcとghr)を展開しておいて、pecoのディレクトリは後からdocker run -vでマウントできるようにしておく。 使う時は先にイメージを作成しておく(キャッシュ使ってるから当然素早く走りますね!)

    Automating peco releases via Docker : D-7 <altijd in beweging>
    mattn
    mattn 2014/12/16
    かっこいい
  • YAPC::Asia Tokyo 2015 の会場の紹介 : D-7 <altijd in beweging>

    YAPC::Asia Tokyo 2015 は ななななんと!8/20-8/22にビッグサイトで開催されます! まだまだ番までは時間はありますが、エントリではどどーーーーーんとその辺りを先取りして 皆様に紹介したいと思います! もしこれを見て「スポンサーに興味あるんだけど、この会場だったら○○とかできる?」というような興味が湧いた方は是非こちらのフォームからお問い合わせください!さて、というわけで会場です。ビッグサイト!ビッグサイト、名前からして大きそうですよね!実際大きいです!ビッグです!実は僕は今回見学しにいくまでビッグサイトは行った事がありませんでした。ビッグサイトすごいですね! 今回お借りする会場は「会議棟」です。有名なコミケとかが行われる会場は「展示棟」のほうです。会議棟は実はこの逆三角形の建物の中にあります。 入り口から入って左手に上に昇エスカレーターがあります。これで一気

    YAPC::Asia Tokyo 2015 の会場の紹介 : D-7 <altijd in beweging>
    mattn
    mattn 2014/12/02
    でか
  • godepやめました : D-7 <altijd in beweging>

    godepというツールをpecoやmigemogrepに便利に使わせてもらってたんだけど、このたびカスタムなgoスクリプト(goだとスクリプトじゃないと言われそうだけど、スクリプトとしか言い様が無い)を書いてgodepを卒業しました。 なんでこうしたかというとgodepの-copy=falseというオプションが使えなくなり、基的に依存関係のライブラリもこちらのレポジトリに入れないといけない形になったから。いや、入れても良いけどさ… う〜ん。毎日ビルドして出荷してるわけじゃないし、それなのにレポジトリをcloneした時に依存関係も全部落とすのはなああああ、ということで、もう全部自前で書きました。 別にシェルスクリプトでもよかったんだけど、goプロジェクトだし…ってことで全部goで書いて、wercker.ymlからこんな感じで呼び出すようにした。 それだけ。あとで「なんであんなことしてるの

    godepやめました : D-7 <altijd in beweging>
    mattn
    mattn 2014/09/12
  • pecoがぼちぼち成功した3つの理由 : D-7 <altijd in beweging>

    さきほどちょろっとアップデートが入ったpeco v0.2.2をリリースしました(Changeログ)。 で、ついでに昨日mattnさんがpecoについてツイートしてたので流れてしまう前にまとめておく mattn@mattn_jppeco、便利だしとても完成度高いんだけど、客観的に見るとあのプロジェクトがあれだけ流行ったのには理由があると思ってる。 2014/07/22 23:17:31 mattn@mattn_jpまず、Windows をネイティブサポートしたこと。少数ユーザの様で意外と多い。Windows だけ一部機能が欠けてるという事もない。 2014/07/22 23:22:00mattn@mattn_jp次に人気が出る中、手を止めなかったこと。停滞するとユーザも飽きる。 2014/07/22 23:25:44mattn@mattn_jpそして丁寧な README とアニメーションgi

    pecoがぼちぼち成功した3つの理由 : D-7 <altijd in beweging>
    mattn
    mattn 2014/07/23
  • 気がついたらpecoを書き始めて一月たっていた : D-7 <altijd in beweging>

    pecoのv0.1.0をリリースしてから今日で丸一ヶ月がすぎました。今日という日にちょうどGitHubでのスターも1000を超え、大変うれしい次第です。ちなみに昨日の夜840くらいだったのにそれから200弱ものスターがついた。これぞまさにTJのロックスター効果: TJ Holowaychuk@tjholowaychukreally cool interactive grep-ish tool https://t.co/jH5gWNCcIz 2014/07/12 03:42:22 「percolをインストールするのにpythonの事調べるのだるい」というだけのところからmattn氏の悪魔のささやきを真に受けて始まったこのプロジェクトですが、まぁ何がよかったのかこの程度の注目を集められるレベルに到達できて大変うれしいです。自分もこのコードを書いててようやくgo-stf-serverでメタメタだ

    気がついたらpecoを書き始めて一月たっていた : D-7 <altijd in beweging>
    mattn
    mattn 2014/07/13
    おめでとうございます。
  • つながり駆動開発 or 「pecoのキー処理周りは全部パクりました」 : D-7 <altijd in beweging>

    先週 @k0kubunさんがpecoで複数キーの入力シーケンスに対してアクションを起こす(例:C-x, C-cで終了する、みたいなの)PRをしてくれたのでそれをマージした。pecoには楽しいお兄さんが色々コントリビュートしてくれているので、そのPRを見た瞬間にこんなコメントが mattn@mattn_jpこりゃあ、コナミコマンド作るしかねぇべ / “Accept key sequence by k0kubun Pull Request #124 peco/peco GitHub” http://t.co/YwjJo9Ao1A 2014/07/03 01:06:44 おお、いいですね、ということで実装してみようとしたところ… うっ… 設定ファイルから読み込んで動的に作る無名関数からレキシカルな変数へのスイッチングしてて、これをプログラム内部から他に作る方法がねぇ!w 設定ファイルからはできる

    つながり駆動開発 or 「pecoのキー処理周りは全部パクりました」 : D-7 <altijd in beweging>
    mattn
    mattn 2014/07/07
  • pecoのバイナリ配布の話 or 「werckerとmotemenさんとmattnさん最高ッス!」という話。 : D-7 <altijd in beweging>

    pecoでは何個か前のリリースからバイナリビルドをリリースの成果物として登録するようにしている。これのおかげでpecoはそもそもの存在理由である「2014年だしこういうツールはバイナリ一個置いておくだけで動いてほしい!」というをより簡単に実現できている。 で、その実装方法。基motemenさんのスクリプトにmattnさんがツッコミを入れたりしてるのを見ながら「よし!パクろう!」と思ってパクったんだけど、一つだけpecoでは意図的に変えたところがあって、それはboxの選定のところ。 motemenさんのgolang-goxc box自体に基何も問題がないのだけど、pecoで色々やっているうちにgo1.3がリリースされたのにこのボックスを使っているといつまでもgo1.2.1だった(今はもう違うかもしれない)。まぁ当たり前ですよね。そこは他人の褌で相撲を取ろうとしている俺が文句言うところでは

    pecoのバイナリ配布の話 or 「werckerとmotemenさんとmattnさん最高ッス!」という話。 : D-7 <altijd in beweging>
    mattn
    mattn 2014/07/07
  • Githubでpecoのアカウントを融通してもらった件 : D-7 <altijd in beweging>

    tl;dr; githubで長い事使われてないアカウントはリリースしてもらえることがあるpecoのURLが変わりましたpecoの有効な使い方があったら、ぜひWikiでシェアしてくださいpecoが何か自分の予想を超えて使われ始めているので責任を逃れるために今後の事を考えてGithub Organizationにしようかなーと思って調べてたらpecoってユーザーがすでに存在してたのでがっかりしたのが昨日の朝。 Daisuke Maki@lestrratugh. taken. no activity either. disappointment haunts all my dreams.https://t.co/04HBzVjpzw #golang #peco 2014/06/19 08:56:45 でもこのアカウント全く使われてなかったんだよね。コミットもなければstarもwatchもない。そ

    Githubでpecoのアカウントを融通してもらった件 : D-7 <altijd in beweging>
    mattn
    mattn 2014/06/20
  • I'm more Gopher than you :) : D-7 <altijd in beweging>

    これは笑ってしまった。The Open Source Report Cardという、githubのデータを持ってきて色々統計情報を見せてくれるサイトがあるんだけど、ここで今日とうとう「Exceptional Regexer」とか、そういうPerl Monger系の名称から「High Caliber Gopher」みたいな名称になって、さらによくみると「one of the 5% most active Go users」(6/18現在)だったのでツイートしたら、 Daisuke Maki@lestrratHey, I'm apparently &vquot;one of the 5% most active Go users&vquot; according to http://t.co/vZVvOSKNaZ lol #golang 2014/06/18 18:47:37 Goプロジェクト

    I'm more Gopher than you :) : D-7 <altijd in beweging>
    mattn
    mattn 2014/06/19
  • peco(Simplistic interactive filtering tool)を作った話 : D-7 <altijd in beweging>

    (pecoそのものについてはここで読むよりREADMEを見た方が早いです) 今月の初めくらいにpercolという便利なものがあるという話を聞き、「ほう、使おうかな」と思ったら普段あまり使い慣れていないpython製ツールでまるでcpanmを使うのがいやなPerlに慣れていない人のような反応で「まぁ必須アイテムじゃないし…」と思って諦めかけたところ lestratt さんはやく! — mattn (@mattn_jp) June 6, 2014 とか言われ「そこまでいいツールなのかなー」と思ったけど、使ったことないし、まずはツールがどういうものなのかをわかるためにGoで実装する事にした(はい、当にこういう順番です)。 pythonが駄目でなんでGoが良いかと言えば単純にバイナリ一個で済むから。それだけ。多分オリジナルのpercolはずっと歴史を積んでいるだろうし、色々がんばっているのだろう

    peco(Simplistic interactive filtering tool)を作った話 : D-7 <altijd in beweging>
    mattn
    mattn 2014/06/18
  • Goroutine Synchronization : D-7 <altijd in beweging>

    (以下はgo 1.2.x時点での話です。将来的に仕様がかわるかどうかはわかりません) これを読んでいて、こういうの気にしてない人多いんだろうなーと思って、書いてみます。元のポストはdeferの挙動について語っているように見受けられるけれども、これは要は複数スレッドで実行されるコードについて、プログラム終了時に同期とか取りたくない、という話だと思ったので、このポストのdeferを正しく動かすには…というところからどういう形でgoroutine同士で同期を取る方法があるのか、一例を書き出していきます。 TL;DR; goでいくらgoroutineが気軽にかけるからと言って、複数スレッドで処理が行われているので同期はキチンとやらないとダメですよ。 deferの基 goではLLのノリでコードを書けるのが売りの一つですが、メモリ管理はしてくれるものの、様々なリソース解放も全て自動というわけではあり

    Goroutine Synchronization : D-7 <altijd in beweging>
    mattn
    mattn 2014/05/28
  • 超楽しい!Kinetic Sand 所感 : D-7 <altijd in beweging>

    動画を見て感動して衝動買いしたKinetic Sandが届いた! Kinetic Sandとは98%砂なんだけど、砂のようにあちこちに散らばったり汚れたりしない「室内遊び用の砂」です。よくわかんないよね。詳しくは前の記事にも書いたけど動画を見て! 届いたタイミングではまだ子供が寝ていたので起きるのを待っていようかと 思ったが、俺が遊びたいから買ったわけで やはり大人がまず確認をするべきだなと思い 合わせて買ってあったタライに5kg分のKinetic Sandをぶちまけて色々やってみた。というわけで以下レポート: まず感触は 「湿った砂」。かといって、べたべた手に付くわけでもない(ただし、全くつかないわけでもない)。ぎゅっとしめればそれなりに固まるが、物の砂のように完全に結合する感じではない。例えばお団子を作って軽く握っている分には形を保っていられるが、強く握りすぎてしまうとさらに固く結合

    超楽しい!Kinetic Sand 所感 : D-7 <altijd in beweging>
    mattn
    mattn 2014/05/13
  • 私家版のgoでホットデプロイの仕組み、もしくは椅子もマサカリも投げられたくないときの気遣い : D-7 <altijd in beweging>

    なんかごく一部に補足されているので、念のため軽く説明しておきます。 masahiro nagano@kazeburo某所のlestrratさんのgolangなアプリはhot-deployが可能になってる。サーバはserver_starter経由で起動されていて、バイナリ消してHUPを送ると自動でビルドしなおしてプロセスを入れ替えてくれる。便利 2014/04/30 12:18:31 これ、ベストな方法だとは思っていないんだけど、最初にこれを書いた当時の考え方は以下の通り: これは自分の部署で初めて 番に設置するgoアプリである一次対応をする人は自分とは限らない細かいコード内容の修正はともかく、明らかなバグっぽいものの修正(例:SQL文の変更)などを自分以外の人間が施した後にサーバーを簡単に再コンパイル+再起動するする方法がないと椅子が降ってくる事が容易に予想される Apache::Log

    私家版のgoでホットデプロイの仕組み、もしくは椅子もマサカリも投げられたくないときの気遣い : D-7 <altijd in beweging>
    mattn
    mattn 2014/05/02
  • Rebuild.fm ep42の補足等 : D-7 <altijd in beweging>

    tl;dr: 別にPerl捨ててないです。Perl大好き。俺はLLはPerlでいい。でも別ドメインの事もやってもいいよね! Rebuild.fmに限らず、公の場でYAPC/Perl以外の話をする事があるとは正直思っていなかったが、このたびRebuild.fm ep 42に置いて1時間Goについてしゃべりまくってきた。1時間ぶっつけ番でしゃべりたい事はだいたいしゃべってきたのだけど、その後のフィードバック等もふまえてまとめておきたいと思ったのでこのエントリでまとめてみます Go事始め そもそもなんでここまでGoをガリガリ書き出したのか。 正直親父ギャグとvimで有名なあの人が「Goいいよ!」と言い出したときにはGoに対してはうさんくさい印象しかなくて特に注意すらしてなかったんだけど、そろそろ違う言語とドメインに向いてみるかーと思って探していた時に「あ、俺もうLL系の言語別にいらないな」とふ

    Rebuild.fm ep42の補足等 : D-7 <altijd in beweging>
    mattn
    mattn 2014/04/30
    リンク踏んだらスッポンポンのアイコン出てきた。