タグ

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

  • 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 :: 問題は数字のロケール表記だけじゃないんだぜ?

    Java - String.format("%d", i)で数字が出てくると思ってたら死んだ話 - Qiita http://qiita.com/tnj/items/022b906ac5435a429369 数字がロケール文字になったり、toLowerCase() や toUpperCase() の結果がロケール文字になったりするだけじゃないんだぜ。 import java.util.Locale; public class Foo { public static void main(String[] args) { Locale.setDefault(new Locale("pt", "BR")); String csv = String.format("%s,%f", "hello", 1.23); System.out.println(csv); } } とあるヨーロッパ南米のロケー

    Big Sky :: 問題は数字のロケール表記だけじゃないんだぜ?
    KinjouJ
    KinjouJ 2015/08/01
  • Big Sky :: プログラミング言語の作り方

    Big Sky :: プログラミング言語の作り方(2) Big Sky :: プログラミング言語の作り方(3) Big Sky :: プログラミング言語の作り方(4) Big Sky :: プログラミング言語の作り方(5) githubtrending を見てたら面白い物を見つけた。 orangeduck/BuildYourOwnLisp - GitHub Learn C and build your own programming language in under 1000 lines of code! https://github.com/orangeduck/BuildYourOwnLisp 手順にそってC言語で lisp を実装する手順を見せるという物なのだが、その教材の一部としてパーサのコードが含まれている。 このパーサ部分だけ別のプロジェクトとして外出しされている。 o

    Big Sky :: プログラミング言語の作り方
    KinjouJ
    KinjouJ 2014/04/13
  • Big Sky :: bundle exec がウザい

    ruby のアプリを動かす時にいちいち bundle exec って書くのがダルい。書きたくない。でもシステムに入ってたり違うバージョンの物が動いて変な動作をされても困る。 どうにかしてこのダルさを解消できないかと考えてみた。 まず rbenv を使ってるなら gem でインストールされるコマンドは必ずシェルのラッパとして生成され、そこから物が起動する様になっている。例えば rails であれば以下の様なシェルになっている。 #!/usr/bin/env bash set -e [ -n "$RBENV_DEBUG" ] && set -x program="${0##*/}" if [ "$program" = "ruby" ]; then for arg; do case "$arg" in -e* | -- ) break ;; */* ) if [ -f "$arg" ]; th

    Big Sky :: bundle exec がウザい
    KinjouJ
    KinjouJ 2014/03/14
  • Big Sky :: C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。

    前回は JSMN というのを試したけど、今度も matsuu さんのブクマから。。。 parson Lightweight json parser and reader written in C. http://kgabis.github.com/parson/ 特徴は 軽い (2ファイルだけ) 単純なAPI ドット記法による json 値のアドレッシング (C言語の構造体やOO言語のオブジェクトに似た感じ。例: "objectA.objectB.value") C89 コンパティブル テストスーツ 前回の JSMN とは違い、メモリを動的に確保するタイプ。DOM の様にルートノードから探索を始め、最終的にルートノードを指定してメモリを開放する。 今回もtwitterのタイムラインをパースしよう。 #include <assert.h> #include <string.h> #inclu

    Big Sky :: C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。
    KinjouJ
    KinjouJ 2012/11/17
  • Big Sky :: Net::DBusで作業をあとにまわす

    TheSchwartzも良いのですが、MySQLが必要だったりポーリングのタイムラグがあったりと、要件に合わない場合というのも出て来たりします。こんな時はどうするか、解決策の一つにメッセージバスがあります。 メッセージバスとして一般的に有名なのが、DBusです。Linux等では数多くのアプリケーションが採用しており、GNOMEもBonoboからの移行を表明、KDE4でも採用される様です。ちなみに私が愛用している軽量デスクトップROXは当初に採用しており、ちょっとしたpythonのコードでリッチなアプリケーション間通信が実現出来ています。他にも既に色々なプロジェクトDBusが使われています。 さて今日はNet::DBusを使い、TheSchwartzと似たような事が出来ないかをWindows上でやってみようかと思います。 まず、DBusのWindows実装であるwinDBusをインストール

    Big Sky :: Net::DBusで作業をあとにまわす
  • Big Sky :: SQLite で twitter のタイムラインを select する。

    ちょっと前に PostgreSQL に関する記事を見た。最近 PostgreSQL がアツイらしい。 PostgreSQLに興味がある人向けにまとめてみた。|PostgreSQL|お仕事メモ|Pictnotes Q. FDWってなによ? A. FDW(Foreign Data Wrappe),外部データラッパっていうやつで、SQL/MED(Management of External Data)の規格の一つで簡単にいうと、PostgreSQLにQUERYを発行したら、あら不思議、外部の(たとえばMySQLとかCSV)データが取得できるという変態機能。 twitterAPIに変更あるらしいから今後はわからにけど、twitterのデータを取ってくるとかもできる。というかラッパーが用意されてる。(ちなみに使ってみたら楽しかったw) http://www.pictnotes.jp/memo/arc

    Big Sky :: SQLite で twitter のタイムラインを select する。
    KinjouJ
    KinjouJ 2012/09/18
  • Big Sky :: trie_tree書いてみた。

    trieなんたらが話題になってたのでなんとなく書いてみた。 ベンチとかはやってない。 404 Blog Not Found:Algorithm - 連想配列の実装としてのハッシュはオワコン? そのデータ構造は、君の魂を差し出すに足るものかい? 連想配列( Associative array )がコレクション( Collection )、すなわち数多のデータ構造をまとめるデータ構造としての覇... http://blog.livedoor.jp/dankogai/archives/51765855.html #include <stdio.h> #include <stdlib.h> typedef struct _trie { char c; unsigned int n; struct _trie** next; void* value; } trie; trie* trie_new()

    Big Sky :: trie_tree書いてみた。
  • 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短期集中講座
    KinjouJ
    KinjouJ 2011/12/03
  • Big Sky :: libuvを使ってみた。

    node.jsのスライドを見てて、プラットフォームの違いを吸収するnode.jsの核でもある非同期通信ライブラリuvを今日知ったので試してみた。 joyent/libuv - GitHub platform layer for node.js https://github.com/joyent/libuv libev/libeventをwindowsでもちゃんと使いたいという所から出てきたライブラリ。 #include <iostream> #include <uv/uv.h> int main() { int r; uv_tcp_t tcp; struct sockaddr_in server_addr; server_addr = uv_ip4_addr("127.0.0.1", 80); r = uv_tcp_init(uv_default_loop(), &tcp); uv_con

    Big Sky :: libuvを使ってみた。
    KinjouJ
    KinjouJ 2011/10/31
  • 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
  • 1