2009/11/05


できなくはない...かな。
Vim-users.jp - Hack #98: VimScriptで疑似乱数を生成する

VimScriptには、残念ながら疑似乱数を生成するための関数が存在しません。

reltimestr()やreltime()はVimが+reltimeでコンパイルされていないと動作しません。

http://vim-users.jp/2009/11/hack98/
+reltimeでなくても乱数を発生させられる。しかも擬似乱数じゃなく。
:call libcallnr("", "srand", localtime())
:echo libcallnr("", "rand", -1)
-1はダミーね
Windowsの場合は :call libcallnr("libcmt.dll", "srand", localtime())
:echo libcallnr("libcmt.dll", "rand", -1)
とか :call libcallnr("msvcrt.dll", "srand", localtime())
:echo libcallnr("msvcrt.dll", "rand", -1)
とかで動くと思う。ためしてない。
Posted at by



2009/10/30


最近、kazuhoさんが作った「C」で遊んでいるのですが(いまごろかい!)、これWindowsでも使いたいなーなんて思ったのでポーティングしてみた。
C - a pseudo-interpreter of the C programming language

Perl や Ruby では、ワンライナーで処理が書けて便利です。でも、なぜか C では書くことができません。仕事上の都合で、小さな処理を C 言語で書く必要があったので、ワンライナーも書くことのできる C 言語のインタプリタ(?)を作ってみました。

http://labs.cybozu.co.jp/blog/kazuho/archives/2006/01/large_c.php

目指せバイナリアン (C-0.06)

C-0.06 をリリースします。

http://labs.cybozu.co.jp/blog/kazuho/archives/2006/05/c-0_06.php
これがあるとコマンドプロンプトから C:¥>C
puts("kazuho");
^D
kazuho

C:¥>
こんな事が出来たり、 C:¥>C -e "printf("""hello world¥n""");
hello world

C:¥>
こんな事が出来たりします。コマンドプロンプトなのでクォートのエスケープ2重打ちがめんどくさいですが(実際にはクオートの中のクォートなので3重になります)、なれれば簡単ですし昔なつかしnyacusなんかを使えばシングルクォートでも行けるはずです。(cygwin?何それ)
コンパイルや実行にはmingw32が必要です。
コンパイルは以下の様に簡単。
C:¥C-0.06¥>gcc -o C.exe C.c
mingw32が出力するa.exeに対応しています。ちょっと弄ればMSVCにも対応出来るんじゃないかな。

kazuhoさんに感謝しつつ、Version画面に「Win32 Porting」として名前を入れさせて頂いています。
mattn's C-win32 at master - GitHub

win32 port of C(a pseudo-interpreter of the C programming language)

http://github.com/mattn/C-win32
Windowsユーザでコマンドプロンプト使いで、mingw32が入っててC言語をこよなく愛する皆さんにどうぞ...。

対象範囲せま!
Posted at by




昨日IRCでsecurity guyの人と話してて、twitterに新しく導入された機能「list」には少し不満があるという話をしてた。
ざっと上げると
  • 個人単位のlistであり、追加するにはそのlistの持ち主でしか追加出来ない。
  • UIが痛い。listについての画面遷移、追加削除がやりにくい。
  • 他人のlistを自分のlistにimportしたいが出来ない。
こんな感じ。まだまだbetaだからこれから良くなるのかもしれないけど、さすがにimportは欲しいよね...って事で3分程度で作ってみた。
APIは昨日調べてなんとなく分かってたので、だいぶ楽に作れた。
#!/usr/bin/env perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON;
use Config::Pit;

# のび太の物は俺の物
my $copy_from = $ARGV[0] || 'hasegawayosuke/javascript';
# 俺の物は俺の物
my $copy_to = $ARGV[1] || 'mattn_jp/javascripter';

my $config = pit_get("twitter.com", requires => {
    username => 'username in twitetr.com',
    password => 'password in twitetr.com',
});

my $ua = new LWP::UserAgent;
$ua->env_proxy;
$ua->credentials(
    "twitter.com:80", "Twitter API",
    $config->{username} => $config->{password}
);
my $json = from_json($ua->get("http://twitter.com/$copy_from/members.json")->decoded_content);

for (@{$json->{users}}) {
    $ua->post("http://twitter.com/$copy_to/members.json", {id => $_->{id}});
}
使い方は # perl copy-to-mylist-from-others.pl hasegawayosuke/javascript mattn_jp/javascripter
こんな感じ。実行するときにはジャイアンのテーマを脳内再生しながら実行して下さい。
Posted at by