2017年4月2日のブックマーク (5件)

  • 中島敦 名人伝

    趙(ちょう)の邯鄲(かんたん)の都に住む紀昌(きしょう)という男が、天下第一の弓の名人になろうと志を立てた。己(おのれ)の師と頼(たの)むべき人物を物色するに、当今弓矢をとっては、名手・飛衛(ひえい)に及(およ)ぶ者があろうとは思われぬ。百歩を隔(へだ)てて柳葉(りゅうよう)を射るに百発百中するという達人だそうである。紀昌は遥々(はるばる)飛衛をたずねてその門に入った。 飛衛は新入の門人に、まず瞬(またた)きせざることを学べと命じた。紀昌は家に帰り、の機織台(はたおりだい)の下に潜(もぐ)り込(こ)んで、そこに仰向(あおむ)けにひっくり返った。眼(め)とすれすれに機躡(まねき)が忙しく上下往来するのをじっと瞬かずに見詰(みつ)めていようという工夫(くふう)である。理由を知らないは大いに驚(おどろ)いた。第一、妙(みょう)な姿勢を妙な角度から良人(おっと)に覗(のぞ)かれては困るという。

    dekokun
    dekokun 2017/04/02
    良い話
  • Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita

    はじめに 非同期プログラミングと呼んでいるのは、ノンブロッキングIOと select, poll, epoll, kqueue のようなIO多重化を利用したネットワークアプリケーションを書くことです。 node.js で websocket 使ったチャットを書くとかそういうのです。 「他の多くの言語」とは、 Python (asyncio), node.js, C# などを想定しています。 Erlang や GHC なんかは Go に近いかも知れません。 async / await がない言語では、「コールバック地獄」や「deferred地獄」のような問題もありますがこの記事では扱っていません。 async / await のメリットを解説した他の記事を参照してください。 あとこの記事は主にランタイムに関する部分を扱っているので、「それは言語じゃなくて処理系の問題だ!」等の頓珍漢な揚げ足取

    Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita
    dekokun
    dekokun 2017/04/02
  • Go言語のFunctional Option Pattern - Qiita

    オプション パッケージを作る際、柔軟性を持たせるためにオプションを持たせたい時がしばしばあります。 しかしオプションは知っての通り設定しないことが少なくありません。 単にコンストラクタに並べるようでは無用な複雑さをはらむことになります。 JavaなどではOptional Parameterなどのように、デフォルト値が指定できる機能があります。 機能の厳選されたgo言語ではそのような機能はありませんが、 "Self Referential Functions Design"というテクニックがあり、 それについての記事がRob Pike氏の記事を筆頭にいくつか説明されています。 オプションと相性が非常に良いため、合わせて"Functional Option Pattern"とも呼ばれています。 Dave Cheney氏の記事を参考におおまかに説明したいと思います。 様々な解決策 あるServe

    Go言語のFunctional Option Pattern - Qiita
    dekokun
    dekokun 2017/04/02
  • Goのarrayとsliceを理解するときがきた - Qiita

    対象 sliceしか使わないのでarrayのことは知らなくてもいいと思っているGopher 内容 arrayを理解するとsliceをもっと理解できる 参考 以下のページを主に参考にしたのでちゃんと知りたい場合はこっちを読んだほうがいい The Go Blog - Go Slices: usage and internals The Go Blog - Arrays, slices (and strings): The mechanics of 'append' きっかけ サイズを指定して宣言したsliceが引数の型チェックに引っかかり悩む、というおそらくは初歩的なつまづきをしてしまった。 func main() { s := [3]int{} takeSlice(s) // Error: cannot use s(type [3]int) as type []int in argument

    Goのarrayとsliceを理解するときがきた - Qiita
    dekokun
    dekokun 2017/04/02
  • なぜ Erlang/OTP を使い続けるのか

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    なぜ Erlang/OTP を使い続けるのか
    dekokun
    dekokun 2017/04/02