SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
最近リリースした
N個のCPANモジュール
Yokohama.pm #10
2014/02/21
kazeburo
Time::Crontab
parser for crontab date and time field
use Time::Crontab;
my $time_cron = Time::Crontab->new('0 0 1 * *');
if ( $time_cron->match(time()) ) {
do_cron_job();
}
Proclet@0.32
supports cron like job
use Proclet;
my $proclet = Proclet->new();
$proclet->service(...);
$proclet->service(...);
$proclet->service(
code => sub {
scheduled_work();
},
tag => 'cron',
every => '0 12 * * *', #everyday at 12:00am
);
$proclet->run;
Apache::LogFormat::Compiler
@0.14 bugfix around DST
@0.30 improvement strftime(2)
Apache::LogFormat::Compiler has a
problem. Twice a year the timezone is
changed because of daylight saving.
A::LF::C ignores this fact and still
shows old timezone after change.
https://github.com/kazeburo/Apache-LogFormat-Compiler/pull/3

dex4er

ALFC、DST(サマータイム)をサポートしてないよ!
version < 0.14
local $ENV{TZ} = 'America/New_York';
POSIX::tzset;
my $time = timelocal(0, 0, 1, 3, 11 - 1, 2013);
my $log_handler = Apache::LogFormat::Compiler->new();
my $req = req_to_psgi(GET "/");
my $res = [200,[],[q!OK!]];
print $log_handler->log_line($req,$res,0,2,$time);
print $log_handler->log_line($req,$res,0,2,$time+3599);
print $log_handler->log_line($req,$res,0,2,$time+3600);
時間が戻ってる!
__DATA__
127.0.0.1 - - [03/Nov/2013:01:00:00 -0400] "GET / HTTP/1.1" 200 0 "-" "-"
127.0.0.1 - - [03/Nov/2013:01:59:59 -0400] "GET / HTTP/1.1" 200 0 "-" "-"
127.0.0.1 - - [03/Nov/2013:01:00:00 -0400] "GET / HTTP/1.1" 200 0 "-" "-"
version >= 0.14
local $ENV{TZ} = 'America/New_York';
POSIX::tzset;
my $time = timelocal(0, 0, 1, 3, 11 - 1, 2013);
my $log_handler = Apache::LogFormat::Compiler->new();
my $req = req_to_psgi(GET "/");
my $res = [200,[],[q!OK!]];
print $log_handler->log_line($req,$res,0,2,$time);
print $log_handler->log_line($req,$res,0,2,$time+3599);
オフセットが
print $log_handler->log_line($req,$res,0,2,$time+3600);
変わった
__DATA__
127.0.0.1 - - [03/Nov/2013:01:00:00 -0400] "GET / HTTP/1.1" 200 0 "-" "-"
127.0.0.1 - - [03/Nov/2013:01:59:59 -0400] "GET / HTTP/1.1" 200 0 "-" "-"
127.0.0.1 - - [03/Nov/2013:01:00:00 -0500] "GET / HTTP/1.1" 200 0 "-" "-"
I'm trying to install
Apache::LogFormat::Compiler on
Android. This system has poor
support for locales, so the Perl is
usually compiled with -Ui_locale flag.
https://github.com/kazeburo/Apache-LogFormat-Compiler/pull/6

dex4er

Andoroidがsetlocaleをサポートしてない!
$ export LC_ALL=ja_JP.UTF-8
$ perl -MPOSIX=strftime 
-E 'say strftime(q!%d/%b/%Y%T!,localtime());'

21/ 2月/2014:00:17:35

strftime(2) はlocaleによって出力が変わる
my $old_locale = POSIX::setlocale(&POSIX::LC_ALL);
POSIX::setlocale(&POSIX::LC_ALL, 'C');
$time = POSIX::strftime(‘%d/%b/%Y:%T’,localtime());
POSIX::setlocale(&POSIX::LC_ALL, $old_locale);

%{format}t がstrftime(2) を使っていて、
ALFCはstrftime(2)の前にsetlocale(LC_ALL,C)してた
       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
    /  `´  \
     ('A`)
     ノヽノヽ
       くく
そうだlocaleに影響を受けない
strftime(2)を作ろう
やめておけばよかった。。
POSIX::strftime::Compiler
$ export LC_ALL=ja_JP.UTF-8
$ perl -MPOSIX::strftime::Compiler=strftime 
-E 'say strftime(q!%d/%b/%Y:%T!,localtime());'

21/Feb/2014:00:17:35

localeによって出力が変わらない! YATTA!!
Time::TZOffset
Show timezone offset strings like “+0900”
more portable than POSIX::strftime('%z') and fast

XSにてtm構造体のtm_gmtoffを取得するモジュール
gmtoffをサポートしていないOSでは
localtimeとgmtimeの差分を計算
HTTP::Entity::Parser
PSGI compliant HTTP Entity Parser
yet another HTTP::Body
based on tokuhirom's code. https://github.com/plack/Plack/pull/434

別のモジュールしてだれか進めて
use HTTP::Entity::Parser;
my $parser = HTTP::Entity::Parser->new;
$parser->register('application/x-www-form-urlencoded',
'HTTP::Entity::Parser::UrlEncoded');
$parser->register('multipart/form-data',
'HTTP::Entity::Parser::MultiPart');
$parser->register('application/json',
'HTTP::Entity::Parser::JSON');
sub app {
my $env = shift;
my ( $params, $uploads) = $parser->parse($env);
}
WWW::Form::UrlEncoded
parser and builder for application/x-www-form-urlencoded
s_id=1&type=foo&message1=foo+bar+baz+hoge
+hoge+hoge+hoge+hogehogemessage2=
%E6%97%A5%E6%9C%AC%E8%AA%9E
%E3%81%A7%E3%81%99%E3%82%88%E3%83%BC

parse

build

(s_id => 1, type => 'foo', message1 =>
'foo bar baz hoge hoge hoge hoge
hogehoge', message2 => '日本語ですよー')
'a=b&c=d'
'a=b;c=d'
'a=1&b=2;c=3'
'a==b&c==d'
'a=b& c=d'
'a=b; c=d'
'a=b; c =d'
'a=b;c= d '
'a=b&+c=d'
'a=b&+c+=d'
'a=b&c=+d+'
'a=b&%20c=d'
'a=b&%20c%20=d'
'a=b&c=%20d%20'
'a&c=d'
'a=b&=d'
'a=b&='
'&'
'='
''

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

["a","b","c","d"]
["a","b","c","d"]
["a","1","b","2","c","3"]
["a","=b","c","=d"]
["a","b","c","d"]
["a","b","c","d"]
["a","b","c ","d"]
["a","b","c"," d "]
["a","b"," c","d"]
["a","b"," c ","d"]
["a","b","c"," d "]
["a","b"," c","d"]
["a","b"," c ","d"]
["a","b","c"," d "]
["a","","c","d"]
["a","b","","d"]
["a","b","",""]
["","","",""]
["",""]
Plack::RequestやHTTP::Bodyとの
[]

互換性を維持する
WWW::Form::UrlEncoded::XS
XS implementation of parser and builder for application/x-www-form-urlencoded
Benchmark: running parse_pp, parse_xs
for at least 3 CPU seconds...
parse_pp: 3 wallclock secs
( 3.00 usr + 0.00 sys = 3.00 CPU)
@ 27353.00/s (n=82059)
parse_xs: 3 wallclock secs
( 3.02 usr + 0.00 sys = 3.02 CPU)
@ 258802.32/s (n=781583)
Rate
parse_pp 27353/s
parse_xs 258802/s

parse_p
-846%

parseのベンチマークで

parse_xs
-89%
--

9.5倍高速
Benchmark: running build_pp, build_xs
for at least 3 CPU seconds...
build_pp: 4 wallclock secs
( 3.40 usr + 0.01 sys = 3.41 CPU)
@ 15048.68/s (n=51316)
build_xs: 4 wallclock secs
( 3.08 usr + 0.01 sys = 3.09 CPU)
@ 651364.08/s (n=2012715)
Rate build_pp build_xs
build_pp 15049/s
--98%
build_xs 651364/s
4228%
--

43倍高速

buildは
## content length => 38 ##
Rate
http_body http_entity
http_body
35870/s
--41%
http_entity 60703/s
69%
-## content length => 177 ##
Rate
http_body http_entity
http_body
14355/s
--74%
http_entity 54371/s
279%
-## content length => 1997 ##
Rate
http_body http_entity
http_body
2054/s
--92%
http_entity 27049/s
1217%
--

WWW::Form::UrlEncoded::XSをいれた
HTTP::Entity::Parserのベンチマーク
これからの課題
•

Plackに取り込んでもらう
*Plackの依存モジュールは基本Pure Perl

•

Plack::(?:Request|Response)の高速版を作る
*互換性を保ちつつXS利用
いじょう。

Contenu connexe

Tendances

LLVM Workshop Osaka Umeda, Japan
LLVM Workshop Osaka Umeda, JapanLLVM Workshop Osaka Umeda, Japan
LLVM Workshop Osaka Umeda, Japanujihisa
 
Playing 44CON CTF for fun and profit
Playing 44CON CTF for fun and profitPlaying 44CON CTF for fun and profit
Playing 44CON CTF for fun and profit44CON
 
Understanding the nodejs event loop
Understanding the nodejs event loopUnderstanding the nodejs event loop
Understanding the nodejs event loopSaurabh Kumar
 
Go concurrency
Go concurrencyGo concurrency
Go concurrencysiuyin
 
C c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdoC c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdoKim Phillips
 
Understanding SLAB in Linux Kernel
Understanding SLAB in Linux KernelUnderstanding SLAB in Linux Kernel
Understanding SLAB in Linux KernelHaifeng Li
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in GolangOliver N
 
Demystifying the Go Scheduler
Demystifying the Go SchedulerDemystifying the Go Scheduler
Demystifying the Go Schedulermatthewrdale
 
Concurrency in go
Concurrency in goConcurrency in go
Concurrency in goborderj
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing웅식 전
 
PyCon KR 2019 sprint - RustPython by example
PyCon KR 2019 sprint  - RustPython by examplePyCon KR 2019 sprint  - RustPython by example
PyCon KR 2019 sprint - RustPython by exampleYunWon Jeong
 
Степан Кольцов — Rust — лучше, чем C++
Степан Кольцов — Rust — лучше, чем C++Степан Кольцов — Rust — лучше, чем C++
Степан Кольцов — Rust — лучше, чем C++Yandex
 

Tendances (20)

Clojure+ClojureScript Webapps
Clojure+ClojureScript WebappsClojure+ClojureScript Webapps
Clojure+ClojureScript Webapps
 
Rcpp11 useR2014
Rcpp11 useR2014Rcpp11 useR2014
Rcpp11 useR2014
 
LLVM Workshop Osaka Umeda, Japan
LLVM Workshop Osaka Umeda, JapanLLVM Workshop Osaka Umeda, Japan
LLVM Workshop Osaka Umeda, Japan
 
R/C++ talk at earl 2014
R/C++ talk at earl 2014R/C++ talk at earl 2014
R/C++ talk at earl 2014
 
Playing 44CON CTF for fun and profit
Playing 44CON CTF for fun and profitPlaying 44CON CTF for fun and profit
Playing 44CON CTF for fun and profit
 
Understanding the nodejs event loop
Understanding the nodejs event loopUnderstanding the nodejs event loop
Understanding the nodejs event loop
 
Inc decsourcefile
Inc decsourcefileInc decsourcefile
Inc decsourcefile
 
Rcpp11
Rcpp11Rcpp11
Rcpp11
 
Go concurrency
Go concurrencyGo concurrency
Go concurrency
 
C c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdoC c++-meetup-1nov2017-autofdo
C c++-meetup-1nov2017-autofdo
 
Understanding SLAB in Linux Kernel
Understanding SLAB in Linux KernelUnderstanding SLAB in Linux Kernel
Understanding SLAB in Linux Kernel
 
Concurrency with Go
Concurrency with GoConcurrency with Go
Concurrency with Go
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
Using zone.js
Using zone.jsUsing zone.js
Using zone.js
 
Demystifying the Go Scheduler
Demystifying the Go SchedulerDemystifying the Go Scheduler
Demystifying the Go Scheduler
 
Concurrency in go
Concurrency in goConcurrency in go
Concurrency in go
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing
 
PyCon KR 2019 sprint - RustPython by example
PyCon KR 2019 sprint  - RustPython by examplePyCon KR 2019 sprint  - RustPython by example
PyCon KR 2019 sprint - RustPython by example
 
Степан Кольцов — Rust — лучше, чем C++
Степан Кольцов — Rust — лучше, чем C++Степан Кольцов — Rust — лучше, чем C++
Степан Кольцов — Rust — лучше, чем C++
 
timingExercise
timingExercisetimingExercise
timingExercise
 

En vedette

Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...
Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...
Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...get-to-know
 
Конференция Ecom’15
Конференция Ecom’15Конференция Ecom’15
Конференция Ecom’15IngateDigitalAgency
 
Диджитал аудио реклама — Unisound
Диджитал аудио реклама — UnisoundДиджитал аудио реклама — Unisound
Диджитал аудио реклама — UnisoundStas Tushinskiy
 
MOVOX Web Portal User Guide
MOVOX Web Portal User GuideMOVOX Web Portal User Guide
MOVOX Web Portal User GuideMOVOX
 
Делаем успешный сайт
Делаем успешный сайтДелаем успешный сайт
Делаем успешный сайтimba_ru
 
SEO без покупки ссылок
SEO без покупки ссылокSEO без покупки ссылок
SEO без покупки ссылокArtem Polyanskiy
 
Точки роста регионального ecommerce-2016
Точки роста регионального ecommerce-2016Точки роста регионального ecommerce-2016
Точки роста регионального ecommerce-2016E96
 
MPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak Elektronik
MPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak ElektronikMPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak Elektronik
MPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak ElektronikDeny Zaenal Faizin
 
Business models based on RTU class 5
Business models based on RTU class 5 Business models based on RTU class 5
Business models based on RTU class 5 ALOE Systems, Inc.
 
Chapter 6 Consumer Decision Making with NOTES
Chapter 6 Consumer Decision Making with NOTESChapter 6 Consumer Decision Making with NOTES
Chapter 6 Consumer Decision Making with NOTESEarlene McNair
 
+300% роста за три года: франшиза интернет-магазина Е96.ru
+300% роста за три года: франшиза интернет-магазина Е96.ru+300% роста за три года: франшиза интернет-магазина Е96.ru
+300% роста за три года: франшиза интернет-магазина Е96.ruE96
 
KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.
KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.
KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.Techart Marketing Group
 
100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce
100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce
100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerceE96
 
Monetizing Postal Services with SAP Hybris Billing
Monetizing Postal Services with SAP Hybris BillingMonetizing Postal Services with SAP Hybris Billing
Monetizing Postal Services with SAP Hybris BillingSAP Customer Experience
 
Как добыть платный/бесплатный трафик в новых реалиях
Как добыть платный/бесплатный трафик в новых реалияхКак добыть платный/бесплатный трафик в новых реалиях
Как добыть платный/бесплатный трафик в новых реалияхE96
 
Стратегии и кейсы бесплатного маркетинга
Стратегии и кейсы бесплатного маркетингаСтратегии и кейсы бесплатного маркетинга
Стратегии и кейсы бесплатного маркетингаE96
 

En vedette (16)

Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...
Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...
Мастер-класс на Get2Know "Измеряем эффективность интернет-маркетинга в деньга...
 
Конференция Ecom’15
Конференция Ecom’15Конференция Ecom’15
Конференция Ecom’15
 
Диджитал аудио реклама — Unisound
Диджитал аудио реклама — UnisoundДиджитал аудио реклама — Unisound
Диджитал аудио реклама — Unisound
 
MOVOX Web Portal User Guide
MOVOX Web Portal User GuideMOVOX Web Portal User Guide
MOVOX Web Portal User Guide
 
Делаем успешный сайт
Делаем успешный сайтДелаем успешный сайт
Делаем успешный сайт
 
SEO без покупки ссылок
SEO без покупки ссылокSEO без покупки ссылок
SEO без покупки ссылок
 
Точки роста регионального ecommerce-2016
Точки роста регионального ecommerce-2016Точки роста регионального ecommerce-2016
Точки роста регионального ecommerce-2016
 
MPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak Elektronik
MPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak ElektronikMPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak Elektronik
MPN Billing System | 3 Cara Pembuatan ID Billing Surat Setoran Pajak Elektronik
 
Business models based on RTU class 5
Business models based on RTU class 5 Business models based on RTU class 5
Business models based on RTU class 5
 
Chapter 6 Consumer Decision Making with NOTES
Chapter 6 Consumer Decision Making with NOTESChapter 6 Consumer Decision Making with NOTES
Chapter 6 Consumer Decision Making with NOTES
 
+300% роста за три года: франшиза интернет-магазина Е96.ru
+300% роста за три года: франшиза интернет-магазина Е96.ru+300% роста за три года: франшиза интернет-магазина Е96.ru
+300% роста за три года: франшиза интернет-магазина Е96.ru
 
KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.
KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.
KPI интернет-маркетинга. Систематизация. Примеры методик оценки качества.
 
100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce
100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce
100 млн потребителей, которых не замечают: мифы и реалии франшизы в ecommerce
 
Monetizing Postal Services with SAP Hybris Billing
Monetizing Postal Services with SAP Hybris BillingMonetizing Postal Services with SAP Hybris Billing
Monetizing Postal Services with SAP Hybris Billing
 
Как добыть платный/бесплатный трафик в новых реалиях
Как добыть платный/бесплатный трафик в новых реалияхКак добыть платный/бесплатный трафик в новых реалиях
Как добыть платный/бесплатный трафик в новых реалиях
 
Стратегии и кейсы бесплатного маркетинга
Стратегии и кейсы бесплатного маркетингаСтратегии и кейсы бесплатного маркетинга
Стратегии и кейсы бесплатного маркетинга
 

Similaire à 最近作ったN個のCPANモジュール Yokohama.pm #10

ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015Michiel Borkent
 
Benchmarking Perl (Chicago UniForum 2006)
Benchmarking Perl (Chicago UniForum 2006)Benchmarking Perl (Chicago UniForum 2006)
Benchmarking Perl (Chicago UniForum 2006)brian d foy
 
Flux and InfluxDB 2.0
Flux and InfluxDB 2.0Flux and InfluxDB 2.0
Flux and InfluxDB 2.0InfluxData
 
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?tvaleev
 
Perl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReducePerl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReducePedro Figueiredo
 
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP LimogesPHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges✅ William Pinaud
 
Lab Assignment 4 CSE330 Spring 2014 Skeleton Code for ex.docx
 Lab Assignment 4 CSE330 Spring 2014  Skeleton Code for ex.docx Lab Assignment 4 CSE330 Spring 2014  Skeleton Code for ex.docx
Lab Assignment 4 CSE330 Spring 2014 Skeleton Code for ex.docxMARRY7
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Giovanni Bechis
 
JFokus 50 new things with java 8
JFokus 50 new things with java 8JFokus 50 new things with java 8
JFokus 50 new things with java 8José Paumard
 
Router Queue Simulation in C++ in MMNN and MM1 conditions
Router Queue Simulation in C++ in MMNN and MM1 conditionsRouter Queue Simulation in C++ in MMNN and MM1 conditions
Router Queue Simulation in C++ in MMNN and MM1 conditionsMorteza Mahdilar
 
Being functional in PHP (PHPDay Italy 2016)
Being functional in PHP (PHPDay Italy 2016)Being functional in PHP (PHPDay Italy 2016)
Being functional in PHP (PHPDay Italy 2016)David de Boer
 
#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx
#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx
#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docxkatherncarlyle
 
A whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizerA whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizerNikita Popov
 
Embedded JavaScript
Embedded JavaScriptEmbedded JavaScript
Embedded JavaScriptJens Siebert
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomyDongmin Yu
 
Error Control in Multimedia Communications using Wireless Sensor Networks report
Error Control in Multimedia Communications using Wireless Sensor Networks reportError Control in Multimedia Communications using Wireless Sensor Networks report
Error Control in Multimedia Communications using Wireless Sensor Networks reportMuragesh Kabbinakantimath
 

Similaire à 最近作ったN個のCPANモジュール Yokohama.pm #10 (20)

ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015
 
Benchmarking Perl (Chicago UniForum 2006)
Benchmarking Perl (Chicago UniForum 2006)Benchmarking Perl (Chicago UniForum 2006)
Benchmarking Perl (Chicago UniForum 2006)
 
Flux and InfluxDB 2.0
Flux and InfluxDB 2.0Flux and InfluxDB 2.0
Flux and InfluxDB 2.0
 
Ping to Pong
Ping to PongPing to Pong
Ping to Pong
 
Ns network simulator
Ns network simulatorNs network simulator
Ns network simulator
 
Bluespec @waseda
Bluespec @wasedaBluespec @waseda
Bluespec @waseda
 
Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?Joker 2015 - Валеев Тагир - Что же мы измеряем?
Joker 2015 - Валеев Тагир - Что же мы измеряем?
 
Perl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReducePerl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReduce
 
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP LimogesPHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges
 
Lab Assignment 4 CSE330 Spring 2014 Skeleton Code for ex.docx
 Lab Assignment 4 CSE330 Spring 2014  Skeleton Code for ex.docx Lab Assignment 4 CSE330 Spring 2014  Skeleton Code for ex.docx
Lab Assignment 4 CSE330 Spring 2014 Skeleton Code for ex.docx
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)
 
JFokus 50 new things with java 8
JFokus 50 new things with java 8JFokus 50 new things with java 8
JFokus 50 new things with java 8
 
Verilog_Examples (1).pdf
Verilog_Examples (1).pdfVerilog_Examples (1).pdf
Verilog_Examples (1).pdf
 
Router Queue Simulation in C++ in MMNN and MM1 conditions
Router Queue Simulation in C++ in MMNN and MM1 conditionsRouter Queue Simulation in C++ in MMNN and MM1 conditions
Router Queue Simulation in C++ in MMNN and MM1 conditions
 
Being functional in PHP (PHPDay Italy 2016)
Being functional in PHP (PHPDay Italy 2016)Being functional in PHP (PHPDay Italy 2016)
Being functional in PHP (PHPDay Italy 2016)
 
#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx
#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx
#define ENABLE_COMMANDER#define ENABLE_REPORTER#include c.docx
 
A whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizerA whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizer
 
Embedded JavaScript
Embedded JavaScriptEmbedded JavaScript
Embedded JavaScript
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 
Error Control in Multimedia Communications using Wireless Sensor Networks report
Error Control in Multimedia Communications using Wireless Sensor Networks reportError Control in Multimedia Communications using Wireless Sensor Networks report
Error Control in Multimedia Communications using Wireless Sensor Networks report
 

Plus de Masahiro Nagano

Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinMasahiro Nagano
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Masahiro Nagano
 
Stream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTStream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTMasahiro Nagano
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月Masahiro Nagano
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015Masahiro Nagano
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTMasahiro Nagano
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてMasahiro Nagano
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTMasahiro Nagano
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMasahiro Nagano
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術Masahiro Nagano
 
Isucon makers casual talks
Isucon makers casual talksIsucon makers casual talks
Isucon makers casual talksMasahiro Nagano
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
Gazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmGazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmMasahiro Nagano
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTMasahiro Nagano
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版Masahiro Nagano
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編Masahiro Nagano
 
Webアプリケーションの パフォーマンス向上のコツ 概要編
 Webアプリケーションの パフォーマンス向上のコツ 概要編 Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編Masahiro Nagano
 
Webアプリケーションとメモリ
WebアプリケーションとメモリWebアプリケーションとメモリ
WebアプリケーションとメモリMasahiro Nagano
 

Plus de Masahiro Nagano (20)

Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
 
Stream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTStream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LT
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
 
Isucon makers casual talks
Isucon makers casual talksIsucon makers casual talks
Isucon makers casual talks
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
Gazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmGazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapm
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
 
Webアプリケーションの パフォーマンス向上のコツ 概要編
 Webアプリケーションの パフォーマンス向上のコツ 概要編 Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編
 
Webアプリケーションとメモリ
WebアプリケーションとメモリWebアプリケーションとメモリ
Webアプリケーションとメモリ
 

Dernier

Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Dernier (20)

Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

最近作ったN個のCPANモジュール Yokohama.pm #10

  • 2. Time::Crontab parser for crontab date and time field
  • 3. use Time::Crontab; my $time_cron = Time::Crontab->new('0 0 1 * *'); if ( $time_cron->match(time()) ) { do_cron_job(); }
  • 5. use Proclet; my $proclet = Proclet->new(); $proclet->service(...); $proclet->service(...); $proclet->service( code => sub { scheduled_work(); }, tag => 'cron', every => '0 12 * * *', #everyday at 12:00am ); $proclet->run;
  • 6. Apache::LogFormat::Compiler @0.14 bugfix around DST @0.30 improvement strftime(2)
  • 7. Apache::LogFormat::Compiler has a problem. Twice a year the timezone is changed because of daylight saving. A::LF::C ignores this fact and still shows old timezone after change. https://github.com/kazeburo/Apache-LogFormat-Compiler/pull/3 dex4er ALFC、DST(サマータイム)をサポートしてないよ!
  • 8. version < 0.14 local $ENV{TZ} = 'America/New_York'; POSIX::tzset; my $time = timelocal(0, 0, 1, 3, 11 - 1, 2013); my $log_handler = Apache::LogFormat::Compiler->new(); my $req = req_to_psgi(GET "/"); my $res = [200,[],[q!OK!]]; print $log_handler->log_line($req,$res,0,2,$time); print $log_handler->log_line($req,$res,0,2,$time+3599); print $log_handler->log_line($req,$res,0,2,$time+3600); 時間が戻ってる! __DATA__ 127.0.0.1 - - [03/Nov/2013:01:00:00 -0400] "GET / HTTP/1.1" 200 0 "-" "-" 127.0.0.1 - - [03/Nov/2013:01:59:59 -0400] "GET / HTTP/1.1" 200 0 "-" "-" 127.0.0.1 - - [03/Nov/2013:01:00:00 -0400] "GET / HTTP/1.1" 200 0 "-" "-"
  • 9. version >= 0.14 local $ENV{TZ} = 'America/New_York'; POSIX::tzset; my $time = timelocal(0, 0, 1, 3, 11 - 1, 2013); my $log_handler = Apache::LogFormat::Compiler->new(); my $req = req_to_psgi(GET "/"); my $res = [200,[],[q!OK!]]; print $log_handler->log_line($req,$res,0,2,$time); print $log_handler->log_line($req,$res,0,2,$time+3599); オフセットが print $log_handler->log_line($req,$res,0,2,$time+3600); 変わった __DATA__ 127.0.0.1 - - [03/Nov/2013:01:00:00 -0400] "GET / HTTP/1.1" 200 0 "-" "-" 127.0.0.1 - - [03/Nov/2013:01:59:59 -0400] "GET / HTTP/1.1" 200 0 "-" "-" 127.0.0.1 - - [03/Nov/2013:01:00:00 -0500] "GET / HTTP/1.1" 200 0 "-" "-"
  • 10. I'm trying to install Apache::LogFormat::Compiler on Android. This system has poor support for locales, so the Perl is usually compiled with -Ui_locale flag. https://github.com/kazeburo/Apache-LogFormat-Compiler/pull/6 dex4er Andoroidがsetlocaleをサポートしてない!
  • 11. $ export LC_ALL=ja_JP.UTF-8 $ perl -MPOSIX=strftime -E 'say strftime(q!%d/%b/%Y%T!,localtime());' 21/ 2月/2014:00:17:35 strftime(2) はlocaleによって出力が変わる
  • 12. my $old_locale = POSIX::setlocale(&POSIX::LC_ALL); POSIX::setlocale(&POSIX::LC_ALL, 'C'); $time = POSIX::strftime(‘%d/%b/%Y:%T’,localtime()); POSIX::setlocale(&POSIX::LC_ALL, $old_locale); %{format}t がstrftime(2) を使っていて、 ALFCはstrftime(2)の前にsetlocale(LC_ALL,C)してた
  • 13.        |    \  __  /    _ (m) _ピコーン       |ミ|     /  `´  \      ('A`)      ノヽノヽ        くく そうだlocaleに影響を受けない strftime(2)を作ろう やめておけばよかった。。
  • 15. $ export LC_ALL=ja_JP.UTF-8 $ perl -MPOSIX::strftime::Compiler=strftime -E 'say strftime(q!%d/%b/%Y:%T!,localtime());' 21/Feb/2014:00:17:35 localeによって出力が変わらない! YATTA!!
  • 16. Time::TZOffset Show timezone offset strings like “+0900” more portable than POSIX::strftime('%z') and fast XSにてtm構造体のtm_gmtoffを取得するモジュール gmtoffをサポートしていないOSでは localtimeとgmtimeの差分を計算
  • 17. HTTP::Entity::Parser PSGI compliant HTTP Entity Parser yet another HTTP::Body based on tokuhirom's code. https://github.com/plack/Plack/pull/434 別のモジュールしてだれか進めて
  • 18. use HTTP::Entity::Parser; my $parser = HTTP::Entity::Parser->new; $parser->register('application/x-www-form-urlencoded', 'HTTP::Entity::Parser::UrlEncoded'); $parser->register('multipart/form-data', 'HTTP::Entity::Parser::MultiPart'); $parser->register('application/json', 'HTTP::Entity::Parser::JSON'); sub app { my $env = shift; my ( $params, $uploads) = $parser->parse($env); }
  • 19. WWW::Form::UrlEncoded parser and builder for application/x-www-form-urlencoded
  • 20. s_id=1&type=foo&message1=foo+bar+baz+hoge +hoge+hoge+hoge+hogehogemessage2= %E6%97%A5%E6%9C%AC%E8%AA%9E %E3%81%A7%E3%81%99%E3%82%88%E3%83%BC parse build (s_id => 1, type => 'foo', message1 => 'foo bar baz hoge hoge hoge hoge hogehoge', message2 => '日本語ですよー')
  • 21. 'a=b&c=d' 'a=b;c=d' 'a=1&b=2;c=3' 'a==b&c==d' 'a=b& c=d' 'a=b; c=d' 'a=b; c =d' 'a=b;c= d ' 'a=b&+c=d' 'a=b&+c+=d' 'a=b&c=+d+' 'a=b&%20c=d' 'a=b&%20c%20=d' 'a=b&c=%20d%20' 'a&c=d' 'a=b&=d' 'a=b&=' '&' '=' '' => => => => => => => => => => => => => => => => => => => => ["a","b","c","d"] ["a","b","c","d"] ["a","1","b","2","c","3"] ["a","=b","c","=d"] ["a","b","c","d"] ["a","b","c","d"] ["a","b","c ","d"] ["a","b","c"," d "] ["a","b"," c","d"] ["a","b"," c ","d"] ["a","b","c"," d "] ["a","b"," c","d"] ["a","b"," c ","d"] ["a","b","c"," d "] ["a","","c","d"] ["a","b","","d"] ["a","b","",""] ["","","",""] ["",""] Plack::RequestやHTTP::Bodyとの [] 互換性を維持する
  • 22. WWW::Form::UrlEncoded::XS XS implementation of parser and builder for application/x-www-form-urlencoded
  • 23. Benchmark: running parse_pp, parse_xs for at least 3 CPU seconds... parse_pp: 3 wallclock secs ( 3.00 usr + 0.00 sys = 3.00 CPU) @ 27353.00/s (n=82059) parse_xs: 3 wallclock secs ( 3.02 usr + 0.00 sys = 3.02 CPU) @ 258802.32/s (n=781583) Rate parse_pp 27353/s parse_xs 258802/s parse_p -846% parseのベンチマークで parse_xs -89% -- 9.5倍高速
  • 24. Benchmark: running build_pp, build_xs for at least 3 CPU seconds... build_pp: 4 wallclock secs ( 3.40 usr + 0.01 sys = 3.41 CPU) @ 15048.68/s (n=51316) build_xs: 4 wallclock secs ( 3.08 usr + 0.01 sys = 3.09 CPU) @ 651364.08/s (n=2012715) Rate build_pp build_xs build_pp 15049/s --98% build_xs 651364/s 4228% -- 43倍高速 buildは
  • 25. ## content length => 38 ## Rate http_body http_entity http_body 35870/s --41% http_entity 60703/s 69% -## content length => 177 ## Rate http_body http_entity http_body 14355/s --74% http_entity 54371/s 279% -## content length => 1997 ## Rate http_body http_entity http_body 2054/s --92% http_entity 27049/s 1217% -- WWW::Form::UrlEncoded::XSをいれた HTTP::Entity::Parserのベンチマーク