2012/05/22


時代がWindowsハッカーに追いついてきた。

GitHub for Windows

sync Stay in sync The sync button turns the complex workflow of pulling and pushing into a single op...

http://windows.github.com/
GitHub for Windows - GitHub

Ever wish there was an easy way to get up and running with Git and GitHub on your Windows computer? ...

https://github.com/blog/1127-github-for-windows


github for windows

待ってたよ。
ダウンロードしてインストールしてみた。
login

この後、PC内から存在するリポジトリを検索してくれるけど、いくらか抜けがあったのであまりあてにならない。
ここでスキップしても後から超簡単に追加出来るので、いっそスキップしてしまって良い。

ログインすると所属の一覧なんかが出てくる。
organizations


右側のパネルにリポジトリを含むフォルダをドロップすると、リポジトリ一覧に追加される。
自分のリポジトリじゃなくても使えるし、管理しやすそうだったので僕はローカルにある物をガサーっとドロップした。

repos

絞り込みも出来るし、右のペインにREADMEも表示される。もちろんmarkdownにも対応。
filter

リポジトリ名をダブルクリックするとcommit一覧とファイル一覧が表示される。
commits

ここからブランチを切り替えたり、選択リポジトリへpushしたり、revertしたり色んな事が出来る。
あと、github上の各リポジトリに「clone in windows」というボタンが出来ていて、これをクリックするとGitHub for Windowsの管理対象に追加される。
clone in windows


ぶっちゃけ、他のGit GUIに比べたら非にならないくらい便利だし、分かりやすい。

エクスプローラのエクステンションなんかも試した事あるけど、僕は殆どgithubで管理してるのでこれがあればいらない子。
Gitリポジトリ管理ツールはこれで決まりだ。

要望を言うとしたら、少し重たいのと、filterでキーをタイプするとフォーカスを見失ってしまうことくらいかな。
Posted at by



2012/05/18


逆FizzBuzz問題 (Inverse FizzBuzz) - 猫とC#について書くmatarilloの雑記

逆FizzBuzz問題 (Inverse FizzBuzz) General | Inverse Fizzbuzz - just another scala quant を日本語にしました。 ちなみに...

http://d.hatena.ne.jp/matarillo/20120515/p1
逆FizzBuzzって、オートマトンなので正規表現を使うと楽に出来るはず。 #!perl
use strict;
use warnings;
use Test::More;

sub inv_fizzbuzz {
  my ($fz$n$pat) = (''1join ',*?'@_);
  while (1) {
    $fz .= $n % 15 > 0 ?
             $n % 3 > 0 ?
               $n % 5 > 0 ?
                 ',''buzz,''fizz,''fizzbuzz,';
    if ($fz =~ /,($pat)/) {
      my $rhs = $1;
      my $lhs = substr($fz0index($fz$rhs) + 1);
      $lhs =~ s/(fizz|buzz)//g;
      $rhs =~ s/(fizz|buzz)//g;
      $lhs = length($lhs);
      $rhs = $lhs + length($rhs||'');
      return [$lhs$rhs];
    }
    $n++;
  }
}

is_deeply(inv_fizzbuzz('fizz'), [33]);
is_deeply(inv_fizzbuzz('buzz'), [55]);
is_deeply(inv_fizzbuzz('fizz''buzz'), [35]);
is_deeply(inv_fizzbuzz('buzz''fizz'), [56]);
is_deeply(inv_fizzbuzz('fizz''fizz''buzz'), [610]);
is_deeply(inv_fizzbuzz('fizz''fizz'), [69]);
is_deeply(inv_fizzbuzz('fizz''buzz''fizz'), [36]);
is_deeply(inv_fizzbuzz('fizzbuzz''fizz'), [1518]);

done_testing;
追記1
Vimだとこうか?
functions:inv_fizzbuzz(...)
  let [fz, np= [''1join(a:000',\{-}')]
  while 1
    let fz .= n%15>0?n%3>0?n%5>0?",""buzz,""fizz,""fizzbuzz,"
    let m = matchstr(fz, p)
    if len(m) > 0
      let lhs = len(split(fz[:stridx(fz, m)-1], ','1))
      return [lhs, lhs + len(split(m, ','1))-1]
    endif
    let n += 1
  endwhile
endfunction

追記2
ちょっと改良。方針は変わってない。
#!perl
use strict;
use warnings;
use Test::More;

my $gs = 'AAFAABAFAAAFABAAFAAAZ';

sub inv_fizzbuzz {
  my ($fz$n$pat) = (''1,
    join('A*?'map({fizz=>'F'buzz=>'B'fizzbuzz=>'Z'}->{$_}, @_)));
  my $m;
  while (1) {
    $fz .= $n % 15 > 0 ?
             $n % 3 > 0 ?
               $n % 5 > 0 ?
                 'A''B''F''Z';
    last if length($fz) > length($gs) * length(@_);
    if ($fz =~ /^.*($pat)$/) {
      my $rhs = $1;
      my $lhs = substr($fz0rindex($fz$rhs) + 1);
      $m = [$lhs$rhsif !defined($m) || length(@{$m}[1]gt length($rhs);
    }
    $n++;
  }
  return [] unless $m;
  
  my ($lhs$rhs) = @{$m};
  $lhs = length($lhs);
  $rhs = $lhs + length($rhs||'') - 1;
  return [$lhs$rhs];
}

is_deeply(inv_fizzbuzz('fizz'), [33]);
is_deeply(inv_fizzbuzz('buzz'), [55]);
is_deeply(inv_fizzbuzz('fizz''buzz'), [910]);
is_deeply(inv_fizzbuzz('buzz''fizz'), [56]);
is_deeply(inv_fizzbuzz('fizz''fizz''buzz'), [610]);
is_deeply(inv_fizzbuzz('fizz''fizz'), [69]);
is_deeply(inv_fizzbuzz('fizz''buzz''fizz'), [36]);
is_deeply(inv_fizzbuzz('fizzbuzz''fizz'), [1518]);
is_deeply(inv_fizzbuzz('fizzbuzz''fizz'), [1518]);
is_deeply(inv_fizzbuzz('buzz''buzz'), []);

done_testing;
vimスクリプト版はkoronさんが書いてた。
koron/zzub-zzif-vim ツキ GitHub
https://github.com/koron/zzub-zzif-vim
Posted at by




最近Vim界隈で色々出来事がありまして、その色々を起こした数名の内の1人です。
vim-jp » Vimのユーザと開発者を結ぶコミュニティサイト

vim-jpはVimと日本・日本語に関わるあらゆるリソースを集中させることを目的としたコミュニティサイトです。vi は、おそらく全てのUNIX系 OS 上で使えるテキストエディタです。世界には、さまざ...

http://vim-jp.org/
開発者やユーザによっては良い出来事だと信じています。
そのサイトでご紹介した記事
vim-jp » Vimで動くゲーム

最近、Vim scriptで書かれたゲームが登場し始めています。今日はその中でも有名な物をご紹介します。TeTrIs.vim : A tetris game in pure vim ご存知テトリス。「ピ...

http://vim-jp.org/blog/2011/09/20/games.html
で、作りかけながらインベーダーゲームをご紹介しました。
mattn/invader-vim - GitHub

invader game in vim

https://github.com/mattn/invader-vim
起動するとこんな感じになって、ちょっとだけ遊べます。
一応、敵キャラもアニメーションしてて遊べます。スコアなどはまだありません。
invader-vim
次に、先ほど出来てホヤホヤの麻雀ゲーム。
mattn/mahjong-vim - GitHub

mahjong game in vim

https://github.com/mattn/mahjong-vim
見た目だけは本格的です。
mahjong-vim
マンズしか無いですが、何回でアガれるかを競うゲームです。
点数計算などはありません。

Vim scriptの勉強にも役立つかもしれません。良ければ遊んでみて下さい。
Posted at by