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

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Último (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

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