タグ

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

  • Big Sky :: errors.Join が入った。

    errors, fmt: add support for wrapping multiple errors · golang/go@4a0a2b3 · GitHub An error which implements an "Unwrap() []error" method wraps all the non-nil errors in the returned ... https://github.com/golang/go/commit/4a0a2b33dfa3c99250efa222439f2c27d6780e4a Go でエラーを扱う際に、複数のエラーを束ねたい事があります。例えば複数のタスクを実行し、1つでもエラーになれば中断するのではなく、一通りタスクを実施し終えた結果を返したい様なニーズです。 package main import ( "errors" "log" "os"

    Big Sky :: errors.Join が入った。
    vvakame
    vvakame 2022/10/04
    わりとほしいやつっぽい気はする 公式の型名がほしいんだよな []error に
  • 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 が入った。
    vvakame
    vvakame 2020/10/30
    コード生成ツールでテンプレート埋め込んだりアプリケーションに設定ファイルを埋め込んだり夢が広がりんぐですね
  • Big Sky :: Go 言語の Language Server「gopls」が completeUnimported に対応した。

    先日、Gopls の v0.2.0 がリリースされました。 v0.2.0 https://github.com/golang/go/issues/33030#issuecomment-549629508 リリースノートに書かれていますが、このバージョンから completeUnimported に対応しています。fmt が import されていなくても fmt.Println が補完できる様になります。ただしデフォルトでは無効になっています。Visual Studio Code であれば以下を settings.json に含める事で使える様になります。 "gopls": { "completeUnimported": true }, また vim-lsp をお使いであれば以下の様に設定する事で使える様になります。 if executable('gopls') augroup LspGo

    Big Sky :: Go 言語の Language Server「gopls」が completeUnimported に対応した。
    vvakame
    vvakame 2019/11/12
    VSCodeで使えるんだ知らなかった
  • Big Sky :: Google Developers Expert (Go) になりました。

    Google の方からお誘いを頂き、Google Developers Expert (Go) になりました。 僕のこれまでの Go に対する活動を評価頂けました。僕が Go を触り始めたのが2009年、今から10年前でした。Go はまだメジャーリリースすらされておらず、誰も仕事で使っていない言わばホビー言語でした。 一部のアーリーアダプタが「この言語、面白い」という言葉を残し飽きて来た頃、僕は職場で自前のツールを Go で書くようになりました。それまではC言語でした。 マルチプラットフォーム、速いコンパイラ、ポータビリティの高さ、簡単な記述での並行処理、色々な物に惹かれました。特に、シングルバイナリで動作し、コンパイルし直しさえすればソースコードを書き直す事なく Windows で動き、なおかつマルチバイトの問題も発生しない、こんな夢の様なプログラミング言語はそれまで見た事が無かったので

    Big Sky :: Google Developers Expert (Go) になりました。
    vvakame
    vvakame 2019/08/07
    いいはなし
  • Big Sky :: TensorFlow Lite の Go binding を書いた。

    « Lint ツールを Language Server に対応させるコマンド efm-langserver 作った。 | Main | MRuby の TensorFlow Lite バインディングを書いた。 » Google launches TensorFlow Lite 1.0 for mobile and embedded devices | VentureBeat Google today introduced TensorFlow Lite 1.0 , its framework for developers deploying AI models on mo... https://venturebeat.com/2019/03/06/google-launches-tensorflow-lite-1-0-for-mobile-and-embeddable-devices/ T

    Big Sky :: TensorFlow Lite の Go binding を書いた。
  • 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 へ)
    vvakame
    vvakame 2018/12/17
    最近こういう感じなのか
  • 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 のススメ
    vvakame
    vvakame 2018/08/26
    はぇーすっごい
  • Big Sky :: gRPC のサービスが簡単に作れるライブラリ「lile」

    gRPC は型の強い RPC を色々な言語を使って実装できる仕組みとライブラリです。 Big Sky :: Protocol Buffers を利用した RPCgRPCgolang から試してみた。 grpc/grpc · GitHub gRPC - An RPC library and framework https://github.com/grpc/grpc gRPCGoogle が開... https://mattn.kaoriya.net/software/lang/go/20150227144125.htm とても便利なのですが幾分手数が多いのが難点で、ちょっとしたサービスを gRPC で実装したいと思っていてもそう簡単に作る事が出来ませんでした。 ところが今回ご紹介する lile を使うと、とても簡単に gRPC を使った golang の実装を作れてしまいます

    Big Sky :: gRPC のサービスが簡単に作れるライブラリ「lile」
    vvakame
    vvakame 2017/08/25
    たのしそう
  • Big Sky :: 虫が入り込むその瞬間

    今日とある場所で虫が入り込む瞬間を見た。虫といってもバグの方。それはプログラマ向けの Q&A サイトで始まった。質問の内容はこうだ。 文字列には0または4がだけが含まれる。文字列は 4 から始まり、例えば 440, 44, 40, 4400, 4440 など、これらは正しいとするが 404 は正しくない。今のところ、私は 0 の直後に 4 が現れるかどうかでチェックしている。これは果たして効率的だろうか。 始め僕はこの質問文をちゃんと読んでおらず、正規表現を使ってこれを実装した。 package main import ( "regexp" ) func check(s string) bool { return regexp.MustCompile(`^4+0*$`).MatchString(s) } func main() { for _, tt := range []string{"

    Big Sky :: 虫が入り込むその瞬間
    vvakame
    vvakame 2017/06/30
    いついかなる時に想定してた範囲外の使われ方をするかわからないので前提仕様に過度に頼らないコーディング重要なんだけどその感性をどのタイミングで身に付けたかは既に思い出せない
  • 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」
    vvakame
    vvakame 2017/01/25
    ガタッ
  • Big Sky :: Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。

    Bash on Ubuntu on Windows (以下 BoW) は Windows コマンドプロンプトを使って実行される。今までであれば Windows のコマンドプロンプトはエスケープシーケンスを認識しなかったので cmd.exe そのものでは vt100 等の端末環境を用意できませんでした。しかし Windows10 の cmd.exe では新しいコンソールモードが用意されています。 Console Virtual Terminal Sequences (Windows) Virtual terminal sequences are control character sequences that can control cursor movement, color/font mode, and other operations. https://msdn.microsoft.c

    Big Sky :: Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。
    vvakame
    vvakame 2016/08/24
    にわかWindowsユーザです!!
  • 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
    vvakame
    vvakame 2016/03/09
  • Big Sky :: Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。

    Perl6 には Grammar という機能があるのですが、これがまた凄いんです。スキャナとトークナイザと処理系が引っ付いている様な物がデフォルトで提供されているんです。 通常はこれらが別の機能として提供されており、プログラミング言語を実装する過程でデータの受け渡しがシームレスではなく、実装を変えたりするのが非常に面倒だったりします。しかしこれが Perl6 という一つの処理系の中で提供されてしまっている為、来であれば数百ステップくらい掛かってしまう俺言語のコードが50ステップ程度で書けてしまいます。 use v6; grammar SyoboiScript::Grammar { token num { <[0..9]>+ } token ident { <[a..z]>+ } token op { '+' || '-' || '*' || '/' } token exp { <iden

    Big Sky :: Perl6 の grammar で俺言語「しょぼいスクリプト」を作った。
    vvakame
    vvakame 2015/10/19
    やばいすごそうに見える
  • 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 で最近お気に入りの 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 :: golang のリファクタリングには gofmt ではなく、gorename を使おう。

    今まで golang で変数名や関数名のリネームには gofmt の -r オプションを使ってきましたが、これからは gorename を使いましょう。 文法を解析して正しくリネームしてくれるので、gofmt で起き得た誤爆も心配ありません。インストールは以下の様に実行します。 $ go get golang.org/x/tools/cmd/gorename 使用方法は以下の通り。 gorename: precise type-safe renaming of identifiers in Go source code. Usage: gorename (-from <spec> | -offset <file>:#<byte-offset>) -to <name> [-force] You must specify the object (named entity) to rename

    Big Sky :: golang のリファクタリングには gofmt ではなく、gorename を使おう。
    vvakame
    vvakame 2015/01/13
  • Big Sky :: Windows でも色付きでログが出せる golang のライブラリ「go-colorable」書いた。

    golang には logger が星の数ほどあるのですが go言語におけるロギングについて — さにあらず コマンドラインオプションについて 分かり辛いので、僕の分かった事だけをメモしておきます。 ログの出力処理は glog.go#output を読めば大体分かります。 -logtostderr これを指定... http://blog.satotaichi.info/logging-frameworks-for-go その殆どがエスケープシーケンスを使って色を出しており、Windows で動かすと残念な表示になる物ばかりでした。 まさかログに色を付けたいという理由だけで ansicon を使うのは悲し過ぎるし、そもそも「ansicon 使ったら負けだと思ってる」ので、go-colorable というライブラリを書きました。 golanglogger はその殆どが標準パッケージの

    Big Sky :: Windows でも色付きでログが出せる golang のライブラリ「go-colorable」書いた。
    vvakame
    vvakame 2014/07/30
  • Big Sky :: Go言語でインタフェースの変更がそれ程問題にならない理由

    golang - Go言語における埋め込みによるインタフェースの部分実装パターン - Qiita [キータ] http://qiita.com/tenntenn/items/e04441a40aeb9c31dbaf golang はインタフェースがマッチしているかどうかにより処理を切り分けられる。 package main import "fmt" type Person struct { FirstName string LastName  string } func (p *Person) Name() string { return p.FirstName + " " + p.LastName } func main() { person := &Person{"Taro", "Yamada"} fmt.Println(person.Name()) } メソッドを保持しているのであれ

    Big Sky :: Go言語でインタフェースの変更がそれ程問題にならない理由
    vvakame
    vvakame 2014/02/19
    これ見ると確かに結構戦えそうな気がする…
  • Big Sky :: Learn Vim Progressively

    この文章は、 http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/で掲載されている「Learn Vim Progressively」の翻訳文です。 文内の全てはの筆者による物であり、訳文の内容については私による物となります。意訳が若干入っています。間違い等あればご連絡下さい。 tl;dr: 可能な限り速くvim(人類史上、最良と知られているテキストエディタ)を習得したい。その方法を提案する。生き残るには最小を学ぶ事から始め、その後徐々にトリックを混ぜて行く。 Vim 60億ドルのテキストエディタ 優れいて、強く、そして速い vimを学ぶ事、それはあなたあなたが学ぶ最後のテキストエディタになるでしょう。私が知る限りより優れたテキストエディタはない。学ぶのは難しいが、使うと素晴らしい。 4つのステップで学ぶ事をお勧めす

    Big Sky :: Learn Vim Progressively
    vvakame
    vvakame 2014/02/11
  • Big Sky :: 最近の mruby 業界まとめ

    トピックス mrbgems が入った お前はどこのワカメじゃ ビルド方法が変わった mruby-uv mruby-http mruby-sinatic mruby-json mruby-sqlite3 mruby-curl そして mruby-v8 mrbgems が入った mruby に GEM っぽい物が入った。 とは言ってもスタティックリンクなのでダイナミックローディングしてくれる訳じゃない。 しかしながらパッケージを導入する上での取り決めが決まりつつあると言った感じ。 使うには MRUBY_ROOT という環境変数を mruby のリポジトリトップに設定しておき、MAKEFILE_4_GEM を $MRUBY/mrbgems/Makefiel4gem にしておくと良い。後者は要らなくなったかもしれない。 具体的には $MRUBY_ROOT/mrbgems/GEMS.active と

    Big Sky :: 最近の mruby 業界まとめ
    vvakame
    vvakame 2012/12/21
    "お前はどこのワカメじゃ " き、黄色い猫型です…