ブックマーク / mattn.kaoriya.net (10)

  • Big Sky :: Vim で端末機能が動くようになった。

    ひさびさ Vim のエントリを書く気がします。 今から4年ほど前、Vim にスレッドセーフなメッセージキューが欲しいというメールが vim-dev 届きます。 [PATCH] Proof of concept: thread-safe message queue https://groups.google.com/forum/#!searchin/vim_dev/tarruda%7Csort:relevance/vim_dev/65jjGqS1_VQ/fFiFrrIBwNAJ その時はまだ、vim-dev の中にも「Vim はエディタだし必要ない」といった空気があったと思います。 [PATCH] Non-blocking job control for vimscript https://groups.google.com/forum/#!searchin/vim_dev/tarruda%

    Big Sky :: Vim で端末機能が動くようになった。
    tanakh
    tanakh 2017/07/24
    Vimって今までなかったのか(´・_・`)
  • Big Sky :: golang の sort インタフェース難しい問題が解決した

    golang では配列をソートしたい場合に癖があり、Int や Float64、String といった固定の型であれば sort パッケージが提供する関数でソートが可能でしたが、独自の型や Int64 等といった sort パッケージが用意していない型の配列をソートするには Sorter というインタフェースを備えた型で扱うしかありませんでした。 package main import ( "fmt" "sort" ) type Food struct { Name  string Price int } type Foods []Food func (f Foods) Len() int { return len(f) } func (f Foods) Less(i, j int) bool { return f[i].Price < f[j].Price } func (f Foods

    Big Sky :: golang の sort インタフェース難しい問題が解決した
    tanakh
    tanakh 2016/10/05
    元がダサすぎない?
  • Big Sky :: golang の channel を使ったテクニックあれこれ

    golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればどう実装すればいいか分からないなんて事もあったと思います。しかし golanggoroutine/channel は、やっている内容の割にとても容易にスレッド間通信やキューイング、処理の受け待ち等を実装できる様になっています。尚、channel をどの様に適用したら良いかについては以下を参照下さい。 Big Sky :: Golang の channel の使い所 golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその grout... http://mat

    Big Sky :: golang の channel を使ったテクニックあれこれ
    tanakh
    tanakh 2016/07/06
  • Big Sky :: Windows ユーザは cmd.exe で生きるべき。

    [D] Windowsはターミナルがダメだから使えないってのは過去の話? 基的にはいい感じに見えますが、いくつか問題は発覚してます。 http://blog.drikin.com/2015/01/windows-2.html 僕は Cygwin よりも msys2 が好きです 理由は最後の方に書きます。 cygwin は windows 上に完全な POSIX を提供するのが目的であって、msys2 は native な windows アプリケーションをビルドするのが目的なのでゴールが違うのよね。そして僕は全て cygwin で染められるのが好きじゃ無い。それだけの話です。 — mattn (@mattn_jp) April 10, 2016 もちろん msys2 を POSIX 環境としても使いますが、一番の目的は cmd.exe から Windows ネイティブなアプリケーションを

    Big Sky :: Windows ユーザは cmd.exe で生きるべき。
    tanakh
    tanakh 2016/04/11
    cmd.exe …?(´・_・`)
  • Big Sky :: RubyからGoの関数をつかわなくても再帰をやめる → はやい

    RubyからGoの関数をつかう → はやい - Qiita 約20倍はやい!!!!!!すごい!!!!!!!!!!!!!! Go単体での実行に毛が生えた程度になりました!!!!!!!!!!!!!!!!!! もう「Rubyより、ずっとはやい」なんて言わせないぞ!!!!!!!! http://qiita.com/grj_achm/items/679b3f3af2cf377f0f02 def fib(n) return n if n <= 1 fib(n - 1) + fib(n - 2) end puts fib(40) 巷で良く見る fib のコードですね。 $ time ruby fib1.rb 102334155 real    12.692 system  0.031 user    12.651 これを再帰を使わない様に修正すると以下の様になります。 def fib(n) f0, f1

    Big Sky :: RubyからGoの関数をつかわなくても再帰をやめる → はやい
    tanakh
    tanakh 2015/11/06
    レギュレーション違反なんだよなあ・・・
  • Big Sky :: Perl6 の無限リストとダイナミックバインディングが最強すぎる

    Perl には x 演算子があり、x 3 といった具合に繰り返し回数を付ける事で連続した文字列を簡単に作り出すことが出来る。 say 1 x 3; # 111 say "foo" x 3; # foofoofoo これは Perl5 でもお馴染み。しかし Perl6 の Range は凄い。 say 1 xx 3; # (1 1 1) say "foo" xx 3; # (foo foo foo) 連続した配列要素が作り出せる。それどころか無限リストが作り出せる。 say 1 xx *; # (...) say "foo" xx *; # (...) もちろん無限数列も作れる。 (1 .. *)[^10].perl.say; # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) fibonacci 数列もこんなに簡単。 (1, 1, *+* ...^ *)[^100].per

    Big Sky :: Perl6 の無限リストとダイナミックバインディングが最強すぎる
    tanakh
    tanakh 2015/10/26
    フィボナッチのとこで使ってる記法何なの…(´・_・`)
  • Big Sky :: split の動きが ruby だけ違う件で、炎上しておいて下さいと言われたので...

    « 1日1個 golang のクイズを出す twitter アカウント @DailyGolangQuiz の質問に答えてみた。 | Main | Perl6 で俺俺 Gyazo 作った。 » 追記 perl もでした。。。 随分前の話だけど こういう仕様だとは分かったが、len(strings.Split("", ","))が1になるのが納得いかん。 #golang — Sheile (@Sheile) August 19, 2015 僕にはドキュメントでは「分割できなかったときは、要素が文字列1つだけの配列を返します。」って書いてあるのに "a".split(/,/).size が1になり、 "".split(/,/).size が0になるrubyの方が分からない。 — mattn (@mattn_jp) August 19, 2015 javascript "".split(",").

    Big Sky :: split の動きが ruby だけ違う件で、炎上しておいて下さいと言われたので...
    tanakh
    tanakh 2015/09/24
    セパレータが最初や最後、あるいは連続してるってのがコーナーケースになりそうだけど調べるのめんどい
  • Big Sky :: 江添さんに簡単に質問出来るコマンドを golang で書いた。

    C++er ならみんな見てるいう噂の江添さんの ask.fm。見ているだけも面白いですが、質問もしたくなりますよね。 Ryou Ezoe | ask.fm/EzoeRyou http://ask.fm/EzoeRyou 質問したいだけなのにいちいちブラウザ起動するのもダルいので、コマンドラインから質問を投げられるコマンド「ezoe」を作りました。 mattn/ezoe · GitHub https://github.com/mattn/ezoe インストールは簡単で golang が入ってる状態なら $ go get github.com/mattn/ezoe これだけで ok。使い方も簡単で $ ezoe とすると質問の一覧が色付きで表示される。 しかも「質問ではない」と「自由」がハイライトされるので江添フリークも安心。そして引数を付けて起動すると ask.fm に質問を投げられます。

    Big Sky :: 江添さんに簡単に質問出来るコマンドを golang で書いた。
    tanakh
    tanakh 2015/05/20
    すごい(´・_・`)
  • Big Sky :: MSVC の怖い話

    夏だし、怖い話しようぜ! #include <cstdio> #include <math.h> class C { public: C() {} C(double) { printf("hello world\n"); } }; int main(int argc, char** argv) { C(NAN); return 0; } 僕は今日... こんなコードをコンパイルしたんだ...。gcc でコンパイルして実行したんだ...。 hello world 期待通りだった。 僕は安心し、これを今度は MSVC でビルドしたんだ...。 実行すると... 何も出ない... 僕は怖くなった。 何なんだ!何なんだ!NaN なんだーーー! 僕の C++ 人生はなんだったのか...。僕は病に侵されているに違いない...。 怖いながらもデバッガで追ったんだ... そしてステップインした... えっ

    Big Sky :: MSVC の怖い話
    tanakh
    tanakh 2014/07/01
    ウワァァァ
  • Big Sky :: Vim script は人々の生活を豊かにしなければならないッ!

    この記事はVim Advent Calendar 2013 : ATND 7日目の記事になります。 2013年もあと少しです。今年も Vim に関する色んな話題が登場しました。 そして数多くの Vim plugin が今年も登場しました。 ステータスバーをスタイリッシュにするプラグイン Markdownをプレビューするプラグイン 正規表現をプレビューするプラグイン ブラウザと通信するプラグイン 補完プラグイン 貴様!?まさか! そのまさかだ!フハハハハハハ... どれも凄い物ばかりでした。そして Vim 界においては日人の活動が特に素晴らしかったと思っています。 k_takata さんの大活躍で多くのパッチが vim-jp より提出され取り込まれました。 何名かの方には Vim 7.4 のリリース後も動作検証に協力頂きましたし、Vim advent calendar 2012 は結局1年

    Big Sky :: Vim script は人々の生活を豊かにしなければならないッ!
    tanakh
    tanakh 2013/12/07
    ついにエクセルが開けるように・・・
  • 1