SlideShare una empresa de Scribd logo
1 de 58
Introducing
  AlloyUI
  Diagram
  Builder
Eduardo Lundgren
   Liferay Inc.
  @eduardolundgren
Main points

1. What we needed
2. What we wanted to create
3. How we started
4. Architecture
5. Events
6. Serializing visual data (demo)
7. Real world applications (demo)
What’s AlloyUI?

• Provide a set of UI Widgets and
  Utilities on top of YUI3
What we needed
Liferay Portal
What we needed




•   How to explain complex ideas more effectively?
•   Build definitions visually for Liferay Workflow Engine
What we needed
What we wanted to create
The Goal: Diagram Builder
The Goal: Diagram Builder


• Intuitive drag-and-drop interface
• HTML5 and web standards (no flash)
• Support modern browsers and devices
• Balance between HTML v Graphic API
• Flexible and extensible API
How we started
How we started
      new A.DiagramBuilder(
      
 {
      
 
 availableFields: [ {...}, ... ],
      
 
 boundingBox: '#bbId',
      
 
 fields: [
      
 
 
 {
      
 
 
 
 name: 'Start',
      
 
 
 
 transitions: [ 'Task' ],
      
 
 
 
 type: 'start'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'Task',
      
 
 
 
 transitions: [ 'End' ],
      
 
 
 
 type: 'task'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'End',
      
 
 
 
 type: 'end'
      
 
 
 }
      
 
 ],
      
 
 render: true
      
 }
      );
How we started
      new A.DiagramBuilder(
      
 {
      
 
 availableFields: [ {...}, ... ],
      
 
 boundingBox: '#bbId',
      
 
 fields: [
      
 
 
 {
      
 
 
 
 name: 'Start',
      
 
 
 
 transitions: [ 'Task' ],
      
 
 
 
 type: 'start'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'Task',
      
 
 
 
 transitions: [ 'End' ],
      
 
 
 
 type: 'task'
      
 
 
 },
      
 
 
 {
      
 
 
 
 name: 'End',
      
 
 
 
 type: 'end'
      
 
 
 }
      
 
 ],
      
 
 render: true
      
 }
      );
How we started

   var availableFields = [
   
 {
   
 
 type: 'task',
   
 
 label: 'Task',
   
 
 iconClass: 'aui-diagram-node-task-icon'
   
 },
   
 {
   
 
 type: 'state',
   
 
 label: 'State',
   
 
 iconClass: 'aui-diagram-node-state-icon'
   
 },
      ...
   ];
Y.DiagramBuilder
How we started
How we started
          div.aui-diagram-builder-canvas
           svg/vml




                       new Y.Graphic(...)
How we started



          Available Fields
How we started



    Y.AvailableField
How we started


          Y.DiagramNode
How we started




            Inspector
How we started   Y.Connector
How we started




                 12KB
Architecture
Diagram Builder Architecture



     aui-diagram-builder
       aui-diagram-builder-base
       aui-diagram-builder-impl
Diagram Builder Architecture

      Y.Widget


Y.DiagramBuilderBase   Y.FieldSupport
                       ‣ addField(field, index);
                       ‣ removeField(field);
  Y.DiagramBuilder
Diagram Builder Architecture

      Y.Widget


Y.DiagramBuilderBase   Y.FieldSupport
                       ‣ addField(field, index);
                       ‣ removeField(field);
  Y.DiagramBuilder
Diagram Builder Architecture

      Y.Widget


Y.DiagramBuilderBase   Y.FieldSupport
                       ‣ addField(field, index);
                       ‣ removeField(field);
  Y.DiagramBuilder
Diagram Builder Architecture
                      Y.DiagramBuilder




                          Y.FormBuilder
Diagram Builder Architecture
                      Y.DiagramBuilder




                          Y.FormBuilder
Diagram Builder Architecture
                      Y.DiagramBuilder
Available Fields Architecture

              Y.Base


    Y.AvailableField
‣ draggable
‣ label                Y.AvailableField
‣ iconClass
‣ type
Available Fields Architecture

    var availableFields = [
    
 {
    
 
 type: 'task',
    
 
 label: 'Task',
    
 
 iconClass: 'aui-diagram-node-task-icon'
    
 },
    
 {
    
 
 type: 'state',
    
 
 label: 'State',
    
 
 iconClass: 'aui-diagram-node-state-icon'
    
 },
       ...
    ];
Node Architecture


           Y.DiagramNode
Node Architecture                    Y.Overlay

var availableFields = [

 {

 
 type: 'start',
                                  Y.DiagramNode

 
 label: 'Start',

 
 ...

 },

                               Y.DiagramNodeState

 {

 
 type: 'end',

 
 label: 'End',

 
 ...

 },
   ...
];                                   Y.DiagramStart

                                     Y.DiagramEnd
A.DiagramBuilder.types = {

 start: A.DiagramNodeStart,

 end: A.DiagramNodeEnd,             Y.DiagramJoin

 join: A.DiagramNodeJoin,

 ...                                Y.DiagramFork
};
                                     Y.DiagramTask

                                   Y.DiagramCondition
Node Architecture


   .yui3-widget .aui-diagram-node

    .aui-diagram-node-content


                  <svg:svg />
Node Architecture




A.DiagramNode.CIRCLE_POINTS: [ [35, 20], [28, 33], [14, 34], ...]
A.DiagramNode.DIAMOND_POINTS: [ [30,5], [35,10], [40,15], ...]
A.DiagramNode.SQUARE_POINTS: [ [5,5], [10,5], [15,5], ... ]
Connector Architecture   Y.Connector
Connector Architecture



                      Y.Base


                 Y.Connector
          ‣ p1
          ‣ p2
          ‣ draw();
Connector Architecture

                                                                            x

     p1 (x1, y1)




                                                       p2 (x2, y2)


                            Cubic Bézier
            <path d="M x1,y1 C x1,y1 x2,y2 c1x,c1y" stroke="lightblue" />

 y                            curveTo(...);
Connector Architecture

• Problem1: Position some element
  over the curve.
• Is there a way to get the curve points
  from SVG/VML path?
                    (x, y)?
                 Connector Name


   p1 (x1, y1)




                                  p2 (x2, y2)
Connector Architecture


• Solution: JavaScript Impl of Cubic
Bézier.
Connector Architecture

                    Bézier


Bernstein basis polynomial


     • The points “Pi” are called control points for the Bézier curve.
     • “t” varies from 0 to 1.




                              (Image from Wikipedia)
Connector Architecture
Cubic Bézier JavaScript Implementation:
  B1   =   function(t)   {   return   (t*t*t); },
  B2   =   function(t)   {   return   (3*t*t*(1-t)); },
  B3   =   function(t)   {   return   (3*t*(1-t)*(1-t)); },
  B4   =   function(t)   {   return   ((1-t)*(1-t)*(1-t)); }

  getCubicBezier = function(t, startPos, endPos, cp1, cp2) {
  
 var x = ...;
  
 var y = ...;
  
 return [x, y];
  }

  var centerXY = getCubicBezier(0.5, [x1, y1], [x2, y2], [cpx1, cpy1], [cpx2, cpy2]);


                                                               centerXY (50%)
                                                                Connector Name


                                      p1 (x1, y1)




                                                                                 p2 (x2, y2)
Connector Architecture
Cubic Bézier JavaScript Implementation:
  B1   =   function(t)   {   return   (t*t*t); },
  B2   =   function(t)   {   return   (3*t*t*(1-t)); },
  B3   =   function(t)   {   return   (3*t*(1-t)*(1-t)); },
  B4   =   function(t)   {   return   ((1-t)*(1-t)*(1-t)); }

  getCubicBezier = function(t, startPos, endPos, cp1, cp2) {
  
 var x = ...;
  
 var y = ...;
  
 return [x, y];
  }

  var centerXY = getCubicBezier(0.5, [x1, y1], [x2, y2], [cpx1, cpy1], [cpx2, cpy2]);


                                                               centerXY (50%)
                                 50%                            Connector Name


                                      p1 (x1, y1)




                                                                                 p2 (x2, y2)
Connector Architecture


• Problem2: Dynamic control points.




   p1 (x1, y1)




                          p2 (x2, y2)
Connector Architecture
Connector Architecture

• 8 pseudo-quadrants decides the new
               control points
                        2



                    3       1
                                    +

           4                    0




                3           1

                                    -
                        2
Connector Architecture


• Problem3: Preventing overlap.




    p1 (x1, y1)




                       p2 (x2, y2)
Connector Architecture


• Problem3: Preventing overlap.




    p1 (x1, y1)




                       p2 (x2, y2)
Connector Architecture


• Problem3: Preventing overlap.




    p1 (x1, y1)
                     d =   (x1 − x2 )2 + (y1 − y2 )2



                  d -> min           p2 (x2, y2)
Connector Architecture




              (demo)
Events
 • boundaryMouseEnter
• boundaryMouseLeave
• connectDrop
• connectEnd
• connectMove
• connectOutTarget
• connectOverTarget
• connectStart
Serializing visual data




                (demo)
Real world application




       Liferay Workflow Designer
                (demo)
Questions
Thank you!



•   Liferay Inc.
•   YUI Team
•   @natecavanaugh - nathan.cavanaugh@liferay.com
•   @jonmak - jonathan.mak@liferay.com
•   @bbasto - bruno.basto@liferay.com
References




•   Liferay Portal http://github.com/liferay/liferay-portal

•   AlloyUI http://github.com/liferay/alloy-ui

•   Wikipedia http://en.wikipedia.org/wiki/B%C3%A9zier_curve

•   Rob La Placa CSS cubic Bézier builder http://www.roblaplaca.com/examples/bezierBuilder/
Contact




•   E-Mail: eduardo.lundgren@liferay.com
•   Twitter: @eduardolundgren

Más contenido relacionado

La actualidad más candente

I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)Katsumi Kishikawa
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring CanvasKevin Hoyt
 
Functional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonadsFunctional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonadsAlexander Granin
 
The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84Mahmoud Samir Fayed
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragmentChiwon Song
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScriptersgerbille
 
Core Animation
Core AnimationCore Animation
Core Animationbdudney
 
Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例Yuichi Higuchi
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)Oswald Campesato
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05cKaz Yoshikawa
 
HTML5って必要?
HTML5って必要?HTML5って必要?
HTML5って必要?GCS2013
 
Types, Operators and Primitives
Types, Operators and PrimitivesTypes, Operators and Primitives
Types, Operators and Primitivesalexisabril
 
Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Alexander Granin
 
Aho-Corasick string matching algorithm
Aho-Corasick string matching algorithmAho-Corasick string matching algorithm
Aho-Corasick string matching algorithmTakatoshi Kondo
 
The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185Mahmoud Samir Fayed
 
Having fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.jsHaving fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.jsMichael Hackstein
 

La actualidad más candente (20)

I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Lenses
LensesLenses
Lenses
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring Canvas
 
ES6(ES2015) is beautiful
ES6(ES2015) is beautifulES6(ES2015) is beautiful
ES6(ES2015) is beautiful
 
Functional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonadsFunctional "Life": parallel cellular automata and comonads
Functional "Life": parallel cellular automata and comonads
 
The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragment
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScripters
 
Core Animation
Core AnimationCore Animation
Core Animation
 
Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例Cocos2dを使ったゲーム作成の事例
Cocos2dを使ったゲーム作成の事例
 
Scala.io
Scala.ioScala.io
Scala.io
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
Idioms in swift 2016 05c
Idioms in swift 2016 05cIdioms in swift 2016 05c
Idioms in swift 2016 05c
 
HTML5って必要?
HTML5って必要?HTML5って必要?
HTML5って必要?
 
Types, Operators and Primitives
Types, Operators and PrimitivesTypes, Operators and Primitives
Types, Operators and Primitives
 
Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++
 
Aho-Corasick string matching algorithm
Aho-Corasick string matching algorithmAho-Corasick string matching algorithm
Aho-Corasick string matching algorithm
 
The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185The Ring programming language version 1.5.4 book - Part 30 of 185
The Ring programming language version 1.5.4 book - Part 30 of 185
 
Having fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.jsHaving fun with graphs, a short introduction to D3.js
Having fun with graphs, a short introduction to D3.js
 

Similar a Introducing AlloyUI DiagramBuilder

Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Takao Wada
 
Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)Ittay Dror
 
COMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUALCOMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUALVivek Kumar Sinha
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .netStephen Lorello
 
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docxCOMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docxTashiBhutia12
 
Halide tutorial 2019
Halide tutorial 2019Halide tutorial 2019
Halide tutorial 2019Champ Yen
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manualUma mohan
 
B. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath YogiB. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath YogiTekendra Nath Yogi
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingMark Kilgard
 
Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0Vijayananda Mohire
 
Matlab intro
Matlab introMatlab intro
Matlab introfvijayami
 
Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]Palak Sanghani
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in SwiftNetguru
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bPhilip Schwarz
 
openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3Droxlu
 

Similar a Introducing AlloyUI DiagramBuilder (20)

Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5
 
Computer graphics
Computer graphics   Computer graphics
Computer graphics
 
Computer graphics
Computer graphics   Computer graphics
Computer graphics
 
Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)Functional Programming from OO perspective (Sayeret Lambda lecture)
Functional Programming from OO perspective (Sayeret Lambda lecture)
 
Primitives
PrimitivesPrimitives
Primitives
 
COMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUALCOMPUTER GRAPHICS LAB MANUAL
COMPUTER GRAPHICS LAB MANUAL
 
Intro to computer vision in .net
Intro to computer vision in .netIntro to computer vision in .net
Intro to computer vision in .net
 
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docxCOMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
COMPAPPABCA49085rFunrAP__Practical Number 9 & 10.docx
 
Halide tutorial 2019
Halide tutorial 2019Halide tutorial 2019
Halide tutorial 2019
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manual
 
B. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath YogiB. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
B. SC CSIT Computer Graphics Lab By Tekendra Nath Yogi
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and CullingCS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
 
Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0Quantum Computing Notes Ver1.0
Quantum Computing Notes Ver1.0
 
Matlab intro
Matlab introMatlab intro
Matlab intro
 
Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]Lec 7 28_aug [compatibility mode]
Lec 7 28_aug [compatibility mode]
 
Hidden Gems in Swift
Hidden Gems in SwiftHidden Gems in Swift
Hidden Gems in Swift
 
Dip iit workshop
Dip iit workshopDip iit workshop
Dip iit workshop
 
Advanced JavaScript
Advanced JavaScript Advanced JavaScript
Advanced JavaScript
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1b
 
openFrameworks 007 - 3D
openFrameworks 007 - 3DopenFrameworks 007 - 3D
openFrameworks 007 - 3D
 

Último

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
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 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
 
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
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Último (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
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 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
 
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
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Introducing AlloyUI DiagramBuilder

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n