タグ

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

  • 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短期集中講座
    kasumani
    kasumani 2016/12/15
    モテる男のVim Script短期集中講座 この記事は、Vim Advent Calendar 2011の記事です。 長文になります。ただし、以下を読んで理解出来たのであれば、きっと貴方もVim Scriptで簡単なアプリケーションが書けるレベルになっていると
  • 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 パッケージの使い方
    kasumani
    kasumani 2016/12/14
    golang の sync パッケージの使い方 golang と言えば非同期に特化した言語ですが、慣れない内は簡単な非同期しか使えません。しかし sync パッケージを知る事でもっとカジュアルに、かつ確実な非同期処理を行う事が出来る様に
  • Big Sky :: バイナリ一つで zip, tar.gz, tar.bz2, tar.xz が開けるコマンド「archiver」(と go1.8 への対応方法)

    追記: 修正が中途半端だったのでいったんリバートされ go1.9 で修正される事になりました。 UNIX に慣れている人であれば問題ないのですが、Windowszip や tar.gz, tar.bz2, tar.xz を開くのは意外と不便で専用アーカイバをダウンロードしてきてインストールする必要があり、割かし不便なのですが archiver というツールを使うと以下のフォーマットを簡単に作成、展開できるようになります。 .zip .tar .tar.gz .tgz .tar.bz2 .tbz2 .tar.xz .txz .rar (開くのみ) インストールは golang が入っていれば簡単です。 $ go get github.com/mholt/archiver/cmd/archiver 使い方も簡単で、圧縮は以下の手順。 $ archiver make [archive na

    Big Sky :: バイナリ一つで zip, tar.gz, tar.bz2, tar.xz が開けるコマンド「archiver」(と go1.8 への対応方法)
    kasumani
    kasumani 2016/12/02
    バイナリ一つで zip, tar.gz, tar.bz2, tar.xz が開けるコマンド「archiver」(と go1.8 への対応方法) UNIX に慣れている人であれば問題ないのですが、Windows で zip や tar.gz, tar.bz2, tar. Tags: from Pocket December 02, 2016 at 11:16AM via IFTTT
  • Big Sky :: golang で終了を確認するテストの書き方

    いい記事に感化されて僕も何か書きたくなった。 Golangにおけるinterfaceをつかったテスト技法 | SOTA Golangにおけるinterfaceをつかったテスト技法 最近何度か聞かれたので自分がGolangでCLIツールやAPIサーバーを書くときに実践してるinterfaceを使ったテスト技法について簡単... http://deeeet.com/writing/2016/10/25/go-interface-testing/ 僕も1つ golang のテストの tips を。golang を書いていて良くあるのが「コマンドがステータス 0 で終了する事」のテスト。 package main import "os" func doSomething() { os.Exit(0) } func main() { doSomething() } でも os.Exit しちゃうとテ

    Big Sky :: golang で終了を確認するテストの書き方
    kasumani
    kasumani 2016/11/01
    golang で終了を確認するテストの書き方 Golangにおけるinterfaceをつかったテスト技法 最近何度か聞かれたので自分がGolangでCLIツールやAPIサーバーを書くときに実践してるinterfaceを使ったテスト技法について簡単... Tags: from Pocket
  • Big Sky :: GolangでAPI Clientを実装する、の続き

    いい記事に感化されて僕も何か書きたくなった。 GolangAPI Clientを実装する | SOTA GolangAPI Clientを実装する 特定のAPIを利用するコマンドラインツールやサービスを書く場合はClientパッケージ(SDKと呼ばれることも多いが記事ではClientと呼ぶ)を使うこ... http://deeeet.com/writing/2016/11/01/go-api-client/ この先、JSON REST API のエンドポイントに対して Golang の struct を用意していく訳だけど、ここが一番かったるい作業で一番手を抜きたい所だと思います。そこで便利なのが JSON-to-Go です。 JSON-to-Go: Convert JSON to Go instantly JSON-to-Go Convert JSON to Go struct T

    Big Sky :: GolangでAPI Clientを実装する、の続き
    kasumani
    kasumani 2016/11/01
    GolangでAPI Clientを実装する、の続き GolangでAPI Clientを実装する 特定のAPIを利用するコマンドラインツールやサービスを書く場合はClientパッケージ(SDKと呼ばれることも多いが本記事ではClientと呼ぶ)を使うこ... Tags: from Pocket N
  • Big Sky :: golang でパフォーマンスチューニングする際に気を付けるべきこと

    golang のテストツールには標準でベンチマークツールが付属しています。例えば、引数 n を貰ってその数分だけメッセージの入ったスライスを返す関数 makeSlice が以下の実装だったとします。 foo.go package foo import "fmt" func makeSlice(n int) []string { var r []string for i := 0; i < n; i++ { r = append(r, fmt.Sprintf("%03d だよーん", i)) } return r } 如何にも遅そうなコードですね。まずはこのコードを単品で計測するベンチマークを書きます。 foo_test.go package foo import "testing" func BenchmarkMakeSlice(b *testing.B) { b.ResetTimer()

    Big Sky :: golang でパフォーマンスチューニングする際に気を付けるべきこと
    kasumani
    kasumani 2016/10/20
    golang でパフォーマンスチューニングする際に気を付けるべきこと golang のテストツールには標準でベンチマークツールが付属しています。例えば、引数 n を貰ってその数分だけメッセージの入ったスライスを返す関数 makeSlic
  • Big Sky :: Golang で Windows の DLL を作る方法

    以前から c-archive は作れたけど DLL にするとシンボルが被ったりして上手く DLL が作れなかった。 Big Sky :: golangWindows 版が buildmode=c-archive をサポートした。 だいぶ時間が掛かった様ですが、ようやく buildmode=c-archiveWindows でも使える様になりました。 cmd/go: -buildmode=c-archive should ... http://mattn.kaoriya.net/software/lang/go/20160405114638.htm cmd/go: -buildmode=c-shared should work on windows · Issue #11058 · golang/go · GitHub https://github.com/golang/go/i

    Big Sky :: Golang で Windows の DLL を作る方法
    kasumani
    kasumani 2016/09/21
    Golang で Windows の DLL を作る方法 だいぶ時間が掛かった様ですが、ようやく buildmode=c-archive が Windows でも使える様になりました。 cmd/go: -buildmode=c-archive should ... Tags: from Pocket September 21, 2016 at 02:03AM via IFTTT
  • 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 テンプレートエンジン書いてる。
    kasumani
    kasumani 2016/09/10
    golang で slim テンプレートエンジン書いてる。 「みんなのGo言語」が本日発売となりました。 松木雅幸, mattn, 藤原俊一郎, 中島大一, 牧 大輔, 鈴木健太 技術評論社 / ¥ 2,138 (2016-09-09) 発送可能時間:近日発売 予約可 現在、
  • 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 の最高の端末環境を教えてやるからちょっと来い。
    kasumani
    kasumani 2016/08/25
    Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。 Bash on Ubuntu on Windows (以下 BoW) は Windows コマンドプロンプトを使って実行される。今までであれば Windows のコマンドプロンプトはエスケープシーケンスを
  • Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。

    昨日僕の Twitter タイムラインで q というツールが話題に上がっていました。 GitHub - harelba/q: q - Run SQL directly on CSV or TSV files Text as Data q is a command line tool that allows direct execution of SQL-like q... https://github.com/harelba/q 標準入力を SQL で抽出できるという物です。ただ個人的には「こういうの python じゃなくて Go でビルドされてると助かるよなー」と思ったので q と同じ様な動作になるツールを作ってみました。 GitHub - mattn/qq Select stdin with query https://github.com/mattn/qq 例えば msys2 のシ

    Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。
    kasumani
    kasumani 2016/08/06
    UNIX コマンドを SQL で抽出できるツール qq を作った。 Text as Data q is a command line tool that allows direct execution of SQL-like q... Tags: from Pocket August 06, 2016 at 04:29AM via IFTTT
  • 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 を使ったテクニックあれこれ
    kasumani
    kasumani 2016/07/06
    golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れてい
  • Big Sky :: コルタナさん、ねぇ Vim を起動して

    コルタナさん、とても便利なのですが Vim を起動する事が出来ない。どこかで見たショートカットファイルを所定の場所に置く方法もうまく動かない。 C:\ProgramData\Microsoft\Windows\Start Menu\Programs 調べると、ボイスコマンドという API が出ているのだけど、Universal Application でないといけない。Universal Application だと System.Diagnostic からプロセスを起動できない。そこで別に立てたウェブサーバから Vim を起動させる。サーバのコードは至って簡単。 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; usi

    Big Sky :: コルタナさん、ねぇ Vim を起動して
    kasumani
    kasumani 2016/04/22
    コルタナさん、ねぇ Vim を起動して コルタナさん、とても便利なのですが Vim を起動する事が出来ない。どこかで見たショートカットファイルを所定の場所に置く方法もうまく動かない。 Tags: from Pocket April 22, 2016 at 04:18PM via
  • 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 で生きるべき。
    kasumani
    kasumani 2016/04/11
    Windows ユーザは cmd.exe で生きるべき。 基本的にはいい感じに見えますが、いくつか問題は発覚してます。 Tags: from Pocket April 11, 2016 at 08:56AM via IFTTT
  • Big Sky :: Re: golangでIOへのテストを行う

    golangでIOへのテストを行う | おおたの物置 まとめ fmt.Print等にちゃんと出力されるかテストしたい 結論としては直接は無理 io.Writerを利用するように変えることで簡単にテスト可能 渡されたio.Writerに書き込むようにする ... http://ota42y.com/blog/2015/04/01/go-io-test/ golang には Example Test という機能があり、テスト関数名に Example のプレフィックスを付ける事で実行結果として出力される標準出力のテストを行う事が出来ます。 期待する結果はこの関数の中にコメントとして書くことが出来ます。 go-pipeline/example_test.go at master - mattn/go-pipelineGitHub https://github.com/mattn/go-pip

    Big Sky :: Re: golangでIOへのテストを行う
    kasumani
    kasumani 2016/03/28
    Re: golangでIOへのテストを行う まとめ fmt.Print等にちゃんと出力されるかテストしたい 結論としては直接は無理 io.Writerを利用するように変えることで簡単にテスト可能 渡されたio.Writerに書き込むようにする ... Tags: from Pocket Ma
  • Big Sky :: 開発速度を加速するツール、goemon を書いた。

    SPA (Single Page Application) を書いていると、いちいちブラウザをリロードするのが面倒で、かつ js を minify してページをリロードするといった面倒な手間を出来れば何も設定せずにやりたい(もしくは微量な設定だけでやりたい)、という思いから goemon というツールを書きました。 mattn/goemon - GitHub https://github.com/mattn/goemon goemon は、コマンドラインツールとして使います。まず $ goemon -g > goemon.yml で goemon.yml を生成します。個人的にカスタマイズしたい人は生成されたファイルを変更して使って下さい。 # Generated by goemon -g livereload: :35730 tasks: - match: './assets/*.js'

    Big Sky :: 開発速度を加速するツール、goemon を書いた。
    kasumani
    kasumani 2015/02/24
    開発速度を加速するツール、goemon を書いた。 Wikipedia CC AA3. Tags: from Pocket February 24, 2015 at 08:36AM via IFTTT
  • Big Sky :: IDE としての Vim

    この文章は、http://yannesposito.com/Scratch/en/blog/Vim-as-IDE/ で掲載されている「Vim as IDE」の翻訳文です。 文内の全てはの筆者による物であり、訳文の内容については私による物となります。意訳が若干入っています。間違い等あればご連絡下さい。 Vim as IDE tl;dr: 如何に Vim を効率の良い IDE として使いこなすか Learn Vim Progressively (訳者注: 日語訳)では Vim が如何にテキスト編集に優れ、かつファイルを操縦できる偉大なテキストエディタであるかについて示した。この短い記事では、私が如何にして Vim を IDE として使っているかについて見る事が出来るだろう。そう、主に幾つかの素晴らしいプラグインを使う事により。 1. Vim Plugin Manager Vim のプラグイン

    Big Sky :: IDE としての Vim
    kasumani
    kasumani 2015/02/10
    IDE としての Vim 文内の全てはの筆者による物であり、訳文の内容については私による物となります。意訳が若干入っています。間違い等あればご連絡下さい。 Tags: from Pocket October 20, 2016 at 02:09AM via IFTTT
  • 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 を使おう。
    kasumani
    kasumani 2015/01/13
    golang のリファクタリングには gofmt ではなく、gorename を使おう。 今まで golang で変数名や関数名のリネームには gofmt の -r オプションを使ってきましたが、これからは gorename を使いましょう。 Tags: feedly, ifttt, recently read, saved
  • Big Sky :: ちっちゃなビルドシステム qo が激しく便利だった件

    « Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、当に正規表現って意味不明なフォルムと思った。 | Main | golang のリファクタリングには gofmt ではなく、gorename を使おう。 » golang には go build というビルド機能があり、C言語と golang をまぜた cgo というC言語拡張も同じコマンドでビルド出来ます。 その際、ソースコードのコメントに CFLAGS や LDFLAGS を自ら指定する事が出来るので package gtk // #include "gtk.go.h" // #cgo pkg-config: gtk+-2.0 import "C" import ( "fmt" "log" "reflect" "runtime" "strings" "unsafe" "github.com/mattn/g

    Big Sky :: ちっちゃなビルドシステム qo が激しく便利だった件
    kasumani
    kasumani 2014/12/25
    ちっちゃなビルドシステム qo が激しく便利だった件 golang には go build というビルド機能があり、C言語と golang をまぜた cgo というC言語拡張も同じコマンドでビルド出来ます。 その際、ソースコードのコメントに CFLAGS や LDFL
  • Big Sky :: Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、本当に正規表現って意味不明なフォルムと思った。

    VimでURLをドメインだけに置換するコマンドを正規表現でうったら、当に正規表現って意味不明なフォルムと思った。 - Qiita http://qiita.com/mochizukikotaro/items/b15170dccb18d84f8cd2 :%s/\([:\/]\)\@<!\/.*$//g なんか、とても意味不明なコマンドだ。きっと、もっとスマートなものがあるのだろう。コードゴルフで言えばトリプルボギー的な感じなのでしょうか。知らないけど。 この問題は URL を扱うので / が多く、置換の区切りを / にする場合エスケープが多くなる very magic でないのでエスケープがさらに増える この2点から生まれます。1点目は :%s#\([:/]\)\@<!/.*$##g # や :%s,\([:/]\)\@<!/.*$,,g , をセパレータにする事で少しは解消するかと思いま

    Big Sky :: Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、本当に正規表現って意味不明なフォルムと思った。
    kasumani
    kasumani 2014/12/25
    Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、本当に正規表現って意味不明なフォルムと思った。 , をセパレータにする事で少しは解消するかと思います。2点目は \v を付ける事でキャプチャ \(\) を ()
  • 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 特集に寄稿させて頂きました。
    kasumani
    kasumani 2014/12/17
    Software Design の Vim 特集に寄稿させて頂きました。 技術評論社さんの「Software Design 2015年1月号」の Vim 特集に寄稿させて頂きました。 Tags: feedly, ifttt, recently read, saved for later from Pocket December 17, 2014 at 12:22AM via IFTTT