Search Result: とき

node.js+socket.ioでcodemirror editorを同時編集してみる

…ング的なものを作ったときは、textareaのvalueを定期的に全部送信してviewerに反映させていたけど、さすがに非効率な気がしたのローカルで変更があったときだけ差分を送るようにしてみた。 差分(diff)の抽出のためのjsライブラリは探してみたのだけどgoogle-diff-match-patchくらいしか見つからず。これはdiffを取ってpatchとして適用させたりできて便利なのだけど、どうも文字列と文字列の差分を取るもので、「何文字目を消して何文字目にコレを挿入す…

node.js+socket.io+oauth+SessionWebSocketでログイン付きチャットを作るメモ

…backで返って来たときはoauth_token, oauth_verifierを使って認証処理を行う、正しくユーザー情報が取得できればsessionにセットして他のページに飛ばしてやる、という流れです。 まとめ この2つを組み合わせて冒頭のサンプルを作りました。未ログインのユーザーはsocket.ioのsessionIdを、Twitterでログインしているユーザーはそのscreen_nameを使ってチャットに書き込めるようにしています。 チャットの仕組みは前々回書いた通り。…

node.js+socket.ioでライブコーディング的なものを作るメモ

…し、前回チェックしたときから変更されていればsocketにsendします。差分だけとりだして、とかやろうとすると面倒なのでとりあえず内容をすべて丸投げ。 "views/viewer.ejs"では <html> <head> <title>viewer</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"…

GAEのChannel APIを使ってみたメモ

…py)で動かしているときは1秒ごとにgetしまくっているみたい。本番環境にあげたらそんなことはなかった。web socketを使っているのか comet的なものなのかはよく調べてないので分からない。ブラウザによって切り替えたりしてくれてるのかな…?実装が悪いだけかもしれないけど、繋がっているはずなのにうまくデータがpushされてこなかったり、ということがあった。パフォーマンスはどんなもんなんだろう。node.jsとかが面白そうなので触ってみたいけど(まだ触れていない…)、これ…

28歳になりました

…間後忘れるので今伝えときます!RT @sugyan: アタリktkr!! 27歳の良き締めくくりになりました。ご馳走様でした!! @ 鎌倉どんぶりカフェ bowls http://instagr.am/p/gVwl/ Thu Dec 9 21:30:44 2010 from @hirafoo: @sugyan 脱げばいいt おめでとうございます! Thu Dec 9 18:40:21 2010 from @uupaa: @sugyan (ε・◇・)з おめおめ。3連休だね T…

ディレクトリごと間違って消してしまったときにsvnから復元するならcopyで

…リを削除しようとしたときに $ svn rm https://example.com/svn/branches/hoge/fuga/piyo -m 'delete piyo'とやるべきところを、指定するディレクトリを間違えて $ svn rm https://example.com/svn/branches/hoge -m 'delete piyo'と、branchまるごと消してしまった。 復元するのに、 $ svn co https://example.com/svn/br…

YAPC::Asia 2010 を終えて

…しさについて語ってるときは恥ずかしながら感動して泣きそうになりました 自分のトークについて Arkについても、wonderfl/jsdoitについても、「このテーマで発表する」という以外になにも決まっていなくて、前日に慌てて準備して内容を組み立てたわけですが、どちらも「自分が新しく作ったもの」とかではなく、いわゆる「先輩が作ったものを紹介する」という内容だったこともあり、「自分が話したいこと」より「聴きにくる人はどういうことに興味があって、どういう内容を話すのがいいんだろう?…

mapした結果がundefのものを除いた配列を得る

…efのやつを除きたい、というとき、今までずっと print "$_\n" for (grep { defined } map { $_->{key} } @arr); ってやってmap後のものをdefinedで篩にかけてた。けど print "$_\n" for (map { defined($_->{key}) ? $_->{key} : () } @arr); のようにundefのときに空の配列を返すようにするとそのぶんが除かれた配列が最終的に得られるようになるんですね。

svnで指定したディレクトリ以下を見てほしくない場合は"--depth"オプションを指定する

…mitしたい、というとき。 普通にコミットすると $ svn ci -m 'hogehoge' hoge Sending hoge Sending hoge/fuga Transmitting file data .とその下のファイルも一緒にcommitされてしまう。"--depth"オプションで"empty"を指定することで、これを回避できる。 $ svn st M hoge M hoge/fuga $ svn st --depth empty hoge M hoge $ …

beginとかautoとかでdetachする

…04にしたい、というときにbeginとかautoで package MyApp::Controller::Hoge; use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller' } sub begin :Private { my ($self, $c) = @_; $c->detach('/default'); } sub index :Path :Args(0) { my ($sel…

さくらレンタルサーバーで動くWebアプリをArkを使って作ってみた

…レクトされます。このとき、内部ではNet::Twitterのget_authorization_urlが呼ばれます。webアプリの場合は引数にcallbackを与えておかないといけません(Net::Twitter::Role::OAuthを参照)。callbackのURLは"/login"でなくても良いですが、どうせもう一度同じ処理をすることになるので、同じURLのままで良いと思います。 Twitterでの認証が完了し、callbackに戻ってきたときには、oauth_tok…

第6回 yokohama.pm & Perl Casual でライブコーディングに挑戦してみた

…と黙ってしまいそうなときとか、ここ説明足りないんじゃない?というところで的確に発言を挟んでいただいて、最高でした! ありがとうございます!! ライブコーディングは一人じゃなくて2人1組とかでやるのがイイな、と思いました。 というわけでperl-casualでどんなものが求められていたのかイマイチわかっていなかったのですが、とにかく『こんな内容でも気軽に前に出て喋ったり実演したりしていいんだよー』というのが示せたかなーと思っています。 「あんなヘボいライブコーディングより俺の方…

さくらのレンタルサーバーでArk+CGIのTwitterアプリを作る練習

…ら。 もうちょっとWebアプリ作成の練習のために色々機能を作ったりしてみようと思います。root権限無しのレンサバCGIでどこまでやれるのかも試してみたい。 エラーが起こったときにログを得る方法が分からないのでどうにかしたい。 とても参考にしたところ さくらインターネットのCGIでCatalystを動かす設定(完全版?) - LAPISLAZULI HILL#Catalyst - Catalystグループ ArkをCGIで動かすスクリプト(1) - Eorzea Lounge

ハッシュの初期化の注意点

…値を入れるようにするときに注意。 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $hashref = { hoge => 100, fuga => foo(), piyo => 300, }; print Dumper $hashref; sub foo { return 200; } これなら問題なく動くのだけど、ここでfoo()が複数要素を持つ配列を返すと… sub foo { return …

"cpanm -l"するとき"--no-uninst-shadows"で元々あるモジュールが消えないようにする

※追記しました! 最新版(1.0005以降)では起こりません とっても便利なcpanm。 "-l"オプションを使うと、local::libのように指定した任意のPATHにインストールできる。 けど気をつけないといけないことに、これをやると もともと入っていたモジュールが消えちゃったりする。 例えばperlbrewでデフォルトの場所にモジュールをインストールしていて $ perl -MV=AnyEvent AnyEvent /Users/sugyan/perl5/perlbre…

標準エラー出力の表示色を変更する

Zsh

…出力の加工"より グローバルエイリアスとプロセス置換の記法はzsh独特のものなのかな。そのへんの解説は本を読むと良く分かる、と思う。 function redrev() { perl -pe 's/^/\e[41m/ && s/$/\e[m/'; } alias -g RED='2> >(redrev)' とだけ設定しておけば、コマンドの任意の位置で"RED"指定するだけで標準エラー出力の表示を変更できる。 こんなかんじ。エラーを見逃さずにちゃんと見たいときとかに使えるかも。

zshの本でお勉強 第2章 2

Zsh

…$ dirs ~ $ cd / $ cd /bin $ cd ~ $ dirs ~ $ setopt autopushd $ cd / $ cd /bin $ cd $HOME $ dirs -lpv 0 /Users/sugyan 1 /bin 2 / 3 /Users/sugyan PUSHD_IGNORE_DUPS 同じディレクトリを重複してスタックに積まないようになる PUSHD_SILENT pushd, popdしたときにdirsを表示しないようになる…などなど。

zshの本でお勉強 第2章

Zsh

…ど、ログインシェルのとき、リモートシェルで起動するとき、一度だけ行えばいいだけの設定かどうか、など役割を考えて、どこに書くか分けてやるべきのようだ。 シェルオプション "setopt" / "unsetopt"コマンドで様々なオプションを設定したり解除したりできる。引数を与えない場合、現在セットされている/されていないオプションを一覧表示される。試しにやってみたら、 $ setopt | wc -l 8 $ unsetopt | wc -l 151どんだけ使いこなしてないんだ…

zshの本を買って勉強し始めた

Zsh

…おきたい…!」というときに"Esc-Q"でコマンドをスタックに退避させておくことができる、とのこと。 $ touch /hoge/fuga/piyo/dummy{1..100}とファイルを作ろうと思ったところで、あ、その前にディレクトリを作っておいてそこに作るようにしなきゃ、と思ったら"Esc-Q"。一回コマンドラインはクリアされる。改めてmkdirを実行 $ mkdir /hoge/fuga/piyo…と、その前にいま何時だっけ、というとき、また"Esc-Q"でさらにスタッ…

buffer-nameをuniqueで識別しやすくなるよう設定する

…dex.ttを開いたときにbuffer-nameが"index.tt"となってしまってアレなので"dir/index.tt"みたいにディレクトリ名を付加してくれるように、とかなんとかできないものなのかな? 2010/05/15(土) 12:57:18 kyanny @sugyan http://blog.clouder.jp/archives/000673.html (require 'uniquify) (setq uniquify-buffer-name-style 'p…

git cherry-pickというのを初めて知った

Git

…て、今はまだどちらにもmergeできる状態じゃないけど、あるcommitを両方に適用させたい、というとき git cherry-pick [options] <commit-ish>とcommitを指定してやることでそのcommitだけを適用させることができるそうで。 なんか他にもうまくやる方法があるような気がするのと、そもそもそんな状態になってしまっているのもおかしな気がするので、あとでもうちょっと調べてみることにする。 入門Git、途中まで読んで止まってるままだ… orz

Twitterの新しいStreaming API「ChirpUserStreams」がすごすぎる件

…nfollowされたときは残念ながら取れないようだ。これはいずれ追加されるのかな…? これを使えば、メール監視などをしなくてもAPI経由で瞬間フォロー返しを行うこともできるはず。 Twitter でイチイチ follow するのが面倒くさい - にぽたん研究所 というわけで、こんなのを書いてみたよ。 #!/usr/bin/perl use strict; use warnings; use AnyEvent::HTTP 'http_request'; use Config::…

Plack::Loader::RestarterとPlack::Loader::Shotgun

…合、リクエストが来たときに初めてアプリの再起動をするような形になる。ファイル保存するたびに再起動されるようなことはなく、実際にリクエストを送ったときに変更の反映を確認できるようになる。 しかも、最初からモジュールをロードしておくことができるのである程度そこでロードしておけばその分のコストを削減できるらしい。 $ plackup -L Shotgun & $ ab -n 10 'http://127.0.0.1:5000/' ... Requests per second: 0…

proveコマンドの完了をGrowl通知するプラグインを書いてみた

…n/App-Prove-Plugin-Growl/lib $(which prove)とやれば大丈夫そうです。 今後 今のところMacでGrowl通知しか考えていないので、LinuxとかWinとかの環境でも使えると嬉しい(誰かやってくれないかな)。 すべてのテストが終了したときの"after_runtests"と別に、各テスト終了ごとの"after_test"もフックできるので、ここでも通知をできるようにするオプションでもつけてみようかな。 通知内容についても考えたいところ。

Module::Buildでのインストール先の設定でハマった

…::lib切り替えのときに、モジュールの入ったディレクトリ丸ごと移動とかしていて、その後あるモジュール入れようとしてインストールしたのだけど何故か移動する前のところにインストールされてしまっていて、何でだと思ったら、どうやらModule::Buildがインストール先の設定を持っていたらしい。 $ echo $MODULEBUILDRC /Users/sugyan/extlib/local/.modulebuildrc $ cat $MODULEBUILDRC install …

全裸botのfollowerが増え過ぎで動かなくなっていたので直した

…/ids"を確認するときは、返ってくるJSONのテキストデータをそのまま保存し、10分ごとにそれらを元に差分を割り出してfollow/unfollowするように。 変更内容は以下参照。 フォロー返し関係が動かなくなっていたのを修正 · sugyan/Zenra@e0e558d · GitHub ModelのIDSをこのように変更。 from google.appengine.ext import db class IDS(db.Model): friends = db.Tex…

screenのhardstatus設定と.zshrc

Zsh

…screenじゃないときにもコマンド実行ごとに表示されてしまう。 ので$TERM値によってprecmd()を使い分ける。 setopt prompt_subst RPROMPT='%{${fg[green]}%}%/%{$reset_color%}' common_precmd() { LANG=en_US.UTF-8 vcs_info LOADAVG=$(sysctl -n vm.loadavg | perl -anpe '$_=$F[1]') PROMPT='${vcs_…

protocolと関連させたクラスの定義方法

…る要素を5回検出したときにコールバックを呼び出すようなクラスを考える。 こんなカンジで書く。 #import <Cocoa/Cocoa.h> @protocol MyXMLParserDelegate; - (void)found5statuses; @end @interface MyXMLParser : NSObject { int num; id <MyXMLParserDelegate> delegate; } @property (retain, nonatomi…

AnyEvent::Twitterのバグ?

…400"を返してきたときの処理が間違っている 現象 APIの 150回/h の制限を超えたときなどに、400エラーが返ってきていても何度も連続でtimelineを取得しにいこうとしてしまう 再現コード #!/usr/bin/perl use strict; use warnings; use AnyEvent; use AnyEvent::Twitter; use Net::Twitter; my %config = ( username => 'twitter userna…

Cronを使わずに動く「全裸bot2」を作った

…、名詞/副詞/動詞のときはまだ挿入しない if ($flg) { my $insert = 1; if ($n->feature =~ / \A (名詞|副詞|動詞) /xms) { $insert = 0; } # また、連用形の動詞→助(動)詞の場合も挿入しない elsif ($n->feature =~ / \A 助(動)?詞 /xms && (split(/,/, $n->prev->feature))[5] =~ / 連用 /xms) { $insert = 0; …