Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
鉄次 尾形
PDF, PPTX
5,133 views
そのsleep、ちょっと待った! #perlbeginners
2014/5/23に行われた PerlBeginners#13 で発表したLTのスライドです。
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 20
2
/ 20
3
/ 20
4
/ 20
5
/ 20
6
/ 20
7
/ 20
8
/ 20
9
/ 20
10
/ 20
11
/ 20
12
/ 20
13
/ 20
14
/ 20
15
/ 20
16
/ 20
17
/ 20
18
/ 20
19
/ 20
20
/ 20
More Related Content
PPTX
トポロジーde代数方程式
by
Kyoichi Iwasaki
PDF
Python初心者が4年で5000人のコミュニティに作ったエモい話
by
Takeshi Akutsu
PPTX
私がPowerAppsで楽器アプリを作り続ける理由
by
Junichi Kodama
PPT
着想からメディカルデザインへ070310
by
Daisuke Hachimura
KEY
LTthon in YAPC 2012
by
uzulla
PDF
stapy_fukuoka_01_akutsu
by
Takeshi Akutsu
PDF
HubotとChatOpsについて語るBoF
by
Akihiko Horiuchi
PDF
English podcasts
by
Takayuki Miwa
トポロジーde代数方程式
by
Kyoichi Iwasaki
Python初心者が4年で5000人のコミュニティに作ったエモい話
by
Takeshi Akutsu
私がPowerAppsで楽器アプリを作り続ける理由
by
Junichi Kodama
着想からメディカルデザインへ070310
by
Daisuke Hachimura
LTthon in YAPC 2012
by
uzulla
stapy_fukuoka_01_akutsu
by
Takeshi Akutsu
HubotとChatOpsについて語るBoF
by
Akihiko Horiuchi
English podcasts
by
Takayuki Miwa
More from 鉄次 尾形
PDF
超小規模環境のMySQL #mysqlcasual
by
鉄次 尾形
PDF
再帰、漸化式、差分方程式とアルゴリズム Gx#20
by
鉄次 尾形
PDF
穏やかにファイルを削除する続き
by
鉄次 尾形
PDF
三角関数の加法定理はなぜ難しいのか
by
鉄次 尾形
PDF
Perl ウェブ開発の中世〜CGI と Plack の間〜
by
鉄次 尾形
PDF
WordPress 運用を支える Perl
by
鉄次 尾形
PDF
【公開版】AWS基礎 for 新卒エンジニア
by
鉄次 尾形
PDF
東京近郊のPerlコミュニティのご紹介 #lcs2015
by
鉄次 尾形
PDF
4月16日だからFoursquare 位置情報とライフログ
by
鉄次 尾形
PDF
Hokkaido.pmと7年
by
鉄次 尾形
PDF
Perlで生きる10年
by
鉄次 尾形
PDF
障害対応とその防止策
by
鉄次 尾形
PDF
俺のこだわりデスクのその後
by
鉄次 尾形
PDF
mod_perlプログラマーがYAPCで語るレガシー開発論
by
鉄次 尾形
PDF
日本全国ぶらりPerl旅
by
鉄次 尾形
PDF
働きやすい社内を目指す!二酸化炭素計測ツール
by
鉄次 尾形
PDF
最近のメールまわりのお仕事のお話
by
鉄次 尾形
PDF
穏やかにファイルを削除する
by
鉄次 尾形
PDF
Perl入学式 2018年度の報告
by
鉄次 尾形
PDF
コードの動的生成のお話
by
鉄次 尾形
超小規模環境のMySQL #mysqlcasual
by
鉄次 尾形
再帰、漸化式、差分方程式とアルゴリズム Gx#20
by
鉄次 尾形
穏やかにファイルを削除する続き
by
鉄次 尾形
三角関数の加法定理はなぜ難しいのか
by
鉄次 尾形
Perl ウェブ開発の中世〜CGI と Plack の間〜
by
鉄次 尾形
WordPress 運用を支える Perl
by
鉄次 尾形
【公開版】AWS基礎 for 新卒エンジニア
by
鉄次 尾形
東京近郊のPerlコミュニティのご紹介 #lcs2015
by
鉄次 尾形
4月16日だからFoursquare 位置情報とライフログ
by
鉄次 尾形
Hokkaido.pmと7年
by
鉄次 尾形
Perlで生きる10年
by
鉄次 尾形
障害対応とその防止策
by
鉄次 尾形
俺のこだわりデスクのその後
by
鉄次 尾形
mod_perlプログラマーがYAPCで語るレガシー開発論
by
鉄次 尾形
日本全国ぶらりPerl旅
by
鉄次 尾形
働きやすい社内を目指す!二酸化炭素計測ツール
by
鉄次 尾形
最近のメールまわりのお仕事のお話
by
鉄次 尾形
穏やかにファイルを削除する
by
鉄次 尾形
Perl入学式 2018年度の報告
by
鉄次 尾形
コードの動的生成のお話
by
鉄次 尾形
そのsleep、ちょっと待った! #perlbeginners
1.
そのsleep、ちょっと待った! OGATA Tetsuji (@xtetsuji) 2014/05/23
PerlBeginners#13
2.
自己紹介 • 尾形 鉄次
(OGATA Tetsuji) • Twitter: @xtetsuji • Blog: http://post.tetsuji.jp/
3.
sleep
4.
通院スペシャリスト • 昨年12月に胃潰瘍で入院、1月に風邪とインフルエンザ • 今も入院していた消化器外科に通院しているのですが、 ここ最近は咳も止まらなくて呼吸器内科にも通い始めた •
結果、薬が増えまくった
6.
テーマをsleepにした理由 • 呼吸器内科の薬の副作用だと思うけど、眠くて困る • 今回のPBも最初は発表者がいなくて「じゃあ僕も何か しゃべりますよ」って言ったけど、テーマを考えている 最中も眠くて参った •
というわけでテーマをsleepにしました
7.
最初のsleep体験 • (高校時代のMSX BASICのことはもう記憶に無いなぁ) •
大学一年生の時のC言語の授業 • なんか「ちょっと待ってから出力」したいというときに こういうコードを例示された覚えがある
8.
最初のsleep体験 #include <stdio.h>! ! int main
(void) {! int i;! printf("こんにちは!n");! for(i=0;i<1000000000;i++) {}! printf("待った?n");! return(1);! }!
9.
CPU温めsleep • for文で無駄な計算をさせて、処理を遅らせるハック!? • CPUが暖まって冬に嬉しい、夏に厳しい •
賢いコンパイラには最適化されて無意味になるはず • POSIX系OSであればunistd.hにsleep関数あります • こういう悪手、JavaScriptで「待ちたい」というときに 似たような手法やる人いそうでヤバイときがある
10.
Perlのsleep • Perlにはsleepという関数が標準関数で存在する! • sleepし放題 •
だけど、あまりsleepしてはダメな時がある • ウェブサーバのような即時応答が基本なもの • イベント駆動サーバのように他の処理をブロックして はいけないもの、などなど…
11.
同期とかブロッキングとか • sleepのように、同じプロセス上で同時並行で走ってい るかもしれない他の処理を阻害する処理のことを「同期」 処理とか「ブロッキング」処理とかいいます • 対義語は「非同期」「ノンブロッキング」 •
同期・非同期とブロッキング・ノンブロッキングの違い はここではあまり厳密に区別しません
12.
Webサーバでちょっと待ちたい • sleepとか書くと、ワーカーの同時処理を阻害する • Mojoliciousのhypnotoadでは標準でワーカーは4しかい ないので、長時間ブロックする処理が4連続続いたら、 しばらくはWebサーバが無反応になる •
Plackで使われるStarmanやStarletもだいたい同じ • 待ちたい場合には別の書き方をする
13.
そもそもなぜ待ちたいのか • ユーザに遅延してデータを送りたいってケース、まれに あるかもしれないけど、よくよく考えると別レイヤーで やった方が良いケースがある(ブラウザ上のJavaScript等) • JavaScriptは非同期前提の世界なので、そういう考え方 が鍛えられます
14.
API制限とか • 単位時間あたりのAPIリクエスト数に制限があるから sleepするとかってケース(外部に気を使うケース) • AnyEventなどのイベント駆動サーバ上で動いているもの の場合はsleepって書くと他の部分を止めることになる ので禁じ手だし、LWPだってブロッキング処理だって、 神経質な人に言われるかも
(AnyEvent::HTTP使う等する) • 戦場に備えてsleepしない書き方を覚えておくと良い
15.
逆に同時並行アクセスとか • 逆に一度のHTTPリクエストに対して、何度もLWPを 使って外へHTTPアクセスする必要がある場合、LWPの 多用自体が無視できないブロッキングになる場合がある • RSSとかのクローラみたいなやつ •
HTTP::Async とか “Parallel HTTP” で検索して出てくる CPANモジュールを使うと同時並行アクセスができる事 を覚えておくと、いざというときに役に立つ
16.
余談:JavaScriptでは • 非同期前提のJavaScriptの世界ではsleepは無い • 最初のfor文のようなユーザのCPUを温めるコードを書い たらマジでクレームもの •
setTimeoutなどを利用したり、HTTPアクセスではAjax の非同期モードを使うのが前提 • 順序を気にする場合にはDeferredとかで検索してみよう
17.
書き捨てならOKだよ • もちろん、書き捨てスクリプトならsleepでもよいよね • 「仕方なく一瞬待つ」場合はTime::HiResで可能な限り 影響を少なくする •
今日はトークレベルや時間の都合で、結構端折っちゃっ たけど、サーバのライフサイクルとか興味のある人は、 他の書籍や勉強会で調べてみるといいですよ
18.
そのsleep、ちょっと待った! →待ち方が問われる場合アリ!
19.
眠くなってきたので このへんで、おやすみなさい😪
20.
おしまい
Download