Enviar pesquisa
Carregar
Yapcasia2012 ltthon
•
0 gostou
•
4,326 visualizações
turugina
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 13
Baixar agora
Baixar para ler offline
Recomendados
第8回KPF発表資料
第8回KPF発表資料
cryks
ParliamentでGeoSPARQL
ParliamentでGeoSPARQL
Teppei Inaba
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理
Masahiko Sawada
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Nobuto Murata
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
Nobuto Murata
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
パケット解析ノススメ
パケット解析ノススメ
彰 村地
Recomendados
第8回KPF発表資料
第8回KPF発表資料
cryks
ParliamentでGeoSPARQL
ParliamentでGeoSPARQL
Teppei Inaba
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理
Masahiko Sawada
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Nobuto Murata
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
Nobuto Murata
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
パケット解析ノススメ
パケット解析ノススメ
彰 村地
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
Mysql casial01
Mysql casial01
matsuo kenji
Openresty
Openresty
ogawatti
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
OCaml でデータ分析
OCaml でデータ分析
Akinori Abe
My misstake on Ansible’s lineinfile module
My misstake on Ansible’s lineinfile module
Yukiya Hayashi
PHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHP
Takeshi Sakurai
エコなWebサーバー
エコなWebサーバー
emasaka
Nuxt.js + microCMS + netlify
Nuxt.js + microCMS + netlify
ogawatti
ファイルサーバ構築
ファイルサーバ構築
Takashi Noboru
分散データベース gun について調べた
分散データベース gun について調べた
keisunagawa
CouchDB JP & BigCouch
CouchDB JP & BigCouch
Yohei Sasaki
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
C++のビルド高速化について
C++のビルド高速化について
AimingStudy
フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門
彰 村地
10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
Sphinx/reST
Sphinx/reST
Ryo Maruyama
データベースのお話
データベースのお話
Hidekazu Tanaka
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
TrinityT _
静的サイトどこにする?
静的サイトどこにする?
ogawatti
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
OpenNebula on Ubuntu
OpenNebula on Ubuntu
autumnalsky
Mais conteúdo relacionado
Mais procurados
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
Mysql casial01
Mysql casial01
matsuo kenji
Openresty
Openresty
ogawatti
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
OCaml でデータ分析
OCaml でデータ分析
Akinori Abe
My misstake on Ansible’s lineinfile module
My misstake on Ansible’s lineinfile module
Yukiya Hayashi
PHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHP
Takeshi Sakurai
エコなWebサーバー
エコなWebサーバー
emasaka
Nuxt.js + microCMS + netlify
Nuxt.js + microCMS + netlify
ogawatti
ファイルサーバ構築
ファイルサーバ構築
Takashi Noboru
分散データベース gun について調べた
分散データベース gun について調べた
keisunagawa
CouchDB JP & BigCouch
CouchDB JP & BigCouch
Yohei Sasaki
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
C++のビルド高速化について
C++のビルド高速化について
AimingStudy
フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門
彰 村地
10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
Sphinx/reST
Sphinx/reST
Ryo Maruyama
データベースのお話
データベースのお話
Hidekazu Tanaka
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
TrinityT _
静的サイトどこにする?
静的サイトどこにする?
ogawatti
Mais procurados
(20)
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
Mysql casial01
Mysql casial01
Openresty
Openresty
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
OCaml でデータ分析
OCaml でデータ分析
My misstake on Ansible’s lineinfile module
My misstake on Ansible’s lineinfile module
PHP matsuri 2013 Windows Azure Storage SDK for PHP
PHP matsuri 2013 Windows Azure Storage SDK for PHP
エコなWebサーバー
エコなWebサーバー
Nuxt.js + microCMS + netlify
Nuxt.js + microCMS + netlify
ファイルサーバ構築
ファイルサーバ構築
分散データベース gun について調べた
分散データベース gun について調べた
CouchDB JP & BigCouch
CouchDB JP & BigCouch
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
C++のビルド高速化について
C++のビルド高速化について
フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門
10分で分かるデータストレージ
10分で分かるデータストレージ
Sphinx/reST
Sphinx/reST
データベースのお話
データベースのお話
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
静的サイトどこにする?
静的サイトどこにする?
Semelhante a Yapcasia2012 ltthon
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
OpenNebula on Ubuntu
OpenNebula on Ubuntu
autumnalsky
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
maebashi
Docker実践入門
Docker実践入門
hiro nemu
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
たのしいNode.js
たのしいNode.js
ishiki-takai
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
Toru Tamaki
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
Taro Matsuzawa
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
Izumi Tsutsui
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
Kohki Nakashima
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
WindowsでMySQL入門
WindowsでMySQL入門
Hidenori Ishii
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
Kenichiro MATOHARA
DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築
Yoshihiro Mizoguchi
Semelhante a Yapcasia2012 ltthon
(20)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
OpenNebula on Ubuntu
OpenNebula on Ubuntu
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
Docker実践入門
Docker実践入門
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
たのしいNode.js
たのしいNode.js
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
OpenStack + Common Lisp
OpenStack + Common Lisp
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
WindowsでMySQL入門
WindowsでMySQL入門
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
LingrBotを作ってみた/ ownCloud+Andoroid+Picasa+Flickr連携/Chromecast をLinuxで遊ぶ
DockerでAlmaLinux(web, php, pukiwiki)環境構築
DockerでAlmaLinux(web, php, pukiwiki)環境構築
Último
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Último
(9)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Yapcasia2012 ltthon
1.
「画像ダウンローダー」を作る際に 気をつけたいいくつかのこと
2012-09-28 LT-thon@YAPC::Asia2012 発表者:@ turugina
2.
What is 「画像ダウンローダー」 ●
NOT 「画像検索システム等用のクローラー」
3.
What is 「画像ダウンローダー」 ●
BUT 個人で愉しむために画像をダウンロードする ツール – ex) 某巨大掲示板の二次元画像板のスレから
4.
code
5.
●
画像ダウンロードツールを作る過程で色々な知 識・技術が身に付く – HTTP 関連 (LWP::UserAgent, HTTP::Lite,...) – ファイル関連 (File::Spec, Path::Class, ...) – コマンドラインオプション解析 (Getopt::*,...) – 永続化 / データベース (Tie::Persistent, Storable, DBI, DBD::SQLite, …) – 並行処理 / 排他制御 (threads, Coro, AnyEvent)
6.
Agenda ●
① 汝、紳士たれ ● ② 画像だと思ったら HTML だった、しにたい ● ③ \ Be on your guard! / ● ④ 貪欲に、貪欲に ● その他細々したもの
7.
① 汝、紳士たれ ●
ダウンロード先のサイトに迷惑をかけない – 同じ URL から何度もダウンロードしない ● → Tie::Persistent によるなんちゃって KVS でダウンロード 済み URL を永続化 ● → でも量が増えてきたら素直に DBI/DBD::SQLite – コネクションをキャッシュする ● → $ua->conn_cache( LWP::ConnCache->new ( total_capacity => undef ) ); – できれば1サイト 1 コネクションで済ませる ( 古い? )
8.
② 画像だと思ったら(以下略 ●
ヘッダをチェックする – my $res = $ua->mirror($url, $file); unlink($file) if $res->header('Content-Type') =~ m/text/i; ● たまに image/jpeg とか言いつつ HTML を返し てくる奴が ... – → Imager に食わせてエラーになったら消すとか
9.
③Be on your
guard! ● 見たくない画像から身を守る – サイトのブラックリスト( Og**sh とか Ro**en とか ) – もしダウンロードしてしまったら ● →URL とファイルのハッシュ (md5/SHA1 等 ) をブラックリス トに登録して削除 – Digest::MD5 、 Digest::SHA1 – ダウンロード前に URL チェック、ダウンロード後にハッ シュチェックで 2 重のガード
10.
④ 欲望に忠実に貪欲に、貪欲に ●
並行処理 – fork() ...? – use threads; use Thread::Queue; ● 固定数のワーカスレッドを立てて Queue から URL を流し込 む – use POE; …? – use Coro; use Coro::LWP; – use AnyEvent; use AnyEvent::HTTP; use Coro; use Coro::AnyEvent;
11.
細々 ●
use Clipboard; で「画像 URL を含むテキストを コピー&ペースト」の「ペースト」の部分を自動化 ● コマンドラインオプションを付けたい→ Getopt::* ● win32perl ではファイル操作時の文字コードに注 意 – 「 . ニーソ フォルダを作ってその中に画像をダウンロー ドしようとしたらカレントフォルダに変な名前のファイル が!!」
12.
おまけ ●
use threads; 版と同じ処理内容のスクリプトを Python で書いてみたら – コードは若干短く – 処理速度は若干速く – – – なりました ...orz ● くやしい!でも ..( ビクンビクン
13.
ご清聴ありがとうございました
Baixar agora