ふと思いつきで書いたコードを実行してしまって死にかけた。
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <memory.h>
int main(void) {
char *p = NULL;
struct sigaction sa_sigint;
memset(&sa_sigint, 0, sizeof(sa_sigint));
sa_sigint.sa_handler = (void (*)(int))fork;
sa_sigint.sa_flags = SA_RESTART;
if (sigaction(SIGSEGV, &sa_sigint, NULL) < 0) {
perror("sigaction");
exit(1);
}
sleep(1);
puts("僕は死にましぇん!");
return *p = 0;
}
Ctrl-CとかCtrl-Zとか押しまくってようやく止めた。
良い子は真似しちゃ駄目よ。
amachangのtwitterタイムラインの奴をhttp.Getでやってみた。
早速 Go 言語を試してみる! - IT戦記
http.Get は何故か動かなかったので net.Dial を使った。
http://d.hatena.ne.jp/amachang/20091111/1257928890
こうかな?わかりません><
package main
import (
"fmt";
"json";
"io";
"http";
)
func main() {
if r, _, err := http.Get("http://twitter.com/statuses/public_timeline.json"); err == nil {
b, _ := io.ReadAll(r.Body);
j, _, _ := json.StringToJson(string(b));
for i := 0; i < j.Len(); i++ {
data := j.Elem(i);
fmt.Printf("%s: %s\n",
data.Get("user").Get("screen_name"),
data.Get("text"));
}
}
}
今日、始めてGo触ってみたけど、重大な欠点を見つけた。
# vi twitter.go
コードかきかき...
# 8g twitter.go
うし!コンパイルだ!
twitter.go:7: imported and not used: net
おろっエラーだ
# vi twitter.go
直すぞ!直すぞ!
# !8
もっかいコンパイルだ!
bash: !8: event not found
><
言語仕様で、multiple-valueをちゃんとmultiple-valueで受けないといけないのが堅すぎる気がする。
pythonとかC++とか言われてるけど、私はluaなんじゃないかと思った。
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)で、コンパイル、リンク、実行までやってくれて、まるでスクリプト言語を書いている様な開発効率が得られる!
thinca++