SlideShare a Scribd company logo
CPANTS
Kwalitative website and its tools

                    Kenichi Ishigaki
                         (charsbar)
                   @YAPC::EU 2012
                   August 22, 2012
Kenichi Ishigaki
   (charsbar)
From Shibuya.pm,
  Tokyo, Japan.
Freelancer

 - Perl programmer
- Writer/Translator
Around 40 CPAN
 distributions
DBD::SQLite
Acme::CPANAuthors
We have been
 enjoying the
CPANTS game
 since 2005.
輝け!全日本最強
 CPAN Author
  決定選手権
            by Koichi Taniguchi
http://blog.livedoor.jp/nipotan/archives/16108466.html
He picked up
Japanese authors
    by eye.
Our names are
 easy to find.
There were not
so many authors.

  - Total: ~4000
 - Japanese: ~50
YAPC::Asia increased
  the number of
 Japanese authors.
YAPC::Asia / Japanese authors

   2006 (Mar)       98
   2007 (Apr)      154
   2008 (May)       191
   2009 (Sep)      228
   2010 (Oct)      255
   2011 (Oct)      270
Needed
something to pick
   up Japanese
  authors more
      easily.
That's why I
created a list of
Japanese authors
 and a script to
   maintain it.
I've been
 reporting the
Japanese top 10
 authors since
     2008.
I've been adding
 something new
   every year.
2008: sum of the
 kwalitee scores
   per author
2009: authors
 who released
most in the year
2010: authors/
population ratio
2011: launched a
website (finally)

acme.cpanauthors.org
It had one big
   problem.
No data.
The official
CPANTS site had
 been down for
   some time.
I needed to set
    up mine.
I created a
private repository
and put everything
       into it.
Merged recent
commits from
   domm's
 repository.
Added a few
 columns.
Tweaked
Catalyst/DBIC
    stuff.
It worked.
Warnings were
    left.
I needed to find
  some tuits to
 remove them.
Perl QA
Hackathon
Warnings were
  removed.
Ported some of
the changes I did
locally to daxim's
   repository.
Showed a new
 acme.cpanauthors.org
featuring CPANTS info.
Unfortunately,
the porting took
 too much time.
I didn't merge
the changes back
to my repository.
OSDC.TW
I finally merged
  the changes.
Got several
reports that
CPANTS was
  broken.
What broke
CPANTS was a
 small change.
"modules" : [
  {
    "file" : "lib/Path/Extended.pm",
    "in_basedir" : 0,
    "in_lib" : 1,
    "module" : "Path::Extended",
    "uses" : {
       "Sub::Install" : 1,
       "strict" : 1,
       "warnings" : 1
    }
  }
]
I don't think this
  change is bad.
Module::CPANTS::
  ProcessCPAN
 shouldn't have
  died by this.
It should have
  had tests.
Is should have
  run faster.
It should have
been easier to fix
    analysis.
Enough issues for
   a summer.
What should we
     do?
- We need tests.
- we need to find
   test cases.
- we need to do it
   many times.
Making it run
faster is the
first priority.
I wrote a
barebone script
to store data in
    parallel.
JSON
create table if not exists analysis (
      id integer primary key autoincrement,
      path text unique,
      distv text,
      author text,
      json text,
      duration integer
);
Raw SQL
statements
Parallel::ForkManager
SQLite queue
Beware a race condition

my ($id) = $dbh->selectrow_array("
  SELECT id FROM queue
  WHERE status = 0 LIMIT = 1
");
$dbh->do("
  UPDATE queue SET status = 1
  WHERE id = ?
", undef, $id);
sqlite_update_hook

my $id;
my $dbh->sqlite_update_hook(sub {
  (undef, undef, undef, $id) = @_;
});
$dbh->do("
  UPDATE queue
    SET status = 1,
  WHERE id IN (
    SELECT id FROM queue
    WHERE status = 0 LIMIT 1
  )
");
Archive::Any::Lite
Archive::Any::Plugin::Bzip2
WorePAN

- Bundling is bad
- We need a specific
version
- Derived from OrePAN
use WorePAN;

my $worepan = WorePAN->new(
  root => 'path/to/a/directory/',
  files => [qw(
    I/IS/ISHIGAKI/WorePAN-0.01.tar.gz
  )],
  use_backpan => 1,
  no_network => 0,
  cleanup     => 1,
);
use WorePAN;

my $worepan = WorePAN->new(
  root => 'path/to/a/directory/',
  files => [qw(
    I/IS/ISHIGAKI/WorePAN-0.01.tar.gz
  )],
  local_mirror => '/home/ishigaki/minicpan/',
  no_network => 1,
  cleanup     => 1,
);
use WorePAN;

my $worepan = WorePAN->new(
  root => 'path/to/a/directory/',
  dists => {
    'Catalyst-Runtime' => 5.9,
    'DBIx-Class'    => 0,
  },
  cleanup => 1,
);
Bonus features
my $worepan = WorePAN->new(
  root => 'path/to/a/CPAN/mirror/',
  cleanup => 0,
);

my   $authors = $worepan->authors;
my   $modules = $worepan->modules;
my   $file = $worepan->files;
my   $dists = $worepan->latest_distributions;
$worepan->add_files(qw{
  /path/to/a/local/distribution-0.01.tar.gz
});
$worepan->update_indices;
Now we have
enough tools.
Processing time is
   significantly
    decreased.
What's next?
::Site refactoring
I'm preparing the
    data now.
Creating more
databases/tables.
Merging
information from
external sources.
- CPAN indices
- CPAN uploads database
Calculating scores
 on prerequisite
     modules.
It will be this
year's something
new in my annual
     report.
And then, I'll
move on to fixing
  the metrics.
Some of them are
  badly broken.
"versions" : {
  "lib/Data/Phrasebook.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/Debug.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/Generic.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/Loader.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/Loader/Base.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/Loader/Text.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/Plain.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/SQL.pm" : "use vars qw($VERSION);¥n",
  "lib/Data/Phrasebook/SQL/Query.pm" : "use vars qw($VERSION);¥n"
},
Error is not a stash.
"error" : {
  "easily_repackageable" : "easily_repackageable_by_fedora",
  "easily_repackageable_by_fedora" : "fits_fedora_license",
  "metayml_conforms_spec_current" : [
    "1.4",
    "Expected a map structure from data string or file. [Validation: 1.4]"
  ],
  "metayml_conforms_to_known_spec" : [
    "1.0",
    "Expected a map structure from data string or file. [Validation: 1.0]"
  ],
  "no_pod_errors" : " home cpants tmp analyze 11442 8001be43fb65..."
}
Should have
initialize/finalize phases.

Module::CPANTS::Kwalitee::Distros
 doesn't clean up after mirrored
       Debian CPANTS file
    https://rt.cpan.org/Ticket/Display.html?id=51514
There are much more
       to do.
-   JSON API for metacpan.org and so on.
-   Email Reporting like CPAN Testers
-   Evaluate new Kwalitee indicators
-   New metrics like portable filename
-   Blog about recent tendency
-   More comprehensive tests
-   Analysis per perl version/architecture
-   Cover Perl::Critic, CPAN::Critic::Module::Abstract
-   35 RT tickets and several github isses
Resources
     github.com/charsbar/www-cpants
       github.com/charsbar/worepan
github.com/daxim/Module-CPANTS-Analyse
Questions?
Thank you

More Related Content

What's hot

Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty FrameworkAapo Talvensaari
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principles
Perl Careers
 
Tdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema RubyTdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema Ruby
Fabio Akita
 
DSLs Internas e Ruby
DSLs Internas e RubyDSLs Internas e Ruby
DSLs Internas e Ruby
Fabio Kung
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
pratiknaik
 
Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)
Carl Brown
 
Advanced JavaScript build pipelines using Gulp.js
Advanced JavaScript build pipelines using Gulp.jsAdvanced JavaScript build pipelines using Gulp.js
Advanced JavaScript build pipelines using Gulp.js
Stefan Baumgartner
 
CouchDB: A NoSQL database
CouchDB: A NoSQL databaseCouchDB: A NoSQL database
CouchDB: A NoSQL databaseRubyc Slides
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
Joe Kutner
 
Fresh from the Oven (04.2015): Experimental Akka Typed and Akka Streams
Fresh from the Oven (04.2015): Experimental Akka Typed and Akka StreamsFresh from the Oven (04.2015): Experimental Akka Typed and Akka Streams
Fresh from the Oven (04.2015): Experimental Akka Typed and Akka StreamsKonrad Malawski
 
Plumbin Pipelines - A Gulp.js workshop
Plumbin Pipelines - A Gulp.js workshopPlumbin Pipelines - A Gulp.js workshop
Plumbin Pipelines - A Gulp.js workshop
Stefan Baumgartner
 
Intro to Rails
Intro to Rails Intro to Rails
Intro to Rails
epiineg1
 
Lisp in the Cloud
Lisp in the CloudLisp in the Cloud
Lisp in the Cloud
Mike Travers
 
The Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet Labs
The Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet LabsThe Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet Labs
The Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet Labs
Puppet
 
Solr for Indexing and Searching Logs
Solr for Indexing and Searching LogsSolr for Indexing and Searching Logs
Solr for Indexing and Searching Logs
Sematext Group, Inc.
 
Async - react, don't wait - PingConf
Async - react, don't wait - PingConfAsync - react, don't wait - PingConf
Async - react, don't wait - PingConf
Johan Andrén
 
Painless Data Storage with MongoDB & Go
Painless Data Storage with MongoDB & Go Painless Data Storage with MongoDB & Go
Painless Data Storage with MongoDB & Go
Steven Francia
 
Distributed Developer Workflows using Git
Distributed Developer Workflows using GitDistributed Developer Workflows using Git
Distributed Developer Workflows using Git
Susan Potter
 
DevOps with Fabric
DevOps with FabricDevOps with Fabric
DevOps with Fabric
Simone Federici
 
Smalltalk on rubinius
Smalltalk on rubiniusSmalltalk on rubinius
Smalltalk on rubinius
Konstantin Haase
 

What's hot (20)

Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty Framework
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principles
 
Tdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema RubyTdc 2013 - Ecossistema Ruby
Tdc 2013 - Ecossistema Ruby
 
DSLs Internas e Ruby
DSLs Internas e RubyDSLs Internas e Ruby
DSLs Internas e Ruby
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
 
Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)Welcome to Swift (CocoaCoder 6/12/14)
Welcome to Swift (CocoaCoder 6/12/14)
 
Advanced JavaScript build pipelines using Gulp.js
Advanced JavaScript build pipelines using Gulp.jsAdvanced JavaScript build pipelines using Gulp.js
Advanced JavaScript build pipelines using Gulp.js
 
CouchDB: A NoSQL database
CouchDB: A NoSQL databaseCouchDB: A NoSQL database
CouchDB: A NoSQL database
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 
Fresh from the Oven (04.2015): Experimental Akka Typed and Akka Streams
Fresh from the Oven (04.2015): Experimental Akka Typed and Akka StreamsFresh from the Oven (04.2015): Experimental Akka Typed and Akka Streams
Fresh from the Oven (04.2015): Experimental Akka Typed and Akka Streams
 
Plumbin Pipelines - A Gulp.js workshop
Plumbin Pipelines - A Gulp.js workshopPlumbin Pipelines - A Gulp.js workshop
Plumbin Pipelines - A Gulp.js workshop
 
Intro to Rails
Intro to Rails Intro to Rails
Intro to Rails
 
Lisp in the Cloud
Lisp in the CloudLisp in the Cloud
Lisp in the Cloud
 
The Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet Labs
The Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet LabsThe Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet Labs
The Grand Puppet Sub-Systems Tour - Nicholas Fagerlund, Puppet Labs
 
Solr for Indexing and Searching Logs
Solr for Indexing and Searching LogsSolr for Indexing and Searching Logs
Solr for Indexing and Searching Logs
 
Async - react, don't wait - PingConf
Async - react, don't wait - PingConfAsync - react, don't wait - PingConf
Async - react, don't wait - PingConf
 
Painless Data Storage with MongoDB & Go
Painless Data Storage with MongoDB & Go Painless Data Storage with MongoDB & Go
Painless Data Storage with MongoDB & Go
 
Distributed Developer Workflows using Git
Distributed Developer Workflows using GitDistributed Developer Workflows using Git
Distributed Developer Workflows using Git
 
DevOps with Fabric
DevOps with FabricDevOps with Fabric
DevOps with Fabric
 
Smalltalk on rubinius
Smalltalk on rubiniusSmalltalk on rubinius
Smalltalk on rubinius
 

Viewers also liked

少人数でのWebアプリ開発 CGIからPSGIまでの変遷
少人数でのWebアプリ開発 CGIからPSGIまでの変遷少人数でのWebアプリ開発 CGIからPSGIまでの変遷
少人数でのWebアプリ開発 CGIからPSGIまでの変遷
Yoshihiro Sasaki
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
charsbar
 
2013年のCPANモジュール作成事情
2013年のCPANモジュール作成事情2013年のCPANモジュール作成事情
2013年のCPANモジュール作成事情
charsbar
 
Проект планировки 1 микрорайон Губкинский
Проект планировки 1 микрорайон ГубкинскийПроект планировки 1 микрорайон Губкинский
Проект планировки 1 микрорайон Губкинский
ART Geonika
 
Презентация ПП линейных объектов в с. Бердюжье
Презентация ПП линейных объектов в с. БердюжьеПрезентация ПП линейных объектов в с. Бердюжье
Презентация ПП линейных объектов в с. БердюжьеNatali001
 
Hals development(iq) 03.09
Hals development(iq) 03.09Hals development(iq) 03.09
Hals development(iq) 03.09Andris Alps
 
ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»
ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»
ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»
Коалиция за «зеленую» экономику и развитие G-Global
 
Hals development(камелия) 03.09
Hals development(камелия) 03.09Hals development(камелия) 03.09
Hals development(камелия) 03.09Andris Alps
 
On UnQLite
On UnQLiteOn UnQLite
On UnQLite
charsbar
 
Infrastructure of Pathtraq
Infrastructure of PathtraqInfrastructure of Pathtraq
Infrastructure of PathtraqKazuho Oku
 
Bpmrapport2008
Bpmrapport2008Bpmrapport2008
Bpmrapport2008
rloggen
 
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
NetApp Japan
 
「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013
「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013
「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013Eikichi Gotoh
 
Artikel 4+2 procesmodel v1.0
Artikel 4+2 procesmodel v1.0Artikel 4+2 procesmodel v1.0
Artikel 4+2 procesmodel v1.0
rloggen
 

Viewers also liked (14)

少人数でのWebアプリ開発 CGIからPSGIまでの変遷
少人数でのWebアプリ開発 CGIからPSGIまでの変遷少人数でのWebアプリ開発 CGIからPSGIまでの変遷
少人数でのWebアプリ開発 CGIからPSGIまでの変遷
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
 
2013年のCPANモジュール作成事情
2013年のCPANモジュール作成事情2013年のCPANモジュール作成事情
2013年のCPANモジュール作成事情
 
Проект планировки 1 микрорайон Губкинский
Проект планировки 1 микрорайон ГубкинскийПроект планировки 1 микрорайон Губкинский
Проект планировки 1 микрорайон Губкинский
 
Презентация ПП линейных объектов в с. Бердюжье
Презентация ПП линейных объектов в с. БердюжьеПрезентация ПП линейных объектов в с. Бердюжье
Презентация ПП линейных объектов в с. Бердюжье
 
Hals development(iq) 03.09
Hals development(iq) 03.09Hals development(iq) 03.09
Hals development(iq) 03.09
 
ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»
ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»
ПРОЕКТ ПО СОЗДАНИЮ «ГОСТЕВЫХ ДОМОВ»
 
Hals development(камелия) 03.09
Hals development(камелия) 03.09Hals development(камелия) 03.09
Hals development(камелия) 03.09
 
On UnQLite
On UnQLiteOn UnQLite
On UnQLite
 
Infrastructure of Pathtraq
Infrastructure of PathtraqInfrastructure of Pathtraq
Infrastructure of Pathtraq
 
Bpmrapport2008
Bpmrapport2008Bpmrapport2008
Bpmrapport2008
 
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
 
「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013
「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013
「アレ」と Perl で AWS を - YAPC::Asia Tokyo 2013
 
Artikel 4+2 procesmodel v1.0
Artikel 4+2 procesmodel v1.0Artikel 4+2 procesmodel v1.0
Artikel 4+2 procesmodel v1.0
 

Similar to CPANTS: Kwalitative website and its tools

Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011tobiascrawley
 
Socket applications
Socket applicationsSocket applications
Socket applicationsJoão Moura
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
Hyun-Mook Choi
 
Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update Service
Quinlan Jung
 
Introduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCatsIntroduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCats
Derek Anderson
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby Core
Hiroshi SHIBATA
 
Sprockets
SprocketsSprockets
Mojolicious
MojoliciousMojolicious
Mojolicious
Marcus Ramberg
 
Ruby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developerRuby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developer
gicappa
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails App
SmartLogic
 
Modern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextModern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettext
Alexander Mostovenko
 
WebAssembly. Neither Web Nor Assembly, All Revolutionary
WebAssembly. Neither Web Nor Assembly, All RevolutionaryWebAssembly. Neither Web Nor Assembly, All Revolutionary
WebAssembly. Neither Web Nor Assembly, All Revolutionary
C4Media
 
Inside Bokete: Web Application with Mojolicious and others
Inside Bokete:  Web Application with Mojolicious and othersInside Bokete:  Web Application with Mojolicious and others
Inside Bokete: Web Application with Mojolicious and others
Yusuke Wada
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
John Anderson
 
Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBox
bobmcwhirter
 
Write code that writes code!
Write code that writes code!Write code that writes code!
Write code that writes code!
Jason Feinstein
 
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
DroidConTLV
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
Ken Collins
 

Similar to CPANTS: Kwalitative website and its tools (20)

Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update Service
 
Wider than rails
Wider than railsWider than rails
Wider than rails
 
Introduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCatsIntroduction to NodeJS with LOLCats
Introduction to NodeJS with LOLCats
 
How to Begin to Develop Ruby Core
How to Begin to Develop Ruby CoreHow to Begin to Develop Ruby Core
How to Begin to Develop Ruby Core
 
Sprockets
SprocketsSprockets
Sprockets
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Ruby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developerRuby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developer
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails App
 
Modern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextModern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettext
 
WebAssembly. Neither Web Nor Assembly, All Revolutionary
WebAssembly. Neither Web Nor Assembly, All RevolutionaryWebAssembly. Neither Web Nor Assembly, All Revolutionary
WebAssembly. Neither Web Nor Assembly, All Revolutionary
 
Inside Bokete: Web Application with Mojolicious and others
Inside Bokete:  Web Application with Mojolicious and othersInside Bokete:  Web Application with Mojolicious and others
Inside Bokete: Web Application with Mojolicious and others
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBox
 
Write code that writes code!
Write code that writes code!Write code that writes code!
Write code that writes code!
 
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
 
Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 

More from charsbar

Common boolean class_for_perl5
Common boolean class_for_perl5Common boolean class_for_perl5
Common boolean class_for_perl5
charsbar
 
2018年夏のPerl5
2018年夏のPerl52018年夏のPerl5
2018年夏のPerl5
charsbar
 
萬國之津梁
萬國之津梁萬國之津梁
萬國之津梁
charsbar
 
Better detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 codeBetter detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 code
charsbar
 
2017年夏のPerl
2017年夏のPerl2017年夏のPerl
2017年夏のPerl
charsbar
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
charsbar
 
Json(::PP) is a-changing
Json(::PP) is a-changingJson(::PP) is a-changing
Json(::PP) is a-changing
charsbar
 
2016年のPerl (Long version)
2016年のPerl (Long version)2016年のPerl (Long version)
2016年のPerl (Long version)
charsbar
 
JSON, JSON::PP, and more
JSON, JSON::PP, and moreJSON, JSON::PP, and more
JSON, JSON::PP, and more
charsbar
 
perl language update
perl language updateperl language update
perl language update
charsbar
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
charsbar
 
typemap in Perl/XS
typemap in Perl/XS  typemap in Perl/XS
typemap in Perl/XS
charsbar
 
Analyze CPAN, Analyze Community
Analyze CPAN, Analyze CommunityAnalyze CPAN, Analyze Community
Analyze CPAN, Analyze Community
charsbar
 
Annual Report 2012
Annual Report 2012Annual Report 2012
Annual Report 2012
charsbar
 
DBD::SQLite
DBD::SQLiteDBD::SQLite
DBD::SQLite
charsbar
 
CPANTS 2012
CPANTS 2012CPANTS 2012
CPANTS 2012charsbar
 
Revisiting ppm
Revisiting ppmRevisiting ppm
Revisiting ppm
charsbar
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
charsbar
 
変数、リファレンス
変数、リファレンス変数、リファレンス
変数、リファレンス
charsbar
 
關於perl的 文件翻譯
關於perl的文件翻譯關於perl的文件翻譯
關於perl的 文件翻譯
charsbar
 

More from charsbar (20)

Common boolean class_for_perl5
Common boolean class_for_perl5Common boolean class_for_perl5
Common boolean class_for_perl5
 
2018年夏のPerl5
2018年夏のPerl52018年夏のPerl5
2018年夏のPerl5
 
萬國之津梁
萬國之津梁萬國之津梁
萬國之津梁
 
Better detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 codeBetter detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 code
 
2017年夏のPerl
2017年夏のPerl2017年夏のPerl
2017年夏のPerl
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
 
Json(::PP) is a-changing
Json(::PP) is a-changingJson(::PP) is a-changing
Json(::PP) is a-changing
 
2016年のPerl (Long version)
2016年のPerl (Long version)2016年のPerl (Long version)
2016年のPerl (Long version)
 
JSON, JSON::PP, and more
JSON, JSON::PP, and moreJSON, JSON::PP, and more
JSON, JSON::PP, and more
 
perl language update
perl language updateperl language update
perl language update
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
typemap in Perl/XS
typemap in Perl/XS  typemap in Perl/XS
typemap in Perl/XS
 
Analyze CPAN, Analyze Community
Analyze CPAN, Analyze CommunityAnalyze CPAN, Analyze Community
Analyze CPAN, Analyze Community
 
Annual Report 2012
Annual Report 2012Annual Report 2012
Annual Report 2012
 
DBD::SQLite
DBD::SQLiteDBD::SQLite
DBD::SQLite
 
CPANTS 2012
CPANTS 2012CPANTS 2012
CPANTS 2012
 
Revisiting ppm
Revisiting ppmRevisiting ppm
Revisiting ppm
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
 
変数、リファレンス
変数、リファレンス変数、リファレンス
変数、リファレンス
 
關於perl的 文件翻譯
關於perl的文件翻譯關於perl的文件翻譯
關於perl的 文件翻譯
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 

CPANTS: Kwalitative website and its tools