2009/11/19


ふと思いつきで書いたコードを実行してしまって死にかけた。
#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とか押しまくってようやく止めた。
良い子は真似しちゃ駄目よ。
Posted at by



2009/11/14


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なんじゃないかと思った。
Posted at by



2009/11/13


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++
Posted at by