東京にやってきた。

実際には埼玉なのでそんなに東京って感じではない。


今日でだいたい3日目ぐらいだけど、まぁ前に一人暮らしはしてたから慣れてるのは慣れてるし、生活に必要なものもだいたいそろえた。そもそも、新居というわけでもなく、前に住んでたここの住人(先輩)がちょっと1年ぐらい居なくなるからそのスキマの期間部屋を借りるという感じ。だから、布団とかその辺はそろってる。だから僕がそろえたのは洗面用具とか・・・まぁ、その辺の日用品をそろえただけ。
東京に来た目的は色々あるけど、とりあえずは『ひとりになりたかった』が一番かも。たとえ家族で過ごすにしても、ご飯を食べるとか家事をしたりといわゆる家族団らんの時間とか家にいる時に必要な家事ってのが存在するし、僕はその時間に反して自分のことをするのが苦手だったりする。風来坊だから家事はやらなきゃならないし、なんだかんだで洗濯とか洗い物は膨大だ。そういう時間を過ごすのはやっぱり無駄な気がするし、何のために学校とか仕事をやめたのかがわからなくなってきたところだ。
第二に、今がチャンスだと感じたから。ちょうどよく東京にいる知り合いが僕と仕事をしたい、という話があったり、まぁそのほかにも色々とやることが東京にあったから。その上で先輩がこの家を空けるというから。
僕がやろうとしてる仕事先の方と先輩は全然関係ないし、偶然にも東京にくる理由を僕は得た訳だ
もちろん岡山にいてもよかったのだが、岡山に居てもできる事は埼玉に来ても出来る。


とりあえず、1年はこの下宿でがんばってみてどうなるかを見極める。失敗したら、まぁ、そのときはそのときに。前には進まないと失敗も出来ない。

根無し草になろう

来週の日曜日から東京に(正確には埼玉県和光市。ぎり東京だよ。ぎり。)いくので片付けとかしてます。

津山から岡山に帰ってくる時も片付けしてモノを沢山捨てたし、今回も色々捨てます。
それからバックパックに荷物を詰めるので基本的に服とパソコン以外は捨てる予定です。
漫画も東京トイボックス以外は捨てたり売ります。欲しい人には譲ります
音楽CDもデータ化してあったら、捨てたり売ったりします。欲しい人にも譲ります
DVDもデータ化してあったら捨てたり売ったりします以下同文
ゲームも以下同文
過剰な服IKDBN。

ベースは結構思い入れがあるので捨てずにおいていきます。
エフェクターとかミキサーは今後使う予定があるのでこれらも持っておきます。

本で困るのは技術書は結構有用なんだけど捨てるのにはちょっと勿体ないけど中身は取っておきたいのでScanSnapとか買ってデータ化しようと思います。
PS3とか今使ってるEIZO(HD2452W)の液晶も多分使わないのでセットで12万ぐらいで買い取ってくれそうな人探してます。全部箱ありです。PS3に至ってはコントローラー三つついてます。1個動作不良しますけど。

こんな感じに、実家へのしがらみを断ち切り、バックパックに服とMBA(とMBP)を詰め込んで東京に向かいます。
いずれMBPも手放して、バックパックプログラマーにでもなろうかな

そんな感じです。生きてました。

よるほーbotを改良した。主に認証関係を

昔、よるほーbotを作成したんですが、その時はまだどこにでも書いてありそうなコードを使ってたのでもうちょっとレベルアップした形で書いてみました。

具体的に

具体的に何したのかっていうとConfig::Pitをしようしてユーザ名を隠したっていうことです。しょぼいとか言うな。なんかいろいろあってこの辺りで1週間ぐらい悩んでた。


ソース

#! /opt/local/bin/perl                                                                                                  
use strict;
use warnings;

use Net::Twitter;
use Config::Pit;
use encoding 'UTF-8', STDOUT => 'cp932';
#use YAML;

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

my $nt = Net::Twitter->new(
    traits  => [qw/API::REST/],
    %$config,
);

my $text = 'よるほー';
utf8::encode($text);
my $result = $nt->update($text);

実はこのコードを書く上でいろいろ環境を変えたせいで変なことになってます*1が特に気にしないで大丈夫です。


さて、コードを見ていきましょう。

お約束
use strict;
use warnings;

定番ですね。必ず入れましょう。某社に入社できなくなるので

モジュール
use Net::Twitter;
use Config::Pit;
use encoding 'UTF-8', STDOUT => 'cp932';
#use YAML;

行順で説明
Net::Twitterを使います。前回と同じです。
今回の目玉であるConfig::Pitです。あとで使い方を説明します。
エンコードを指定。
Net::Twitterを使う時はYAMLをつかうのがらくっぽそうです。今回はTLの内容を扱ったりすることがないのでコメントアウトしてます。

Config::Pit部分

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

pit_getとかpit_setとかあるっぽい。説明が逆になっちゃうけど、第一引数で呼び出したいアカウントを指定します。そのあとに必要な情報を呼び出す感じです。

アカウントとパスワードを登録してみる

Config::Pit::Setを使うよりもシェルをガコガコ叩く方が好きなのでシェルの方で説明するよ*2

$ ppit set twitter.com

とか叩くとエディタが起動します。
ちなみにppitってコマンドはConfig::Pitを入れたら入るぽい?
ちなみにエディタは環境変数の$EDITORに依存するらしいです。echo $EDITORとか叩いてみよう
あとはYAML形式で

"username": 'asoans'
"password": '貴様見ているな!!'

みたいな。適宜会わせて入力してください。
これで設定は終了です

以下のソースは前回と同じなので割愛です。Config::Pitの使い方を理解できたらいいの。
あとは前回設定したcronでがんがん動きますね!

番外編

さて、主な設定は済んだのですが、実は僕はこのコードを書く前にPerlのバージョンをあげたりCPANを入れ直してたりしていろいろおかしな事になってました。
順序的にはPerlを入れ直した後にCPANを入れ直したんですが、このときにモジュールの読み込みの設定とか、古いPerlを消してない*3のでPATHの書き方がおかしくてcronさんが参照するPerlがおかしかったりしました。
まぁようするにしょぼいミスに気がつかなかっただけです。前に書いたcrontabは

0 0 * * * perl /Users/asonas/Sites/twitter/twitter.pl

みたいだったんですが、これを

0 0 * * * /opt/local/bin/perl /Users/asonas/Sites/twitter/twitter.pl

とフルパス指定にしてやることで一切合切解決しました。cronさんの参照するPerlがおかしかっただけですね。

余談1

Perl関連でわかんないことがあったらperldocに聞いてみるのが一番早いですね。英語だけど、そんなに難しいことは書いてないのでさらっと読んでそれっぽいコードを参照すると一番解決にたどり着けます

余談2

今まで完全に無視してたんですけど、シェルさんが起動するたびに”You have new mail”とか言ってきててなんかのジョークかと思ってたんですが、調べてみるとホントにメールが来てて /var/mail以下にエラーログが溜まる様になってたんですね。始めて知りました。cronさんがこけてるのを知ったんですけど、エラーログを吐いてくれる場所がわからなくて四苦八苦してました。シェル系でエラーがでるとだいたい/var/mail以下にメールがたまるっぽいですね。catしてよんであげるといいですね。

*1:主にPerlの位置

*2:というか、本番コードにアカウント書かないために使うんだからシェルで隠匿するほうがよいよね。

*3:/usr/bin以下のPerlと/opt/local/bin以下のPerlがあったのね

さくらのレンタルサーバにGitを入れたくて

ちょっと前まで自宅サーバを組んでそこにリポジトリを立ててソースコードの管理をしていたんだけど、自宅サーバっていう割にはMAMPをそのままつっこんで無理矢理運用してたりしててさすがにセキュア的にどーよってことでこの前落としました。電気代もアレなので。
いちおうさくらインターネットレンタルサーバを借りている身なのでそこにgitをぶち込んでソースコードの管理をしようかなとか思いました。
まずはWebで検索します。「さくら git」みたいな
するとサクラのレンタルサーバーでgitを使う - 本当は怖い情報科学みたいなサイトがヒットします。書いてあることそのまま実行します。あ、gitのバージョンだけは最新版にしました。たしか1.7.2.1。
で、ローカルのマシンに戻ってきてgit cloneとか叩くと以下のように怒られます。

$ git clone ssh://userName@Address.net/home/userName/repos.git/ repos
Initialized empty Git repository in /Users/fuji_seal/git/repos/.git/
userName@Address.net's password: 
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

なんか"git-upload-pack"がねーよボケ。とか言われたみたいです。それじゃまたGoogle先生に聞いてみましょう。
「git ヘルプ」「git git-upload-pack」
するとMac を git の共有レポジトリにする -- BONNOH FRACTION 14的なサイトを見つけて、そこで始めて

git clone -h

っていうオプションを見つけます。さっそく叩いてみました。

-u, --upload-pack <path>
    path to git-upload-pack on the remote

まーなんかよくわかんないけど、git clone -uでリモート先(さくら鯖のことですね!)のgit-upload-packのパスを指定できるらしい。でも、さっきのリンク先を読んでたりすると、毎回設定しないとダメっぽいですね。めんどっちぃ・・・。
現状を確認するために

$ which git-upload-pack

とか叩いてみたけど、パスは通ってて"/home/userName/local/bin"には入ってるよ!って返してくれる。
つまり、sshで繋げた時になぜかgit-upload-packがないって言われる状況ですね!解決するにはsshでつないだ時にどこのパスを参照しているのかを調べてみた。
参考にしたのはこちら -> http://d.hatena.ne.jp/p4life/20090812/1250079461
さっそくコマンドを叩いてみよう

$ ssh userNama@Address.net \$echo #バックスラッシュが必要だよ!!

するとssh接続したときに参照されるパスの一覧がでてくるよ!うちの場合だとユーザが扱えるディレクトリは/home/userName/binだったよ!
これは~/.ssh/environmentになんやかんや記述すれば変更できそうな気がするんだけど、めんどくさいから/home/userName/binにgit-upload-packとかをcpコマンドをつかってコピーしてみるよ!!

$ cp /home/userName/local/bin/git-upload-pack /home/userName/bin

とかね!!
これでgit cloneしても「コマンドねーよ!」とか言われなくなった!やった!!



とりあえずはここまで。まだもう少しエラーを吐くけどこれはサーバとかよりも僕のgitの使い方が悪そうな気配。

ブログを書こう

ブログを書こうと思いました。久しぶりに。
ブログを書く上でいくつか決めたりしました。

決めたことはこんだけです。他はあんまり守らないです。クソなつぶやきはTwitterでやります。真面目な記事ははてなでやります。紳士な俺はmixiにいます。リアルな俺はどこかにいます。

近況

生きてます(Twitter参照)


最近やったことは

  • racho触ってみた
  • Python再開
  • Perl挫折
  • PHP再開
  • JS休業
  • 海外旅行いった
  • あとプログラミング関連色々


絶賛仕事とかする人になったのでブログとか書く余裕が無くなりますね。言い訳ですね。言い訳ついでにエレガント(笑)なコードも書いてないのでなお書く理由が無くなりますね。


あと変わったことと言えば体重がどんどん落ちてます。やったね。


なんかまともなことすら書けないのでしばらく潜ります。がんばれおれ。