The document provides an introduction to Google Web Toolkit (GWT), covering several key points:
- GWT is a JavaScript framework that allows developing web applications in Java and compiling them to JavaScript.
- It provides strong IDE features like refactoring and code completion when developing in Java.
- Applications can be unit tested and GWT supports test-driven development (TDD).
- GWT integrates with various backend frameworks like Spring, Hibernate, and JSF.
The document discusses Brubeck, a Python web framework and Django-inspired web application built on top of Mongrel2. Brubeck uses coroutines and a pipeline architecture. It is backend and database agnostic. Key features discussed include routing, templating support for Jinja2, Mako and Tornado, authentication functionality using decorators, user modeling, validation, databaseless modeling using Python objects, and automatic REST APIs generated from data models.
The Tellurium Automated Testing Framework (Tellurium) is a UI module-based web automated testing framework.
The Tellurium framework is written in Groovy and Java. The test cases can be written in Java, Groovy, or pure DSL. You do not need to know Groovy before you use it. Detailed Introduction, Frequent Asked Questions, and illustrative examples are provided. We expect and welcome your contributions.
GwtQuery is a library for GWT that provides a jQuery-like API for selecting, manipulating, and traversing DOM elements. It is entirely rewritten in Java rather than being a wrapper, and offers optimizations for GWT like compiled selectors and type-safe structures. GwtQuery allows using jQuery-style syntax to work with both DOM elements and GWT widgets.
Groovy, to Infinity and Beyond - Groovy/Grails eXchange 2009Guillaume Laforge
Reviewing the Groovy 1.6 features, the new 1.7 functionalities, and a look into what the future holds for Groovy 1.8 and beyond!
Presentation given by Guillaume Laforge at the Groovy/Grails eXchange conference, in London.
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGuillaume Laforge
Gaelyk is a lightweight Groovy toolkit for developing applications on Google App Engine. It allows using Groovy scripts instead of Java servlets and a Groovy template engine instead of JSP. Gaelyk provides enhancements to the Google App Engine Java SDK to simplify development, leveraging Groovy's dynamic features. The presentation demonstrates how to access services like Datastore, task queues, XMPP, and Memcache using Groovy syntax. Future plans include improvements to querying and object relationships in Datastore.
This document provides an agenda for discussing how to build GWT UI's using Polymer elements. It covers motivations for using this approach, an overview of web components and Polymer, how to consume web components in GWT using JsInterop and custom interfaces, introducing the gwt-polymer-elements library, and demonstrates a full-stack GWT app using Polymer and REST services.
This document provides an overview of new features in Java EE 6, as presented by Antonio Goncalves. It discusses several major new concepts, including profiles, pruning of specifications, portable JNDI names, managed beans, and interceptors. It also summarizes new features for various specifications, such as JPA 2.0 adding richer mappings and criteria queries, EJB 3.1 introducing asynchronous calls and timers, Servlet 3.0 focusing on ease of development and pluggability, and JSF 2.0 making Facelets the preferred view definition language. The document aims to give attendees an understanding of the key changes and improvements in Java EE 6.
The document discusses Brubeck, a Python web framework and Django-inspired web application built on top of Mongrel2. Brubeck uses coroutines and a pipeline architecture. It is backend and database agnostic. Key features discussed include routing, templating support for Jinja2, Mako and Tornado, authentication functionality using decorators, user modeling, validation, databaseless modeling using Python objects, and automatic REST APIs generated from data models.
The Tellurium Automated Testing Framework (Tellurium) is a UI module-based web automated testing framework.
The Tellurium framework is written in Groovy and Java. The test cases can be written in Java, Groovy, or pure DSL. You do not need to know Groovy before you use it. Detailed Introduction, Frequent Asked Questions, and illustrative examples are provided. We expect and welcome your contributions.
GwtQuery is a library for GWT that provides a jQuery-like API for selecting, manipulating, and traversing DOM elements. It is entirely rewritten in Java rather than being a wrapper, and offers optimizations for GWT like compiled selectors and type-safe structures. GwtQuery allows using jQuery-style syntax to work with both DOM elements and GWT widgets.
Groovy, to Infinity and Beyond - Groovy/Grails eXchange 2009Guillaume Laforge
Reviewing the Groovy 1.6 features, the new 1.7 functionalities, and a look into what the future holds for Groovy 1.8 and beyond!
Presentation given by Guillaume Laforge at the Groovy/Grails eXchange conference, in London.
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGuillaume Laforge
Gaelyk is a lightweight Groovy toolkit for developing applications on Google App Engine. It allows using Groovy scripts instead of Java servlets and a Groovy template engine instead of JSP. Gaelyk provides enhancements to the Google App Engine Java SDK to simplify development, leveraging Groovy's dynamic features. The presentation demonstrates how to access services like Datastore, task queues, XMPP, and Memcache using Groovy syntax. Future plans include improvements to querying and object relationships in Datastore.
This document provides an agenda for discussing how to build GWT UI's using Polymer elements. It covers motivations for using this approach, an overview of web components and Polymer, how to consume web components in GWT using JsInterop and custom interfaces, introducing the gwt-polymer-elements library, and demonstrates a full-stack GWT app using Polymer and REST services.
This document provides an overview of new features in Java EE 6, as presented by Antonio Goncalves. It discusses several major new concepts, including profiles, pruning of specifications, portable JNDI names, managed beans, and interceptors. It also summarizes new features for various specifications, such as JPA 2.0 adding richer mappings and criteria queries, EJB 3.1 introducing asynchronous calls and timers, Servlet 3.0 focusing on ease of development and pluggability, and JSF 2.0 making Facelets the preferred view definition language. The document aims to give attendees an understanding of the key changes and improvements in Java EE 6.
This is a presentation given in a Java Open day conducted by Trainologic.
Trainologic shares its training content for free at trainologic.org you can find many more free full course there.
Practical introduction to dependency injectionTamas Rev
Dependency injection frameworks like Spring, Guice, and Tapestry-DI allow configuring dependencies and wiring components together through XML, annotations, or code. This improves modularity, flexibility, and testability over traditional hardcoded dependencies. The document discusses DI concepts and frameworks, focusing on Spring, Guice, and Tapestry-DI, with examples of configuring services for the FizzBuzz kata using each framework. Aspects can introduce complexity through proxies and reflection, sometimes making stack traces difficult to follow.
The document provides an introduction to Drupal coding by explaining some key concepts and components. It defines APIs, frameworks, and content management systems, and describes how Drupal is built on a framework that uses APIs. It explains how modules can interact with Drupal's workflow through hooks, and highlights some major components like the menu, form API, database abstraction, and theme layer.
The Tellurium Automated Testing Framework (Tellurium) is a UI module-based web automated testing framework built on top of Selenium. Here is a step by step guide to teach you how to create a New Tellurium Test project.
Bar Camp Auckland - Mongo DB Presentation BCA4John Ballinger
MongoDB bridges the gap between key-value stores and traditional RDBMS systems by providing a document-oriented database with dynamic schemas. It offers features like replication, high availability, auto-sharding, rich querying and fast in-place updates. MongoDB is an open source, scalable and high-performance database that is supported by drivers in many languages.
State of Puppet - Puppet Camp Barcelona 2013Puppet
Chris Spence delivers the "State of Puppet" at Puppet Camp Barcelona 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
CZNIC: Správa internetu, routing a IPv6Tomáš Holas
Přednáška Ondřeje Filipa a Pavla Tůmy na o internetové infrastruktuře z hlediska registrátora národní domény. Přednáška pojednává o správě internetu na celosvětové a národní úrovni, informuje o způsobech propojování sítí různých provederů pomocí protokolu BGP, a seznamuje se základy protokolu IPv6 a současným stavem jeho zavádění v České republice.
Google App Engine - exploiting limitationsTomáš Holas
Google App Engine is a PaaS that allows developers to build and host web applications on Google's infrastructure. It provides automatic scaling and simulates a production environment through its SDK. However, applications must comply with App Engine's rules, including a read-only filesystem, 30 second response times, and no socket connections or processes. Data is stored in Google's distributed Datastore, which uses entities instead of tables and does not support joins, aggregation, or transactions across entity groups. To work within these limitations, developers must change their approach to focus on the Datastore's strengths like simplicity and denormalize their data models.
This document discusses Google Web Toolkit (GWT) and HTML5. It provides an agenda for a presentation that includes discussing what GWT is, how it compiles Java code to JavaScript, and its features like deferred binding. It then covers how GWT supports HTML5 features and discusses a session from Google I/O 2010 about GWT and HTML5. Key links are provided about GWT, the I/O session, and using GWT in Eclipse.
This document summarizes Guillaume Laforge's presentation on Groovy. It discusses Groovy's past, present, and future, including features from Groovy 1.6 to 1.7 such as annotations, Grape enhancements, AST transformations, and more. It also previews potential features for Groovy 1.8 like extended annotations, pattern matching, and support for JDK 7 features like Project Coin and InvokeDynamic.
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
Introduction and Comparison of polpular JS Frameworks Knockout, Ember, Angular and Backbone. The presentation descrobes How and when to select each framework.
The document discusses JBoss, an open source Java application server started in 1999. It provides an overview of JBoss Application Server and its capabilities including transactions, messaging, load balancing, and clustering. It then compares community projects on JBoss.org to productized versions from Red Hat, noting challenges in legal compliance, branding, usability, security and packaging for the community versions. The presentation provides examples of how Red Hat productizes JBoss Enterprise Application Platform to address these challenges. In the end, it summarizes what productization is and why it is important for creating supported enterprise products.
The document discusses testing PHP code through test-driven development (TDD) and behavior-driven development (BDD). It introduces PHPUnit for writing unit tests in PHP and demonstrates writing tests before code using TDD principles. Key benefits of testing like short feedback cycles and enforcing code quality through tests are also covered. Examples of unit tests for a User class are provided to illustrate the TDD process of writing tests first, making them fail, then writing code to pass the tests.
This is a presentation given in a Java Open day conducted by Trainologic.
Trainologic shares its training content for free at trainologic.org you can find many more free full course there.
Practical introduction to dependency injectionTamas Rev
Dependency injection frameworks like Spring, Guice, and Tapestry-DI allow configuring dependencies and wiring components together through XML, annotations, or code. This improves modularity, flexibility, and testability over traditional hardcoded dependencies. The document discusses DI concepts and frameworks, focusing on Spring, Guice, and Tapestry-DI, with examples of configuring services for the FizzBuzz kata using each framework. Aspects can introduce complexity through proxies and reflection, sometimes making stack traces difficult to follow.
The document provides an introduction to Drupal coding by explaining some key concepts and components. It defines APIs, frameworks, and content management systems, and describes how Drupal is built on a framework that uses APIs. It explains how modules can interact with Drupal's workflow through hooks, and highlights some major components like the menu, form API, database abstraction, and theme layer.
The Tellurium Automated Testing Framework (Tellurium) is a UI module-based web automated testing framework built on top of Selenium. Here is a step by step guide to teach you how to create a New Tellurium Test project.
Bar Camp Auckland - Mongo DB Presentation BCA4John Ballinger
MongoDB bridges the gap between key-value stores and traditional RDBMS systems by providing a document-oriented database with dynamic schemas. It offers features like replication, high availability, auto-sharding, rich querying and fast in-place updates. MongoDB is an open source, scalable and high-performance database that is supported by drivers in many languages.
State of Puppet - Puppet Camp Barcelona 2013Puppet
Chris Spence delivers the "State of Puppet" at Puppet Camp Barcelona 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
CZNIC: Správa internetu, routing a IPv6Tomáš Holas
Přednáška Ondřeje Filipa a Pavla Tůmy na o internetové infrastruktuře z hlediska registrátora národní domény. Přednáška pojednává o správě internetu na celosvětové a národní úrovni, informuje o způsobech propojování sítí různých provederů pomocí protokolu BGP, a seznamuje se základy protokolu IPv6 a současným stavem jeho zavádění v České republice.
Google App Engine - exploiting limitationsTomáš Holas
Google App Engine is a PaaS that allows developers to build and host web applications on Google's infrastructure. It provides automatic scaling and simulates a production environment through its SDK. However, applications must comply with App Engine's rules, including a read-only filesystem, 30 second response times, and no socket connections or processes. Data is stored in Google's distributed Datastore, which uses entities instead of tables and does not support joins, aggregation, or transactions across entity groups. To work within these limitations, developers must change their approach to focus on the Datastore's strengths like simplicity and denormalize their data models.
This document discusses Google Web Toolkit (GWT) and HTML5. It provides an agenda for a presentation that includes discussing what GWT is, how it compiles Java code to JavaScript, and its features like deferred binding. It then covers how GWT supports HTML5 features and discusses a session from Google I/O 2010 about GWT and HTML5. Key links are provided about GWT, the I/O session, and using GWT in Eclipse.
This document summarizes Guillaume Laforge's presentation on Groovy. It discusses Groovy's past, present, and future, including features from Groovy 1.6 to 1.7 such as annotations, Grape enhancements, AST transformations, and more. It also previews potential features for Groovy 1.8 like extended annotations, pattern matching, and support for JDK 7 features like Project Coin and InvokeDynamic.
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
Introduction and Comparison of polpular JS Frameworks Knockout, Ember, Angular and Backbone. The presentation descrobes How and when to select each framework.
The document discusses JBoss, an open source Java application server started in 1999. It provides an overview of JBoss Application Server and its capabilities including transactions, messaging, load balancing, and clustering. It then compares community projects on JBoss.org to productized versions from Red Hat, noting challenges in legal compliance, branding, usability, security and packaging for the community versions. The presentation provides examples of how Red Hat productizes JBoss Enterprise Application Platform to address these challenges. In the end, it summarizes what productization is and why it is important for creating supported enterprise products.
The document discusses testing PHP code through test-driven development (TDD) and behavior-driven development (BDD). It introduces PHPUnit for writing unit tests in PHP and demonstrates writing tests before code using TDD principles. Key benefits of testing like short feedback cycles and enforcing code quality through tests are also covered. Examples of unit tests for a User class are provided to illustrate the TDD process of writing tests first, making them fail, then writing code to pass the tests.
JBoss @ Slovakia, UNIZA & TUKE Universities November 2013Vaclav Tunka
This document discusses JBoss, an open source Java application server. It provides an overview of JBoss and JBoss Application Server, noting it was created in 1999 and is a runtime for back-end applications. The document then discusses the concept of productization, which is the process of taking open source projects and packaging them into a supported product with consistent branding, improved user experience, security, and support. Specifically, it notes the challenges and efforts required to productize JBoss Enterprise Application Platform from the various community projects to meet requirements for a commercial product.
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
Sharing 4 years of experience about node.js - A google chrome V8 engine javascript based web server technology. This slide covers about wide range of knowledge about node.js learned from 4 years of production, experiment, test & failures
4년 동안 node.js 서버 프로그래밍을 경험한 내용을 간략하게 정리해 보았습니다. node.js 를 접하시는 분들에게 도움이 되었으면 합니다.
This document summarizes and compares four popular JavaScript frameworks: Backbone.js, AngularJS, Ember.js, and Knockout.js. It covers key areas like how easy it is to get started with a "Hello World" example, dependencies, data binding capabilities, routing support, how views are defined, testing support, data handling, documentation/community support, and third party integration capabilities.
What's new in Java EE 7? From HTML5 to JMS 2.0Bruno Borges
Discover the new capabilities that Java EE 7 has to offer for you to build HTML5 applications. See some of the changes JMS brought to increase your Productivity!
These slides were presented at JBoss Users and Developers Conference, JUDCon Brazil 2013, on April 19th.
This document discusses managing change and achieving regression isolation using dynamic Groovy edges. It describes how Groovy can be used to build edge components, such as web service clients, in a way that makes it easier to update them and reduce the need for full regression testing when changes occur. Groovy allows direct access to XML payloads using techniques like the Markup Builder and XML Slurper. The document provides examples of using Groovy to detect web service changes and consume web services. It also discusses strategies for configuring Groovy scripts in Spring applications.
The document provides an overview and agenda for the Google Web Toolkit (GWT) 2.2 presentation. It includes demos of new tools like GWT Designer, and discusses new features such as SafeHTML wrappers, the Application framework including RequestFactory and Activities/Places, Cell Widgets, GWT Canvas, and built-in logging. It also summarizes the different options for making RPC calls in GWT and provides examples of using the new RequestFactory for data-oriented services.
The document discusses JRuby on Google App Engine, including key features of App Engine, quotas and billing, limitations, the current issues with JRuby on App Engine, App Engine gems, the development environment, deployment process, APIs, and milestones in the development of JRuby on App Engine. It also includes a short biography and discussion of learning experiences from building an iPhone app that uses App Engine and JRuby as a backend.
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.WO Community
This session will go over why I chose WO and WOnder as my application foundation, and how I applied the best practices from some of the best in our business to build my product. How I setup my applications and frameworks to maximize reuse and flexibility. And I will review other processes that allows me to run my business as a one plus (?) person shop.
This document summarizes Clay Smith's talk on JavaScript development workflows and build tools. It discusses the many competing JavaScript frameworks, build tools, programming languages, and dependency managers. It also describes challenges with managing dependencies and build artifacts across platforms like mobile, and proposes using GitHub's Release API to store compiled build artifacts as a solution to avoid checking transformed code into version control.
Make JSF more type-safe with CDI and MyFaces CODIos890
These slides show how to use type-safe mechanisms provided by MyFaces CODI for developing JSF applications which are more type-safe and easier to maintain.
http://2012.con-fess.com/sessions/-/details/136/MyFaces-CODI-and-JBoss-Seam3-become-Apache-DeltaSpike is the next part with more details about MyFaces CODI and Apache DeltaSpike at
"Xapi-lang For declarative code generation" By James NelsonGWTcon
Xapi-lang is a Java parser enhanced with an XML-like syntax that can be used for code generation, templating, and creating domain-specific languages. It works by parsing code into an abstract syntax tree and then applying visitors to analyze and transform the AST to produce output. Examples shown include class templating, API generation from templates, and UI component generation. The document also discusses best practices for code generation and outlines plans for rebuilding the GWT toolchain to support GWT 3 and J2CL. It promotes a new company, Vertispan, for GWT support and consulting and introduces another project called We The Internet for building tools to improve political systems using distributed democracy.
Building Next-Gen Web Applications with the Spring 3 Web StackJeremy Grelle
This document provides an overview of building next-generation web applications using the Spring 3.0 web stack. It discusses how the Spring web stack provides a unified programming model to serve multiple client types from the same code base. It describes the main components of the Spring web stack including Spring Framework, Spring MVC, Spring JavaScript, Spring Web Flow, Spring Security, Spring Faces, and Spring BlazeDS Integration. It also provides examples of using Spring MVC for request mapping and generating responses.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/how-axelera-ai-uses-digital-compute-in-memory-to-deliver-fast-and-energy-efficient-computer-vision-a-presentation-from-axelera-ai/
Bram Verhoef, Head of Machine Learning at Axelera AI, presents the “How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-efficient Computer Vision” tutorial at the May 2024 Embedded Vision Summit.
As artificial intelligence inference transitions from cloud environments to edge locations, computer vision applications achieve heightened responsiveness, reliability and privacy. This migration, however, introduces the challenge of operating within the stringent confines of resource constraints typical at the edge, including small form factors, low energy budgets and diminished memory and computational capacities. Axelera AI addresses these challenges through an innovative approach of performing digital computations within memory itself. This technique facilitates the realization of high-performance, energy-efficient and cost-effective computer vision capabilities at the thin and thick edge, extending the frontier of what is achievable with current technologies.
In this presentation, Verhoef unveils his company’s pioneering chip technology and demonstrates its capacity to deliver exceptional frames-per-second performance across a range of standard computer vision networks typical of applications in security, surveillance and the industrial sector. This shows that advanced computer vision can be accessible and efficient, even at the very edge of our technological ecosystem.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Discover top-tier mobile app development services, offering innovative solutions for iOS and Android. Enhance your business with custom, user-friendly mobile applications.
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
Conversational agents, or chatbots, are increasingly used to access all sorts of services using natural language. While open-domain chatbots - like ChatGPT - can converse on any topic, task-oriented chatbots - the focus of this paper - are designed for specific tasks, like booking a flight, obtaining customer support, or setting an appointment. Like any other software, task-oriented chatbots need to be properly tested, usually by defining and executing test scenarios (i.e., sequences of user-chatbot interactions). However, there is currently a lack of methods to quantify the completeness and strength of such test scenarios, which can lead to low-quality tests, and hence to buggy chatbots.
To fill this gap, we propose adapting mutation testing (MuT) for task-oriented chatbots. To this end, we introduce a set of mutation operators that emulate faults in chatbot designs, an architecture that enables MuT on chatbots built using heterogeneous technologies, and a practical realisation as an Eclipse plugin. Moreover, we evaluate the applicability, effectiveness and efficiency of our approach on open-source chatbots, with promising results.
Dandelion Hashtable: beyond billion requests per second on a commodity serverAntonios Katsarakis
This slide deck presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
5. Úvod
• GWT je javascriptový framework
Wednesday, March 17, 2010
6. Úvod
• GWT je javascriptový framework
• Vývoj v JAVE (kompilátor preloží do JS)
Wednesday, March 17, 2010
7. Úvod
• GWT je javascriptový framework
• Vývoj v JAVE (kompilátor preloží do JS)
• silné IDE - refaktor, code completion
Wednesday, March 17, 2010
8. Úvod
• GWT je javascriptový framework
• Vývoj v JAVE (kompilátor preloží do JS)
• silné IDE - refaktor, code completion
• unit testovanie, moznosť TDD
Wednesday, March 17, 2010
9. Úvod
• GWT je javascriptový framework
• Vývoj v JAVE (kompilátor preloží do JS)
• silné IDE - refaktor, code completion
• unit testovanie, moznosť TDD
• integrácia s backendami (Spring,
Hibernate, JSF a ďalšie)
Wednesday, March 17, 2010
10. Úvod
• GWT je javascriptový framework
• Vývoj v JAVE (kompilátor preloží do JS)
• silné IDE - refaktor, code completion
• unit testovanie, moznosť TDD
• integrácia s backendami (Spring,
Hibernate, JSF a ďalšie)
Wednesday, March 17, 2010
12. Úvod
• debug kódu v prehliadači
Wednesday, March 17, 2010
13. Úvod
• debug kódu v prehliadači
• kompatibilita
Wednesday, March 17, 2010
14. Úvod
• debug kódu v prehliadači
• kompatibilita
• IE 6+, FF 1.x+, Opera 8.5+, Safari 2.0.x
Wednesday, March 17, 2010
15. Hello world!
public class HelloApp implements EntryPoint {
public void onModuleLoad() {
Button b = new Button("Click me", new ClickListener() {
public void onClick(Widget sender) {
Window.alert("Hello world!");
}
}
RootPanel.get().add(b);
}
}
Wednesday, March 17, 2010
19. Project Layout
• module base
• .client - kód ktorý sa
kompiluje do JS
• .server - java kód ktorý
nebude kompilovaný do
JS (ale bude pristupný
iba na serveri)
• .public - resources
Wednesday, March 17, 2010
20. Module
• XML súbor MyApp.gwt.xml
• source
• super source
• deferred binding
• inherited modules
• entry point
Wednesday, March 17, 2010
22. Module - source
• <source src=”client” />
• com.app.Module.gwt.xml
• com.app.client.* - kód ktorý sa bude
kompilovať
• com.app.other* alebo com.other.*- na
tento kód gwt neuvidí a nebude sa
kompilovať do JS
Wednesday, March 17, 2010
23. Module - super-source
• <super-source src=”jre” />
• com.app.Module.gwt.xml
• com.app.jre.java.util.UUID.java -
kompilátor to uvidí ako
java.util.UUID.java
Wednesday, March 17, 2010
24. Module - deferred
<!-- Fall through to this rule is the browser isn't IE or Mozilla -->
<replace-with class="com.google.gwt.user.client.ui.impl.PopupImpl">
<when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>
</replace-with>
<!-- Mozilla needs a different implementation due to issue #410 -->
<replace-with class="com.google.gwt.user.client.ui.impl.PopupImplMozilla">
<when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl" />
<any>
<when-property-is name="user.agent" value="gecko"/>
<when-property-is name="user.agent" value="gecko1_8" />
</any>
</replace-with>
Wednesday, March 17, 2010
25. Module - deferred
public class HelloApp implements EntryPoint {
public void onModuleLoad() {
PopupImpl impl = GWT.create(PopupImpl.class);
impl.callSomeMethod();
}
}
Wednesday, March 17, 2010
27. Hello world!
public class HelloApp implements EntryPoint {
public void onModuleLoad() {
Button b = new Button("Click me", new ClickListener() {
public void onClick(Widget sender) {
Window.alert("Hello world!");
}
}
RootPanel.get(“gwt-main-container”).add(b);
}
}
Wednesday, March 17, 2010
31. AJAX
• AJAX (Asynchronous JavaScript and XML) mení obsah
stránky bez nutnosti znovunačítania
• RIA (desktop-like Rich Internet Application) aka WEB 2.0
Wednesday, March 17, 2010
33. AJAX v podani GWT
/ some code flow
/
/ GWT.create(YourService.class);
/
YourService.Util.getInstance().method(param, new AsyncCallback() {
public void onFailure(Throwable e) {
Window.alertError(“error occured”);
}
public void onSuccess(Object result) {
/ and more logic continues
/
/ process the result
/
}
});
Wednesday, March 17, 2010
34. Client Bundles
• obrázky - multi-obrázok (jeden request)
• minimalizuje chyby medzi filename-om a
konštantou
• rozširiteľný design pre nové resource typy
Wednesday, March 17, 2010
35. Client Bundles
<inherits name="com.google.gwt.resources.Resources" />
public interface MyResources extends ClientBundle {
public static final MyResources INSTANCE = GWT.create
(MyResources.class);
@Source("my.css")
public CssResource css();
@Source("config.xml")
public TextResource initialConfiguration();
@Source("manual.pdf")
public DataResource ownersManual();
Wednesday, March 17, 2010
36. Client Bundles
/ Inject the contents of the CSS file
/
MyResources.INSTANCE.css().ensureInjected();
/ Display the manual file in an iframe
/
new Frame(MyResources.INSTANCE.ownersManual().getURL());
Wednesday, March 17, 2010
40. JSNI
• JavaScript Native Interface
• ľahko kombinovateľný JavaScript kód do
GWT
• volanie metód z GWT v JS
• volanie metód z JS v GWT
Wednesday, March 17, 2010
41. JSNI Syntax
• /*-{ JavaScript code here }-*/;
• native void nativeJsCall()/*-{alert(“JS”);}-*/;
• $wnd - pointer na window (ale preco?)
Wednesday, March 17, 2010
42. JSNI - JS call do GWT
• [instance-expr.]@class-name::method-name
(param-signature)(arguments)
• [instance-expr.]@class-name::field-name
Wednesday, March 17, 2010
43. JSNI - JS call do GWT
[instance-expr.]@class-name::method-name(param-signature)(arguments)
/ method calls
/
this.@com.example.client.MyClass::setStringValue(Ljava/lang/String;)(s);
x.@com.example.client.MyClass::setStringValue(Ljava/lang/String;)(s);
@com.example.client.MyClass::setStaticValue(Ljava/lang/String;)(s);
/ fields
/
var val = this.@com.example.client.MyClass::valueStringFiled
x.@com.example.client.MyClass::valueStringField = val + " and stuff";
Wednesday, March 17, 2010
44. JSNI - JS call do GWT
Type Signature Java Type long f (int n, String s, int[] arr);
Z boolean =
B byte (ILjava/lang/String;[I)J
C char
S short
I int
J long
F float
D double
L class ; class
[ type type[]
Wednesday, March 17, 2010
45. JavaScript overlay types
• JS objekt ako Java objekt
• protected konštruktor - bez arg
• mžnosť písť natívne aj nenatívne metódy
• nesmie obsahovať fieldy
Wednesday, March 17, 2010
47. JavaScript overlay types
class Customer extends JavaScriptObject {
/ Overlay types always have protected, zero-arg ctors
/
protected Customer() { }
/ Typically, methods on overlay types are JSNI
/
public final native String getFirstName() /*-{return this.FirstName; }-*/;
public final native String getLastName() /*-{return this.LastName; }-*/;
/ Note, though, that methods aren't required to be JSNI
/
public final String getFullName() {
return getFirstName() + " " + getLastName();
}
}
Wednesday, March 17, 2010
48. JavaScript overlay types
class MyModuleEntryPoint implements EntryPoint {
public void onModuleLoad() {
JsArray<Customer> cs = getCustomers();
for (int i = 0, n = cs.length(); i < n; ++i) {
Window.alert("Hello, " + cs.get(i).getFullName());
}
}
/ Return the whole JSON array, as is
/
private final native JsArray<Customer> getCustomers() /*-{
return $wnd.jsonData;
}-*/;
}
Wednesday, March 17, 2010
49. JavaScript overlay types
function $onModuleLoad(){
var cs, i, n;
cs = $wnd.jsonData;
for (i = 0, n = cs.length; i < n; ++i) {
$wnd.alert('Hello, ' + (cs[i].FirstName + ' ' + cs[i].LastName));
}
}
//---------------------------------------------------------------------
function B(){var a,b,c;a=$wnd.jsonData;for(b=0,c=a.length;b<c;++b)
{$wnd.alert(l+(a[b].FirstName+m+a[b].LastName))}}
Wednesday, March 17, 2010