タグ

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

  • Big Sky :: golang の遅いコードをたった1行で高速化するテクニック

    記事中に間違いがありました。数倍も速くはなりませんでした。確か 1.0X ~ 1.1 倍程度の高速化は得られましたがびっくりするほどの物ではありませんでした。すみません。 そろそろ Go1.7 がリリースされるそうですが、皆さん如何お過ごしですか。Go 界隈の波平こと mattn ですこんにちわ。バカモー(略 Go1.7 ではコンパイラの最適化が行われ、ビルド速度がかなり短縮される様になりました。毎日ビルドしてる僕としては非常に嬉しい機能改善ですね。 さてとてもキャッチ―なタイトルで釣ってしまった訳ですが、気にしたら負けなのでどんどん話を進めます。 var t [256]byte func f(b *[16]byte) { for i, v := range b { b[i] = t[v] } } 例えばこのコードを見て下さい。このコードはココから拝借しました。issue の内容はスコー

    Big Sky :: golang の遅いコードをたった1行で高速化するテクニック
  • Big Sky :: C++ の数式パーサ Lepton で遊んでみた。

    Lepton という数式パーサを見つけたので遊んでみた。 Simtk.org: Lepton Mathematical Expression Parser: Overview Purpose/Synopsis: A small C++ library for parsing, evaluating, differentiating, and analyzing mathem... https://simtk.org/home/lepton 一般的な数式パーサは expression を token に分解するのみだが、この lepton はもう1歩踏み込んだ処理が行える。 通常の数式は以下の様にパースし実行出来る。 #include <iostream> #include <string> #include <map> #include <Lepton.h> int main(int ar

    Big Sky :: C++ の数式パーサ Lepton で遊んでみた。
  • Big Sky :: clib の使い勝手にマジ感動した

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

    Big Sky :: clib の使い勝手にマジ感動した
  • Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い

    おなじみC/C++から使えるJSONライブラリを紹介するコーナー。まずは過去のまとめ。 最速と言われる JSON パーサ「rapidjson」が当に爆速なのか試してみた。 C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。 僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search APIから検索するまでにやった、たった一つの事。 C言語から使えるJSONパーサ、JSMNを試してみた。 何も見ずにC++でjsonパーサが書けるか試してみた。 ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い! 最近は結構 matsuu さんのブクマから見つけて記事を書いてたけど今日はそうじゃない所からご紹介。 Jansson — C library for working w

    Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い
    palm3r
    palm3r 2013/07/13
  • Big Sky :: 組み込み版 NoSQL、「UnQLite」

    これまで組み込みDBだと SQLite が一般的でしたが、ローカルであっても NoSQL したい、組み込みで使いたい、というニーズはあるかと思います。 そんな場合、UnQLite を使うと便利そうです。 UnQLite - An Embeddable NoSQL Database Engine UnQLite is a self-contained C library without dependency. It requires very minimal support from exte... http://unqlite.org/ unqlite/unqlite - GitHub README.md UnQLite UnQLite is a in-process software library which implements a self-contained, server...

    Big Sky :: 組み込み版 NoSQL、「UnQLite」
  • 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短期集中講座
    palm3r
    palm3r 2011/12/02
  • Big Sky :: zen-coding for vim を pure vimscript だけで書いてみた。

    私も結構長くvimを使ってきましたが、実はsnippet系やsorround系のプラグインは殆ど使っていません。理由は入力の規則が多様すぎて覚えられないのと、それくらい手で入力出来るんじゃないか...と思っていたのが理由でもあります。 sorround.vimなんかは何度か常用をチャレンジしてみましたが、結局諦めました。 先日、zen-codingを見つけ、「へー便利そうだなぁ」と思ったと同時にこのくらいならvimscript(pure vimscript)だけで書けるな...と思ったので書いてみました。 と言ってもEmacsへの移植なんかと同様に「Expand Abbreviation」だけです。 正直言うとzen-codingのプロジェクトページにvimがラインナップされていなかったのがキッカケだったりもしますが...。ただ、後から知ったのですがsnipMateという物でzen-cod

    Big Sky :: zen-coding for vim を pure vimscript だけで書いてみた。
  • Big Sky :: Vim script manager「Vimana」が便利すぎる。

    これまでvimスクリプトをインストールするには、vim onlineでダウンロードして、書いてあるインストール手順に従って、時にはそのまま、時にはzipを解凍して.vim(windowsならvimfiles)に自前でコピーするのが一般的でした。おそらく自動化されている方もいるかもしれませんが、特有のスクリプト専用の更新ツールくらいかと思います。 Perlを知っている方ならばCPAN、rubyを知っている方ならばgemにあたる物がvimには無かったんです。 配布物が統一されていない為、無理だろうな...とも思ってました。 が、そこに登場したのがVimana(Vim script manager)です。 Vimana(3)             User Contributed Perl Documentation            Vimana(3) NAME Vimana - Vim

    Big Sky :: Vim script manager「Vimana」が便利すぎる。
    palm3r
    palm3r 2010/02/05
  • Big Sky :: quickrun.vimでgoのコーディング効率が数倍になった件

    goを弄ってるといちいち8g(5g?)とか8l(5l?)とかでコンパイル、ビルドする手間が必要なんだけど、これってquickrun.vimの設定で便利になるんじゃないか?と思ったので設定した。 thincaさんバージョンのquickrun.vimを入れた後、vimrcで以下の様に記述する。 let g:quickrun_config = { \  'go': { \    'command': '8g', \    'exec': ['8g %s', '8l -o %s:p:r %s:p:r.8', '%s:p:r %a', 'rm -f %s:p:r'] \  } \} 環境によっては8g/8lを書き換える必要があります。 あとは拡張子goのファイルで<leader>r(mapleaderを設定してなければ\r)で、コンパイル、リンク、実行までやってくれて、まるでスクリプト言語を書いてい

    Big Sky :: quickrun.vimでgoのコーディング効率が数倍になった件
  • Big Sky :: C++で軽量Webサーバ書いた。

    書いたといっても結構前からあったのですが、いらん所を削ぎ落として軽量Webサーバとして仕立て上げました。 軽量とは言えど、CGIを使って結構色々動きます。 例えば、ソースアーカイブを解凍したらCGIがあって、apacheから見える場所にコピーして...とか面倒くさかったりしますよね。 おれは今すぐWebサーバを起動したいんだ!そして今いるディレクトリのファイルをWebサーバからサーブしたいんだー! って事ないですか?blogソフトウェアをダウンロードして今すぐ試したいけど、apacheインストールされてなかった...とか悲しすぎます。 今回紹介する"tinytinyhttpd"(tthttpd)はそんな、小さい様で大きな問題を解決出来るかもしれないソフトウェアです。 mattn's tinytinyhttpd at master - GitHub tiny tiny httpd http:

    Big Sky :: C++で軽量Webサーバ書いた。
  • Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

    kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl

    Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
  • Big Sky :: vimperator使いは、はてなブックマークツールバーを入れた後で...

    追記 vimperatorrcに追加するスクリプトを少し修正する必要があります。詳しくはココを参照。 こうするといいよ。 add to your .vimperatorrc javascript if (typeof hBookmark) liberator.loadScript('chrome://hatenabookmark/content/vimperator/plugin/hatenabookmark.js', {__proto__: this}); javascript if (typeof hBookmark != 'undefined') liberator.loadScript('chrome://hatenabookmark/content/vimperator/plugin/hatenabookmark.js', {__proto__: this}); and try

    Big Sky :: vimperator使いは、はてなブックマークツールバーを入れた後で...
  • Big Sky :: Growl For Windowsがリリースされてアイコンが表示出来る様になった。

    これは嬉しい!Growl for Windowsの2.0 BETAがリリースされています。 これまではGoogle Codeにあるプロジェクトの物を使っていましたが、どうやらこれの正式版がリリース(とは言ってもBETAですが)されていました。 試しにこれまでのコードで試してみてもNetGrowlであれば問題なく動作しました。 そして気になっていたアイコンですが... 出るようになっています! ただ、MacのGrowlの様にMac専用のインタフェースを使っているのではなく、TCP/IP接続による独自プロトコルGNTPを使っています。 ちょっと調べた感じだと、簡単なソケット通信で実現出来そうだったので適当ですがコマンドラインプログラムを作ってみました。 /** * msvc: cl growlc.c * mingw32: gcc -o growlc.exe growlc.c -lws2_32

    Big Sky :: Growl For Windowsがリリースされてアイコンが表示出来る様になった。
  • Big Sky :: vimで化けたファイルを開く方法

    vimはファイルを開く際、iconvを使用してfileencodingsの順に変換を試し、正しく変換出来た物をfileencodingとして使用する仕組みになっています。 つまり化けたファイルだと、どのfileencodingsにもマッチせずencodingで指定されたエンコーディングでファイルが開かれステータス行に「変換失敗」と表示される事になります。 しかしながらそのファイルのエンコーディングが分かっている場合もあります。vimでは++encオプションを指定する事で指定のfileencodingでファイルを開く事が出来ます。 :e ++enc=utf-8 foo.txt この場合、vimはiconvで変換出来なかった文字を?という文字で置き換えてしまいます。 # echo あいうえお | iconv -f char -t utf-8 > utf8.txt # echo あいうえお |

    Big Sky :: vimで化けたファイルを開く方法
    palm3r
    palm3r 2009/03/19
  • Big Sky :: Gistyで始めるGist/Githubのススメ

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

    Big Sky :: Gistyで始めるGist/Githubのススメ
  • Big Sky :: SSHポートが通らなくてもgithub.comにpushする方法

    « ニコニコ動画をダウンロード出来るPerlモジュールWWW::NicoVideo::Downloadを試してみた。 | Main | ニコニコ動画をダウンロード出来るプログラムをC言語で作ってみた。 » 皆さん既に知ってたら御免なさい。ずっと知らなかったのでgithubには手を付けてませんでした。 githubは、cloneするとき # git clone git://github.com/yappo/konnitiwa.git の代わりに # git clone http://github.com/yappo/konnitiwa.git とgitをhttpにするとclone出来るのは知っていたのですが、pushはsshを使うのでport 22が開いてないとpush出来ない物と信じ込んでいました。 が、今日解決しました。以下私がWindowsで行った手順 Windowsじゃない人は最初の

    Big Sky :: SSHポートが通らなくてもgithub.comにpushする方法
  • 1