SlideShare a Scribd company logo
1 of 62
RubyKaigi2011




Underlaying Technology of
Modern O/R Mappter


makoto kuwata
http://www.kuwata-lab.com/
Table of Contents
 The Goal of Modern ORM
 Query Object
 View-layer Cacing
 Ruby-to-SQL Transformation
 How to Prevent SQL Injection
The Goal of Modern ORM
What is the Problem?
By the way...
Refactoring
Key Points
 Programming language can
  break large part into small pieces
  construct large part from small pieces
  add name to pieces in order to abstract
  them
Again, What is the Problem?
       	  	        	 
     	                    	    	 
     	    	             	 
     	 
      • SQL can't break large one into pieces
      • SQL can't be constructed from pieces
      • SQL can't name or abstract pieces
Does ORM Solve it?
    	                 	 
         	    	  	 



	 	                               	    	 
	 	                        	 
	 	 
                                Not abstracted
Abstract by Named Scope
History of Evolution
    OOP,
                Modern ORM
  Functional



  C, Pascal      DBI, ORM



  Assembler        SQL
Conclusion of this section
 SQL is just Assembler
  It can't be broken into pieces
  It can't be constructed from pieces
  It can't name or abstract pieces
 Modern ORM provides abstraction for
 SQL
  ex. named_scope
Query Object
Kwd arg vs. Method Chain
Query Object (1)
Query Object (2)
Method Call vs. Query Op
               Just a method call

	 	 	 	 	                   	      	    	 
	 	 	 	 	         	 


                  	    	      	 
	 	 	 	 	 	 
	 	 	 	 	 	 
                   Operation to Query object
Query Operation (1)
   	                    Just a method call
Query Operation (2)
   	                     Just a method call
Query Operation (3)
   	                    Just a method call
Query Operation (4)
   	                   Just a method call
Query == Collection
            Array
    	  	 
              	     	    	 

        ActiveRecord::Relation
Action to Collection
 	    	 
                       condition
                           	     	         	 

 	         	 
                  condition
SQL Abstraction (1)
SQL Abstraction (2)
OT: Partial Application
Conslution of this section
 Query object
  is the key concept for modern ORM
  behaves like a collection
  abstracts SQL
ORM and View-layer Cache
Example: Fragment Cache
Example: Controller
       	 
	 	         	  	 

            Submits SQL everytime
Move find() from C to V?
    	              	           	     	 

	 	      	                                 	     	    	 
	 	                  	    	 
	 	      	         	 
                                    MVC broken
Check Cache Existence?

                    C depends on V tightly
What is the Problem?
                    View

                                 Cache: Pull-style

MVC: Push-style
                       Context Data


                  Controller
Sol: Proc or Lambda (C)
      	 
	 	        	  	       	 
	 	 	 	 
	 	 
                   find(:all) is not called yet
Sol: Proc or Lambda (V)
   	        	            	    	 
	 	 
	 	  	                             	    	    	 
	 	 	 	          	       	 
	 	  	      	 
	 	                   Call find(:all) only when
     	   	            cache is expired
Sol: Proc or Lambda
 Pros.
  Easy to understand & implement
 Cons.
  Caching on V affects to C
  (C must be changed according to V)
Sol: Lazy Loading (C)
       	 
	 	      	    	 
	 	                 	  	 
	 	      	 
	 	                	  	 

                            SQL is not executed yet
Sol: Lazy Loading (V)
   	        	           	    	 
	 	 
	 	  	                  	    	    	 
	 	 	 	          	      	 
	 	  	      	 
	 	 
     	   	 
                      Nothing to be changed!
Sol: Lazy Loading
 Pros.
  Caching on V doesn't affect to C
 Cons.
  Availables only on modern ORM
  (not available on Rails2)
Conclusion of this section
 MVC and fragment cache are not good
 friends
  MVC: push-style
  Fragment cache: pull-style
 Laziness solves them
  Proc or lambda
  Lazy loading
N+1 Problem
What is N+1 Problem? (1)
       	 
	 	         	 


       	 
	 	              	 

                      Team : Member = 1 : N
What is N+1 Problem? (2)
                      	    	       	 

	    	    	    	    	           }1
	    	    	    	    	      	     	 
	 
	 
     	 
     	 
          	 
          	 
               	 
               	 
                    	 
                    	 
                           	 
                           	 
                                 	 
                                 	      }N
Sol: Eager Loading
Sol: Eager Loading
 Pros.
  Easy to understand
 Cons.
  Not adaptive to changes
    Easy to forget
    Hard to notice
  Unused eager loading is very waste
Sol: Strategic Eager Loading
Sol: Strategic Eager Loading
    	 
              	  	 

	 	      	             	  	     	 

	 	  	 	 	             	  	     	 
	 	  	 	 	 	 	 	 	 	 	 	 	 	      	    	    	 
                • Each item knows its collection
                • Collection resolves relationships
Sol: Strategic Eager Loading
 Pros.
  Adaptive to changes
  (No need to specify relationship for eager
  loading)
 Cons.
  Not supported in Rails (2 & 3)
Conclusion of this section
 Eager loading
  Easy to forget, hard to notice
 Strategic Eager Loading
  No need to specify relation names
  Adaptive to changes
Ruby-to-SQL Translation
Evaluation

    x=1
    x+1      2
AST by Evaluation

 x = Column.new(:x)

 x+1             +


             x       1
Operator Override
Ruby to AST to SQL
	    	  	 	 	 	 	 	 	 	 	         	  	 


                                 ==
	    	  	 	 	 	                           	  	  	 	 	 

Operator                     x        1
Override
Other Examples
Sequel Example
Pitfalls
 1.8 doesn't allow to override '!=' operator
  Use 1.9
 Impossible to override '&&' nor '||'
  Use '&' and '|' instead, or 'AND()', 'OR()'
OT: Operast
 Library to convert Ruby expression into
 other language (such as SQL).
 https://github.com/kwatch/operast
OT: Oktest
 New-style testing library for Python
 Apply Operator Override to Testing
 http://packages.python.org/Oktest/
Conclusion of this section
 How to
  Ruby to AST (by Operator Override)
  AST to SQL
Any Questions?
Underlaying Technology of Modern O/R Mapper

More Related Content

Viewers also liked

Software de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão GerenciadaSoftware de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão GerenciadaThiarlei Macedo
 
Pst to eml converter for Mac
Pst to eml converter for MacPst to eml converter for Mac
Pst to eml converter for MacDigital Tweaks
 
Horario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañanaHorario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañanacolegiommc
 
Financial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer CampaignFinancial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer CampaigneGov Magazine
 
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...Thiarlei Macedo
 
LTS presentation
LTS presentationLTS presentation
LTS presentationdharden
 
Intro to Python for Data Science
Intro to Python for Data ScienceIntro to Python for Data Science
Intro to Python for Data Sciencepaul gureghian
 
Parquetry Flooring in Sydney
Parquetry Flooring in SydneyParquetry Flooring in Sydney
Parquetry Flooring in SydneyAdvance Flooring
 
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014Thiarlei Macedo
 
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaSoftware de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaThiarlei Macedo
 
Condition of farmer in india
Condition of farmer in indiaCondition of farmer in india
Condition of farmer in indiasurya prakash
 
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...Cristiane Assis
 
Ana Popovic HE Marketing
Ana Popovic HE MarketingAna Popovic HE Marketing
Ana Popovic HE MarketingAna Popović
 
As relacións semánticas
As relacións semánticasAs relacións semánticas
As relacións semánticasrrlvp
 

Viewers also liked (18)

Software de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão GerenciadaSoftware de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
Software de gerenciamento de impressão - Thiarlei - Impressão Gerenciada
 
Pst to eml converter for Mac
Pst to eml converter for MacPst to eml converter for Mac
Pst to eml converter for Mac
 
Horario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañanaHorario de recuperaciones jornada mañana
Horario de recuperaciones jornada mañana
 
Wiki y blog
Wiki y blog Wiki y blog
Wiki y blog
 
Financial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer CampaignFinancial Inclusion for Inclusive Growth – Save the Farmer Campaign
Financial Inclusion for Inclusive Growth – Save the Farmer Campaign
 
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
Software de monitoramento de impressoras pela internet - Thiarlei - Impressão...
 
LTS presentation
LTS presentationLTS presentation
LTS presentation
 
Plato,jarra
Plato,jarraPlato,jarra
Plato,jarra
 
Intro to Python for Data Science
Intro to Python for Data ScienceIntro to Python for Data Science
Intro to Python for Data Science
 
Parquetry Flooring in Sydney
Parquetry Flooring in SydneyParquetry Flooring in Sydney
Parquetry Flooring in Sydney
 
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014Panorama do Mercado de Impressoras 2013  - Thiarlei - Outsourcing Trends 2014
Panorama do Mercado de Impressoras 2013 - Thiarlei - Outsourcing Trends 2014
 
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaSoftware de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
 
Cluster bean
Cluster beanCluster bean
Cluster bean
 
Condition of farmer in india
Condition of farmer in indiaCondition of farmer in india
Condition of farmer in india
 
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
Estações quarentenárias e aspectos legais do uso de agentes de controle bioló...
 
Ana Popovic HE Marketing
Ana Popovic HE MarketingAna Popovic HE Marketing
Ana Popovic HE Marketing
 
Natural resource
Natural resourceNatural resource
Natural resource
 
As relacións semánticas
As relacións semánticasAs relacións semánticas
As relacións semánticas
 

Similar to Underlaying Technology of Modern O/R Mapper

01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book IIChuong Nguyen
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patternssgleadow
 
Solving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationSolving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationdmcfarlane
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: RenormalizeAriel Weil
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: RenormalizeAriel Weil
 
Advanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live projectAdvanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live projectShaheel Khan
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment WorkshopChuong Nguyen
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Object- Relational Persistence in Smalltalk
Object- Relational Persistence in SmalltalkObject- Relational Persistence in Smalltalk
Object- Relational Persistence in SmalltalkESUG
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principlesdeonpmeyer
 
High-performance model queries
High-performance model queriesHigh-performance model queries
High-performance model queriesIstvan Rath
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloJulian Arocena
 
Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Anton Arhipov
 
High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...Vladimir Bacvanski, PhD
 
Reuse and cloud in component based development
Reuse and cloud in component based developmentReuse and cloud in component based development
Reuse and cloud in component based developmentscuffio
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_colorDATAVERSITY
 

Similar to Underlaying Technology of Modern O/R Mapper (20)

01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book II
 
Jvm fundamentals
Jvm fundamentalsJvm fundamentals
Jvm fundamentals
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patterns
 
Introducing spring
Introducing springIntroducing spring
Introducing spring
 
Solving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalizationSolving performance problems in MySQL without denormalization
Solving performance problems in MySQL without denormalization
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: Renormalize
 
Akiban Technologies: Renormalize
Akiban Technologies: RenormalizeAkiban Technologies: Renormalize
Akiban Technologies: Renormalize
 
Advanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live projectAdvanced Php/Mysql Training With live project
Advanced Php/Mysql Training With live project
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop
 
Cp7 rpc
Cp7 rpcCp7 rpc
Cp7 rpc
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Object- Relational Persistence in Smalltalk
Object- Relational Persistence in SmalltalkObject- Relational Persistence in Smalltalk
Object- Relational Persistence in Smalltalk
 
Object Oriented Concepts and Principles
Object Oriented Concepts and PrinciplesObject Oriented Concepts and Principles
Object Oriented Concepts and Principles
 
High-performance model queries
High-performance model queriesHigh-performance model queries
High-performance model queries
 
Scotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao PabloScotas - Oracle Open World Sao Pablo
Scotas - Oracle Open World Sao Pablo
 
Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012Rapid java application development @ JUG.ru 25.02.2012
Rapid java application development @ JUG.ru 25.02.2012
 
High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...High performance database applications with pure query and ibm data studio.ba...
High performance database applications with pure query and ibm data studio.ba...
 
Oracle sql demo
Oracle sql demoOracle sql demo
Oracle sql demo
 
Reuse and cloud in component based development
Reuse and cloud in component based developmentReuse and cloud in component based development
Reuse and cloud in component based development
 
Thu 1100 duncan_john_color
Thu 1100 duncan_john_colorThu 1100 duncan_john_color
Thu 1100 duncan_john_color
 

More from kwatch

How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Pythonkwatch
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアルkwatch
 
なんでもID
なんでもIDなんでもID
なんでもIDkwatch
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方kwatch
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?kwatch
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)kwatch
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するkwatch
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?kwatch
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Pythonkwatch
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策kwatch
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurialkwatch
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -kwatch
 
文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみたkwatch
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"kwatch
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラムkwatch
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンkwatch
 

More from kwatch (20)

How to make the fastest Router in Python
How to make the fastest Router in PythonHow to make the fastest Router in Python
How to make the fastest Router in Python
 
Migr8.rb チュートリアル
Migr8.rb チュートリアルMigr8.rb チュートリアル
Migr8.rb チュートリアル
 
なんでもID
なんでもIDなんでもID
なんでもID
 
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
Nippondanji氏に怒られても仕方ない、配列型とJSON型の使い方
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?
 
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
【公開終了】Python4PHPer - PHPユーザのためのPython入門 (Python2.5)
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
Fantastic DSL in Python
Fantastic DSL in PythonFantastic DSL in Python
Fantastic DSL in Python
 
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
What is wrong on Test::More? / Test::Moreが抱える問題点とその解決策
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Pretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/MercurialPretty Good Branch Strategy for Git/Mercurial
Pretty Good Branch Strategy for Git/Mercurial
 
Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -Oktest - a new style testing library for Python -
Oktest - a new style testing library for Python -
 
文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた文字列結合のベンチマークをいろんな処理系でやってみた
文字列結合のベンチマークをいろんな処理系でやってみた
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
 
Javaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジンJavaより速いLL用テンプレートエンジン
Javaより速いLL用テンプレートエンジン
 

Recently uploaded

QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 

Recently uploaded (20)

QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 

Underlaying Technology of Modern O/R Mapper