SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
2008.02.26
      鈍器本セミナー 第二部

Web 2.0とRuby
    gem install rails -y




  (株)永和システムマネジメント
                 伊藤 浩一
   http://www.edit.ne.jp/~koic/
自己紹介
•   名前: 伊藤 浩一
•   日記: http://www.edit.ne.jp/~koic/
•   Twitter: http://twitter.com/koic/
•   メール: koic.ito@gmail.com
•   勤務先: 株式会社 永和システムマネジメント
    – プログラマ 兼 現場リーダー




Web 2.0とRuby                            2
何やっている人が話すの?




Web 2.0とRuby                  3
仕事風景から
               ~最近の新メニュー~




Web 2.0とRuby                4
古今東西
    デザパタ古今東西




Web 2.0とRuby      5
それってなんなの?
• 週末の夕会後、
• GoFのデザインパターンのパターン名や
  java.langパッケージのクラス名など、
• テーマを決め、
• メンバーが順番に云って行き、
• パス三回でアウトになるサバイバルゲーム




Web 2.0とRuby               6
なにが狙い?
• 少し離れ気味の知識、伝家の宝刀が錆びない
  よう素振り
• 奇妙な一体感とノスタルジーによるヒーリング効
  果
• 楽しく一週間の仕事を終える




Web 2.0とRuby           7
思わぬ副作用
               ~周辺プロジェクトの反応~




Web 2.0とRuby                   8
自ずから巻き込まれる
• 事例1 @nawoto LLWGリーダー




• 事例2 @_dotタン




Web 2.0とRuby             9
巻き込まれ力の
             向上効果

Web 2.0とRuby        10
巻き込まれ力~あまのりょーさんの仮説




                 『”involve” NOT ”evolve”』
                          あまのりょーさん
Web 2.0とRuby                          11
一目置かれる人に近づく!




Web 2.0とRuby             12
もうひとつの顔~ライター~
• Web 2.0ビギナーズバイブル (毎日コミュニケーションズ)
• EngineerMind vol.5 (技術評論社)
    – 『プログラマのための創造的プロジェクトファシリテーション』

• 開発の現場 vol.11           (翔泳社)
    – 『保守プロジェクトとデベロッパーテスティング』




                928ページ
                 鈍器本


Web 2.0とRuby                          13
巻き込まれてシメシメやってきました




                       『”involve” NOT ”evolve”』
                                あまのりょーさん
Web 2.0とRuby                                14
今日はよろしく
        お願いします
Web 2.0とRuby     15
アジェンダ
• プログラマとしてのお話
    – RubyとRuby on Rails
    – Ruby on RailsとREST
• 現場リーダーとしてのお話
    – Ruby on Railsによるチーム開発
• ライターとしてのお話
    – 次回作のプレビュー




Web 2.0とRuby                     16
プログラマとしてのお話




Web 2.0とRuby                 17
Chapter 1. WebとRuby




Web 2.0とRuby                         18
Ruby
• プログラミングを楽しくする言語
• プログラマのプログラマによるプログラマのため
  の言語
• ツール(言語)は思考を規定する




               http://www.ruby-lang.org/ja/


Web 2.0とRuby                              19
Web 2.0 ビギナーズバイブル
               Perl, PHP, Python, Rubyなどの
               Lightweight LanguageでWeb
               アプリケーション開発を解説し
               た書籍




Web 2.0とRuby                            20
Lightweight Language
               • Lightweight Languageとは
                 「脳力」を少なく消費する
               • 「脳力」はプログラミング活動
                 中に消費される仮想的なパワ
                 ーである
               • 消費「脳力」の総和が少ない
                 ことももちろん重要だが瞬間
                 最大消費「脳力」が大きすぎる
                 のもよろしくない

Web 2.0とRuby                           21
人間の脳への負担の少ない性質
発想→変換→表現(プログラム)
                 距離
         発想                  表現
                      say = quot;I love Rubyquot;
                      puts say

                      say['love'] = quot;*love*quot;
                 変換   puts say.upcase

                      5.times { puts say }




発想から表現までの変換の距離「脳力」が生産性の指標のひとつ

Web 2.0とRuby                                   22
Web APIを利用したサンプルコード
 Ruby/Amazonを使った書誌情報取得例
amazon-search.rb
require 'amazon/search'

if ARGV.size != 2
  puts quot;Usage: #{$0} quot;¥
    quot;[Amazon Web Services AccessKey ID] [text to search for]quot;
  exit
end
access_key, search_request = ARGV
req = Amazon::Search::Request.new(access_key)
req.keyword_search(search_request, 'books', Amazon::Search::LIGHT) do |book|
  puts %{quot;#{book.product_name}quot; by #{book.authors.join(', ')}}
end

実行と結果
$ ruby amazon-search.rb アクセスキー quot;restful web services“
quot;RESTful Web Servicesquot; by Leonard Richardson, Sam Ruby, David Heinemeier
Hansson

                                               『RESTful Webサービス』より抜粋

Web 2.0とRuby                                                               23
言語としてのRuby自体は
               Webと直接の関係はなく
           Ruby on Railsによる
            波及効果が大きい

Web 2.0とRuby                   24
Ruby on Rails
• Ruby製のWebアプリケーションフレームワーク
• 「美しいコードを書けるからRubyを選んだ」
  (David Heinemeier Hansson氏)
    – http://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/

• 現在のRubyブームの火付け役




                                        http://www.rubyonrails.org/


Web 2.0とRuby                                                      25
Ruby on Railsの特徴
• DRY―Don’t Repeat Yourself
  (繰り返しを避けること)
• Convention over Configuration
  (設定より規約)
• full-stack




Web 2.0とRuby                         26
割愛
     鈍器本 Chapter 11 をご参照ください




Web 2.0とRuby                   27
異なる側面
• DSL
• パターン               Patterns
• REST指向       DSL                REST




               DRY              full-stack
                      CoC



Web 2.0とRuby                                 28
DSL
• Domain Specific Language (DSL)
    – Webとデータベースの領域に特化した内部DSL
• 左から右へ
    – 目で文章を追う時と同じ動きで記述可能
       • BDDフレームワーク『RSpec』に顕著
• 問題領域の語彙を使い、少ない記述でコードの
  意図を表すことができる
       class Profile < ActiveRecord::Base
         belongs_to :account
         validates_presence_of :name
       end

Web 2.0とRuby                                 29
(補足) 内部DSL
• 内部DSLによりすべてRubyの構文で記述可能
    – RubyのAPIとRailsのAPIに違いがない
                                              Railsの
                                              採った道
               外部DSL           内部DSL

   対象ドメイン              外部DSL   内部DSL(Rails)
                                              透過的
    汎用言語                       汎用言語(Ruby)


  例えばRuby          例えばXML       Railsの場合


               「脳力」の消費が低い言語で一貫できる

Web 2.0とRuby                                           30
Patterns

               パターンは発明する
               ものではなく発見
               されるもの
『Patterns of Enterprise Application Architecture』
『Refactoring Databases』『J2EE Patterns』などの
パターンが構成要素に含まれる
          後に出てくるものが優れていることは世の常

Web 2.0とRuby                                        31
REST指向
次章に続く




Web 2.0とRuby       32
Chapter 2. RailsとREST




Web 2.0とRuby                           33
RESTとROA
• RESTはWebに依存しない設計条件
• ROA (Resource oriented Architecture)
    – RESTアーキテクチャスタイルの実現手段のひとつ


       アーキテクチャスタイル       REST




          アーキテクチャ         ROA




Web 2.0とRuby                             34
ROAとプログラマブルWeb
• プログラムを対象としたWeb
    – HTTPとMachine ReadableなXMLに基づいている
                   人
                                  URL

                                 HTML
                                                      リソース
               マシン(プログラム)         URL


プログラマブルWeb                       XML
               ▲




                                                   • 東京の天気予報
                                            HTTP   • 2008年2月26日の
                       require ‘open-uri‘
                       require ‘rexml‘               スケジュール
                                                   • 東京の地図
                       open(“www...


Web 2.0とRuby                                                   35
リソースとURI
• リソースとは実体だったり概念だったりする抽象
  的なもの
• RESTでは、クライアントが操作できるリソース
  ごとにURIを公開
                 URI
                          リソース
                        (東京の地図)
               公開した名前
                 ▼

   GET /maps/tokyo
メソッド情報         スコープ情報


Web 2.0とRuby                            36
HTTPリクエストとメッセージパッシング
   GET /maps/tokyo
                                       HTTPリクエスト(抜粋)




               名詞                    動詞
                                       メッセージパッシング
  Map.find(:first, :conditions => [’area = ?’, ’tokyo’])


Web 2.0とRuby                                               37
リソース指向とオブジェクト指向
   GET /maps/tokyo

                       URI
                                リソース
                                              メソッド名が
      クライアント                 GET             標準化されている
                             POST
                             PUT
               名前を持つ         DELETE
                             …


                              <<instance>>
           <<instance>>                        <<instance>>
                             2008年2月26日
           東京の天気予報                              東京の地図
                              のスケジュール


  Map.find(:first, :conditions => [’area = ?’, ’tokyo’])


Web 2.0とRuby                                                  38
Active Resource
• Webサービスを対象にActiveRecordのような
  CRUDを備える
    – Rails 2.0で正式に追加された
• REST指向フレームワークという特色をより強く
  打ち出す
    – ActiveResource::Baseクラスを継承して、オブジェ
      クトを公開するサイトを指定することでWebのCRUD
      に対応Map < ActiveResource::Base
      class
         self.site = ’http://localhost:3000’
       end



Web 2.0とRuby                                   39
Chapter 1 & 2 まとめ
• Lightweight LanguageによるWebアプリケーシ
  ョンフレームワークの台頭によりWebプログラミ
  ングの敷居が低くなりました
    – Railsへの最初の一歩は以下のコマンドです
       $ gem install rails -y



      Rubyのインストールと、『鈍器本』の購入をお忘れなく



Web 2.0とRuby                        40
Chapter 3. Ruby on Railsによる
                                  チーム開発
                ~現場リーダーから見たRails~




Web 2.0とRuby                                 41
Railsを使ったお仕事の経験と風聞
•   メンバーの立ち上がりが速い
•   比較的簡単な業務知識
•   Model/Controllerのプロダクトコード実装量が少ない
•   その分Viewやテストを厚く
    – デスクトップライクなUIの作成は、JavaScriptで
       • 自動化されたテストにするのが大変 ><
    – そもそもUIのテストは自動化できるものと、できないものがあ
      る
       • 限られた開発期間の中で、自動化をするための工数(投資)が見合
         わないことが多い




Web 2.0とRuby                          42
新しいアイテムを手に入れた?
• 道具が変わっても人が変わるわけではない
    – 新しい技術を持ってきても、基礎となる開発の呼吸
      は変わらない
    – プラットフォーム独特の設計技法やコンピュータへの
      指示方法が変わる
       • 新しい技術への対応速度
• 継続的なプランニング、ホワイトボードディスカッ
  ション、報告・連絡・相談など、足元が重要
    – チームのまわし方への配慮


Web 2.0とRuby                 43
プロジェクトを取り巻くツール




Web 2.0とRuby               44
人とツール


人はあらゆるツールよりも重要である。
優れた人々に優れたツールを与えれば、
ツールを持たない優れた人々よりも効率が
上がる。
特にそれを使うときが楽しいものであれば。




Web 2.0とRuby       45
プロジェクトでの基盤技術とツール
• バージョン管理
• テスティング
    – ユニットテスト
    – 受入れテスト      RSpec on Rails    CC.rb
                    test/unit
                                            Capistrano
• 自動化
    – CI                      SVN
    – マイグレーション                         自動化
    – デプロイ
                           テスティング

                              バージョン管理

Web 2.0とRuby                                      46
3つの基盤技術
                  3つの基盤技術と3つの環境
 (V)バージョン管理               test, development, production
 (T)テスティング
 (A)自動化
                                                受入れテスト(T)
               リポジトリ(V)
                                              運用環境
                                            <production>
    チェックアウト
       (V)
                   更新、
  継続的インテグレーション   チェックアウト        コミット(V)
      サーバ           (V)
      <test>
                          ローカル環境                 デプロイ(A)
                 作業   <test, development>    ※リポジトリから運用環境へ
                                              ソースをチェックアウト
マイグレーション、テスト
     (A)
                                 マイグレーション(A)
                  ユニットテスト(T)
Web 2.0とRuby                                               47
継続的インテグレーション
CIサーバ
               チェックアウト、ビルド
                                      リポジトリ(V)


                       結果レポート、リビルド要求



 エラー通知
  メール




               http://cruisecontrolrb.thoughtworks.com/

Web 2.0とRuby                                          48
静的コンパイルのないRubyで自動ビルド?
• 動作するプログラムへの期待を担保するには、
  プログラムを動かすこと
    – 静的チェックは構文チェックまでで動かない
• 他のメンバーと同じリソースを使ったテスト
    – 自分のコミットで自動ビルドが通らなくなった?
    – 自分の変更で他の人の環境が動かなくなった?
• 変更の差分が小さいうちに早目に検知
    – 差分が大きいほど、どこで壊したか調査が大変

プログラムが動くまでがビルド、静的チェックは通過点に過ぎない

Web 2.0とRuby                   49
最近の受入れテスト
• わりと後付け
    – 開発促進よりセーフティーネットの意味合いが強い
• まず受入れテスト基盤を作るコストを考えること
    – 自動化への二つの道




Web 2.0とRuby                50
Webサービスの受入れテスト ステップ例
• 最初は手作業(ドキュメントによるオペレーション)
• 合間合間にスクラッチで自動化                     階段の開始と幅はそのと
    – irb時代                          きの力量に応じます。
                                     人によりもっとカッコいい
       • net/httpでWebサービスにリクエストを送る
                                     ステップがあると思います。
       • 結果を目視
    – Ver 0.1
       • Irbで書いたコードを元におれおれテスティングフレームワーク
       • net/httpでWebサービスにリクエストを送る
       • WebサービスのレスポンスXMLをrexmlでパースして文字列比較を行った結果、失敗し
         たら例外を投げる
    – Ver 0.2
       • test/unitを導入
       • net/httpでWebサービスにリクエストを送る
       • WebサービスのレスポンスXMLをrexmlでパースして文字列比較のアサーションを行う




Web 2.0とRuby                                      51
Chapter 3 まとめ
• 道具が変わっても、 (Webアプリケーション開発
  というドメインにおいて) プロジェクトのまわし方
  は大きくは変わらない
    – 泥臭いところは通じていたりする



          No, Silver Bullet!

Web 2.0とRuby                     52
Chapter 4. 次回作のプレビュー
                   ~ライターとしてのお話~




Web 2.0とRuby                          53
次回作予告
• Javaプログラマ向けRubyプログラミング書籍
   『タイトル未定』
• 鈍器本と同じく、毎日コミュニケーションズから
• 共著者に小野良 哲郎さん
    – 弊社コンサルティングセンター所属
• 2008年8月発売予定



★本章で取り扱う内容は書籍でボツになっている可能性があります

Web 2.0とRuby                 54
三つの柱
• Javaプログラマ向けRubyプログラミングガイド
• JRuby
• Ruby 1.9
    – 出版時期が微妙なため扱い方を検討中




Web 2.0とRuby                  55
属性へのアクセサ
アクセサ(メソッド)で宣言するのが慣例
 public class Product {                         Java
     private String name;
        スペースの都合上、コンストラクタは
     // スペースの都合上、コンストラクタは省略
     public String getName() {
       return name;
     }
 }

 class Product            name属性への              Ruby
   attr_reader :name      アクセサ宣言
   def initialize(name)
     @name = name         getter, setter と アクセサ(メソッド)の対応
   end                    •getter … attr_reader
 end                      •setter … attr_writer
                          •getter, setter … attr_accessor

Web 2.0とRuby                                                56
オープンクラス
既存のクラスを拡張可能
 module Spec                                       Ruby
   module Exceptions
     class ExpectationNotMetError < StandardError
     end
   end
   module Expectations
     def should_equal(expected)
       raise Spec::Exceptions::ExpectationNotMetError ¥
         if self != expected
     end
   end    既存のObjectクラスを        利用例                     Ruby
 end      拡張
                                p = Product.new(’Ruby’)
 class Object                   p.name.should_equal(’Ruby’)
   include Spec::Expectations p.name.should_equal(’Perl’)
 end

Web 2.0とRuby                                                  57
パッケージの可視性
• Javaはクラス単位、Rubyはオブジェクト単位と可視性が異なる
• Rubyにパッケージプライベートはない
          アクセス制御
          アクセス制御         Ruby              Java
 private           同一のインスタンス(自分       同一のクラス(のインスタン
                   自身)からのみ参照可能。       ス)から参照可能
                   レシーバ(self)の指定不可。   (インスタンスが異なっても
                                      同一クラスならば参照可
                   (同じインスタンスからも参      能)
                   照可能)

 protected         同一のクラスもしくはサブ       同一のクラス(・パッケー
                   クラス(のインスタンス)か      ジ)もしくはサブクラス(のイ
                   ら参照可能              ンスタンス)から参照可能

 public            すべてのクラス(のインスタ      すべてのクラス(のインスタ
                   ンス)から参照可能          ンス)から参照可能



Web 2.0とRuby                                      58
その他、Ruby Tips
• ==メソッドとequalメソッド
    – Javaと逆だよ
       • オブジェクトの同値性比較は==メソッド (適宜オーバーラ
         イド)
       • オブジェクトの同一性比較はequalメソッド (オーバーライ
         ドするな!)
• Enumerable#sortとEnumarable#sort_by
    – sort_byメソッドの方が高速
    – まずsort_byで考える



Web 2.0とRuby                           59
Ruby 1.9
• Ruby 1.8との後方互換性はない
    – 1.8と1.9は別物
• 大きな変更            Ruby 1.9ネタは、
                   Appendixかなあ。
    – Ruby VMの採用
    – M17N対応
    – ブロック変数のスコープを変更
    – 組み込みクラスとそのメソッドの追加、廃止

                         などなど


Web 2.0とRuby                      60
JRuby
• Javaで実装されたRubyの処理系
• 現在のJRubyは、Ruby 1.8に対応
• JavaのライブラリをRubyのシンタックスで利用可能
    – 処理系がJavaなので当然といえば当然ですが
• アーキテクチャの可能性
    – Javaによる既存のサブシステムを背景にフロントをRailsで作
      る
    – 2相コミットや非同期メッセージ処理などはJavaで
       • 素直にJavaでやればいい気もしますが選択肢の幅として
    – Enterprise Ruby ><
• サンプルは検討中
Web 2.0とRuby                              61
Chapter 4 まとめ



Javaプログラマ向けのRubyプログラミングガイド


  2008年8月発売予定


Web 2.0とRuby                 62
おわりに
• 少ない「脳力」でWebプログラミングができ
  ることで、プログラマブルWebの敷居が低
  くなりました
    – 機会があれば、Webの可能性をお楽しみくだ
      さい
• 道具が変わっても人は変わらない
    – 如何により楽しい環境にしていくかが大事



Web 2.0とRuby                63
4q!


     ご清聴ありがとう
       ございました

Web 2.0とRuby    64

Weitere ähnliche Inhalte

Was ist angesagt?

Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)龍一 田中
 
Windows MobileとWeb Api
Windows MobileとWeb ApiWindows MobileとWeb Api
Windows MobileとWeb ApiKenji Wada
 
Cac giai phap_lap_trinh_c___final_[bookbooming.com]
Cac giai phap_lap_trinh_c___final_[bookbooming.com]Cac giai phap_lap_trinh_c___final_[bookbooming.com]
Cac giai phap_lap_trinh_c___final_[bookbooming.com]bookbooming1
 
淺嚐新火狐
淺嚐新火狐淺嚐新火狐
淺嚐新火狐Bob Chao
 
Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Makio Tsukamoto
 
CSNagoya コンパイラを作ろう
CSNagoya コンパイラを作ろうCSNagoya コンパイラを作ろう
CSNagoya コンパイラを作ろうtoyoshi
 
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)龍一 田中
 
瀏覽器的想像
瀏覽器的想像瀏覽器的想像
瀏覽器的想像Bob Chao
 
Modern Front End Evolution
Modern Front End EvolutionModern Front End Evolution
Modern Front End EvolutionKUAN-CHING CHOU
 
Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)bose999
 
WordFes2016登壇資料
WordFes2016登壇資料WordFes2016登壇資料
WordFes2016登壇資料wasi300
 

Was ist angesagt? (18)

Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)
 
Windows MobileとWeb Api
Windows MobileとWeb ApiWindows MobileとWeb Api
Windows MobileとWeb Api
 
Cac giai phap_lap_trinh_c___final_[bookbooming.com]
Cac giai phap_lap_trinh_c___final_[bookbooming.com]Cac giai phap_lap_trinh_c___final_[bookbooming.com]
Cac giai phap_lap_trinh_c___final_[bookbooming.com]
 
淺嚐新火狐
淺嚐新火狐淺嚐新火狐
淺嚐新火狐
 
webwork2guide
webwork2guidewebwork2guide
webwork2guide
 
Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Wikiスパムの傾向と対策
Wikiスパムの傾向と対策
 
CSNagoya コンパイラを作ろう
CSNagoya コンパイラを作ろうCSNagoya コンパイラを作ろう
CSNagoya コンパイラを作ろう
 
Way to Wikiwyg
Way to WikiwygWay to Wikiwyg
Way to Wikiwyg
 
Asr
AsrAsr
Asr
 
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)
 
XP and Music
XP and MusicXP and Music
XP and Music
 
瀏覽器的想像
瀏覽器的想像瀏覽器的想像
瀏覽器的想像
 
Modern Front End Evolution
Modern Front End EvolutionModern Front End Evolution
Modern Front End Evolution
 
Web入門
Web入門Web入門
Web入門
 
Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)Wicket + EJB3 on JBoss (Japanese)
Wicket + EJB3 on JBoss (Japanese)
 
HTML
HTMLHTML
HTML
 
WordFes2016登壇資料
WordFes2016登壇資料WordFes2016登壇資料
WordFes2016登壇資料
 
Linq
LinqLinq
Linq
 

Andere mochten auch

DistàNcia(Powerpoint) Nil
 DistàNcia(Powerpoint) Nil DistàNcia(Powerpoint) Nil
DistàNcia(Powerpoint) Nilhorseball_10
 
New+Web+Tools Discovery2
New+Web+Tools Discovery2New+Web+Tools Discovery2
New+Web+Tools Discovery2regblock
 
Dispositivos de almacenamiento
Dispositivos de almacenamientoDispositivos de almacenamiento
Dispositivos de almacenamientoguest58d79f
 
Dispositivos De Almacenamiento
Dispositivos De AlmacenamientoDispositivos De Almacenamiento
Dispositivos De Almacenamientoguest58d79f
 
МОУ "Шахунская гимназия имени А,С, Пушкина"
МОУ "Шахунская гимназия имени А,С, Пушкина"МОУ "Шахунская гимназия имени А,С, Пушкина"
МОУ "Шахунская гимназия имени А,С, Пушкина"OKislisina
 
Que Es Web 2
Que Es Web 2Que Es Web 2
Que Es Web 2lenymora
 
Chuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánChuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánduysu
 
Auto-prevención ante ataque cardíaco.
Auto-prevención ante ataque cardíaco.Auto-prevención ante ataque cardíaco.
Auto-prevención ante ataque cardíaco.Lilian Medina
 
Converting Research Findings in to Business Speak
Converting Research Findings in to Business SpeakConverting Research Findings in to Business Speak
Converting Research Findings in to Business Speakjackiem
 
2007 Src Slide Show
2007 Src Slide Show2007 Src Slide Show
2007 Src Slide Showvnichols
 
Online Presentation Tools
Online Presentation ToolsOnline Presentation Tools
Online Presentation ToolsWoodward
 
Chuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánChuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánduysu
 
Transportation Big Picture Messaging
Transportation Big Picture MessagingTransportation Big Picture Messaging
Transportation Big Picture MessagingLloyd Brown
 
Library Card Importance
Library Card ImportanceLibrary Card Importance
Library Card ImportanceWoodward
 
Drupal8 Introduction
Drupal8 IntroductionDrupal8 Introduction
Drupal8 IntroductionMadhav Vyas
 

Andere mochten auch (20)

Dtl3
Dtl3Dtl3
Dtl3
 
DistàNcia(Powerpoint) Nil
 DistàNcia(Powerpoint) Nil DistàNcia(Powerpoint) Nil
DistàNcia(Powerpoint) Nil
 
New+Web+Tools Discovery2
New+Web+Tools Discovery2New+Web+Tools Discovery2
New+Web+Tools Discovery2
 
Dispositivos de almacenamiento
Dispositivos de almacenamientoDispositivos de almacenamiento
Dispositivos de almacenamiento
 
Dispositivos De Almacenamiento
Dispositivos De AlmacenamientoDispositivos De Almacenamiento
Dispositivos De Almacenamiento
 
МОУ "Шахунская гимназия имени А,С, Пушкина"
МОУ "Шахунская гимназия имени А,С, Пушкина"МОУ "Шахунская гимназия имени А,С, Пушкина"
МОУ "Шахунская гимназия имени А,С, Пушкина"
 
Que Es Web 2
Que Es Web 2Que Es Web 2
Que Es Web 2
 
Chuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánChuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tán
 
Auto-prevención ante ataque cardíaco.
Auto-prevención ante ataque cardíaco.Auto-prevención ante ataque cardíaco.
Auto-prevención ante ataque cardíaco.
 
Converting Research Findings in to Business Speak
Converting Research Findings in to Business SpeakConverting Research Findings in to Business Speak
Converting Research Findings in to Business Speak
 
Oral Report English 3102
Oral Report English 3102Oral Report English 3102
Oral Report English 3102
 
2007 Src Slide Show
2007 Src Slide Show2007 Src Slide Show
2007 Src Slide Show
 
Online Presentation Tools
Online Presentation ToolsOnline Presentation Tools
Online Presentation Tools
 
Online Databases english
Online Databases englishOnline Databases english
Online Databases english
 
Surfing The Web
Surfing The WebSurfing The Web
Surfing The Web
 
Chuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tánChuong 2 - CSDL phân tán
Chuong 2 - CSDL phân tán
 
Transportation Big Picture Messaging
Transportation Big Picture MessagingTransportation Big Picture Messaging
Transportation Big Picture Messaging
 
Library Card Importance
Library Card ImportanceLibrary Card Importance
Library Card Importance
 
English Composition Portfolio
English Composition PortfolioEnglish Composition Portfolio
English Composition Portfolio
 
Drupal8 Introduction
Drupal8 IntroductionDrupal8 Introduction
Drupal8 Introduction
 

Web2.0 and Ruby