SlideShare uma empresa Scribd logo
1 de 55
DBIx::Skinny

     Ryo Miyake - nekoya -
         (id:studio-m)
,. -‐'''''""¨
                                (.     _,,,... -        |
                              |i i|      }! }} / |
                               |l {      j} /,, //                        10   LT
                                 i|:! _         u {:}//
                               | u' } , _,!V, |
                           ´f _{ {, '                ,          55
                      /'         | | {´,) `/ |< i
               ,
                  | _
                          ) iL         u' | |
                                   ! ⊇ ' :} V:::::              5    LT
            /               7'T'' u' __ /:::::::/
                 /'´r -—          ‐   ´ '"´ :::: -
          / //          ¨´ /'            ::::: ´
    '/         :::::` - ___ ::::: /                         }
_      /:::::::::::::::::::::::::: ` -{:::...
•               nekoya

• id:studio-m
• http://twitter.com/nekoya
• http://wassr.jp/user/nekoya
•
DBIx::SKinny
    by nekokak
SQL




DBIx::Skinny::Manual::JA::Intro
• CPAN
• github
• http://github.com/nekokak/p5-dbix-skinny
DBI          ORM


•    SQL

•          Row
• MyApp::DB, MyApp::DB::Schema
•       Row                 DBIx::Skinny::Row

• MyApp::DB::Row::{Table}
rule                      inflate/deflate
inflate/deflate


install_inflate_rule '^.+_at$' => callback {
   inflate {
       my $value = shift;
       return $value;
   };
   deflate {
       my $value = shift;
       return $value;
   };
};
rule                      inflate/deflate
my $timezone = DateTime::TimeZone->new(name => 'Asia/Tokyo');
install_inflate_rule '^.+_at$' => callback {
   inflate {
       my $value = shift;
       my $dt = DateTime::Format::Strptime->new(
          pattern => '%Y-%m-%d %H:%M:%S',
          time_zone => $timezone,
       )->parse_datetime($value);
       return DateTime->from_object( object => $dt );
   };
   deflate {
       my $value = shift;
       return DateTime::Format::MySQL->format_datetime($value);
   };
};
trigger

trigger
trigger
install_table 'user' => schema {
   pk 'id';
   columns qw/id name mail created_at updated_at/;
   trigger pre_insert => sub {
       my ( $class, $args ) = @_;
       $args->{created_at} ||= DateTime->now;
   };
   trigger pre_update => sub {
       my ( $class, $args ) = @_;
       $args->{updated_at} ||= DateTime->now;
   };
};
• inflate/deflate
• trigger
    trigger

    created_at    pre_insert
common_trigger (ry
trigger
trigger                common_trigger

install_common_trigger pre_insert => sub {
   my ($self, $args) = @_;
   $args->{created_at} ||= DateTime->now;
};


•                          trigger
trigger

install_common_trigger pre_insert => sub {
   my ($self, $args, $table) = @_;
   my $columns = $self->schema->schema_info
->{$table}->{columns};
   $args->{created_at} ||= DateTime->now
       if grep {/^created_at$/} @$columns;
};

               trigger
nekokak        YAPC

• http://nekokak.org/presen/yapcasia2009-dbix-
  skinny/


github

• http://github.com/nekokak/p5-dbix-skinny/blob/
  master/lib/DBIx/Skinny/Manual/JA/
DBIx::Skinny::Schema::Loader
MyApp::DB::Schema      install_table



• pk columns DB
• http://github.com/nekoya/p5-dbix-skinny-schema-
  loader
: load_schema

package Your::DB::Schema;
use base qw/DBIx::Skinny::Schema::Loader/;

__PACKAGE__->load_schema;
: load_schema
package Your::DB::Schema;
use base qw/DBIx::Skinny::Schema::Loader/;

install_table books => schema {
   trigger pre_insert => sub {
       my ($class, $args) = @_;
       $args->{ name } = 'HOGE';
   }
};
__PACKAGE__->load_schema;

1;
: make_schema_at
publish_schema.pl
   use DBIx::Skinny::Schema::Loader
         qw/make_schema_at/;


   print make_schema_at(
        'Your::DB::Schema',                # Schema class
        { },                               # options
        [ 'dbi:SQLite:test.db', '', '' ]   # connect info
   );
: make_schema_at

$ perl publish_schema.pl > Your/DB/Schema.pm

• DBIC
• Skinny   Schema 1

•
make_schema_at

my $tmpl = << '...';
# custom template
install_utf8_columns qw/jpname title content/;
install_common_trigger pre_insert => sub {
   my ($self, $args) = @_;
   $args->{created_at} ||= DateTime->now;
};
...
make_schema_at

print make_schema_at(
     'Mock::DB::Schema',
     {
         before_template => $before,
     },
     [ 'dbi:SQLite:test.db', '', '' ]
);

 • after_template
table_template

 • install_table
 • TT         table, pk, columns

install_table [% table %] => schema {
     pk '[% pk %]';
     columns qw/[% columns %]/;
};
DBIx::Skinny::
InflateColumn::DateTime
DBIx::Skinny::InflateColumn::DateTime

• _at, _on            DateTime           inflate/deflate

• created_xx, updated_xx
    inspired
    DBIx::Class::InflateColumn::DateTime::Auto
    (hidek++)
    http://blog.hide-k.net/archives/2006/08/
    dbixclassauto_i.phpdbixclassauto_i.php
DBIx::Skinny::InflateColumn::DateTime

• MySQL
• timestamp            now()



• insert      select

• Perl
•                                 …
DBIx::Skinny::InflateColumn::DateTime
package Your::DB::Schema;
use DBIx::Skinny::Schema;
use DBIx::Skinny::InflateColumn::DateTime;

install_table table1 => {
   pk 'id';
   columns qw/id name created_at updated_at/;
};

install_table table2 => {
   pk 'id';
   columns qw/id name booked_on created_on updated_on/;
};
Ark::Plugin::Authentication::
    Store::DBIx::Skinny
Ark by typester

• Catalyst
• http://typester.stfuawsc.com/slides/yapsasia2009-
  ark/
•        Ark

• Ark + Skinny
package MyApp;
use Ark;
use MyApp::Models;

use_model 'MyApp::Models';

use_plugins qw{
  Session
  Session::State::Cookie
  Session::Store::Memory

     Authentication
     Authentication::Credential::Password
     Authentication::Store::DBIx::Skinny
};
config 'Plugin::Authentication::Store::DBIx::Skinny' => {
   model     => 'db',
   table    => 'members',
   user_field => 'name',
};




•                      DBIC

•
DBIx::Skinny::AR
DBIx::Skinny::AR

• Any::Moose
• ActiveRecord
• http://github.com/nekoya/p5-dbix-skinny-ar
DBIx::Skinny::AR


• Model
•                     DB
DBIx::Skinny::AR
DBIC

• Row          use base 'DBIx::Class'

• Model   DB

• DBIC
• pixis                      …
DBIx::Skinny::AR



  DBIx::Skinny (ry
DBIx::Skinny::AR
package MyApp::DB;
use DBIx::Skinny;

package MyApp::DB::Schema;
use DBIx::Skinny::Schema;

install_table books => schema {
   pk 'id';
   columns qw/id author_id title/
};
• MyApp::DB::Schema          MyApp/DB.pm
• MyApp::DB
   use DBIx::Skinny setup => {
      dsn => 'dbi:SQLite:test.db',
      username => '',
      password => '',
   };


   MyApp::DB->connect($conf->{ database });
DBIx::Skinny::AR
package MyApp::AR;
use Any::Moose;
extends 'DBIx::Skinny::AR';

__PACKAGE__->setup('MyApp::DB');

1;
package Mock::Book;
use Any::Moose;
extends 'Mock::AR';

use Carp;

has 'id' => (
   is => 'rw',
   isa => 'Undef | Int',
);

has 'author_id' => (
   is => 'rw',
   isa => 'Undef | Int',
);
has 'title' => (
   is     => 'rw',
   isa => 'Str',
   traits => [qw/Unique/],
);

__PACKAGE__->belongs_to('author');

1;
find
my $book = MyApp::Book->find(1);

my $book = MyApp::Book->find({ title => ‘hoge’ });

my $books = MyApp::Book->find_all;

my $latests = MyApp::Book->find_all(
   { author_id => $author_id },
   { order_by => { id => 'desc' } }
);
Relationships
• belongs_to
• has_one
• has_many
• many_to_many
Relationships
• $book->author
•
   has 'author' => (
      is    => 'ro',
      isa => 'MyApp::Author',
      clearer => 'clear_author',
      lazy => 1,
      default => sub { … }
   );
Relationships
DB

 • $book->author->clear_author
 • $book->author->reload
Trait::Unique
has 'title' => (
   is     => 'rw',
   isa => 'Str',
   traits => [qw/Unique/],
);


 •
 •
 •          SQL
• perldoc DBIx::Skinny

•
• SQLite

•
IRC

#dbix-skinny at perl.org ( irc.perl.org )

#perl-casual at Freenode ( irc.freenode.net )
Skinny   Skinny




              [eof]

Mais conteúdo relacionado

Mais procurados

Leveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHPLeveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHPJeremy Kendall
 
Php 102: Out with the Bad, In with the Good
Php 102: Out with the Bad, In with the GoodPhp 102: Out with the Bad, In with the Good
Php 102: Out with the Bad, In with the GoodJeremy Kendall
 
Leveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHPLeveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHPJeremy Kendall
 
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 othersYusuke Wada
 
Word Play in the Digital Age: Building Text Bots with Tracery
Word Play in the Digital Age: Building Text Bots with TraceryWord Play in the Digital Age: Building Text Bots with Tracery
Word Play in the Digital Age: Building Text Bots with TracerySarah Sexton
 
Getting Started with Microsoft Bot Framework
Getting Started with Microsoft Bot FrameworkGetting Started with Microsoft Bot Framework
Getting Started with Microsoft Bot FrameworkSarah Sexton
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworksdiego_k
 
Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101hendrikvb
 
Let's write secure drupal code! - Drupal Camp Pannonia 2019
Let's write secure drupal code! - Drupal Camp Pannonia 2019Let's write secure drupal code! - Drupal Camp Pannonia 2019
Let's write secure drupal code! - Drupal Camp Pannonia 2019Balázs Tatár
 
PHP and Rich Internet Applications
PHP and Rich Internet ApplicationsPHP and Rich Internet Applications
PHP and Rich Internet Applicationselliando dias
 
Undercover Pods / WP Functions
Undercover Pods / WP FunctionsUndercover Pods / WP Functions
Undercover Pods / WP Functionspodsframework
 
コードの動的生成のお話
コードの動的生成のお話コードの動的生成のお話
コードの動的生成のお話鉄次 尾形
 
Let's write secure Drupal code! DUG Belgium - 08/08/2019
Let's write secure Drupal code! DUG Belgium - 08/08/2019Let's write secure Drupal code! DUG Belgium - 08/08/2019
Let's write secure Drupal code! DUG Belgium - 08/08/2019Balázs Tatár
 
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Arc & Codementor
 

Mais procurados (20)

Leveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHPLeveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHP
 
Php 102: Out with the Bad, In with the Good
Php 102: Out with the Bad, In with the GoodPhp 102: Out with the Bad, In with the Good
Php 102: Out with the Bad, In with the Good
 
Leveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHPLeveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHP
 
Redis
RedisRedis
Redis
 
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
 
Developing apps using Perl
Developing apps using PerlDeveloping apps using Perl
Developing apps using Perl
 
Word Play in the Digital Age: Building Text Bots with Tracery
Word Play in the Digital Age: Building Text Bots with TraceryWord Play in the Digital Age: Building Text Bots with Tracery
Word Play in the Digital Age: Building Text Bots with Tracery
 
Getting Started with Microsoft Bot Framework
Getting Started with Microsoft Bot FrameworkGetting Started with Microsoft Bot Framework
Getting Started with Microsoft Bot Framework
 
Mojo as a_client
Mojo as a_clientMojo as a_client
Mojo as a_client
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworks
 
Cpsh sh
Cpsh shCpsh sh
Cpsh sh
 
Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101
 
Let's write secure drupal code! - Drupal Camp Pannonia 2019
Let's write secure drupal code! - Drupal Camp Pannonia 2019Let's write secure drupal code! - Drupal Camp Pannonia 2019
Let's write secure drupal code! - Drupal Camp Pannonia 2019
 
PHP and Rich Internet Applications
PHP and Rich Internet ApplicationsPHP and Rich Internet Applications
PHP and Rich Internet Applications
 
Undercover Pods / WP Functions
Undercover Pods / WP FunctionsUndercover Pods / WP Functions
Undercover Pods / WP Functions
 
コードの動的生成のお話
コードの動的生成のお話コードの動的生成のお話
コードの動的生成のお話
 
Substitution Cipher
Substitution CipherSubstitution Cipher
Substitution Cipher
 
JSON and the APInauts
JSON and the APInautsJSON and the APInauts
JSON and the APInauts
 
Let's write secure Drupal code! DUG Belgium - 08/08/2019
Let's write secure Drupal code! DUG Belgium - 08/08/2019Let's write secure Drupal code! DUG Belgium - 08/08/2019
Let's write secure Drupal code! DUG Belgium - 08/08/2019
 
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
 

Destaque

アラートメールの運用
アラートメールの運用アラートメールの運用
アラートメールの運用Ryo Miyake
 
俺とプログラマーズカフェ
俺とプログラマーズカフェ俺とプログラマーズカフェ
俺とプログラマーズカフェRyo Miyake
 
なぜパスワードを使い回すとシステム部が切れるのか
なぜパスワードを使い回すとシステム部が切れるのかなぜパスワードを使い回すとシステム部が切れるのか
なぜパスワードを使い回すとシステム部が切れるのか歩 奥山
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門Ryo Miyake
 
インターネット広告とPerl、ここ数年の歩み
インターネット広告とPerl、ここ数年の歩みインターネット広告とPerl、ここ数年の歩み
インターネット広告とPerl、ここ数年の歩みRyo Miyake
 

Destaque (8)

アラートメールの運用
アラートメールの運用アラートメールの運用
アラートメールの運用
 
俺とプログラマーズカフェ
俺とプログラマーズカフェ俺とプログラマーズカフェ
俺とプログラマーズカフェ
 
About test
About testAbout test
About test
 
SmartCSS
SmartCSSSmartCSS
SmartCSS
 
Python setup
Python setupPython setup
Python setup
 
なぜパスワードを使い回すとシステム部が切れるのか
なぜパスワードを使い回すとシステム部が切れるのかなぜパスワードを使い回すとシステム部が切れるのか
なぜパスワードを使い回すとシステム部が切れるのか
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門
 
インターネット広告とPerl、ここ数年の歩み
インターネット広告とPerl、ここ数年の歩みインターネット広告とPerl、ここ数年の歩み
インターネット広告とPerl、ここ数年の歩み
 

Semelhante a DBIx::Skinnyと仲間たち

Mojo – Simple REST Server
Mojo – Simple REST ServerMojo – Simple REST Server
Mojo – Simple REST Serverhendrikvb
 
テストデータどうしてますか?
テストデータどうしてますか?テストデータどうしてますか?
テストデータどうしてますか?Yuki Shibazaki
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexyananelson
 
Curscatalyst
CurscatalystCurscatalyst
CurscatalystKar Juan
 
Creating Reusable Puppet Profiles
Creating Reusable Puppet ProfilesCreating Reusable Puppet Profiles
Creating Reusable Puppet ProfilesBram Vogelaar
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the FinishYehuda Katz
 
[WLDN] Supercharging word press development in 2018
[WLDN] Supercharging word press development in 2018[WLDN] Supercharging word press development in 2018
[WLDN] Supercharging word press development in 2018Adam Tomat
 
Introduction To Moco
Introduction To MocoIntroduction To Moco
Introduction To MocoNaoya Ito
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
Lecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLê Thưởng
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overviewYehuda Katz
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress DeveloperJoey Kudish
 
Bioinformatics p5-bioperl v2013-wim_vancriekinge
Bioinformatics p5-bioperl v2013-wim_vancriekingeBioinformatics p5-bioperl v2013-wim_vancriekinge
Bioinformatics p5-bioperl v2013-wim_vancriekingeProf. Wim Van Criekinge
 
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet CampPuppet
 
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Michelangelo van Dam
 

Semelhante a DBIx::Skinnyと仲間たち (20)

Mojo – Simple REST Server
Mojo – Simple REST ServerMojo – Simple REST Server
Mojo – Simple REST Server
 
About Data::ObjectDriver
About Data::ObjectDriverAbout Data::ObjectDriver
About Data::ObjectDriver
 
Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
 
テストデータどうしてますか?
テストデータどうしてますか?テストデータどうしてますか?
テストデータどうしてますか?
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexy
 
Curscatalyst
CurscatalystCurscatalyst
Curscatalyst
 
Creating Reusable Puppet Profiles
Creating Reusable Puppet ProfilesCreating Reusable Puppet Profiles
Creating Reusable Puppet Profiles
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
 
[WLDN] Supercharging word press development in 2018
[WLDN] Supercharging word press development in 2018[WLDN] Supercharging word press development in 2018
[WLDN] Supercharging word press development in 2018
 
Perl object ?
Perl object ?Perl object ?
Perl object ?
 
Introduction To Moco
Introduction To MocoIntroduction To Moco
Introduction To Moco
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
Lecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdf
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
 
Bioinformatica p6-bioperl
Bioinformatica p6-bioperlBioinformatica p6-bioperl
Bioinformatica p6-bioperl
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress Developer
 
Bioinformatics p5-bioperl v2013-wim_vancriekinge
Bioinformatics p5-bioperl v2013-wim_vancriekingeBioinformatics p5-bioperl v2013-wim_vancriekinge
Bioinformatics p5-bioperl v2013-wim_vancriekinge
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
 
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013
 

Último

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

DBIx::Skinnyと仲間たち