golang の sync パッケージの使い方
golang と言えば非同期に特化した言語ですが、慣れない内は簡単な非同期しか使えません。しかし sync パッケージを知る事でもっとカジュアルに、かつ確実な非同期処理を行う事が出来る様になります。 今日はそんな sync パッケージについて説明してみたいと思います。sync.Mutexご存じ sync.Mutex です。皆さんが一番使う排他制御だと思います。package mainimport...
View Articleclib の使い勝手にマジ感動した
C言語でアプリケーションを書くのは他の言語と比べて少し気合が必要ですよね。例えば HTTPからデータを取得する取得したデータを json パースする結果の一部を色付きで表示するこんな場合、C言語プログラマは「HTTP か、じゃぁcurlかな」「JSON か、parson かな」「色表示か...エスケープシーケンスでもいいけどWindowsがなー...」といった事を考え、そこから curl や...
View ArticleMSVC の怖い話
夏だし、怖い話しようぜ!#include <cstdio>#include <math.h> class C {public: C() {} C(double) { printf("hello world\n"); } }; int main(int argc, char** argv) { C(NAN); return 0; }僕は今日......
View ArticleWindows で便利な clib パッケージを3つ程書いた
先日、C言語向けのパッケージマネージャ clib を紹介したのですが、その後 Windows で使えそうなパッケージを3つ程書きました。Big Sky :: clib の使い勝手にマジ感動したC言語でアプリケーションを書くのは他の言語と比べて少し気合が必要ですよね。例えば HTTPからデータを取得する 取得したデータを json パースする 結果の一部を色付きで表示する...
View ArticleRe: 断続的にデータを受けながら並行で時間差リアクションを行う
断続的にデータを受けながら並行で時間差リアクションを行う - すぎゃーんメモ断続的にデータを受けながら並行で時間差リアクションを行う Go はじめて、の次のGo - すぎゃーんメモ にて作った go-genki-bot 、UserStreamから Tweet...
View ArticleVim でたんざくを作ろう
:echo webapi#json#decode(webapi#http#get("http://tanzak.herokuapp.com/api", {"q": "カッコイイVimmerになれますように"}).content).c┏┷┓┃ ┃┃カ┃┃ッ┃┃コ┃┃イ┃┃イ┃┃V┃┃i┃┃m┃┃m┃┃e┃┃r┃┃に┃┃な┃┃れ┃┃ま┃┃す┃┃よ┃┃う┃┃に┃┃ ┃┗━┛
View Articlegit で pull-request を clone する設定が覚えられないので alias 書いた。
github の pull-request を clone する設定をいつも思い出せなくて、毎回ググってるので alias を書いた。 Checkout github pull requests locallyHere's fetch : 1 git fetch From github.com:gittip/www.gittip.com * [new ref] refs/pull/100/head...
View ArticleRob Pike のプログラミングに関する5つの掟
掟1プログラムが時間を費やす箇所がどこにあるのかは知り得ない。ボトルネックは意外な場所で発生するため後知恵で批判してはならないし、ボトルネックがどこにあるか証明出来るまではスピードハックを入れてはいけない。掟2測定しよう。測定し終えるまでは、さらにはコードの一部分が残りのコードの支配的な量とならないならばチューニングを行ってはいけない。掟3凝ったアルゴリズムは、n が小さいときに低速となり、通常 n...
View ArticleVim で peco する「veco」書いた。
vimでpecoりたい— Yoichi Fujimoto ? (@wozozo) July 8, 2014って事で書いた。 mattn/ctrlp-veco ・ GitHubhttps://github.com/mattn/ctrlp-veco実行には CtrlP が必要。 peco の代わりに vim を使う。ただそれだけ。vimでpecoっても全然うれしくないことがわかった— Yoichi...
View ArticleVim で flappyvird 書いた。
前回、「幅跳び」が好評だったので、あの有名なゲーム「Flappy〇ird」を Vim で出来る flappyvird-vim を書いてみました。 mattn/flappyvird-vim ・ GitHubhttps://github.com/mattn/flappyvird-vim画像は開発中の物で、実際のキャラクタは異なります良かったら遊んで下さい。 :FlappyVird...
View ArticleVim scriptテクニックバイブル ~Vim使いの魔法の杖
こんにちわ。Vim scriptサポーターズの mattn です。ちょうど3年程前、Vimテクニックバイブルという書籍を執筆させて頂きました。Big Sky :: Vimテクニックバイブル...
View ArticleC++ 製 micro web framework「crow」を使って lingr の bot 書いてみた。
先日、github で crow という、python の flask からインスパイアされた C++ 製 micro web framework を見つけました。ipkn/crow - GitHubhttps://github.com/ipkn/crowルーティングの書き方が flask ぽく、かつモダンな C++ な書き方だったの気に入りました。 crow::Crow app;...
View Articlegolang で N 個の chan を同時に待つ
あと最近の発見と絶望は、C.selectが呼び出せないこと。select中のdefaultでnonblocking相当にできるけど、可変数なfdをselectしたい相当をどう書けばいいんだろうか。 #golang— HiroakiKawai (@kwi) July 28, 2014reflect.Selectを使います。package mainimport ( "fmt"...
View ArticleWindows でも色付きでログが出せる golang のライブラリ「go-colorable」書いた。
golang には logger が星の数ほどあるのですがgo言語におけるロギングについて — さにあらずコマンドラインオプションについて 分かり辛いので、僕の分かった事だけをメモしておきます。 ログの出力処理は glog.go#output を読めば大体分かります。 -logtostderr...
View ArticleC++ の JSON ライブラリ json11 は initializer_list が綺麗。
おなじみC/C++から使えるJSONライブラリを紹介するコーナー。まずは過去のまとめ。最速と言われる JSON パーサ「rapidjson」が本当に爆速なのか試してみた。C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search...
View Article「便利」と「感極まってきました」だけでプログラムが書ける日本語プログラミング言語「うじひさ」を作った。
誰も作ってくれないので自分で作った。「便利」と「感極まってきました」だけでプログラム書ける日本語プログラミング言語「うじひさ」の登場が待たれる— mattn (@mattn_jp) August 21, 2014mattn/ujihisa - GitHubhttps://github.com/mattn/ujihisagolang で書かれています。go get...
View ArticleC言語の怖い話
追記: ほんとは怖くないよ!って話を追記してます。夏だし怖い話しようぜ!訳あって一部だけ C++ のコードです。#include <stdio.h>#include <iostream>int main() { char str[256]; double a = 123.45; int b = 57; int c = 89; sprintf(str, "a=%f...
View Articlekill で立つハッカー、シェルを濁す
shell - 立つハッカー、シェルを濁さず - Qiitaおことわり このTipsは不作法だとして異論が出るかもしれないが、私自身がよくやるのでここで公開してみる。それは一体何かというと…… コマンドヒストリーが残るのイヤだ! と思うことってよくないだろうか...http://qiita.com/richmikan@github/items/2c90ddb778a7d4948324man...
View ArticleC言語から golang の chan っぽい事が出来るライブラリ「chan」
名前そのままやん感がすごいですが。tylertreat/chan - GitHubhttps://github.com/tylertreat/changolang の chan をC言語から使える様にするライブラリです。やはりC言語というだけあって、受け渡す値の型は void*ですがそこは目をつむりましょう。#include <pthread.h>#include...
View Article