タグ

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

  • Big Sky :: Go に go:embed が入った。

    Go 言語はシングルバイナリをウリにしたプログラミング言語です。バイナリファイルを1つポンと scp で転送すれば動くのでとても便利です。シングルバイナリとなると当然、画像や HTML といったアセットをバイナリに埋め込みたくなります。 Go 言語ではこれまで go-assets や go-bindata、statik というツールを使う事でファイルのコンテンツをバイナリ化し、変数からアクセスする様にしてきました。 しかしそれらには色々な流儀や OS 間でのまばらな動作など、ユーザにとって納得のいかない物がありました。昨日、Go 言語ではオフィシャルとしてこのファイル埋め込みをサポートする様になりました。Go 1.16 から使える様になります。 cmd/go: add //go:embed support · golang/go@25d28ec · GitHub +3 −3 src/cmd

    Big Sky :: Go に go:embed が入った。
    kazuph1986
    kazuph1986 2020/10/30
    ほしかった。
  • Big Sky :: 書評「Go言語による並行処理」

    O'Reilly Japan, Inc. 様に献頂きました。ありがとうございます。 そして献頂く際にお声を掛けて頂いた、書の翻訳を担当された ymotongpoo さんにもお礼を申し上げます。ありがとうございます。 書の訳は非常に素晴らしく、とても原文が英文であったとは思えないほど綺麗で、読んでいく中で「原文でどの様に表現されているんだろう」といった引っかかりも無く、とてもスムーズに読み進められました。 Go 言語に関わって随分と長くなってきました。初めて Go を知ってからユーザがどんどん増える様を見る事が出来るのは正直に言って非常に嬉しいです。 ふと Go の魅力は何かと聞かれたら幾つか挙げる事が出来ますが、間違いなく選ぶのが「非同期処理の簡単さ」です。これまで多くの開発者が OS スレッドで実現してきた非同期処理を、Go 言語は少ないイディオムとインテリジェントなランタイムを

    Big Sky :: 書評「Go言語による並行処理」
    kazuph1986
    kazuph1986 2018/10/22
    会社で買う。
  • Big Sky :: ボタンを押したら golang の if err... を自動入力

    今日 Reddit で見付けた面白ネタ。 押したら golang の if err != nil { } を入力するボタン。便利やん。https://t.co/wfnOnSS48r pic.twitter.com/R2Ot9T3jt4 — mattn (@mattn_jp) September 13, 2018 簡単そうだなと思ったので作ってみた。 とは言っても家にボタンらしきデバイスが無いので、カメラの自動シャッターボタンで代用。ダイソーで300円くらいで売ってます。 Linux で User Input (入力キャラクタデバイス) は /dev/input/ 配下のデバイスファイルを介してやり取りされます。以前この uinput を簡単に扱えるデーモンを作ったのでそちらを使います。 GitHub - mattn/uinputd: uinput launcher uinputd uinp

    Big Sky :: ボタンを押したら golang の if err... を自動入力
    kazuph1986
    kazuph1986 2018/09/14
    足で踏む感じだとめっちゃ便利やん。
  • Big Sky :: golang で tensorflow のススメ

    « Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。 | Main | ボタンを押したら golang の if err... を自動入力 » tensorflow といえば Python と思っておられる方も多いのではないでしょうか。間違いではないのですが、これは初期に作られた Python 向けのバインディングに研究者達が多くいついた結果に過ぎないと思っています。実際 tensorflow は現在 C言語、C++PythonJavaGo から利用する事ができ、最近では JavaScript にも移植されています。筆者自身も Go で tensorflow を使ったシステムを構築し、運用保守しています。問題も発生せず機嫌良く動いています。学習の利用部分は GPU のパフォーマンスに依存しますが、それ以外の部分については各言語の実装に依存し

    Big Sky :: golang で tensorflow のススメ
    kazuph1986
    kazuph1986 2018/08/25
    すごい。
  • 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 で端末機能が動くようになった。
    kazuph1986
    kazuph1986 2017/07/24
    すばら
  • Big Sky :: Matz の「言語のしくみ」を読んだ。

    Twitter で「言語のしくみ」読みたいなって呟いたら Matz 人から「献しましょうか」とメンション頂いて即答でお願いしました。ありがとうございます。 ひさびさ紙のを通勤電車の中で立ちながら読んだので手がだるくなりました。なんだか懐かしい感じがしました。 さてこのですが、一言で言うとこんなです。 Ruby のパパこと Matz が雑誌の連載に追われながら試行錯誤して作ったプログラミング言語「Streem」を解説する 聞こえが悪かったらすみません。言いたいのはこの「試行錯誤」がとても良いエッセンスになっている点なのです。実際にはその連載記事をまとめた物に対して、この当時はこの様に考えていたが後になってみると実は良く無かったといった振り返り「タイムマシンコラム」で構成されています。 この連載が1つのに纏められた事でプログラミング言語設計者の葛藤が非常に良く表されているな、そう

    Big Sky :: Matz の「言語のしくみ」を読んだ。
  • Big Sky :: builderscon 2016 で登壇してきました。

    « バイナリ一つで zip, tar.gz, tar.bz2, tar.xz が開けるコマンド「archiver」(と go1.8 への対応方法) | Main | gops が SIGINT をキャッチしてしまう問題が修正された。 » 冒頭でもお話させて頂いた通り、僕は YAPC に何回も誘われながらも結局参加できなかったというのが気持ちの奥にずっとあり、一度くらいは出ておくべきだったのかなと考えていたので今回、牧さんからお誘いを貰った時はお詫びをするなら今しかないと思っていました。はじめは15分とか30分程度のトークかなと思っていたら気付けば builderscon 2016 第1回目のド頭で1時間枠を割り当たっていました。 内容は「OSS は Windows で動いてこそ楽しい」というお題で Windows アプリの開発のつらさ、闇、そしてGo言語の誕生と希望について熱く語らせて頂き

    Big Sky :: builderscon 2016 で登壇してきました。
    kazuph1986
    kazuph1986 2016/12/03
    とても貴重でした。ありがとうざいました!
  • Big Sky :: golang で slim テンプレートエンジン書いてる。

    « Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。 | Main | GolangWindows の DLL を作る方法 » 「みんなのGo言語」が日発売となりました。 現在、プログラミング言語のカテゴリで1位の様です。めでたい。 僕も執筆に参加させて頂いたので興味ある方はぜひ読んで欲しいです。 さて最近の僕がGo言語で何を書いていたかというと GitHub - mattn/go-slim: Slim Template Engine for golang Rslim template engine for golang https://github.com/mattn/go-slim slim template の golang 版です。忙しくてまだ完成はしていないんですが、ちょっとした物であれば使えるレベルまで出来ていると思って

    Big Sky :: golang で slim テンプレートエンジン書いてる。
  • Big Sky :: Web Component を簡単に作れる JavaScript ライブラリ「X-Tag」

    slack で x-tag を教えて貰ったのでちょっと遊んでみた。 X-Tag ★ Web Components Docs Table of Contents Getting Started Registration - Where it All Begins The most important method ... http://x-tag.github.io/ X-Tag は Web Component を簡単きれいに作れるライブラリで、Microsoft からのサポートを受けている事をウリにしているらしいです。動作に必要なのはカスタムタグがサポートされているブラウザというだけで、polyfills も使う事が出来ます。 簡単なチュートリアルが Docs に書かれているのでパッと見ただけでだいたい API が予想できます。自前のメソッドや属性、イベントを定義する事が出来るのでコン

    Big Sky :: Web Component を簡単に作れる JavaScript ライブラリ「X-Tag」
    kazuph1986
    kazuph1986 2016/06/08
    つまり良い。
  • 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 で生きるべき。
    kazuph1986
    kazuph1986 2016/04/11
    英語で書けばHacker Newsに載りそうな記事だ。
  • Big Sky :: コマンドラインから JSON が簡単に作れるツール jo

    « golang で画像アップロードが簡単に出来る go-imageupload を使ってみた。 | Main | SQLite3でカジュアルにズンドコキヨシ » コマンドラインから JSON を扱うツールとしては jq が一般的ですが、例えば ls を実行した結果を JSON の Array にしたいであったり、コマンドライン引数から簡単に Object を作りたいといった場合には一旦考え込まないといけないくらい使い方が難しかったりします。そんな中でひょいと現れたのが jo です。 GitHub - jpmens/jo: JSON output from a shell JSON output from a shell https://github.com/jpmens/jo 作者である jpmens さんがなぜ jo を作るに至ったかをブログに書いています。 Jan-Piet Mens

    Big Sky :: コマンドラインから JSON が簡単に作れるツール jo
    kazuph1986
    kazuph1986 2016/03/09
    なにこれすごく良い。
  • Big Sky :: Perl6 で俺俺 Gyazo 作った。

    動作に必要なのは HTTP::Server::Tiny と Digest::MD5。HTTP::Server::Tiny は安心の tokuhirom プロダクツ。 tokuhirom/p6-HTTP-Server-Tiny - GitHub https://github.com/tokuhirom/p6-HTTP-Server-Tiny そしてコード mattn/p6-gyazo - GitHub You signed in with another tab or window. Reload to refresh your session. You signed out in another ... https://github.com/mattn/p6-gyazo use v6; use Crust::Request; use Digest::MD5; my $page = q:he

    Big Sky :: Perl6 で俺俺 Gyazo 作った。
  • 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 だけ違う件で、炎上しておいて下さいと言われたので...
    kazuph1986
    kazuph1986 2015/09/25
    lengthとscalar、、、これを見て自分ももうPerlは書けないなと思った #飛び火
  • Big Sky :: Vim の CtrlP matcher、cpsm がヤバイくらいに速すぎる

    Vim で CtrlP を使っている人もそこそこいるかと思いますが、ファイル検索が終わり文字をタイプした時に行を絞り込む部分(マッチャーと言います)がデフォルトの状態だと Vim script を使って処理される為、ファイル数が多くなるとモッサリして来ます。これを解消する為に幾らかの人が頑張っています。 FelikZ/ctrlp-py-matcher - GitHub Fast vim CtrlP matcher based on python https://github.com/FelikZ/ctrlp-py-matcher JazzCore/ctrlp-cmatcher - GitHub CtrlP C matching extension https://github.com/JazzCore/ctrlp-cmatcher junegunn/fzf - GitHub A comma

    Big Sky :: Vim の CtrlP matcher、cpsm がヤバイくらいに速すぎる
    kazuph1986
    kazuph1986 2015/06/06
    打ち込んだ文字がレコメンドされているファイルパスのどの部分に該当しているのかわからなくて、結局目grep挟むので全体的にはそんなに速くファイルを開けない。 ※個人の感想です
  • Big Sky :: Software Design の Vim 特集に寄稿させて頂きました。

    技術評論社さんの「Software Design 2015年1月号」の Vim 特集に寄稿させて頂きました。 第1章:犬でもわかる!? Vim導入&カスタマイズの超基……林田 龍一 コラム1:「とっつきにくい変態エディタ」だったVimが「私の素敵な相棒」に変わるまで……伊藤 淳一 第2章:IDE並みの機能を軽快な動作で! 実用Tips&対策[プログラマ編]……mattn 第3章:運用作業であわてないために 実用Tips&対策[インフラエンジニア編]……佐野 裕 第4章:vim-markdownという選択 実用Tips&対策[文書作成編]……mattn コラム2:Vimの真のチカラを引き出すパラダイムシフト Vimは編集作業をプログラムにする……MURAOKA Taro (a.k.a. KoRoN) Vimmer なら目次だけでヨダレが出そうな内容です。さらに今回は犬さんこと Linda_

    Big Sky :: Software Design の Vim 特集に寄稿させて頂きました。
    kazuph1986
    kazuph1986 2014/12/18
    「Vimの真のチカラを引き出すパラダイムシフト」あれだ、エヴァの「裏コード ザ・ビースト!」みたいなやつだきっと。
  • Big Sky :: golang で最近お気に入りの WAF「Goji」

    Web アプリケーションを書くときは今までずっと 小さい物は web.go 大きい物は net/http というスタンスを何故か貫いて来たんだけど、最近ようやく web.go をやめて goji を使う様になった。 Goji A web microframework for Golang https://goji.io/ 理由としては Sinatra ライクでありながら高度な正規表現マッチも使えるルータ それでいて net/http コンパチ 簡単に実装出来るミドルウェアスタック グレースフルシャットダウン そして何と言っても速い ミドルウェアも一般的な Web アプリケーションを作るには十分な物が既に揃ってます。 それでもやっぱり大きめな物は net/http で書くんだけど、小規模から中規模な物を一気にゴリゴリっと書く場合には goji は便利です。もちろん Windows でも動きま

    Big Sky :: golang で最近お気に入りの WAF「Goji」
  • Big Sky :: Vim で markdown 内に書かれているプログラミング言語をハイライト

    vim に同梱されている markdown シンタックスは syn include に対応しているので指定で色が付けられる。 github 等では README.md やコメント欄に ```javascript function hasegawa_san_hidoi() { alert('ひどい'); } ``` この様な記述をする事で javascript の色付けが適用されますが、vim でも可能です。 ただしデフォルトでは無効にされているので以下の様に設定を行います。 let g:markdown_fenced_languages = [ \  'coffee', \  'css', \  'erb=eruby', \  'javascript', \  'js=javascript', \  'json=javascript', \  'ruby', \  'sass', \  '

    Big Sky :: Vim で markdown 内に書かれているプログラミング言語をハイライト
    kazuph1986
    kazuph1986 2014/08/02
    知らなかった。超便利!
  • Big Sky :: Vim scriptテクニックバイブル ~Vim使いの魔法の杖

    こんにちわ。Vim scriptサポーターズの mattn です。 ちょうど3年程前、Vimテクニックバイブルという書籍を執筆させて頂きました。 Big Sky :: Vimテクニックバイブル ~作業効率をカイゼンする150の技 http://mattn.kaoriya.net/software/vim/20110810203558.htm おかげ様で、色んな方から反響を頂き執筆して良かったと思いました。初めて自分が書いた書籍が販売されるという高揚感に包まれる中、書籍の販売からたった数週間後、何を思ったか僕と KoRoN さんは github 上に vim-users-jp というオープングループを作る事になりました。 Big Sky :: github上にvim-users-jpというorganizationを作った。 http://mattn.kaoriya.net/software/

    Big Sky :: Vim scriptテクニックバイブル ~Vim使いの魔法の杖
  • Big Sky :: golang の sync パッケージの使い方

    golang と言えば非同期に特化した言語ですが、慣れない内は簡単な非同期しか使えません。しかし sync パッケージを知る事でもっとカジュアルに、かつ確実な非同期処理を行う事が出来る様になります。 今日はそんな sync パッケージについて説明してみたいと思います。 sync.Mutex ご存じ sync.Mutex です。皆さんが一番使う排他制御だと思います。 package main import ( "fmt" "runtime" "sync" "time" ) func parallel(wg *sync.WaitGroup) { fmt.Println("博") time.Sleep(100 * time.Millisecond) fmt.Println("多") time.Sleep(100 * time.Millisecond) fmt.Println("の") time.

    Big Sky :: golang の sync パッケージの使い方
  • Big Sky :: ファイル名の一括置換なら massren がめちゃめちゃ便利

    大量にあるファイルのファイル名を一括で変更する場合、どうしても GUI での操作であったりマッチパターンを書くのが面倒だったりしましたが、massren を使えば誰でも簡単にファイル名の一括置換が出来る様になります。 laurent22/massren - GitHub massren - Easily rename multiple files using your text editor https://github.com/laurent22/massren お気に入りのテキストエディタを使って、好きな様にファイル名を変更出来ます。サポートしているOSは Windows, Linux, OSX です。中身は golang で書かれています。 それぞれバイナリが用意されているので自分でビルドする必要はありません。LinuxOSX の人はリンク先にある手順を、Windows の人は

    Big Sky :: ファイル名の一括置換なら massren がめちゃめちゃ便利
    kazuph1986
    kazuph1986 2014/04/15
    “massren --config editor vim” vim rename