SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
_H@<k@th0n_

                             Ken Collins
                            metaskills.net

Monday, September 12, 11
Who Am I Again?




                              ?
Monday, September 12, 11
Who Am I Again?
                            @MetaSkills




Monday, September 12, 11
Who Am I Again?
                            @MetaSkills




Monday, September 12, 11
Who Am I Again?
                            @MetaSkills




Monday, September 12, 11
Who Am I Again?
                            @MetaSkills




Monday, September 12, 11
Who Am I Again?
                            @MetaSkills

                                       ...


Monday, September 12, 11
Sr. Soft ware Engineer @ Decisiv




Monday, September 12, 11
Monday, September 12, 11
JavaScript


Monday, September 12, 11
Monday, September 12, 11
Blog @ MetaSkills.net




Monday, September 12, 11
Freetime @ HomeMarks.com




Monday, September 12, 11
Advocate @ 757rb.org




Monday, September 12, 11
HTML5
                            CSS3

Monday, September 12, 11
Divitis

                 <div id="post">
                   <div id="header">
                     <span class="pubdate">
                        <span class="day">27</span>
                        <span class="month">Dec</span>
                        <span class="year">2010</span>
                     </span>
                     <h1>My New Blog</h1>
                   </div>
                   ...
                   <div id="disqus_thread">
                     ...
                   </div>
                 </div>




Monday, September 12, 11
Semantic

                 <article id="post">
                   <header>
                     <time pubdate datetime="2010-12-27T00:00:00-05:00">
                       <span class="day">27</span>
                       <span class="month">Dec</span>
                       <span class="year">2010</span>
                     </time>
                     <h1>My New Blog</h1>
                   </header>
                   ...
                   <footer id="disqus_thread">
                     ...
                   </footer>
                 </article>




Monday, September 12, 11
Dive Into HTML5




                           http://diveintohtml5.org/semantics.html#new-elements


Monday, September 12, 11
CSS3




Monday, September 12, 11
CSS3
                           Selectors




Monday, September 12, 11
CSS3
                           Selectors
                           Borders (images, radius, shadows)




Monday, September 12, 11
CSS3
                           Selectors
                           Borders (images, radius, shadows)
                           Colors (rgba, hsla, opacity)




Monday, September 12, 11
CSS3
                           Selectors
                           Borders (images, radius, shadows)
                           Colors (rgba, hsla, opacity)
                           Text (wrap, overlay, shadows)




Monday, September 12, 11
CSS3
                           Selectors
                           Borders (images, radius, shadows)
                           Colors (rgba, hsla, opacity)
                           Text (wrap, overlay, shadows)
                           Backgrounds (gradients, clip, origin)



Monday, September 12, 11
CSS3
                           Selectors
                           Borders (images, radius, shadows)
                           Colors (rgba, hsla, opacity)
                           Text (wrap, overlay, shadows)
                           Backgrounds (gradients, clip, origin)
                           Media Queries & Fonts


Monday, September 12, 11
Transitions, Transforms, Animations




Monday, September 12, 11
Transitions, Transforms, Animations




Monday, September 12, 11
jQuery
                           “Mobile”

Monday, September 12, 11
Encapsulate Your JavaScript




                    http://metaskills.net/2011/09/06/how-do-you-encapsulate-your-javascript/


Monday, September 12, 11
Leveraging
                      API's In Ruby

Monday, September 12, 11
Data Format (JSON & XML)




Monday, September 12, 11
Data Format (JSON & XML)
                             Always Use Object Notation




Monday, September 12, 11
Data Format (JSON & XML)
                    {
                           "id":8,
                           "email":"foo@bar.com",
                           "posts":[
                             {"id":30, "title":"First Post", "body":"Some text..."},
                             {"id":73, "title":"Second Post", "body":"More text..."}
                           ]
                    }




Monday, September 12, 11
Data Format (JSON & XML)
                    <user>
                      <id type="integer">8</id>
                      <email>foo@bar.com</email>
                      <posts type="array">
                        <post>
                           <id type="integer">30</id>
                           <title>First Post</title>
                           <body>Some text...</body>
                        </post>
                        <post>
                           <id type="integer">73</id>
                           <title>Second Post</title>
                           <body>More text...</body>
                        </post>
                      </posts>
                    </user>




Monday, September 12, 11
Data Format (JSON & XML)
                             Always Use Object Notation
                             Rails has #to_json and #to_xml
                             Define #as_json for obj primitive.




Monday, September 12, 11
Data Format (JSON & XML)
                             Always Use Object Notation
                             Rails has #to_json and #to_xml
                             Define #as_json for obj primitive.
                             New objects using #from_json and
                             #from_xml methods.




Monday, September 12, 11
Data Format (JSON & XML)

                    json = '{
                       "id":8,
                       "email":"foo@bar.com",
                       "posts":[
                         {"id":30, "title":"First Post", "body":"Some text..."},
                         {"id":73, "title":"Second Post", "body":"More text..."}
                       ]
                    }'

                    user = User.new.from_json(json)
                    user.email              # => foo@bar.com
                    user.posts.size         # => 2
                    user.post.first.title   # => "First Post"




Monday, September 12, 11
Representation
                           State Transfer
                               (REST)




Monday, September 12, 11
Representation
                                  State Transfer
                                      (REST)
                                  CREATE   READ     UPDATE   DELETE

                           DB     INSERT   SELECT   UPDATE   DELETE

                           HTTP    POST     GET      PUT     DELETE




Monday, September 12, 11
Representation
                                  State Transfer
                                      (REST)
                                  CREATE   READ     UPDATE   DELETE

                           DB     INSERT   SELECT   UPDATE   DELETE

                           HTTP    POST     GET      PUT     DELETE




Monday, September 12, 11
Representation
                                  State Transfer
                                      (REST)
                                  CREATE   READ     UPDATE   DELETE

                           DB     INSERT   SELECT   UPDATE   DELETE

                           HTTP    POST     GET      PUT     DELETE




Monday, September 12, 11
Representation
                                    State Transfer
                                        (REST)
             GET           /users       {:controller=>"users",   :action=>"index"}
             POST          /users       {:controller=>"users",   :action=>"create"}
             GET           /users/:id   {:controller=>"users",   :action=>"show"}
             PUT           /users/:id   {:controller=>"users",   :action=>"update"}
             DELETE        /users/:id   {:controller=>"users",   :action=>"destroy"}




Monday, September 12, 11
HTTP Clients


Monday, September 12, 11
HTTP Clients In Ruby




Monday, September 12, 11
HTTP Clients In Ruby
                           Many choices!




Monday, September 12, 11
HTTP Clients In Ruby
                           Many choices!
                           Ruby’s core lib Net::HTTP looks more
                           like wizardry vs idiomatic Ruby.




Monday, September 12, 11
HTTP Clients In Ruby
                           Many choices!
                           Ruby’s core lib Net::HTTP looks more
                           like wizardry vs idiomatic Ruby.
                           Research and pick one that works
                           best for you.




Monday, September 12, 11
HTTP Clients In Ruby




                           http://ruby-toolbox.com/categories/http_clients.html


Monday, September 12, 11
Typhoeus
                                        High Speed!
                                        Built On Top Of libcurl
                                        Simple RESTful Request
                                        Parallel Requests
                                        Memoization & Caching

                           https://github.com/dbalatero/typhoeus


Monday, September 12, 11
Typhoeus
                hydra = Typhoeus::Hydra.new
                request = Typhoeus::Request.new("http://localhost/posts/1.json")
                request.on_complete do |response|
                  json = JSON.parse(response.body)
                  post = Post.new.from_json(json)
                  # Do crazy callback stuff...
                end

                hydra.queue request
                hydra.run # This is a blocking call that
                          # returns once all requests are complete.




Monday, September 12, 11
SOAP


Monday, September 12, 11
Pragmatic Use Of Builder
                           xml = Builder::XmlMarkup.new(:indent=>2)
                           xml.user do
                             xml.id 8, :type => 'integer'
                             xml.email "foo@bar.com"
                             xml.posts :type => 'array' do
                               xml.post {...}
                             end
                           end
                           xml.target! # =>
                                       # <user>
                                       #    <id type="integer">8</id>
                                       #    <email>foo@bar.com</email>
                                       #    <posts type="array">
                                       #      <post>
                                       #        ...
                                       #      </post>
                                       #    </posts>
                                       # </user>



                                         http://builder.rubyforge.org/


Monday, September 12, 11
If You Embrace SOAP
                               Savon                      Handsoap




                           http://savonrb.com/   https://github.com/unwire/handsoap




Monday, September 12, 11
Thanks!
                            Ken Collins
                           metaskills.net



Monday, September 12, 11

Mais conteúdo relacionado

Destaque

Destaque (6)

Timetap
TimetapTimetap
Timetap
 
TextMate
TextMateTextMate
TextMate
 
Tool Time
Tool TimeTool Time
Tool Time
 
Secrets of the asset pipeline
Secrets of the asset pipelineSecrets of the asset pipeline
Secrets of the asset pipeline
 
ZSH and RVM
ZSH and RVMZSH and RVM
ZSH and RVM
 
Should you release open source Ruby projects?
Should you release open source Ruby projects?Should you release open source Ruby projects?
Should you release open source Ruby projects?
 

Semelhante a Dominion Enterprises _H@&lt;k@th0n_

Modern HTML & CSS Coding: Speed, Semantics & Structure
Modern HTML & CSS Coding: Speed, Semantics & StructureModern HTML & CSS Coding: Speed, Semantics & Structure
Modern HTML & CSS Coding: Speed, Semantics & StructureRaven Tools
 
Progressive Advancement, by way of progressive enhancement
Progressive Advancement, by way of progressive enhancementProgressive Advancement, by way of progressive enhancement
Progressive Advancement, by way of progressive enhancementPaul Irish
 
Using Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer ArchitectureUsing Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer ArchitectureGarann Means
 
Introduction To MongoDB
Introduction To MongoDBIntroduction To MongoDB
Introduction To MongoDBYnon Perek
 
Building Sencha Themes
Building Sencha ThemesBuilding Sencha Themes
Building Sencha ThemesSencha
 
Performance & Responsive Web Design
Performance & Responsive Web DesignPerformance & Responsive Web Design
Performance & Responsive Web DesignZach Leatherman
 
What's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James PearceWhat's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James PearceSencha
 
SassConf: It takes a village to raise a stylesheet
SassConf: It takes a village to raise a stylesheetSassConf: It takes a village to raise a stylesheet
SassConf: It takes a village to raise a stylesheetchriseppstein
 
Active Record Introduction - 3
Active Record Introduction - 3Active Record Introduction - 3
Active Record Introduction - 3Blazing Cloud
 
Introduction to Web Programming
Introduction to Web ProgrammingIntroduction to Web Programming
Introduction to Web ProgrammingYnon Perek
 
Keeping responsive into the future by Chris mills
Keeping responsive into the future by Chris millsKeeping responsive into the future by Chris mills
Keeping responsive into the future by Chris millsCodemotion
 
Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]foundsearch
 
Practical Ruby Projects (Alex Sharp)
Practical Ruby Projects (Alex Sharp)Practical Ruby Projects (Alex Sharp)
Practical Ruby Projects (Alex Sharp)MongoSF
 
Practical Ruby Projects with MongoDB - MongoSF
Practical Ruby Projects with MongoDB - MongoSFPractical Ruby Projects with MongoDB - MongoSF
Practical Ruby Projects with MongoDB - MongoSFAlex Sharp
 

Semelhante a Dominion Enterprises _H@&lt;k@th0n_ (20)

Modern HTML & CSS Coding: Speed, Semantics & Structure
Modern HTML & CSS Coding: Speed, Semantics & StructureModern HTML & CSS Coding: Speed, Semantics & Structure
Modern HTML & CSS Coding: Speed, Semantics & Structure
 
How diazo works
How diazo worksHow diazo works
How diazo works
 
Progressive Advancement, by way of progressive enhancement
Progressive Advancement, by way of progressive enhancementProgressive Advancement, by way of progressive enhancement
Progressive Advancement, by way of progressive enhancement
 
Using Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer ArchitectureUsing Templates to Achieve Awesomer Architecture
Using Templates to Achieve Awesomer Architecture
 
Introduction To MongoDB
Introduction To MongoDBIntroduction To MongoDB
Introduction To MongoDB
 
Building Sencha Themes
Building Sencha ThemesBuilding Sencha Themes
Building Sencha Themes
 
Performance & Responsive Web Design
Performance & Responsive Web DesignPerformance & Responsive Web Design
Performance & Responsive Web Design
 
Curious case of Dust
Curious case of DustCurious case of Dust
Curious case of Dust
 
What's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James PearceWhat's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James Pearce
 
SassConf: It takes a village to raise a stylesheet
SassConf: It takes a village to raise a stylesheetSassConf: It takes a village to raise a stylesheet
SassConf: It takes a village to raise a stylesheet
 
Active Record Introduction - 3
Active Record Introduction - 3Active Record Introduction - 3
Active Record Introduction - 3
 
RuHL
RuHLRuHL
RuHL
 
Introduction to Web Programming
Introduction to Web ProgrammingIntroduction to Web Programming
Introduction to Web Programming
 
Keeping responsive into the future by Chris mills
Keeping responsive into the future by Chris millsKeeping responsive into the future by Chris mills
Keeping responsive into the future by Chris mills
 
ActiveSupport
ActiveSupportActiveSupport
ActiveSupport
 
Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]Elasticsearch – mye mer enn søk! [JavaZone 2013]
Elasticsearch – mye mer enn søk! [JavaZone 2013]
 
XML-Javascript
XML-JavascriptXML-Javascript
XML-Javascript
 
XML-Javascript
XML-JavascriptXML-Javascript
XML-Javascript
 
Practical Ruby Projects (Alex Sharp)
Practical Ruby Projects (Alex Sharp)Practical Ruby Projects (Alex Sharp)
Practical Ruby Projects (Alex Sharp)
 
Practical Ruby Projects with MongoDB - MongoSF
Practical Ruby Projects with MongoDB - MongoSFPractical Ruby Projects with MongoDB - MongoSF
Practical Ruby Projects with MongoDB - MongoSF
 

Último

“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdfMuhammad Subhan
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!Memoori
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data SciencePaolo Missier
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Hiroshi SHIBATA
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Skynet Technologies
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...FIDO Alliance
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe中 央社
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...ScyllaDB
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfFIDO Alliance
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...ScyllaDB
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 

Último (20)

“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 

Dominion Enterprises _H@&lt;k@th0n_

  • 1. _H@<k@th0n_ Ken Collins metaskills.net Monday, September 12, 11
  • 2. Who Am I Again? ? Monday, September 12, 11
  • 3. Who Am I Again? @MetaSkills Monday, September 12, 11
  • 4. Who Am I Again? @MetaSkills Monday, September 12, 11
  • 5. Who Am I Again? @MetaSkills Monday, September 12, 11
  • 6. Who Am I Again? @MetaSkills Monday, September 12, 11
  • 7. Who Am I Again? @MetaSkills ... Monday, September 12, 11
  • 8. Sr. Soft ware Engineer @ Decisiv Monday, September 12, 11
  • 12. Blog @ MetaSkills.net Monday, September 12, 11
  • 14. Advocate @ 757rb.org Monday, September 12, 11
  • 15. HTML5 CSS3 Monday, September 12, 11
  • 16. Divitis <div id="post"> <div id="header"> <span class="pubdate"> <span class="day">27</span> <span class="month">Dec</span> <span class="year">2010</span> </span> <h1>My New Blog</h1> </div> ... <div id="disqus_thread"> ... </div> </div> Monday, September 12, 11
  • 17. Semantic <article id="post"> <header> <time pubdate datetime="2010-12-27T00:00:00-05:00"> <span class="day">27</span> <span class="month">Dec</span> <span class="year">2010</span> </time> <h1>My New Blog</h1> </header> ... <footer id="disqus_thread"> ... </footer> </article> Monday, September 12, 11
  • 18. Dive Into HTML5 http://diveintohtml5.org/semantics.html#new-elements Monday, September 12, 11
  • 20. CSS3 Selectors Monday, September 12, 11
  • 21. CSS3 Selectors Borders (images, radius, shadows) Monday, September 12, 11
  • 22. CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Monday, September 12, 11
  • 23. CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Text (wrap, overlay, shadows) Monday, September 12, 11
  • 24. CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Text (wrap, overlay, shadows) Backgrounds (gradients, clip, origin) Monday, September 12, 11
  • 25. CSS3 Selectors Borders (images, radius, shadows) Colors (rgba, hsla, opacity) Text (wrap, overlay, shadows) Backgrounds (gradients, clip, origin) Media Queries & Fonts Monday, September 12, 11
  • 28. jQuery “Mobile” Monday, September 12, 11
  • 29. Encapsulate Your JavaScript http://metaskills.net/2011/09/06/how-do-you-encapsulate-your-javascript/ Monday, September 12, 11
  • 30. Leveraging API's In Ruby Monday, September 12, 11
  • 31. Data Format (JSON & XML) Monday, September 12, 11
  • 32. Data Format (JSON & XML) Always Use Object Notation Monday, September 12, 11
  • 33. Data Format (JSON & XML) { "id":8, "email":"foo@bar.com", "posts":[ {"id":30, "title":"First Post", "body":"Some text..."}, {"id":73, "title":"Second Post", "body":"More text..."} ] } Monday, September 12, 11
  • 34. Data Format (JSON & XML) <user> <id type="integer">8</id> <email>foo@bar.com</email> <posts type="array"> <post> <id type="integer">30</id> <title>First Post</title> <body>Some text...</body> </post> <post> <id type="integer">73</id> <title>Second Post</title> <body>More text...</body> </post> </posts> </user> Monday, September 12, 11
  • 35. Data Format (JSON & XML) Always Use Object Notation Rails has #to_json and #to_xml Define #as_json for obj primitive. Monday, September 12, 11
  • 36. Data Format (JSON & XML) Always Use Object Notation Rails has #to_json and #to_xml Define #as_json for obj primitive. New objects using #from_json and #from_xml methods. Monday, September 12, 11
  • 37. Data Format (JSON & XML) json = '{ "id":8, "email":"foo@bar.com", "posts":[ {"id":30, "title":"First Post", "body":"Some text..."}, {"id":73, "title":"Second Post", "body":"More text..."} ] }' user = User.new.from_json(json) user.email # => foo@bar.com user.posts.size # => 2 user.post.first.title # => "First Post" Monday, September 12, 11
  • 38. Representation State Transfer (REST) Monday, September 12, 11
  • 39. Representation State Transfer (REST) CREATE READ UPDATE DELETE DB INSERT SELECT UPDATE DELETE HTTP POST GET PUT DELETE Monday, September 12, 11
  • 40. Representation State Transfer (REST) CREATE READ UPDATE DELETE DB INSERT SELECT UPDATE DELETE HTTP POST GET PUT DELETE Monday, September 12, 11
  • 41. Representation State Transfer (REST) CREATE READ UPDATE DELETE DB INSERT SELECT UPDATE DELETE HTTP POST GET PUT DELETE Monday, September 12, 11
  • 42. Representation State Transfer (REST) GET /users {:controller=>"users", :action=>"index"} POST /users {:controller=>"users", :action=>"create"} GET /users/:id {:controller=>"users", :action=>"show"} PUT /users/:id {:controller=>"users", :action=>"update"} DELETE /users/:id {:controller=>"users", :action=>"destroy"} Monday, September 12, 11
  • 44. HTTP Clients In Ruby Monday, September 12, 11
  • 45. HTTP Clients In Ruby Many choices! Monday, September 12, 11
  • 46. HTTP Clients In Ruby Many choices! Ruby’s core lib Net::HTTP looks more like wizardry vs idiomatic Ruby. Monday, September 12, 11
  • 47. HTTP Clients In Ruby Many choices! Ruby’s core lib Net::HTTP looks more like wizardry vs idiomatic Ruby. Research and pick one that works best for you. Monday, September 12, 11
  • 48. HTTP Clients In Ruby http://ruby-toolbox.com/categories/http_clients.html Monday, September 12, 11
  • 49. Typhoeus High Speed! Built On Top Of libcurl Simple RESTful Request Parallel Requests Memoization & Caching https://github.com/dbalatero/typhoeus Monday, September 12, 11
  • 50. Typhoeus hydra = Typhoeus::Hydra.new request = Typhoeus::Request.new("http://localhost/posts/1.json") request.on_complete do |response| json = JSON.parse(response.body) post = Post.new.from_json(json) # Do crazy callback stuff... end hydra.queue request hydra.run # This is a blocking call that # returns once all requests are complete. Monday, September 12, 11
  • 52. Pragmatic Use Of Builder xml = Builder::XmlMarkup.new(:indent=>2) xml.user do xml.id 8, :type => 'integer' xml.email "foo@bar.com" xml.posts :type => 'array' do xml.post {...} end end xml.target! # => # <user> # <id type="integer">8</id> # <email>foo@bar.com</email> # <posts type="array"> # <post> # ... # </post> # </posts> # </user> http://builder.rubyforge.org/ Monday, September 12, 11
  • 53. If You Embrace SOAP Savon Handsoap http://savonrb.com/ https://github.com/unwire/handsoap Monday, September 12, 11
  • 54. Thanks! Ken Collins metaskills.net Monday, September 12, 11