ハコ ノ ナカ

https://twitter.com/haco_no_nako

Wgetコマンドで画像収集キメたい。

僕は思った。橋本奈々未が可愛すぎる。

f:id:CapsLook:20150712214445j:plain

どうしても橋本奈々未の画像を集めたい。しかし手作業で集めるのは煩わしい。どうしたもんかと思案していると、以前Linuxについて調べたときに、ウェブサーバからコンテンツを取得するコマンドがあると云う文献を読んだことを思い出した。

今回はそのコマンド「Wget」について少しだけ掘り下げてみようかと思う。

 

使い方

Webサーバーからファイルをダウンロードする
$ wget http://www.xxxxx.co.jp/file.tar.gz

 wget + URL 

 おばあちゃんでも軽くできるぐらいには簡単。

 

では実践

 まず任意をファイルを作成する(ここではnanami)。

f:id:CapsLook:20150712224925p:plain

 

nanamiディレクトリ上でコマンドを撃つ

wget http://pic.prepics-cdn.com/yunosuke5522/24789075.jpeg

 

wget http://pic.prepics-cdn.com/yunosuke5522/24789075.jpeg

--2015-07-12 22:54:41--  http://pic.prepics-cdn.com/yunosuke5522/24789075.jpeg

pic.prepics-cdn.com (pic.prepics-cdn.com) をDNSに問いあわせています... 23.48.5.153

pic.prepics-cdn.com (pic.prepics-cdn.com)|23.48.5.153|:80 に接続しています... 接続しました。

HTTP による接続要求を送信しました、応答を待っています... 200 OK

長さ: 104106 (102K) [image/jpeg]

`24789075.jpeg' に保存中

 

100%[==========================================================>] 104,106     --.-K/s 時間 0.08s   

 

2015-07-12 22:54:41 (1.22 MB/s) - `24789075.jpeg' へ保存完了 [104106/104106]

 

 

f:id:CapsLook:20150712230150p:plain

うん、いい感じ。しかしこれでは効率があまり良くない。もっとガァーってしたい。がぁーと。

 

コマンドにオプションをつける

-r       再帰的にファイルを入手する
-l 階層数      再帰的にファイルを入手する場合の階層数を指定する
-A 文字列    指定した文字列のあるファイルをダウンロードする

例 wget -r -l 2 -A jpg http://pic.prepics-cdn.com/yunosuke5522/24789075.jpeg

 

いざ、参る!

 

wget -l 1 -r -Ajpg -H  "http://www.heso.blue/?text=橋本奈々未&page=1"

 

終了しました --2015-07-12 23:39:57--

経過時間: 48s

ダウンロード完了: 75 ファイル、5.7M バイトを 30s で取得 (195 KB/s)

 

f:id:CapsLook:20150712234552p:plain

一回のコマンドで75個のファイルを取得することができた。やったね。

 

 

まとめ

非常に便利。このwgetコマンドをシェルスクリプトの中に組み込んだりしたらもっと便利になるかも。ではまたね。

 

 

おまけ

f:id:CapsLook:20150712235235j:plain

 

 

リーダブルコードを読んで思ったこと

結果から云うと読んで良かった。

読むことによって綺麗なコードを描こうと云う意識が高まった。

 

本書には、より良いコードを書くためのシンプルで実践的はテクニックが記載されており、「コードは他人が最短時間で理解できるように書かなければいけない」と云う考えが鍵となっている。

 

その中でも、特に心に留めておきたいことをまとめてみる。

 

 

 

  • 無駄な変数は使わない

無駄な変数は宣言しない。これは大事。変数が多いコードは読みにくい。

例えば以下のコード。

f:id:CapsLook:20150707013201j:plain

 このコードは汚い。無駄無駄無駄無駄無駄無駄ッ!!!

もっと良いコードが以下になる。

f:id:CapsLook:20150707014004p:plain

 変数は関数の間でしか生きれない。for関数の中で宣言された変数iは、for関数を抜けると消滅する。これによりmain関数内での宣言を回避できる。

 

  • 適切な変数名をつける

コードは他人が読んでも理解できるものであるべきなので、適当な変数名をつけるのは御法度です。

本書にこんな言葉が綴られていました。

「もしかすると、こんな風に考えているかもしれないね。『他の人が理解できるって、誰が得するんだよ?このコードを使っているのはオレだけなんだぞ!』。でもね、たとえ君ひとりのプロジェクトだったとしても、この目標に取り組むだけの価値があるんだ。『他の人』というのは、自分のコードに見覚えのない6ヶ月後の『君自身』かもしれない」。

これは心に刺さる。ってことなんで、変数名は適切で、尚且つ明確で、シンプルなものにしましょう。名前に情報を入れるのが大切。

下手なコメントを書くより、変数名で理解させるほうがスマートで格好良い。

コメントは飽くまで補填であるべき。

 

  • 一貫性のあるフォーマットを保つ

これは見た目の話。言葉で説明するより実際に見たほうが理解しやすい(以下)。

f:id:CapsLook:20150707021947p:plain

 FizzBuzzアルゴリズム

あー、汚い。キモい。親の顔がみたい。改行する箇所がバラバラだし、空白の幅が揃ってない。僕だったらこうする。

f:id:CapsLook:20150707022912p:plain

一貫性のある描き方をしているコードをみるのは気持ちがいい。似たような処理は纏めて描いたほうが見やすい。

 

 

ーーーーーーーーーーーーーーーーーーーー

他にもいっぱいあるけど、今日はこのへんで。