SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Dernier (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Introducing AlloyUI DiagramBuilder

Notes de l'éditeur

  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