SlideShare une entreprise Scribd logo
1  sur  51
Getting Some
      REST
with webmachine
    Kevin A. Smith
What is webmachine?
Framework
Framework
Toolkit
A toolkit for
building RESTful
     HTTP
   resources
What is
REST?
Style not a standard
Resources == URLs
http://localhost:8000/hello_world
http://foo.com/hr/emp/123
GET
 POST
DELETE
  PUT
REST is the shape
        of
    the web
-module(hello_world_resource).
-export([init/1, to_html/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                          [State]),
  {Output, Req, State}.
-module(hello_world_resource).
-export([init/1, to_html/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                          [State]),
  {Output, Req, State}.
-module(hello_world_resource).
-export([init/1, to_html/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                         [State]),
  {Output, Req, State}.
-module(hello_world_resource).
-export([init/1, to_html/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                         [State]),
  {Output, Req, State}.
-module(hello_world_resource).
-export([init/1, to_html/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                         [State]),
  {Output, Req, State}.
A toolkit for
     easily
building RESTful
     HTTP
   resources
GET /test HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0
Accept: text/html;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Server: MochiWeb/1.1 WebMachine/1.3
Date: Mon, 22 Jun 2009 02:27:46 GMT
Content-Type: text/html
Content-Length: 78
-module(hello_world_resource).
-export([init/1, to_html/2]).
-export([generate_etag/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                         [State]),
  {Output, Req, State}.

generate_etag(Req, State) ->
  {mochihex:to_hex(crypto:md5(State)), Req, State}.
GET /test HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0
Accept: text/html;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Server: MochiWeb/1.1 WebMachine/1.3
Etag: bc6e6f16b8a077ef5fbc8d59d0b931b9
Date: Mon, 22 Jun 2009 02:29:46 GMT
Content-Type: text/html
Content-Length: 78
GET /test HTTP/1.1
Host: localhost:8000
.
.
.
If-None-Match: bc6e6f16b8a077ef5fbc8d59d0b931b9

HTTP/1.x 304 Not Modified
Server: MochiWeb/1.1 WebMachine/1.3
Etag: bc6e6f16b8a077ef5fbc8d59d0b931b9
Date: Mon, 22 Jun 2009 02:30:00 GMT
-module(hello_world_resource).
-export([init/1, to_html/2]).
-export([generate_etag/2, encodings_provided/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                         [State]),
  {Out, Req, State}.

generate_etag(Req, State) ->
  {mochihex:to_hex(crypto:md5(State)), Req, State}.

encodings_provided(Req, State) ->
  {[{"gzip", fun(X) -> zlib:gzip(X) end}], Req, State}.
GET /test HTTP/1.1
Host: localhost:8000
.
.
.
Accept-Encoding: gzip,deflate

HTTP/1.x 200 OK
Server: MochiWeb/1.1 WebMachine/1.3
Etag: bc6e6f16b8a077ef5fbc8d59d0b931b9
Date: Mon, 22 Jun 2009 02:46:57 GMT
Content-Type: text/html
Content-Length: 71
Content-Encoding: gzip
HTTP Is
 Hard
PUT
  ERROR CODES                                 vs. PO
                                                        ST
                              O N
                          I
                     TI AT                   ENC
                    O                               ODI
                 NEG                                    N      GS
               T
        T EN           IDEMPOTENCY                           N
    N                                                      IO
 C O
                                                     IR AT
                                                  X P
                     STREA                      E
                          MING                T
OVE                                     T   EN                         ET
    RLOA                             O N                              G
               DED                  C                          A    L
                     POS                                    O N
                        Ts                              I TI
                                                 ND
                                              CO
Request
Routing
http://foo.com/items

{["items"], grocery_item_resource, []}.


 URL path      Resource module     Init params
http://foo.com/items/chocolate

{["items", item], grocery_item_resource, []}.




URL path   URL variable   Resource module   Init params
GET
-module(hello_world_resource).
-export([init/1,to_html/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, "Hello, world"}.

to_html(Req, State) ->
  Output = io_lib:format(“<html><body>~s</body></html>”,
                          [State]),
  {Output, Req, State}.
Must be idempotent
PUT
-module(grocery_list_resource).
-export([init/1,allowed_methods/2]).
-export([content_types_accepted/2,from_json/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, []}.

allowed_methods(Req, State) ->
  {[‘PUT’], Req, State}.

content_types_accepted(Req, State) ->
  {[{“application/json”, from_json}], Req, State}.

from_json(Req, State) ->
  %% Create/update logic here
DELETE
-module(grocery_list_resource).
-export([init/1,allowed_methods/2]).
-export([delete_resource/2]).

-include_lib("webmachine/include/webmachine.hrl").

init([]) ->
  {ok, []}.

allowed_methods(Req, State) ->
  {[‘DELETE’], Req, State}.

delete_resource(Req, State) ->
  %% Deletion logic here
POST
Hmmmm
Problems with
    POST
Problems with
           POST

• Overloaded semantics
Problems with
           POST

• Overloaded semantics
• Create or update?
Creation via
        POST
•allowed_methods/2
•post_is_create/2
•create_path/2
•content_types_accepted/2
• handler function
Update via
         POST

•allowed_methods/2
•content_types_accepted/2
• handler function
CODE
TIME
HTTP Request
  Access
HTTP Request

• “Wrapped” mochiweb request
• Separate process for each request
• Direct access to: request/response
  headers, response body, etc.
Other Cool
            Stuff

• Graphical request debugging
• Streaming requests and responses
• File uploads
webmachine source:
       http://bitbucket.org/justin/webmachine


               Slides and demo code:
http://github.com/kevsmith/erlang_factory/tree/master

Contenu connexe

Tendances (14)

Php Lecture Notes
Php Lecture NotesPhp Lecture Notes
Php Lecture Notes
 
PHP variables
PHP  variablesPHP  variables
PHP variables
 
PHP POWERPOINT SLIDES
PHP POWERPOINT SLIDESPHP POWERPOINT SLIDES
PHP POWERPOINT SLIDES
 
Php mysql
Php mysqlPhp mysql
Php mysql
 
Class 2 - Introduction to PHP
Class 2 - Introduction to PHPClass 2 - Introduction to PHP
Class 2 - Introduction to PHP
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 
slidesharenew1
slidesharenew1slidesharenew1
slidesharenew1
 
Opa hackathon
Opa hackathonOpa hackathon
Opa hackathon
 
Intermediate PHP
Intermediate PHPIntermediate PHP
Intermediate PHP
 
Web 9 | OOP in PHP
Web 9 | OOP in PHPWeb 9 | OOP in PHP
Web 9 | OOP in PHP
 
RCEC Email 4.7.03 (b)
RCEC Email 4.7.03 (b)RCEC Email 4.7.03 (b)
RCEC Email 4.7.03 (b)
 
Introduction to PHP - Basics of PHP
Introduction to PHP - Basics of PHPIntroduction to PHP - Basics of PHP
Introduction to PHP - Basics of PHP
 
Intro to php
Intro to phpIntro to php
Intro to php
 
OpenGurukul : Language : PHP
OpenGurukul : Language : PHPOpenGurukul : Language : PHP
OpenGurukul : Language : PHP
 

En vedette

TravisCIでErlang/OTP (最小構成版)
TravisCIでErlang/OTP (最小構成版)TravisCIでErlang/OTP (最小構成版)
TravisCIでErlang/OTP (最小構成版)Masatoshi Itoh
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座Makoto Ito
 
Unityで使うRabbitMQ
Unityで使うRabbitMQUnityで使うRabbitMQ
Unityで使うRabbitMQMasatoshi Itoh
 
非同期データ更新のためにメッセージキューを導入した(い)話
非同期データ更新のためにメッセージキューを導入した(い)話非同期データ更新のためにメッセージキューを導入した(い)話
非同期データ更新のためにメッセージキューを導入した(い)話Takaaki Hirano
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Tsunenori Oohara
 
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Tsunenori Oohara
 
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"Keisuke Takahashi
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)Tsunenori Oohara
 
Erlangご紹介 websocket編
Erlangご紹介 websocket編Erlangご紹介 websocket編
Erlangご紹介 websocket編Masatoshi Itoh
 

En vedette (9)

TravisCIでErlang/OTP (最小構成版)
TravisCIでErlang/OTP (最小構成版)TravisCIでErlang/OTP (最小構成版)
TravisCIでErlang/OTP (最小構成版)
 
中高生向けUnity講座
中高生向けUnity講座中高生向けUnity講座
中高生向けUnity講座
 
Unityで使うRabbitMQ
Unityで使うRabbitMQUnityで使うRabbitMQ
Unityで使うRabbitMQ
 
非同期データ更新のためにメッセージキューを導入した(い)話
非同期データ更新のためにメッセージキューを導入した(い)話非同期データ更新のためにメッセージキューを導入した(い)話
非同期データ更新のためにメッセージキューを導入した(い)話
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
 
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
 
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
 
Erlangご紹介 websocket編
Erlangご紹介 websocket編Erlangご紹介 websocket編
Erlangご紹介 websocket編
 

Similaire à Getting Rest With Webmachine

swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientShinya Mochida
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy CodeRowan Merewood
 
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )Joseph Scott
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomyDongmin Yu
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기Wanbok Choi
 
Testing TYPO3 Applications
Testing TYPO3 ApplicationsTesting TYPO3 Applications
Testing TYPO3 ApplicationsAndré Wuttig
 
Asynchronous I/O in PHP
Asynchronous I/O in PHPAsynchronous I/O in PHP
Asynchronous I/O in PHPThomas Weinert
 
Javascript Continues Integration in Jenkins with AngularJS
Javascript Continues Integration in Jenkins with AngularJSJavascript Continues Integration in Jenkins with AngularJS
Javascript Continues Integration in Jenkins with AngularJSLadislav Prskavec
 
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js ModuleFred Chien
 
Lecture: Vaadin Overview
Lecture: Vaadin OverviewLecture: Vaadin Overview
Lecture: Vaadin OverviewJoonas Lehtinen
 
Taipei.py 2018 - Control device via ioctl from Python
Taipei.py 2018 - Control device via ioctl from Python Taipei.py 2018 - Control device via ioctl from Python
Taipei.py 2018 - Control device via ioctl from Python Hua Chu
 
Beginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleBeginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleAri Lerner
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기NAVER D2
 
Performance measurement and tuning
Performance measurement and tuningPerformance measurement and tuning
Performance measurement and tuningAOE
 
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!Anatoly Sharifulin
 
Lecture2_IntroductionToPHP_Spring2023.pdf
Lecture2_IntroductionToPHP_Spring2023.pdfLecture2_IntroductionToPHP_Spring2023.pdf
Lecture2_IntroductionToPHP_Spring2023.pdfShaimaaMohamedGalal
 

Similaire à Getting Rest With Webmachine (18)

swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClient
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기
 
Testing TYPO3 Applications
Testing TYPO3 ApplicationsTesting TYPO3 Applications
Testing TYPO3 Applications
 
Asynchronous I/O in PHP
Asynchronous I/O in PHPAsynchronous I/O in PHP
Asynchronous I/O in PHP
 
Javascript Continues Integration in Jenkins with AngularJS
Javascript Continues Integration in Jenkins with AngularJSJavascript Continues Integration in Jenkins with AngularJS
Javascript Continues Integration in Jenkins with AngularJS
 
How to Write Node.js Module
How to Write Node.js ModuleHow to Write Node.js Module
How to Write Node.js Module
 
Lecture: Vaadin Overview
Lecture: Vaadin OverviewLecture: Vaadin Overview
Lecture: Vaadin Overview
 
Taipei.py 2018 - Control device via ioctl from Python
Taipei.py 2018 - Control device via ioctl from Python Taipei.py 2018 - Control device via ioctl from Python
Taipei.py 2018 - Control device via ioctl from Python
 
Beginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleBeginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at Google
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
Performance measurement and tuning
Performance measurement and tuningPerformance measurement and tuning
Performance measurement and tuning
 
Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!Mojolicious. Веб в коробке!
Mojolicious. Веб в коробке!
 
Lecture2_IntroductionToPHP_Spring2023.pdf
Lecture2_IntroductionToPHP_Spring2023.pdfLecture2_IntroductionToPHP_Spring2023.pdf
Lecture2_IntroductionToPHP_Spring2023.pdf
 
Web Scraping with PHP
Web Scraping with PHPWeb Scraping with PHP
Web Scraping with PHP
 

Dernier

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Dernier (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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...
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Getting Rest With Webmachine