SlideShare une entreprise Scribd logo
1  sur  93
Télécharger pour lire hors ligne
Ruby and Rails
Advanced Training
@gautamrege
@joshsoftware
Agenda - Day 1
Discuss Ruby basics
Syntax, classes, modules.
Meta-programming.
Closures
Rails concepts
Discussion around Rails design
patterns.
ActiveSupport Concern
Rails engines
Agenda - Day 2
Discuss your current Applications.
Gems currently in use
Resolving problems.
ActiveResource
Rails Security
Data Caching
Performace monitoring and improvement
Ruby is easy, right?
Ruby is easy, right?
1 + 1
Ruby is easy, right?
1 + 1
1.+(1)
Ruby is easy, right?
1 + 1
1.+(1)
1.+ 1
Ruby is easy, right?
1 + 1
1.+(1)
1.+ 1
1.send(:+, 1)
How many objects?
How many objects?
1 + 2 + 3
How many objects?
1 + 2 + 3
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
How many objects?
1 + 2 + 3
( 1.+(2) ).+(3)
FIVE
objects
Everything in Ruby
is an object
on which we call a method
to which we pass parameters
and an optional block of code
So, you know Ruby?
So, you know Ruby?
a[1] # What is the data type of a?
So, you know Ruby?
a[1] # What is the data type of a?
a = [‘a’, ‘b’] # Array
So, you know Ruby?
a[1] # What is the data type of a?
a = [‘a’, ‘b’] # Array
a = { 1 => ‘a’} # Hash
So, you know Ruby?
a[1] # What is the data type of a?
a = [‘a’, ‘b’] # Array
a = { 1 => ‘a’} # Hash
a = “abc” # String
So, you know Ruby?
a[1] # What is the data type of a?
a = [‘a’, ‘b’] # Array
a = { 1 => ‘a’} # Hash
a = “abc” # String
a = Proc.new { | x | p x } # proc
Multiplication
Multiplication
[1, 2, 3] * 2
Multiplication
[1, 2, 3] * 2
# => [1, 2, 3, 1, 2, 3]
Multiplication
[1, 2, 3] * 2
# => [1, 2, 3, 1, 2, 3]
[1, 2, 3] * “%”
Multiplication
[1, 2, 3] * 2
# => [1, 2, 3, 1, 2, 3]
[1, 2, 3] * “%”
# => “1%2%3”
There’s always an
easier way
Summation of [1, 2, 3, 4]
Non-ruby way!
sum = 0
!
for i in [1, 2, 3, 4]
sum += i
end
!
p sum
The Amateur!
sum = 0
!
[1, 2, 3, 4].each do |i|
sum += i
end
!
p sum
The Professional!
!
[1, 2, 3, 4].inject(0) do |sum, i|
sum + i
end
The Expert!
!
[1, 2, 3, 4].inject(:+)
Exceptions… never!
class Base
def method_missing(name, *args, &blk)
puts “Unknown method #{name}
called.”
end
end
b = Base.new
b.wtf
What’s in a name?
# User(id: integer, name: string)
class User < ActiveRecord::Base
end
u = User.name
u.name
u.name = “Gautam”
Accessing Data
class User
def initialize
@name = “someone”
end
end u = User.name
u.name
u.name = “Gautam”
Protected & Private
Private methods are inherited
Protected method can be called on
another object in same lineage
What the …
Module Mixins
class Shaktiman
include Spiderman
include Superman
end
irb> Shaktiman.ancestors
=> [ Shaktiman, Superman, Spiderman …]
Closures
sum = 0
[1, 2, 3, 4].each do |x|
sum += i
end
p sum
Anonymous functions?
Local variables scope?
Closures
!
Context sensitive block of code
Rails Design
Patterns
Rails Design
Patterns
Singleton
Rails Design
Patterns
Singleton
Factory
Rails Design
Patterns
Singleton
Factory
Observer
Rails Design
Patterns
Singleton
Factory
Observer
…
Rails Design
Patterns
Singleton
Factory
Observer
…
You cannot learn
Design Patterns!
!
You need to experience
them
SOLID Design
Patterns
SOLID principles
S - Single Responsibilty
O - Open / Closed
L - Liskov Substituion
I - Interface Segregation
D - Dependency Inversion
Single
Responsibility
Serves only one purpose.
Models - manage data
Controllers - manage logic
No logic in views!
Open / Closed
Open for Extension
Closed for modification
Open / Closed
Open for Extension
Closed for modification
ParseFeed
Open / Closed
Open for Extension
Closed for modification
ParseFeed
Atom RSS
ParseFeed
Liskov Substituion
Functionality should work for all
derived classes.
Let q(x) be a property provable about
objects x of type T. Then q(y) should
be true for objects y of type S where
S is subtype of T
Interface
Segregation
Classification based on behaviour
Vehicle
AirRoad
TrainCar RocketAirplane
Dependency
Inversion
High level modules should not
depend on low level modules
Modules should depend on
abstractions
Details should depend on
abstractions
ActiveSupport
Concern
Without ActiveSupport
Concerns
module Foo
def self.included(base)
base.class_eval do
scope :disable, -> { where(disabled: true) }
end
end
end
class Base
include Foo
end
With ActiveSupport
Concerns
module Foo
extend ActiveSupport::Concern
included do
scope :disable, -> { where(disabled: true) }
end
end
class Base
include Foo
end
Dependent Modules
Dependent Modules
module Foo
def self.included(base)
base.class_eval do
def self.foo_method
end
end
end
end
Dependent Modules
module Foo
def self.included(base)
base.class_eval do
def self.foo_method
end
end
end
end
module Bar
def self.included(base)
base.foo_method
end
end
Dependent Modules
module Foo
def self.included(base)
base.class_eval do
def self.foo_method
end
end
end
end
module Bar
def self.included(base)
base.foo_method
end
end
class Base
include Foo
include Bar
end
Dependent Modules
module Foo
def self.included(base)
base.class_eval do
def self.foo_method
end
end
end
end
module Bar
def self.included(base)
base.foo_method
end
end
class Base
include Foo
include Bar
end
add module
dependency
#!!
Module
dependencies
Module
dependencies
module Bar
include Foo
included do
def self.foo_method
end
end
class Base
include Bar
end
Module
dependencies
module Bar
include Foo
included do
def self.foo_method
end
end
class Base
include Bar
end
self = Bar
self != Base
Module
dependencies
module Bar
include Foo
included do
def self.foo_method
end
end
class Base
include Bar
end
self = Bar
self != Base
Module
dependencies
module Bar
extend ActiveSupport::Concern
include Foo
included do
def self.foo_method
end
end
class Base
include Bar
end
no including
extra modues
self = Base
Rails Engines
Engine power
Velocity App
CarRocket
Some custom
Functionality
CarRocket
Some custom
functionality
CarRocket
Some custom
functionality
Astronaut
Shuttles
M
M
CarRocket
Some custom
functionality
Astronaut
Shuttles
M
M
Driver
Rto
M
1
CarRocket
Some custom
functionality
Astronaut
Shuttles
M
M
Driver
Rto
M
1
Company
Quick Reference
rails plugin new <name> —mountable
rails g scaffold <model> <name>:<type>
test/dummy: testing engine.
GamePlay - Car
Create Car engine
Create RTO scaffold
name:string code:string
Create Driver scaffold
name:string rto_id:integer
has_licence:boolean
Testing - Car
rake db:migrate
cd test/dummy
rails s
http://localhost:300/car
GamePlay-Rocket
Create Rocket engine
Create Astronaut scaffold
name:string degree:text
Create Shuttle scaffold
name:string launch_from:text
Create Space_flights scaffold
shuttle_id:integer astronaut_id:integer
launch_on:date
Testing - Rocket
rake db:migrate
cd test/dummy
rails s
http://localhost:3000/rocket
Application Stuff
rails new velocity
update Gemfile
gem ‘car’, path: <path>
gem ‘rocket’, path: <path>
config/routes:
mount Car::Engine, at: ‘/car’
mount Rocket::Engine, at: ‘/engine’
Application Logic
Company scaffold
name:string make_cars:boolean
make_rockets:boolean
owner:string
Using Application
models in engines.
Add migration for owner_id
class Shuttle
belongs_to :owner, class: “Company”
end
NEVER hardcode associations directly
in engines. Use class option.
More ???
Devise
Authentication
Gemfile
gem ‘devise’
rails g devise:install
rails g device user
rake db:migrate
Inherit from App
# rocket/app/controller/rocket/application_controller.rb
class Rocket::ApplicationController <
ApplicationController
end
# shuttles_controller.rb
class ShuttleController < ApplicationControler
before_action :authenticate_user!
end
Checklist
Automatic namespace resolution.
Views that access models require to be fully
resolved.
rake <engine>:install:migrations
rake railties:install:migrations
Controllers permit parameters
No hardcoded associations from top-level app.
Discussions!
ActiveResource
Rails Security
Caching
Performance
Q & A
ActiveResource
Rails Security
Authenticity Token
Protect from forgery
CSRF
SQL injection
XSS - html_safe & raw
http://guides.rubyonrails.org/security.html
Rails Caching
Cache Store:
memory, file, memcached, ehcache, custom
Page & Action caching (DEPRECATED)
http://signalvnoise.com/posts/3113-how-key-based-
cache-expiration-works
Fragment caching
Query caching
http://guides.rubyonrails.org/caching_with_rails.html
Rails Performance
NewRelic Monitoring
Log file and debugging
Load Testing
Concurrency testing
Performance Benchmark using benchmark-ips
http://guides.rubyonrails.org/v3.2.13/
performance_testing.html

Contenu connexe

Tendances

Object Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOPObject Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOP
Wildan Maulana
 
Nedap Rails Workshop
Nedap Rails WorkshopNedap Rails Workshop
Nedap Rails Workshop
Andre Foeken
 

Tendances (20)

Rapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on RailsRapid Application Development using Ruby on Rails
Rapid Application Development using Ruby on Rails
 
What I Love About Ruby
What I Love About RubyWhat I Love About Ruby
What I Love About Ruby
 
Object Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOPObject Oriented Programming with PHP 5 - More OOP
Object Oriented Programming with PHP 5 - More OOP
 
JavaScript - From Birth To Closure
JavaScript - From Birth To ClosureJavaScript - From Birth To Closure
JavaScript - From Birth To Closure
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScript
 
Scale up your thinking
Scale up your thinkingScale up your thinking
Scale up your thinking
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
 
Class 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingClass 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented Programming
 
Object oreinted php | OOPs
Object oreinted php | OOPsObject oreinted php | OOPs
Object oreinted php | OOPs
 
Object-Orientated Design
Object-Orientated DesignObject-Orientated Design
Object-Orientated Design
 
Python: Basic Inheritance
Python: Basic InheritancePython: Basic Inheritance
Python: Basic Inheritance
 
Python: The Iterator Pattern (Comprehensions)
Python: The Iterator Pattern (Comprehensions)Python: The Iterator Pattern (Comprehensions)
Python: The Iterator Pattern (Comprehensions)
 
Solid and Sustainable Development in Scala
Solid and Sustainable Development in ScalaSolid and Sustainable Development in Scala
Solid and Sustainable Development in Scala
 
Class and Objects in PHP
Class and Objects in PHPClass and Objects in PHP
Class and Objects in PHP
 
Nedap Rails Workshop
Nedap Rails WorkshopNedap Rails Workshop
Nedap Rails Workshop
 
All about scala
All about scalaAll about scala
All about scala
 
Java for beginners
Java for beginnersJava for beginners
Java for beginners
 
Creating Objects in Python
Creating Objects in PythonCreating Objects in Python
Creating Objects in Python
 
Java scriptforjavadev part2a
Java scriptforjavadev part2aJava scriptforjavadev part2a
Java scriptforjavadev part2a
 
Cfphp Zce 01 Basics
Cfphp Zce 01 BasicsCfphp Zce 01 Basics
Cfphp Zce 01 Basics
 

En vedette

Resumir inteligencia de negocios
Resumir inteligencia de negociosResumir inteligencia de negocios
Resumir inteligencia de negocios
Roy Wilber
 

En vedette (6)

Cybage
CybageCybage
Cybage
 
Nvis technology-road2ideas
Nvis technology-road2ideasNvis technology-road2ideas
Nvis technology-road2ideas
 
Cybage
CybageCybage
Cybage
 
Cybage
CybageCybage
Cybage
 
Resumir inteligencia de negocios
Resumir inteligencia de negociosResumir inteligencia de negocios
Resumir inteligencia de negocios
 
Turning point life-storyof-a-student-part 1
Turning point life-storyof-a-student-part 1Turning point life-storyof-a-student-part 1
Turning point life-storyof-a-student-part 1
 

Similaire à Ruby and rails - Advanced Training (Cybage)

An introduction-to-ruby-on-rails
An introduction-to-ruby-on-railsAn introduction-to-ruby-on-rails
An introduction-to-ruby-on-rails
vinicorp
 
An Introduction to Ruby on Rails 20100506
An Introduction to Ruby on Rails 20100506An Introduction to Ruby on Rails 20100506
An Introduction to Ruby on Rails 20100506
Vu Hung Nguyen
 
Migrating To Ruby1.9
Migrating To Ruby1.9Migrating To Ruby1.9
Migrating To Ruby1.9
tomaspavelka
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
tobiascrawley
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
Nick Sieger
 
Ruby -the wheel Technology
Ruby -the wheel TechnologyRuby -the wheel Technology
Ruby -the wheel Technology
ppparthpatel123
 

Similaire à Ruby and rails - Advanced Training (Cybage) (20)

Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2
 
jsbasics-slide
jsbasics-slidejsbasics-slide
jsbasics-slide
 
What`s New in Java 8
What`s New in Java 8What`s New in Java 8
What`s New in Java 8
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Dutch PHP Conference 2013: Distilled
Dutch PHP Conference 2013: DistilledDutch PHP Conference 2013: Distilled
Dutch PHP Conference 2013: Distilled
 
An introduction-to-ruby-on-rails
An introduction-to-ruby-on-railsAn introduction-to-ruby-on-rails
An introduction-to-ruby-on-rails
 
An Introduction to Ruby on Rails 20100506
An Introduction to Ruby on Rails 20100506An Introduction to Ruby on Rails 20100506
An Introduction to Ruby on Rails 20100506
 
20140925 rails pacific
20140925 rails pacific20140925 rails pacific
20140925 rails pacific
 
Java
JavaJava
Java
 
Ruby on Rails: Coding Guideline
Ruby on Rails: Coding GuidelineRuby on Rails: Coding Guideline
Ruby on Rails: Coding Guideline
 
Migrating To Ruby1.9
Migrating To Ruby1.9Migrating To Ruby1.9
Migrating To Ruby1.9
 
Why Ruby?
Why Ruby? Why Ruby?
Why Ruby?
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
 
Introduction To Ruby On Rails
Introduction To Ruby On RailsIntroduction To Ruby On Rails
Introduction To Ruby On Rails
 
Ruby - Uma Introdução
Ruby - Uma IntroduçãoRuby - Uma Introdução
Ruby - Uma Introdução
 
Ruby -the wheel Technology
Ruby -the wheel TechnologyRuby -the wheel Technology
Ruby -the wheel Technology
 
A Toda Maquina Con Ruby on Rails
A Toda Maquina Con Ruby on RailsA Toda Maquina Con Ruby on Rails
A Toda Maquina Con Ruby on Rails
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 

Plus de Gautam Rege

Plus de Gautam Rege (15)

RubyConf India 2019 - Confessions of a rubypreneur
RubyConf India 2019 - Confessions of a rubypreneurRubyConf India 2019 - Confessions of a rubypreneur
RubyConf India 2019 - Confessions of a rubypreneur
 
GoFFIng around with Ruby #RubyConfPH
GoFFIng around with Ruby #RubyConfPHGoFFIng around with Ruby #RubyConfPH
GoFFIng around with Ruby #RubyConfPH
 
Agile india 2017 - Rewarding OpenSource with $$$
Agile india 2017 - Rewarding OpenSource with $$$Agile india 2017 - Rewarding OpenSource with $$$
Agile india 2017 - Rewarding OpenSource with $$$
 
WIDS - Gamifying Open Source
WIDS - Gamifying Open SourceWIDS - Gamifying Open Source
WIDS - Gamifying Open Source
 
Gamifying Open Source
Gamifying Open SourceGamifying Open Source
Gamifying Open Source
 
Affordable Smart Housing - The new revolution
Affordable Smart Housing - The new revolutionAffordable Smart Housing - The new revolution
Affordable Smart Housing - The new revolution
 
WebSummit 2015 - Gopher it
WebSummit 2015 - Gopher itWebSummit 2015 - Gopher it
WebSummit 2015 - Gopher it
 
Dont test your code
Dont test your codeDont test your code
Dont test your code
 
Art of speaking at tech conferences
Art of speaking at tech conferencesArt of speaking at tech conferences
Art of speaking at tech conferences
 
RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!
 
RedDot Ruby Conf 2014 - Dark side of ruby
RedDot Ruby Conf 2014 - Dark side of ruby RedDot Ruby Conf 2014 - Dark side of ruby
RedDot Ruby Conf 2014 - Dark side of ruby
 
ScotRuby - Dark side of ruby
ScotRuby - Dark side of rubyScotRuby - Dark side of ruby
ScotRuby - Dark side of ruby
 
GCRC 2014 - The Dark Side of Ruby
GCRC 2014 - The Dark Side of RubyGCRC 2014 - The Dark Side of Ruby
GCRC 2014 - The Dark Side of Ruby
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 

Dernier

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Dernier (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 

Ruby and rails - Advanced Training (Cybage)