SlideShare a Scribd company logo
1 of 27
Download to read offline
最近リリースした
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利用
いじょう。

More Related Content

What's hot

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
 

What's hot (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
 

Viewers also liked

Мастер-класс на 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
 

Viewers also liked (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
 
Как добыть платный/бесплатный трафик в новых реалиях
Как добыть платный/бесплатный трафик в новых реалияхКак добыть платный/бесплатный трафик в новых реалиях
Как добыть платный/бесплатный трафик в новых реалиях
 
Стратегии и кейсы бесплатного маркетинга
Стратегии и кейсы бесплатного маркетингаСтратегии и кейсы бесплатного маркетинга
Стратегии и кейсы бесплатного маркетинга
 

Similar to 最近作った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
 

Similar to 最近作った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
 

More from 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
 

More from 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アプリケーションとメモリ
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 

最近作った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のベンチマーク