2014/06/03


元ネタ
「:」を引数の名前と型の間に入れられるようしたりにする魔改造 - moriyoshiの日記

とある言語が func halfOpenRangeLength(start: Int, end: Int) -> Int { return end - start } println (halfOpe...

http://moriyoshi.hatenablog.com/entry/2014/06/03/114845
Go のソースを落としてきて
diff -r fde405c62fca src/cmd/gc/lex.c
--- a/src/cmd/gc/lex.c  Tue Jun 03 11:44:17 2014 +0900
+++ b/src/cmd/gc/lex.c  Tue Jun 03 12:49:01 2014 +0900
@@ -1308,6 +1308,11 @@
        if(c >= Runeself) {
            ungetc(c);
            rune = getr();
+           if (rune == 0x261c) {
+               c = LCOMM;
+               goto lx;
+           }
+
            // 0xb7 · is used for internal names
            if(!isalpharune(rune) && !isdigitrune(rune) && (importpkg == nil || rune != 0xb7))
                yyerror("invalid identifier character U+%04x", rune);
を当てて
$ (cd src/cmd/gc && rm y.tab.h && make)
とする。
package main

import (
    "fmt"
)

func main() {
    鼻 := make(chan string)
    go func() {
        鼻 ☜ "ハナクソ"
    }()

    fmt.Println(☜鼻)
}
$ go run test.go
ハナクソ
どーん

2014/05/29


どうしても高速なWeb サーバが書きたくなったので joyent の libuvhttp-parser (nodejs が内部で使っているライブラリ)を使ってWeb サーバを書いてみた。
mattn/http-server - GitHub
https://github.com/mattn/http-server
I/O は全て非同期で行いブロッキングしない作りとしました。これで絶対速くなるとは言わないけど、少なくともスケールはするんじゃないかと思います。
Date ヘッダとか、65536 バイト以上の POST ペイロードとか色々省いてるのでツッコミビリディ高いですが、ひとまず GET でファイルのサーブが出来る状態にはしたのでベンチマークを取ってみました。

# nginx
$ ab -k -c 10 -n 10000 http://127.0.0.1/

# http-server
$ ab -k -c 10 -n 10000 http://127.0.0.1:7000/
Core i5/3GHz Ubuntu 14.04

5回程計測した平均で nginx が 25000req/sec、http-server が 24500req/sec でした。ほぼ互角までは来たのかなーと思います。
現状キャッシュなんかは考えてないので、純粋に非同期に拘っただけのコードになっています。

ちなみに mruby-uvmruby-http で書いたWebサーバはLinux で 9000req/sec、Windows(Core i5/3GHz)で 5000req/sec くらいしか出ませんでしたが、全てC言語で書いたこのサーバだと Linux 24500req/sec、Windows でも 15000req/sec は出ます。

研究材料として使って行こうと思います。

2014/05/27


お前は何を言っているんだ
いつでもどこでも Emacsから :help する - Life is very short

[vim][emacs] いつでもどこでも Emacsから :help する [coffee-mode][emacs] coffee-mode 0.5.2 released [WIP][emacs][...

http://d.hatena.ne.jp/syohex/20140527/1401188929
いつでもどこでも :help する - Vim :help

...

http://vim-help-jp.herokuapp.com/
Emacs から Vim Help を :help で検索できるのに、Vim から出来ないなんて!出来るべきだろ!

リポジトリ
mattn/ctrlp-vimhelpjp - GitHub
https://github.com/mattn/ctrlp-vimhelpjp
CtrlP で検索出来ます。コマンド名は「:VimHelpJp」です。引数で直接ヘルプを参照出来ますし、コマンドライン補完出来ます。
vimhelpjp1
Vim Help Jp のヘルプが見れます。
vimhelpjp2