メモりメモる

ハトいエンジニアのアメリカ生活と技術のメモ。

[学生必見]githubのアカウントを無料で有料プランにアップグレードする方法

f:id:hatyone:20120124092310p:plain

現在持っているgithubのFreeプランのアカウントを、*.ac.jpのメールアドレスを使って、Micro ($7/month)にアップグレードすることが出来ました。


少し前に、「*.ac.jpのメールアドレスを持っていると、有料プランが使える」という話は聞いたことがあったのですが、既存アカウントをアップグレードすることが出来るんだろうか?と疑問でした。
新たにアカウントを登録して利用するのは、ちょっと面倒くさいような気もしていたのですが、id:ceekzさんから既存アカウントをアップグレード出来る!!!というお話を教えていただきました。


f:id:hatyone:20120124090501p:plain
現在使用しているアカウントでログインした状態でhttps://github.com/eduへアクセスし、"I'm a student"から申請フォームへと飛びます。
メールアドレスの欄には、学校から与えられている*.ac.jpのアドレスを記入します。


申請をしてから一日くらい待つと、このようにMicroプランへアップデートされた旨のメールが届きました。

// Please reply above this line
==================================================
From: Kami (GitHub Staff)
Subject: [Contact] Student account request

Awesome! We've upgraded you to a micro account, which will be free for the next two years. We don't enforce collaboration limits, so any group projects you may encounter can be hosted via your account.

Spread the word -- we love giving free Micro accounts to students! Send them to:
https://github.com/edu

==================================================
Reply with #ignore to stop receiving notifications for this discussion.



github上でプランを確認してみると、写真のようになっていました。

f:id:hatyone:20120124092036p:plain
"Active Coupon — $7.00 off each month for 2 years Coupon Active: Your next bill will get a $7.00 discount."とあるので、Microプランを利用する分には無料となりますが、その上位プランであるSmallプランも7ドル引きの5ドルで利用出来るようです。

家庭用ビール醸造キットで自作ビール作りに挑戦

f:id:hatyone:20111231082121j:plain
techchrunchの記事( 今年のクリスマス, 心癒されるローテクギフトはいかが? )が気になって購入しました。
Brooklyn Brew Shop


注文して一週間ほどで届きました。
1ガロン瓶、調合された麦、クレンザーや瓶の蓋などなど。
CHESTNUT BROWN AELという銘柄を注文しました。
Light Loast, English Malt, Mediam Bodiedなテイストだそうです。
f:id:hatyone:20111223073441j:plain


なんと……サーモメータが割れていました。
f:id:hatyone:20111223073017j:plain

アメリカの輸送は結構適当らしく、商品が壊れてることもよくあるようです。
お店の方に「温度計割れてましたー」とtwitterアカウントへリプライ&メールしてみました。
すると、「ホントゴメン!!君のサーモメータは、この旅を生き延びれなかったんだね!新しいのもう送ったからヨロシク!!」という返信をいただきました。
ノリが良く、対応も早く、なんかいい感じです。




そんなこんなで、醸造開始です。

2quart(500mペットボトル約4本分)の水を71℃になるまで加熱し、麦を投入
f:id:hatyone:20111224095628j:plain

68℃で15分混ぜる
f:id:hatyone:20111224100044j:plain

63℃から68℃をキープしながら1時間煮ながら、ホップを投入
f:id:hatyone:20111224103300j:plain

お店の人曰く、オートミールの要領で作ることが出来るそうです。
f:id:hatyone:20111224103624j:plain

ザルを使って漉して、4quartの水を追加
f:id:hatyone:20111224115236j:plain

1ガロン分なので、漉すのがなかなか大変です。
家の中に1ガロンの水を入れられる容器が無く、途方にくれていたところ、id:kutekenさんが演奏用のバケツを2つ貸してくれました!
f:id:hatyone:20111224120917j:plain

瓶へ注いで、冷やします。
f:id:hatyone:20111224142724j:plain

ドライイーストを投入して、瓶を振りまくります。
f:id:hatyone:20111224160737j:plain


冷暗所で2週間保存し、ビールになるそうです。
クレンザーを使って、しっかり除菌しながら作ることが大切だと思います。
日本では一般人のお酒作りが原則禁止されているので、貴重な体験が出来ました!
年明けがとても楽しみです。

日本において酒類製造免許がない状態でのアルコール分を1%以上含む酒類の製造は、酒税法により原則禁止されている。これに違反し、製造した者は酒税法第54条により10年以下の懲役又は100万円以下の罰金が科せられると同時に、製造された酒類、酒母、もろみ、原料、副産物、機械、器具又は容器を所有者の如何に関わらず没収される。免許を交付される為には酒類の一定量の製造が必要となる。具体的には清酒やビールなどの場合、60キロリットル以上、ウイスキーや果実酒などの場合、6キロリットル以上であり、個人が家庭で製造することは事実上不可能である。

http://ja.wikipedia.org/wiki/密造酒

自分自身コンテンツ化生活。VISAカードの履歴をTwitterに流してみた。

シリコンバレーでインターンをはじめて、2週間くらい経ちました。
こちらで生活していると、食事、買い物、色々なモノをクレジットカードで決済してしまう方が楽ということがわかりました。
しかし、使っている感覚を鈍らせてくれるのがクレジットカードの怖いところ。
お金を使いすぎてしまうことが心配でした。

そこで、VISAのギフトカードを買ってみました!
f:id:hatyone:20111230140236j:plain

  • Gift Cardとは

クレジットカード会社から発行されていて、クレジットカードのように使用出来るプリペイドカード。
VISAやアメリカンエクスプレスなど、様々なクレジットカード会社のカードがあります。
スーパーマーケットや薬局に売っていて、50〜500ドルなど入金したい分と手数料(アクティベーション・フィー)をレジで支払います。
購入したギフトカードに対して、後から追加入金したい場合はソーシャルセキュリティーナンバーが必要になるので少し大変です。


このクレジットカード。気軽にオンラインから利用履歴を見ることができます。
f:id:hatyone:20111230142437p:plain


そこで、クレジットカードの買い物履歴をツイートするスクリプトを書いてみました。
買い物した内容や価格がツイートされるので、無駄遣いを抑制することが出来るかもしれません。

f:id:hatyone:20111230144327p:plain


流れとしては、こんな感じです。

  • visaのサイトへログイン
  • クレジットカード情報をスクレイピング
  • 情報をjsonで取得
  • twitterで認証
  • ツイート


hatone/visatter -GitHub

use strict;
use warnings;
use utf8;

use HTTP::Cookies;
use HTTP::Request::Common;
use LWP::UserAgent;
use JSON::XS;
use Data::Dumper;
use Net::Twitter;
use Encode;

#クレジットカードの情報
my $card_number = "hogehoge";
my $security_code = "hogehoge";
my $formdata = {
    'CardNumber'    => $card_number,
    'SecurityCode'   => $security_code,
    'Last4OfPhone'    => 'hogehoge',
};

#twitterのauth情報
my $consumer_key = 'hoge';
my $consumer_key_secret = 'hoge';
my $access_token = 'hoge';
my $access_token_secret ='hoge';

my $ua = new LWP::UserAgent;
#fileopen(read)
my $file = 'visatter';
open(LOG, "<$file") or die "$!";
my $line = <LOG>;
close(LOG);
my $response = $ua->request(
    HTTP::Request::Common::POST(
        'https://mygift.giftcardmall.com/MyCard/',
        $formdata,
    )
);

# cookie_jar の生成、
# それから UAcookie (セッション情報)をセットする。
my $cookie_jar = HTTP::Cookies->new( autosave => 1 );
 $cookie_jar->extract_cookies( $response );

$ua->cookie_jar( $cookie_jar );

unless( $cookie_jar->as_string ){
    print "login failed.";
    exit;
}

#return $ua;
print "login ok\n";
my $res = $ua->post(
    "https://mygift.giftcardmall.com/TransactionHistory/_Index",
    {
        #none
    },
    "X-Requested-With" => "XMLHttpRequest"
);

my $res_json = decode_json($res->content);

#print $res_json->{data}[0]->{Description};
my $min_balance = $line;
foreach my $transaction (@{$res_json->{data}}){
    my $d = $transaction->{POSDate};
    $d =~ s/T/-/;
    $d =~ s/\./-/;
    my @sd = split(/-/,$d);

    my $res_s = "はとねが ".$transaction->{Description}.", ".$transaction->{MerchantCity}." ".$transaction->{MerchantState}." で ".$transaction->{Amount}." を".$transaction->{Type}."しました。"." #はとったー\n";

    $res_s =~ s/<.*>-//;
    $res_s =~ s/<\/.*>//;
    print encode('utf-8', $res_s);
   
    my $balance = $transaction->{Balance} || 0;
    $balance =~ s/\$//;
    if( (int($line) > int($balance)))
    {

        my $nt = Net::Twitter ->new (
                    traits => ['API::REST' ,'OAuth'],
                    consumer_key => $consumer_key,
                    consumer_secret => $consumer_key_secret,
                                                );
        $nt -> access_token($access_token);
        $nt -> access_token_secret($access_token_secret);
        if(int($balance) < int($min_balance)){
            $min_balance = $balance;
        }
        print "tweet!\n";
       
        my $res = $nt->update({status => $res_s });
   
    }

}
open(LOG, ">$file") or die "$!";
print LOG $min_balance;
close(LOG);
 
print "\n";