SlideShare a Scribd company logo
p.g.taboada | pgt technology scouting GmbH
Google Web Toolkit
Architecture
Best Practices
Donnerstag, 25. April 13
Donnerstag, 25. April 13
http://gwtreferencelist.appspot.com
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
Shift
happened
Java development,
JS deployment,
Async,
RPC,
RIA/ single page,
...
Donnerstag, 25. April 13
TextBox t = new TextBox();
RootPanel.get().add(t);
Donnerstag, 25. April 13
Browser Server
user action
full html response
full html response
full html response
user action
user action
Donnerstag, 25. April 13
Browser Server
event
first request
full html response
data
data request
data
data request
event
event
event
Donnerstag, 25. April 13
low level, generic toolkit
Donnerstag, 25. April 13
let‘s build big things
Donnerstag, 25. April 13
TextBox t0 = new TextBox();
TextBox t1 = new TextBox();
TextBox t2 = new TextBox();
TextBox t3 = new TextBox();
TextBox t4 = new TextBox();
VerticalPanel...
SplitPanel...
ScrollPanel
RootPanel.get().add(mainPanel);
Donnerstag, 25. April 13
Run, Forrest. Run!
Donnerstag, 25. April 13
Hoppla
Donnerstag, 25. April 13
framework wizardry needed
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
BE CAREFUL. GWT DEVELOPMENT
IS COMPLICATED HOT NEW STUFF.
Donnerstag, 25. April 13
WELL, IT‘S NOT NEW...
Donnerstag, 25. April 13
Jan 2000 Jan 2005
XHTML 1.0
Jan 2000
HTML 4.0.1
Dez 1999
CSS 2
Mai 1998
HTML 4.0 update
April 1998
XHTML 1.1
Mai 2001
HTML 2.0
November 1995
HTML 4.0
Dezember 1997
Java EE 1.2
Dez 1999
JDK 1.1
Feb 1997
Internet Explorer 6
Aug 2001
JDK 1.0
Jan 1996
CSS 2.1
Feb 2004 – Jun 2011
CSS level 2 revision 1, often referred t
errors in CSS 2, removes poorly suppo
interoperable features and adds alread
browser extensions to the specification
with the W3C Process for standardizi
specifications, CSS 2.1 went back and
Working Draft status and Candidate R
status for many years.
J2SE 1.2
Dez 1998
J2SE 1.3
Mai 2000
CSS 1
Dez 1996
HTML 3.2
Januar 1997
Donnerstag, 25. April 13
nothing new here
Donnerstag, 25. April 13
nothing new here too
Jan 2007
Donnerstag, 25. April 13
how can I avoid this?
Donnerstag, 25. April 13
don‘t public instance the singletons
Donnerstag, 25. April 13
event bus please
http://jarrettws.blogspot.de/2010/05/public-transport.html
Donnerstag, 25. April 13
eventbus.fireEvent(
NotificationEvent.info(
"Daten wurden erfolgreich gespeichert"
)
);
Donnerstag, 25. April 13
USE MVP!
You will get
used to it
Donnerstag, 25. April 13
presenter
model
clientFactory
eventBus
panel
view
Donnerstag, 25. April 13
presenter
view interface
presenter interface
model
desktop view
tablet view mock view
Donnerstag, 25. April 13
public interface LoginView extends View {
void setPresenter(LoginView.Presenter currentPresenter);
void presetEmailFieldWith(String email);
void doShowApplicationMetadata(AppData params);
public interface Presenter extends LemniscusPresenter {
void userLoginWith(String username, String password);
void userDidAskForRegistrationPlace();
void userWantsToChangePassword(
int verificationCode, String userEmail, String
newPasswordToUse);
void userRequestedVerificationCodeForPasswordChange(String email);
}
}
Donnerstag, 25. April 13
public interface LoginView extends View {
void setPresenter(LoginView.Presenter currentP
void presetEmailFieldWith(String email);
void doShowApplicationMetadata(AppData params)
public interface Presenter extends LemniscusPr
void userLoginWith(String username, String
void userDidAskForRegistrationPlace();
void userWantsToChangePassword(
int verificationCode, String userEmail,
MyDesktopViewImpl extends Composite implements LoginView
Donnerstag, 25. April 13
public interface LoginView extends View {
void setPresenter(LoginView.Presenter currentPresenter)
void presetEmailFieldWith(String email);
void doShowApplicationMetadata(AppData params);
public interface Presenter extends LemniscusPresenter {
void userLoginWith(String username, String password
void userDidAskForRegistrationPlace();
void userWantsToChangePassword(
int verificationCode, String userEmail, String ne
void userRequestedVerificationCodeForPasswordChange
}
}
MyLoginPresenter extends AA... implements LoginView.Presenter
Donnerstag, 25. April 13
BUT ON IE 6 IT IS SO SLOW!
Donnerstag, 25. April 13
BUT ON IE 7 IT IS SO SLOW!
Donnerstag, 25. April 13
BUT ON IE 8 IT IS SO SLOW!
Donnerstag, 25. April 13
BUT ON IE 9 IT IS SO SLOW!
Donnerstag, 25. April 13
too many widgets ain‘t good
Donnerstag, 25. April 13
CREATE CUSTOM WIDGETS
don‘t extend FlextTable
don‘t extendVerticalPanel
don‘t extend SimplePanel
CREATE CUSTOM EVENTS
Donnerstag, 25. April 13
if you can, do it in CSS
@-webkit-keyframes redPulse
{
from
{
box-shadow: 0px 0px 2px #ff0033;
}
50%
{
box-shadow: 0px 0px 10px #ff0033;
}
to
{
box-shadow: 0px 0px 2px #ff0033;
}
}
Donnerstag, 25. April 13
use CSS layout
<g:LayoutPanel styleName="{B.style.mainContent}">
<g:layer left="0" right="340px" top="0" height="50%">
<g:SimpleLayoutPanel styleName="{B.style.mainWidget}" addStyleNa
<ux:DashboardTermineDataGrid ui:field="terminetable" styleName
</g:SimpleLayoutPanel>
</g:layer>
<g:layer right="0" width="340px" top="0" height="50%">
<g:SimpleLayoutPanel styleName="{B.style.mainWidget}" addStyleNa
<ux:KWStatsDataGrid ui:field="statstable" styleName="{B.style.
</g:SimpleLayoutPanel>
</g:layer>
<g:layer right="0" left="0" bottom="0" height="50%">
<g:SimpleLayoutPanel styleName="{B.style.mainWidget}" addStyleNa
<ux:WartelisteDataGrid ui:field="wartelistetable" styleName="{
</g:SimpleLayoutPanel>
</g:layer>
</g:LayoutPanel>
Donnerstag, 25. April 13
Ray Ryan - lessons learned
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
„just do it“ pattern
„View A“
„View B“
mainPanel.setWiget(
aWidget );
mainPanel.setWiget(
bWidget );
some action
Donnerstag, 25. April 13
hard to maintain
Donnerstag, 25. April 13
history
management
from day one!
back button and
refresh as a
feature (not a
catastrophe)
Donnerstag, 25. April 13
keep it
stupid
simple
• use PLACES framework
for main level navigation
• if you really need to, nest
activities for a second
level. try not to.
• use dialogs for user input,
showing data. dialogs are
easily reused.
Donnerstag, 25. April 13
Once upon a time, a
good designer does
good a good looking
design...
‣ he will be using photoshop
or dreamweaver
‣ he will not use the
software
‣ he will not build the
software
‣ he will not maintain the
software
Donnerstag, 25. April 13
Donnerstag, 25. April 13
top menue bound to places framework
Donnerstag, 25. April 13
switching between places with fade in and out
Donnerstag, 25. April 13
teach user to wait until application is ready again
Donnerstag, 25. April 13
gives us enough time to load the required content
300ms out 500ms in
Donnerstag, 25. April 13
Komponents
inside an
„activity“ fire
non public,
custom events
Donnerstag, 25. April 13
datepicker
sends KW
selected event
Donnerstag, 25. April 13
presenter may
goto itself, view
may be cached
Donnerstag, 25. April 13
STATELESS
VIEW
URL contains
EVERYTHING
needed to
rebuild view
user hits
reload
GWT apps
starts, activity
gets fired
presenter
loads data
from server
view is back
again
Donnerstag, 25. April 13
some actions don‘t require PLACE navigation at all
Donnerstag, 25. April 13
use POPUPS to stay ABOVE navigation
Donnerstag, 25. April 13
let POPUPS/
DIALOGS move
slowly into view
pin POPUPS to
one side of the
window
Donnerstag, 25. April 13
let POPUPS/
DIALOGS move
slowly into view
pin POPUPS to
one side of the
window
Donnerstag, 25. April 13
Don‘t move your
user away from his
„PLACE“ unless
you have to.
Search DIALOG
slides in from right
side, stays on TOP
Donnerstag, 25. April 13
Navigation must not hurt
• The application shown uses only 3 levels of
navigation, DOES NOT NEED MORE
• PLACES used for bookmarkable entry points/
back button navigation consistency
• Activities should be STATELESS, to survive page
reloads
• Learn from OTHERS
Donnerstag, 25. April 13
BEFOREYOU ADD THE
LOGO TO THE TOP
HOW MANY PIXELS DO
YOUR USERS HAVE? the designer or
marketing guy
using photoshop is
probably sitting in
front of a 27“
apple cinema
display
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
Honor the A in AJAX
‣ Javascript does not block
Get over it
‣ Latency is not a myth
‣ Results must not arrive in the call
order
Donnerstag, 25. April 13
MARSHALLING / UNMARSHALLING
IN JAVASCRIPT IS SLOW
Donnerstag, 25. April 13
BUILDING A GENERIC FRAMEWORK FOR
MARSHALLING/ UNSMARSHALLING DATA SUCKS
Donnerstag, 25. April 13
DON‘T BINDYOU NEXT 3YEARS OF WORK
AGAINST SOME COMMUNICATION PROTOCOLL
Donnerstag, 25. April 13
LOADING TOO MUCH DATA WILL ALWAYS HURT
Donnerstag, 25. April 13
GWT-RPC
is a good
solution if
handled
with care
SomeResult someMethodName(SomeParameter spo)
GWT-RPC
binds many
methods
into one
interface
Interface
Versioning
is a
monstrous
thing
Donnerstag, 25. April 13
SomeResult someMethodName(SomeParameter spo)
the method names bind the requests to the result
typesafety all the way
Donnerstag, 25. April 13
USING GENERICS FOR TYPESAFETY, GET RID OF
METHODS AND INTERFACES
Donnerstag, 25. April 13
<A extends Action<R>, R extends Result> R execute(A action);
now we just one interface with one method
typesafety all the way
Donnerstag, 25. April 13
command
pattern
GOF Pattern
commonly used in
Rich Clients
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
POJOS
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
multiple
versions
someActionV2
someActionHandlerV2
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
multiple
versions
someActionV2
someActionHandlerV2
someResultV2
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
GWT-RPC
client server
batching
caching
security
caching
exception translation
security
GWT client
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
RMI / HTTPInvoker
client server
batching
caching
security
caching
exception translation
security
Java client
Donnerstag, 25. April 13
someAction
someResult
someActionHandler
JSON-servlet
client server
batching
caching
security
caching
exception translation
security
Mobile client
Donnerstag, 25. April 13
batchAction
someAction1
batchActionHandler
someAction2
someAction3
batchResult
someResult1
someResult2
someResult3
client server
batching can
be manual or
automatic
server executes
actions in given order
Donnerstag, 25. April 13
BATCH EXECUTION ALLOWS FOR FINE GRAINED
COMMANDS AND REUSE
Donnerstag, 25. April 13
toggleTerminMetadata
reloadDashboardTermine
BooleanResult
DataListResult<Termin>
Donnerstag, 25. April 13
toggleTerminMetadata
reloadTermin
BooleanResult
DataResult<Termin>
Donnerstag, 25. April 13
toggleTerminMetadata
loadMonthStats
BooleanResult
DataResult<MonthStats>
loadMonthTermine DataListResult<Termin>
Donnerstag, 25. April 13
‣GWT Development
‣Basics
‣Structuring the UI
‣Communication
‣Scaling
Donnerstag, 25. April 13
• Every client brings his own CPU power
• The client does the page rendering
• GWT provides different ways to reduce number
of requests even more
• The server must „only“ authenticate the user
and provide the data, perform the actions
requested by the client
GWT scaling is easy...
Donnerstag, 25. April 13
WHAT CAN POSSIBLY GO WRONG?
Donnerstag, 25. April 13
LETS TALK HIGH TRAFFIC...
HIGH TRAFFIC IS WHEN ONE SERVER IS NOT ENOUGH
Donnerstag, 25. April 13
• Bandwith issues
• Connection pool bottlenecks
• Thread pool bottlenecks
• CPU bottlenecks caused by reflection API calls
• High JVM garbage collection CPU usage
HIGH TRAFFIC
PROBLEMS
Donnerstag, 25. April 13
NOT REALLY GWT PROBLEMS,
BUT WHAT CAN WE DO?
Donnerstag, 25. April 13
TX TX
TX TX
TX
TX TX
TX
TX
avoid „tx
collisions“
Donnerstag, 25. April 13
TX TX TX TX
TX
TX
TX
TX TX
TX
TX
TX
TX
TX
TX
load small
portions of
data, do it
often
Donnerstag, 25. April 13
Donnerstag, 25. April 13
IMPLEMENT REAL LOAD BALANCING
EACH REQUEST GOES TO THE NEXT AVAILABLE SERVER
Donnerstag, 25. April 13
• Don‘t stick a session to a server.
Why send a user over and over again to a
possible overloaded server?
• Don‘t store anything on the HTTP session. Let
the load balancer balance the load.
• Session replication is expensive and does not
scale well
SCALING HOW-TO
Donnerstag, 25. April 13
Webserver
Webserver
LB Webserver
Webserver
Webserver
Session Cache
STATELESS WEB
Webserver
Donnerstag, 25. April 13
Session Cache
Session state should not change,
just expire
Session state could contain user
id, client id, session id, user roles
If session cache becomes
bottleneck, use distributed
cache, eg. memcached
Session Cache
Session Cache
Donnerstag, 25. April 13
Thanks!
Donnerstag, 25. April 13

More Related Content

Similar to GWT architecture best practices and lessons learned

Intro to axure
Intro to axureIntro to axure
Intro to axure
Nathan Gao
 
F# And Silverlight
F# And SilverlightF# And Silverlight
F# And Silverlight
Talbott Crowell
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Cyrille Le Clerc
 
Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5
benfante
 
A false digital alibi on mac os x
A false digital alibi on mac os xA false digital alibi on mac os x
A false digital alibi on mac os x
Vrije Universiteit Brussel
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in Ember
Matthew Beale
 
2013 jsdc webworker
2013 jsdc webworker2013 jsdc webworker
2013 jsdc webworker
Bingo Yang
 
Android best practices
Android best practicesAndroid best practices
Android best practices
Jose Manuel Ortega Candel
 
HTML5 for mobile development
HTML5 for mobile developmentHTML5 for mobile development
HTML5 for mobile development
Carlos Justiniano
 
Unit and functional testing with Siesta
Unit and functional testing with SiestaUnit and functional testing with Siesta
Unit and functional testing with Siesta
Grgur Grisogono
 
Testing iOS Apps
Testing iOS AppsTesting iOS Apps
Testing iOS Apps
C4Media
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Acquia
 
FITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning CurveFITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning Curve
Little Miss Robot
 
იოსებ ძმანაშვილი Node.js
იოსებ ძმანაშვილი   Node.jsიოსებ ძმანაშვილი   Node.js
იოსებ ძმანაშვილი Node.js
unihack
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
Tikal Knowledge
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)
patrick.t.joyce
 
Google analytics
Google analyticsGoogle analytics
Google analytics
Lo Penny
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Iakiv Kramarenko
 
Green Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentGreen Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in Government
C4Media
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
Nicholas Zakas
 

Similar to GWT architecture best practices and lessons learned (20)

Intro to axure
Intro to axureIntro to axure
Intro to axure
 
F# And Silverlight
F# And SilverlightF# And Silverlight
F# And Silverlight
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
 
Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5Annotated controllers with Spring MVC 2.5
Annotated controllers with Spring MVC 2.5
 
A false digital alibi on mac os x
A false digital alibi on mac os xA false digital alibi on mac os x
A false digital alibi on mac os x
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in Ember
 
2013 jsdc webworker
2013 jsdc webworker2013 jsdc webworker
2013 jsdc webworker
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
HTML5 for mobile development
HTML5 for mobile developmentHTML5 for mobile development
HTML5 for mobile development
 
Unit and functional testing with Siesta
Unit and functional testing with SiestaUnit and functional testing with Siesta
Unit and functional testing with Siesta
 
Testing iOS Apps
Testing iOS AppsTesting iOS Apps
Testing iOS Apps
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
 
FITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning CurveFITC 2013 - The Technical Learning Curve
FITC 2013 - The Technical Learning Curve
 
იოსებ ძმანაშვილი Node.js
იოსებ ძმანაშვილი   Node.jsიოსებ ძმანაშვილი   Node.js
იოსებ ძმანაშვილი Node.js
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)
 
Google analytics
Google analyticsGoogle analytics
Google analytics
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
 
Green Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentGreen Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in Government
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
 

Recently uploaded

Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 

Recently uploaded (20)

Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 

GWT architecture best practices and lessons learned