SlideShare une entreprise Scribd logo
1  sur  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]

Contenu connexe

Tendances

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
 

Tendances (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...
 

En vedette

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

En vedette (8)

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

Similaire à 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
 

Similaire à 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
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
#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
 
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
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 

Dernier (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
#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
 
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
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 

DBIx::Skinnyと仲間たち