カテゴリー別アーカイブ: 未分類

[perl] 配列の値から重複する値を除く(grep 利用)


何とか理解・・・配列から重複を取り除く

こういう処理って、結構使うけど面倒っだったりする。
軽くググッたらそれっぽいのがすぐに見つかったねー。perlすごい!
http://d.hatena.ne.jp/Leila/20090204/1233716119

【概要】
与えられた配列(tmp_arr)の値をキーにして出現した個数をバリューにする%hという一時ハッシュ変数を作りつつ、初めて出てきたキーは@arrに入れるってな感じの処理。


my @tmp_arr = (2, 3, 55, 2, 4, 2, 3, 5);
my @arr = do { my %h; grep { !$h{$_}++ } @tmp_arr };

@arrは 重複が除かれた[2, 3, 55, 4, 5]の配列となっている。

すごっ。
これを素直に書くと以下のようになるかな?

my @tmp_arr = (2, 3, 55, 2, 4, 2, 3, 5);
my @arr;
my %h;
for my $t (@tmp_arr) {
    if(!$h{$t}) {
        push @arr, $t;
        $h{$t}++;
    }
    else {
        $h{$t}++;
    }
}

そこで配列に2つ以上出て来た値を抽出するにはどうするんだろうっていう疑問

重複なしとほぼ同様に以下の様な感じになるかなぁー
tmp_arrの値をキーにして出現した個数をインクリメントした値をバリューとするハッシュ。
そのバリューの値が2となった時に配列の@arrへ追加する。

grepしているところで 2 のところを3とか4とかにすると3回以上,4回以上でた値を抽出出来る。

http://perl-users.jp/articles/advent-calendar/2008/16.html


my @tmp_arr = (2, 3, 55, 2, 4, 2, 3, 5);
my @arr = do { my %h; grep { ++$h{$_} == 2 } @tmp_arr };
                                         ~~
@arrは [2, 3]の配列となっている。

[Android] WebViewのonReceivedErrorについて


ネットワーク関連のエラー以外は受け取れない。。。

404,500系など

https://groups.google.com/group/android-developers/browse_thread/thread/21d296549ba65e57

http://code.google.com/p/android/issues/detail?id=968

Viagra is the most famous ‘love pill’ in the world, but it is not the only option for you. The majority of men who tried both brand and generic pills state that Cialis (the most famous and top-quality generic drug) works better. It is up to you to decide whether you choose brand pills or buy Cialis, but ED patients state that:
Now it is possible to avoid awkward publicity if you buy Cialis online in our reliable web pharmacy. To purchase Cialis online simply place your order, use your credit card to pay for your pills, cialis 20mg no prescription receive your drug per post in a decent package and start your way to perfect men’s health!

git でaddしたファイルをキャンセルする方法


 

gitでコミットするファイルが多数あり、その中の一部のファイル(環境設定など)はこのコミットでは対象外にしたいファイルを指定したいときにいい方法がないかなと思っていた時に見つけたやり方です。

最初にすべてのファイルをaddする。

$ git add .

次に対象外にしたいファイルを以下のように指定する。

$ git reset HEAD [ファイル名]

その状態でコミット。

$ git commit -m 'commitします'

こうすることで一部のファイルを対象外にしてコミットすることができます。
一つ一つコミットするファイルを指定していけばできる事ですが、コミットするファイルが多くあり、一部ファイルを除きたいときには使えると思います。

大阪Node学園一時限目に参加してきた!


 

node.jsを使う事が増えてきているこの状況で今回の勉強会に参加してきました!!コミュニティの皆さんもとてもすごそうな人が多く、いいなぁと思った!!

懇親会には参加できなかったのが少し残念だったなぁ。イベント自体、とても面白く、いい勉強になった。。また近々2時限目を行うってことだったのでまた参加しよう!!

特に発表のテーマにもあった「ストリーム」はとても興味深く聞く事ができた!

たまたまnode.jsでzlibやfs、ストリーム、バッファなどを使って圧縮ファイルをアップロードしてから解凍し、パースするような処理を作ろうとしていたので、タイミングも良かったーー

「ストリームを制するものは、nodeを制する」この言葉も印象的だった!!!

ATND情報 http://atnd.org/events/23378
動画 http://www.twitvid.com/craftgear

 

Node.jsランダウン 〜怖くないNode.js入門〜

formidable 1.8からexpressの設定するだけでアップロードできる!

app.use(express.bodyParser({uploadDir:'./upload_tmp'}));

【リクエストを受ける側では以下のようにパス名などを受け取れる】
app.post('/items', function(req, res) {
    console.log(req.body);
    console.log(req.files);
    res.send('DONE', 200);
});

 

 

Socket.IOとリアルタイムなナニか

socketの名前空間、コネクションの共有範囲を分ける クライアントのjsで .ofというメソッドを使う。

1つのページを同期させるモードと同期させないモードに分けることで、プレゼン時は同期をして公開すれば発表者が画面を操作できる。

webSocketの使い道 m2m(マシンツーマシン) PCやモバイル端末だけではない。

【所感】

node.jsソケットを使ったプレゼンツールを作ってみたい(HTML5等を使う!)Canbusでユーザにも書いてもらえる。かつチャットsocket.ioを使えるようにする。講義中や公演中にパワポの資料とかだけではなく、web画面で動かして、さらにマーカーで文字が描けるようにすれば良さそう!impress.js で動的なWebプレゼンの見せ方!!に応用する! 

 

 

Streamについて(仮)

nodeの中I/Oのインターフェース

基本は次の2つのストリーム readable Stream / writable Stream

StreamObject は EventEmiter

イベントをonメソッドで受け取り .on(‘イベント名’, function(){ })

 

●readble streamの使い方

・メソッド

resume(読み込み開始), pause(読み込み止める), destroy

・定義されたEventの種類

data(ストリームに読み込みを続けているとき),end(読み込みが終わったとき(EOFまで読み込んだとき)), close(readableストリームを閉じたとき), error(エラー寺のイベント)

 

●writable streamの使い方

・メソッド

write, end, destroy

・定義されたEventの種類

drain, close, error

 

コピーするときはreadableストリームのresumeを実行した後readbleストリームのイベントを.onメソッドで受け付けながらwraitableストリームにwriteやendなどのメソッドを呼び書き込みを行う。

 

●pipe()について

readableで読み込んでパイプメソッドでwritableに渡して書き込む。。

コピー元ファイル(readable stream)を読み込みながらwritable streamに書き込んで一時的に止めてpause()する、その後resumeを行う。を自動で行う

 

●ストリームで表現されるケース

HTTP
http server Request (Readable)
http server Response (Writable)

Zlib
all classes(Readable/Writable)

圧縮ファイルを読み込んで
fs.Readable  ーpipeー>   zlib.Gzip  ーpipeー>   http.response

 

「drain は、WritableStream において、書き込み先が書き込む準備ができたとき発生するイベント。

書き込みがそれ以上できないときに、write メソッドが false を返し、そののち再開できるときに drain イベントが走る。」

 

【気になる事】

zip,gzipの違いは??

 

ストリームに関する参考リンク
http://d.hatena.ne.jp/Jxck/20111204/
http://jxck.tumblr.com/
http://jxck.tumblr.com/post/11984552004/node-js-stream

 

 

LTに出てきたキーワード

Express
modelがない!!
routes/index.jsにビジネスロジックを書くのか?けれど、model フォルダ作ってmongoose(モデル)の定義を入れた。

impress.js(http://bartaz.github.com/impress.js/
google hangout
Web RTC http://d.hatena.ne.jp/Syunpei/20111212/1323679295

 

 

【Windows】[CapsLock]を[Ctrl]キーにする


 

Windowsを使っているとCtrlキーの入力にすごく困ります。。
よく使うのに一番左下にあるってとても小指にパワーがいります。

そんな事を思うときは「Ctrl2Cap」を使って[CapsLock]を[Ctrl]として使用するように変更しましょう。
「Ctrl2Cap」はキーを入れ替えるのではなくCapasLockをCtrlに変更します。
MicroSoftから提供されているツールです。

 

以下のサイトからダウンロード
http://technet.microsoft.com/en-us/sysinternals/bb897578.aspx

 

使い方

ダウンロードして解凍したら、コマンドプロンプトで解凍したディレクトリへ移動する
C:¥Ctrl2Cap> ctrl2cap.exe /install
再起動すると反映される。

アンインストールするには、
C:¥Ctrl2Cap> ctrl2cap.exe /uninstall
再起動すると反映される。