タグ

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

  • 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 が入った。
    naoty_k
    naoty_k 2020/10/30
  • Big Sky :: gocode やめます(そして Language Server へ)

    はじめに まず始めに言っておかなければなりません。 gocode 今まで当にありがとう この記事は、Go 言語歴10年になる僕がこれまで愛用してきた Go 言語のコード補完ソフトウェア gocode の歴史と功績、そして今、gocode 自らがその役割を終えようとしている姿をぜひ皆さんに知って頂きたいという思いから Go Advent Calendar 2018 の記事として起こしました。この記事では gocode が歩んできた歴史と苦悩を少しでも皆さんに分かる様に解説させて頂きつつ、そして次にやってくる Go 言語のコード補完の未来についてご紹介したいと思います。Vim について多めに書かれていますが、Visual Studio Code での Go 開発にも影響する話です。 gocode とは gocode は nsf 氏が開発した Go 言語のコード補完サーバです。 GitHub

    Big Sky :: gocode やめます(そして Language Server へ)
    naoty_k
    naoty_k 2018/12/17
  • Big Sky :: golang の html/template でレイアウトを扱う方法

    golanghtml/template について書かれたブログ等を色々見ていると、みんなレイアウトとコンテンツの分離に苦労している感があったのでどうやるか書いておきます。 t.ExecuteTemplate(w, "content", data) Gohtml/template はテンプレートの名称を指定して ExecuteTemplate を実行します。しかし html/template には、その content を囲う layout テンプレートを指定する方法がありません。特に以下の様に ParseGlob を使った場合、各 html で同じ content という名前で define する事は出来ません。 template.ParseGlob("public/views/*.html") やりたいのは layout というテンプレートの中から content という名称

    Big Sky :: golang の html/template でレイアウトを扱う方法
    naoty_k
    naoty_k 2018/07/27
  • Big Sky :: Re: Goでコマンドライン引数と環境変数の両方からflagを設定したい

    Goでコマンドライン引数と環境変数の両方からflagを設定したい - Qiita Goで実装したプログラムでオプションをコマンドライン引数から取るには標準の `flag` パッケージを使いますが、値を環境変数からも読みたいことがあります。(特に Docker で動かす場合) htt... http://qiita.com/sfujiwara/items/f177d85e9c10f4c34fb6 実は結構簡単に出来ます。github.com/namsral/flag に依存したくない場合や github.com/namsral/flag が実は flag 互換で無かった、なんて問題が見付かった場合に使えるハックです。 オリジナルのコード package main import ( "flag" "fmt" ) func main() { var age int flag.IntVar(&ag

    Big Sky :: Re: Goでコマンドライン引数と環境変数の両方からflagを設定したい
    naoty_k
    naoty_k 2017/06/09
  • Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」

    « Re: Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる | Main | Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか » golang にはパッケージマネージャが無数にあります。 PackageManagementTools · golang/go Wiki · GitHub Home Articles Blogs Books BoundingResourceUse cgo ChromeOS CodeReview CodeReviewComments CodeTools C... https://github.com/golang/go/wiki/PackageManagementTools 僕もその一つの gom というのを開発している

    Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」
    naoty_k
    naoty_k 2017/01/25
  • 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
  • Big Sky :: golang でスライスの先頭に追加する append がなぜ遅いのか

    Go - ISUCON5予選でスコア34000を出す方法 - Qiita Goで下記のようなsliceの先頭にひたすらオブジェクトを追加する処理を書く際は、不必要に長いsliceにならないよう注意しましょう。負荷が非常に高い処理になります。 hoge := []int{} for _, comment := range comments { hoge = append([]int{comment.ID}, hoge...) } http://qiita.com/y_matsuwitter/items/771020ebb68c07053548 append は第一引数のスライスに第二引数以降の可変個アイテムを追加する関数です。なるべく呼ばれない実装が良いです。どうしても多いアイテムを扱う場合は出来れば以下の様に書くのが良いです。 参考: https://blog.golang.org/sli

    Big Sky :: golang でスライスの先頭に追加する append がなぜ遅いのか
    naoty_k
    naoty_k 2015/09/28
  • Big Sky :: Protocol Buffers を利用した RPC、gRPC を golang から試してみた。

    grpc/grpc · GitHub gRPC - An RPC library and framework https://github.com/grpc/grpc gRPCGoogle が開発しているRPC(リモートプロシージャコール)のライブラリとフレームワークで、通信層は HTTP/2 を介して行われます。 データ層については、固定されている訳ではなくあくまでデフォルトで Protocol Buffers が使われる様になっています。使用出来るプログラミング言語は現在、C++, Node.js, Python, Ruby, Objective-C, PHP, C# となっています。 実はこれら以外にも grpc-go という、なぜかこのリストに加えられていないオフィシャルリポジトリがあります。 grpc/grpc-go - GitHub gRPC-Go The Go impl

    Big Sky :: Protocol Buffers を利用した RPC、gRPC を golang から試してみた。
  • Big Sky :: Golang のオフィシャルが提供するインタフェースまとめ

    golang が提供するインタフェースの中で代表的な物の使い方をまとめてみる。 io.Reader type Reader interface { Read(p []byte) (n int, err error) } ご存じ io.Reader。このシグネチャの Read を実装しておけば golang のありとあらゆる入力機能に対して自分のコードを提供する事が出来る。 例えば永遠に「おっぱい」と言い続ける Reader だと以下の様な実装になる。 package main import ( "io" "os" ) var text = []rune("おっぱい") type OppaiReader struct { n int } func (r *OppaiReader) Read(p []byte) (int, error) { in := len(p) nw := 0 for i

    Big Sky :: Golang のオフィシャルが提供するインタフェースまとめ
    naoty_k
    naoty_k 2015/04/07
  • Big Sky :: clib の使い勝手にマジ感動した

    C言語でアプリケーションを書くのは他の言語と比べて少し気合が必要ですよね。例えば HTTPからデータを取得する 取得したデータを json パースする 結果の一部を色付きで表示する こんな場合、C言語プログラマは 「HTTP か、じゃぁcurlかな」 「JSON か、parson かな」 「色表示か...エスケープシーケンスでもいいけどWindowsがなー...」 といった事を考え、そこから curl や parson といった資材の調達を始める事になります。途中で新しい機能を追加したくなり、それを外部ライブラリに頼る場合だとその都度資材を調達する必要があり、思考を停止しなければなりません。 この辺は rubyperl、nodejs、golang 等の様に、ちょっとした手間だけで済ませたい物です。 またC言語の場合、ヘッダファイルはシステムの include フォルダに提供元が期待す

    Big Sky :: clib の使い勝手にマジ感動した
    naoty_k
    naoty_k 2014/06/28
  • Big Sky :: モテる Vim 使いに読み書き出来ないファイルなどなかったんだよ!

    Vim Advent Calendar 2012 の 4 日目の記事です。 「やった!コンプガチャで Vim 出た!」 「だって前の彼氏、Vim 使いじゃなかったんだもん」「マクドナルド店員「ご一緒に Vim など如何ですか?」」 こんな言葉が聞かれる様になって随分と経ちました(要出典)。 昨今、Vim はテキストエディタの枠を超え、アプリケーションプラットフォームへと変わりつつあります。 vital.vim 等を使う事で簡単にアプリケーションを作る事も出来る様になりました。手前味噌ではありますが webapi-vim の一部も vital.vim に取り込まれています。 このブログでも結構取り上げていますが webapi-vim とは一体何か。名前の通り、Web Application Programming Intreface を扱えるライブラリです。 webapi-vim とは we

    Big Sky :: モテる Vim 使いに読み書き出来ないファイルなどなかったんだよ!
    naoty_k
    naoty_k 2013/10/17
  • Big Sky :: THE GO TOOL

    先日、Go言語開発チームはリポジトリ内にあった殆どのMakefileを削除した。私(訳者)は混乱したし不安にもなった。しかしそれは私がこれまでの習慣と異なる場面に遭遇した事による物だと気付いた。その事を色濃く書かれたいる記事があったので紹介したい。Go言語を知らない人でも面白く読めると思います。 Are You Fuckign Coding Me!? - The go tool http://areyoufuckingcoding.me/2012/02/14/the-go-tool/ 訳を許諾してくれたnu7hatchに感謝したい。(Thanks to nu7hatch) THE GO TOOL 毎週リリースされる最新版に新しいgoコマンドが導入され話題になっていたので、ちょっとこれについて書くことにした。 私は初め、このgo toolを統一しようというアイデアを聞いた時、少し懐疑的にな

    Big Sky :: THE GO TOOL
    naoty_k
    naoty_k 2013/10/13
  • Big Sky :: 最近の zencoding.vim

    最近 zencoding.vim を大きく修正しました。とは言ってもこれまで単体テストを作ってきた事もあって、過去の動作を(なるべく)壊さずに大規模な修正が行えました。 これまでは一つのファイルに html, css, haml の処理が全て記述されていたのでとてもスパゲッティなコードになっていて、もう少し放っておくとカオスな状態になりかけていたので、ファイルを分割しインタフェースを揃える事にしました。 これにより、今後新しいフォーマットに対応する際にも、zencoding/lang にあるファイルの真似をして記述すれば実装出来る様になります。 haml に対応した 「えっ?前から対応してたんじゃないの?」と言われる方もいるかもしれませんが、これはあくまで expand abbreviation の haml フィルタとしてだけサポートしていました。 何が変わったかというと zen cod

    Big Sky :: 最近の zencoding.vim
    naoty_k
    naoty_k 2013/01/19
  • Big Sky :: コマンドラインからredmineを扱える「godmine」作った。

    とりあえず issues 関連は出来てるので、これを使うコマンドラインプログラムを書いた。 $ go get github.com/mattn/go-redmine/godmine 名前は中二病っぽいけど「godmine」という名前にした。 使い方は、例えば issue の一覧であれば $ godmine issue list もしくは $ godmine i l issue の登録は $ godmine issue create "なんてこった" "大変だ!" みたいにするか $ godmine issue append で起動するテキストエディタ(環境変数EDITORを参照しunix改行コードが扱えるテキストエディタのみ使用可能)で ### Subject Here ### ### Description Here ### 上記の部分を書き換えて保存終了する。 設定ファイルは ~/.c

    Big Sky :: コマンドラインからredmineを扱える「godmine」作った。
  • Big Sky :: 【勝手に添削】ftplugin マナー

    ちょっとだけ気になったので勝手に添削。 Enhance jsx.vim to execute the current test method! - Islands in the byte stream Enhance jsx.vim to execute the current test method! JSX compiler... http://d.hatena.ne.jp/gfx/20121014/1350233031 vim script を紛らわしくしている物の一つに ftplugin と autoload がある。autoload はこの辺読んで貰えると分かる。 ftplugin は現在のバッファにファイルタイプが適用されたタイミングで ftplugin/ファイルタイプ名.vim もしくは ftplugin/ファイルタイプ名/任意ファイル名.vim が読み込まれ実行される。つま

    Big Sky :: 【勝手に添削】ftplugin マナー
    naoty_k
    naoty_k 2012/10/16
  • Big Sky :: 意外と知られていない便利なvimプラグイン「ctrlp.vim」

    この記事は、Vim Advent Calendar 2011の記事です。欠番が出そうだったので、勝手ながら割り込ませて頂きます。 Vimを使って開発をする際、リポジトリ内のファイルにどうやってアクセスしていますか?NERDTree?vimshell?unite.vim?FuzzyFinder? 色んな方法があるかと思います。ただこれらは若干古かったりニュアンスが異なっていたり、物によっては開発に向かない物もあります。単純にファイルを選択するのであれば、それで事足りるでしょう。しかしながら当に開きたいファイルを最短の方法で選ぶには、これまでの方法では時に無駄であったり、余計なお世話だったりもしました。 僕はバッファセレクタやファイルセレクタというのは使わない方なのですが、ちょっと前にこれを見つけて「おっ...よさげなインタフェース」と思った物があったので紹介しようと思います。 ctrlp.

    Big Sky :: 意外と知られていない便利なvimプラグイン「ctrlp.vim」
    naoty_k
    naoty_k 2012/08/07
  • Big Sky :: モテる男のVim script短期集中講座

    ここで関数リファレンスのみ格納先の変数の先頭が大文字になっていますが、これはVim script特有の制限になります。 数値は一般的な言語と同じ様に四則演算できます。文字列については.を用いて連結します。 また文字列は添え字によるアクセスが可能で、pythonの様に echo "hello"[1:3] という記述が出来ます。その他文字列操作関数については:help evalに詳しく記述されています。 また型同士の比較についてはthincaさんの記事が役立ちます。 Vimスクリプト基礎文法最速マスター - 永遠に未完成 Vimスクリプト基礎文法最速マスター vim 流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? Perl基礎文法最速マスター - サンプルコードによるPerl入門 Route 477... http://d.hatena.ne.jp/thinca/20100

    Big Sky :: モテる男のVim script短期集中講座
  • Big Sky :: Jekyllで始める簡単ブログ

    GithubのユーザページでJekyllが使われる様になりました。 GitHub Pages Upgraded to Jekyll 0.5.0 - GitHub I just released Jekyll 0.5.0 which contains a huge overhaul that allows you to specify options in a _config.yml file. GitHub Pages will honor most of these settings, so if you want to have your Page rendered with RDiscount instead of Maruku, just put this in your config file: ... http://github.com/blog/402-github-page

    Big Sky :: Jekyllで始める簡単ブログ
  • 1