SlideShare ist ein Scribd-Unternehmen logo
1 von 93
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch

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

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von Gautam Rege

Mehr von 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
 

Kürzlich hochgeladen

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+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
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Kürzlich hochgeladen (20)

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
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
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 🔝✔️✔️
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
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
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
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
 
+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...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
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
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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 🔝✔️✔️
 

Ruby and rails - Advanced Training (Cybage)