Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

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

  • Big Sky :: 「みんなのGo言語」の執筆に参加させて頂きました。

    僕がプログラミング言語「Go言語」を知り、使い始めてからそろそろ7年目に入ろうとしています。 当初 Google が作っているという鳴り物があった為、色々なメディアに取り上げられ色々な方がブログ等でGo言語を紹介し、色々な意見でGo言語が語られました。大抵の場合、プログラミング言語とは始めはチヤホヤと取り出され、落ち着いてからが当の人気を表すという傾向にあります。皆さんもそう思っていたかもしれませんし、僕もそう思っていたと思います。 僕がGo言語を触りだした頃、まだ色々と足りない部分がありました。Linux で動いている多くの機能が Windows では未実装になっていました。しかしそんなGo言語であっても高速なビルドと実行速度で僕の好奇心を揺さぶるには十分な物でした。 その後、僕はGo言語にパッチを送る様になりました。その内幾らかはマージされました。現時点ではコアのリポジトリで79個の

    Big Sky :: 「みんなのGo言語」の執筆に参加させて頂きました。
    atotto
    atotto 2016/08/09
    すごいなぁーうらやま
  • Big Sky :: Vim scriptで「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」を解いてみた

    « 適当な日人の名前や住所をランダムに作れる gimei を golang に port した。 | Main | 何もソースコードを変更せずに2038年問題を解決する。 » 問題1 scriptencoding utf-8 "forループ、whileループ、および再帰を使用して、リスト内の数字の合計を計算する "3つの関数を記述せよ。 function! s:problem1_1() let l = [3,5,1,2,9] let s = 0 for i in l let s += i endfor return s endfunction function! s:problem1_2() let l = [3,5,1,2,9] let s = 0 let i = 0 while i < len(l) let s += l[i] let i += 1 endwhile return s

    Big Sky :: Vim scriptで「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」を解いてみた
    atotto
    atotto 2015/06/02
    脳内でGoで書いたらwhileでコンパイルエラーになったw
  • Big Sky :: golang で複数のエラーをハンドリングする方法

    golangいまどき例外ないの頭おかしいって思ってたけどようするにgoroutineと例外がうまくいかないからgoroutineのほう取って例外捨てたってことかねえ。 — Urabe, Shyouhei (@shyouhei) April 15, 2014 FAQ に書いてあります。 Why does Go not have exceptions? - Frequently Asked Questions (FAQ) - The Go Programming Language We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code. It also tends to encourage programme

    Big Sky :: golang で複数のエラーをハンドリングする方法
    atotto
    atotto 2015/02/12
    エラーハンドリングの資料。おすすめ
  • Big Sky :: 意外と知られていない github 技

    github で git diff from..to を表示する - #生存戦略 、それは - subtechtext/plain な diff が表示される。.. じゃなくて ... 。 http://subtech.g.hatena.ne.jp/secondlife/20121225/1356421602 github のコミットページ URL は、実は凄く良く出来ている。 例えば pull request のページ Add each Gem bundled data pointer in mrb_state by masuidrive - Pull Request #605 - mruby/mruby - GitHub Showing 17 changed files with 183 additions and 36 deletions . Show Diff Stats H

    Big Sky :: 意外と知られていない github 技
  • 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 パッケージの使い方
    atotto
    atotto 2014/06/26
    syncsyncsync!
  • 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 のオフィシャルが提供するインタフェースまとめ
    atotto
    atotto 2014/05/07
    これはいいまとめ
  • Big Sky :: 今更だけどコードレビューシステムRietveldが素晴らしいと気づいた。

    先日、golangに3件不具合修正を行った。 その際、golangにはpatchを提供する際に、コードレビューをしてもらうのだけど、それに使用しているrietveldが素晴らしく良かった。 rietveldはGoogle App Engineのサーバ上で動作し、クライアントから使うにはmercurialが必須となる。hgrcファイルに以下の修正を追加する。 [extensions] codereview = YOUR_GO_ROOT/lib/codereview/codereview.py 次にcodereview.appspot.comへログインする。 # hg code-login Email (login for uploading to codereview.appspot.com): rsc@golang.org Password for rsc@golang.org: Savi

    Big Sky :: 今更だけどコードレビューシステムRietveldが素晴らしいと気づいた。
    atotto
    atotto 2013/11/02
    codereviewの話
  • 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言語でインタフェースの変更がそれ程問題にならない理由
  • Big Sky :: Vimを使ったGo言語開発手法

    先日、Go言語バージョン1.1がリリースされました。安定しているのは勿論、幾つか新機能が追加されましたが、何よりもパフォーマンスチューニングが施された一番嬉しいですね。 Go 1.1 performance improvements | Dave Cheney This is the first in a series of articles analysing the performance improvements in the Go 1.1 relea... http://dave.cheney.net/2013/05/21/go-11-performance-improvements さて今日はVimを使ってGo言語を開発する方法を紹介したいと思います。 VimGo言語を開発するには、Go言語のリポジトリに含まれる misc/vim にランタイムパスを追加します。以下を vimr

    Big Sky :: Vimを使ったGo言語開発手法
  • Big Sky :: Go言語をWeb上で楽しめる Go Playground で SL 動かしてみた。

    Go Playground で time パッケージが有効になった。 Go Playground The Go Playground is a web service that runs on golang.org 's servers. The serv... https://play.golang.org 公式発表 Time - Google Groups https://groups.google.com/d/topic/golang-nuts/JBsCrDEVyVE/discussion \x0c というコードを fmt.Print() で出力するとクリアされ、fmt.Print() や fmt.Println() を使って文字列を出力、time.Sleep を使ってアニメーション表示が出来る様になります。 こういうの出来たら、これを試さない訳にはいかない!!! Go Playgr

    Big Sky :: Go言語をWeb上で楽しめる Go Playground で SL 動かしてみた。
    atotto
    atotto 2012/12/15
    おもろい
  • Big Sky :: Go言語で出来た grep、jvgrep の高速化

    以前、こんな記事を書いた。 Big Sky :: 日語grepが出来るjvgrepというのを作った。 http://mattn.kaoriya.net/software/lang/go/20110819203649.htm 実は jvgrep を作った当初、処理がかなり遅かった。まぁ複数のエンコーディングを試すからしょうがないよね程度に思ってたけど、どうにか速くならないかと思い、処理の並行化を行ってパフォーマンスを向上させた。この記事はその時にやった改善策。 jvgrep は -R オプションや **/* で再帰検索する機能が付いているんだけど、これを行う場合 find grep という処理が走る事になる。 しかしながら結果の順番を守ろうと考えた場合、find と grep を安直に同時に走らせる訳にはいかなくなる。走らせると結果が交錯してしまうからだ。 こういうのを行う場合、C言語だと

    Big Sky :: Go言語で出来た grep、jvgrep の高速化
    atotto
    atotto 2012/12/05
    なるほどー
  • Big Sky :: マルチプラットフォームな C++ 向けフォルダ変更監視ライブラリ「SimpleFileWatcher」

    C++ で簡単にフォルダ監視出来るライブラリ無いかなーと思ってたら、手頃なのが見つかった。 simplefilewatcher - Simple, cross platform, object-oriented, file watcher and notifier library. - Google Project Hosting SimpleFileWatcher is a C++ wrapper for OS file monitoring systems. Currently it uses Win32 ReadDirec... https://code.google.com/p/simplefilewatcher/ しかもマルチプラットフォームでビルド出来て、さらに他のライブラリに依存しないのでとてもポータブル。 Windows でも inotify を意識せずにコーディング出来ま

    Big Sky :: マルチプラットフォームな C++ 向けフォルダ変更監視ライブラリ「SimpleFileWatcher」
    atotto
    atotto 2012/11/14
    ほぉー、使えそう。
  • Big Sky :: Gistyで始めるGist/Githubのススメ

    最近Githubをよく使っているのですが、どうしてもGithubといえばプロジェクト管理なイメージがあり、プロジェクトを持ってない人から見ると少し遠い存在にみえがちです。ですが、ちょっとしたスクリプトを書きたい人、しかもリモートにもリポジトリを置きたい人いますよね。 そんな時に便利なのがGistです。 「Gistというと、単なるコードスニペットサービスでしょ?」と思われるかもしれませんが、Gistの凄いところはちょっとしたスクリプトをソース管理出来る所です。 以下、簡単なperlスクリプトをソース管理しながら完成まで仕上げる過程を例を持って示してみます。 ただし、ここで言っておきたい事が一つ。Gistを便利に使う為のツール、Gistyを入れるべきです。 GistyはGistにポストすると同時に所定の場所にgit cloneしてくれ、初期ポストからコーディング開始までをスムーズに促してくれま

    Big Sky :: Gistyで始めるGist/Githubのススメ
    atotto
    atotto 2012/04/03
    使ってみなきゃ
  • 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
    atotto
    atotto 2012/02/16
    新しいgoコマンド(go tool)について #Go言語 #golang
  • Big Sky :: VimでGoがautocomplete出来るgocodeがいい感じ

    Goは型宣言無しに値が代入出来てしまうので、カーソル上の変数から型推測する必要がある補完は難しいんじゃないかなーと思ってたら、なんと作った人がいました。 すげー。 nsf's gocode at master - GitHub Autocompletion/refactoring daemon for Go language.Work in progress..Currently available things: - .a... http://github.com/nsf/gocode 仕組みはvimスクリプト内でデーモン起こしてコードとキーワードと共にサーバ側でコンパイルし、解析して返すというもの。通信にはRPCが使われている。 補完はomniなので<c-x><c-o>で開始。ちゃんと インスタンスメソッド一覧 構造体のメンバ パッケージ内の定数や型、関数 もろもろ補完してくれる。私が

    Big Sky :: VimでGoがautocomplete出来るgocodeがいい感じ
    atotto
    atotto 2011/09/08
    emacsでもちゃんと動いた!
  • Big Sky :: Google App EngineでGo言語使って「おうっふー」動かしてみた。

    Google App EngineへのGo言語アップロード権(Trusted Tester for the golang runtime for appengine)を得たので、Webアプリを作り始めたら皆が必ず作るという「おうっふー」をGo言語に移植してみた。 なお、「おうっふー」とはログイン画面のみを持ち、ログインすると有無を言わさず「おうっふー」という単語をログインアカウントにポストするWebアプリケーションの事。知ってない奴はWeb界のモグリだ!って隣の人が言ってた。 以下、Go言語のコードを解説してみる。 ログイン画面からログインハンドラに要求が行われると、OAuth1.0でリクエストトークンがTwitterに要求され、得たテンポラリトークンで認証画面に遷移します。 http.HandleFunc("/login", func(w http.ResponseWriter, r *

    Big Sky :: Google App EngineでGo言語使って「おうっふー」動かしてみた。
  • 1