This session of The Ajax Experience 2008 takes a look at the latest features in both Prototype and script.aculo.us, including custom events and how to leverage them, method wrapping for AOP-style programming, sprockets, the refactorings and improvements on Ajax, scheduling and the DOM, the new effects engine, and more.
We wrap up with an overview of the community landscape for these libraries, looking at major helpful resources, prominent peripheral frameworks, and seeing what the future looks like for both Prototype and script.aculo.us.
This document discusses using asynchronous JavaScript (JS) in Odoo. It covers:
- Creating and handling promises in JS, including creating promises, waiting for promises, and handling errors.
- Examples of asynchronous functions that return promises in Odoo, including loading a template asynchronously and creating a widget instance.
- How to handle concurrency issues that can arise when users click quickly, such as ensuring the last clicked item loads first and loads all items in sequence.
- The concurrency primitives available in Odoo like DropPrevious and Mutex that can help address these issues.
This document describes the configuration of a payroll structure for Belgian employees following the CP200 structure. It includes:
1) Defining the global parameters for the payroll structure like the scheduled pay period and default working hours.
2) Configuring salary rules to compute payslip lines, including setting conditions for applicability, amount calculation formulas, and accounting details.
3) Examples of specific salary rules like for internet allowance and miscellaneous employer social security contributions. The rules leverage a local evaluation context and BrowseableObjects to access related payslip and employee data.
AngularJs $provide API internals & circular dependency problem.Yan Yankowski
The document provides an overview of AngularJS dependency injection and the $provide service. It explains the differences between providers, factories, services, values, constants, and decorators. It describes how $provide registers these items in the providerCache and instanceCache and instantiates them lazily through the $injector. Circular dependencies can cause errors since items point to each other before being fully instantiated.
This document provides an overview of Angular.JS and advanced Angular.JS concepts. It discusses bootstrapping an Angular app, the main features of Angular including templating, routing, two-way data binding, directives, and dependency injection. It also covers best practices, testing and tooling, SEO considerations for Angular apps, and whether Angular is suitable for enterprise projects. The presenter then demonstrates a bootstrapped Angular app and provides resources for learning more about Angular.
Workshop JavaScript Testing. Frameworks. Client vs Server Testing. Jasmine. Chai. Nock. Sinon. Spec Runners: Karma. TDD. Code coverage. Building a testable JS app.
Presentado por ing: Raúl Delgado y Mario García
This document discusses using asynchronous JavaScript (JS) in Odoo. It covers:
- Creating and handling promises in JS, including creating promises, waiting for promises, and handling errors.
- Examples of asynchronous functions that return promises in Odoo, including loading a template asynchronously and creating a widget instance.
- How to handle concurrency issues that can arise when users click quickly, such as ensuring the last clicked item loads first and loads all items in sequence.
- The concurrency primitives available in Odoo like DropPrevious and Mutex that can help address these issues.
This document describes the configuration of a payroll structure for Belgian employees following the CP200 structure. It includes:
1) Defining the global parameters for the payroll structure like the scheduled pay period and default working hours.
2) Configuring salary rules to compute payslip lines, including setting conditions for applicability, amount calculation formulas, and accounting details.
3) Examples of specific salary rules like for internet allowance and miscellaneous employer social security contributions. The rules leverage a local evaluation context and BrowseableObjects to access related payslip and employee data.
AngularJs $provide API internals & circular dependency problem.Yan Yankowski
The document provides an overview of AngularJS dependency injection and the $provide service. It explains the differences between providers, factories, services, values, constants, and decorators. It describes how $provide registers these items in the providerCache and instanceCache and instantiates them lazily through the $injector. Circular dependencies can cause errors since items point to each other before being fully instantiated.
This document provides an overview of Angular.JS and advanced Angular.JS concepts. It discusses bootstrapping an Angular app, the main features of Angular including templating, routing, two-way data binding, directives, and dependency injection. It also covers best practices, testing and tooling, SEO considerations for Angular apps, and whether Angular is suitable for enterprise projects. The presenter then demonstrates a bootstrapped Angular app and provides resources for learning more about Angular.
Workshop JavaScript Testing. Frameworks. Client vs Server Testing. Jasmine. Chai. Nock. Sinon. Spec Runners: Karma. TDD. Code coverage. Building a testable JS app.
Presentado por ing: Raúl Delgado y Mario García
AngularJS with TypeScript and Windows Azure Mobile ServicesRainer Stropek
In the coming two weeks I will do a series of talks at various conferences in Austria and Germany. I will speak about AngularJS, TypeScript, and Windows Azure Mobile Services. In this blog post I publish the slides and the sample code.
This document provides information about animations in AngularJS using the ngAnimate module. It lists directives that support animations like ngRepeat, ngView, etc. It describes how to define CSS styles for animations and the different animation events like enter, leave, etc. It also provides an example of a custom animation using the $animate service and defining an animation method.
In JS: CLASS <=> Constructor FN
new FN() => FN() { this }
FN = CLASS (FN = FN, FN = DATA)
Objects
Prototype / __proto__
Inheritence
Rewriting / Augmenting
built in objects
Component lifecycle hooks in Angular 2.0Eyal Vardi
The document discusses Angular change detection and lifecycle hooks. It provides examples of using change detection strategies like OnPush, examples of implementing DoCheck to watch for changes, and summaries of the different lifecycle hooks and when they are called.
AngularJS uses a compile function to parse HTML into DOM elements and compile directives. The compile function sorts directives by priority and executes their compile and link functions to connect the scope to the DOM. It recursively compiles child elements. This allows directives to manipulate DOM elements and register behavior.
Powerful JavaScript Tips and Best PracticesDragos Ionita
The document provides 11 powerful JavaScript tips and best practices for programmers, including using short-circuit evaluation to set default values, immediately invoked function expressions to avoid polluting the global namespace, and splice instead of delete to remove array items without leaving undefined holes.
This document discusses best practices for writing JavaScript code, including using object-oriented patterns, object hierarchies, and the prototype property to organize code and prevent naming collisions. It also recommends writing reusable code by parameterizing functions, using object literals as flexible parameters, and loading JavaScript on demand. Additionally, it suggests separating content, CSS and JavaScript into different files and reducing file sizes for production.
The document discusses generating headless JavaScript tests for validations. It describes problems with testing JavaScript across many views, models, and validations. It proposes using server-side and client-side validations, widgets, localization, and regular expressions to solve these problems. Tests are generated and executed using RSpec and a standalone JavaScript interpreter to test validations without a browser.
Promises provide a consistent way to write asynchronous code in JavaScript by abstracting callbacks into objects. Some key benefits of promises include: handling errors through rejection instead of nested callbacks, ability to chain operations together through promise methods like .then(), and restoring synchronous-like control flow. The document discusses how promises improve on traditional callback-based patterns and provides examples of converting common asynchronous patterns to use promises.
This document discusses advanced JavaScript techniques. It covers object-oriented JavaScript concepts like references, function overloading, type checking, scopes, closures, object creation, and inheritance. It also discusses performance improvements like scope management, object caching, and optimizing DOM selection. Finally, it discusses debugging and testing JavaScript code as well as distributing JavaScript applications.
AngularJS is a JavaScript MVC framework developed by Google in 2009. It uses HTML enhanced with directives to bind data to the view via two-way data binding. AngularJS controllers define application behavior by mapping user actions to the model. Core features include directives, filters, expressions, dependency injection and scopes that connect controllers and views. Services like $http are used to retrieve server data. AngularJS makes building single page applications easier by taking care of DOM updates automatically.
The document discusses strategies for testing AngularJS applications, including unit testing controllers and services, mocking dependencies like HTTP requests and services, and end-to-end testing. It provides examples of writing tests for controllers, services, directives, and end-to-end tests using Protractor. Key points covered are setting up tests, injecting dependencies, mocking, and making assertions to validate test behavior.
About us
Author: Ted Piotrowski
Find me at: tpiotrowski@atlassian.com
Sample code: https://bitbucket.org/tpiotrowski/js-hcm
Presentation made for Javascript Ho Chi Minh City Meetup Group
You can find us at:
http://www.meetup.com/JavaScript-Ho-Chi-Minh-City/
https://www.facebook.com/JavaScriptHCMC
https://plus.google.com/u/0/communities/116105314977285194967
This document provides an overview and introduction to JavaScript basics and best practices. It covers what JavaScript is, how engines work, language features, and future developments like ES6. The basics section discusses types, variables, expressions, statements, functions, objects, and prototypical inheritance. The best practices section focuses on techniques for enterprise applications. The document is intended to help front-end developers learn JavaScript fundamentals.
This document provides an overview of basic JavaScript concepts including variables, functions, conditional statements, loops and recursion. It includes code examples and assignments for each concept. The assignments demonstrate core JavaScript syntax and increase in complexity, covering if/else statements, switch cases, while/do-while/for loops, and recursive functions for calculating factorials and Fibonacci series. Later assignments involve more complex tasks like printing multiple patterns and combining different statements. The document serves as a learning guide for JavaScript fundamentals.
This document discusses Reactive programming and Angular 2 components. It introduces Observables and how they can be used to handle asynchronous data streams in a reactive way. It provides examples of creating Observables from events, iterables, and intervals. It also discusses how Observables can be used in Angular 2 to reactively process and display asynchronous data.
This document provides an overview and summary of various topics related to intellectual property law, including:
1. Criminal provisions for copyright infringement, including indictable, summary, and strict liability offences.
2. Technological prevention measures that establish criminal penalties for circumventing digital locks or removing electronic rights management information from copyrighted works.
3. Performers' rights, which give performers control over recordings and broadcasts of their live performances, and partial ownership of sound recordings.
4. Moral rights that protect the attribution and integrity of an author's work, including rights of attribution, rights against false attribution, and rights of integrity.
This document provides an overview of Dutch Christian anarchists in the late 19th and early 20th centuries. It lists the names of key figures such as Felix Ortt, who was the most important Dutch Christian anarchist theorist, as well as locations like the village of Blaricum where the first Christian anarchist colony was founded. Various ministers, theologians, and intellectuals are mentioned who were involved with or influenced by the Christian anarchist movement in the Netherlands during this time period.
AngularJS with TypeScript and Windows Azure Mobile ServicesRainer Stropek
In the coming two weeks I will do a series of talks at various conferences in Austria and Germany. I will speak about AngularJS, TypeScript, and Windows Azure Mobile Services. In this blog post I publish the slides and the sample code.
This document provides information about animations in AngularJS using the ngAnimate module. It lists directives that support animations like ngRepeat, ngView, etc. It describes how to define CSS styles for animations and the different animation events like enter, leave, etc. It also provides an example of a custom animation using the $animate service and defining an animation method.
In JS: CLASS <=> Constructor FN
new FN() => FN() { this }
FN = CLASS (FN = FN, FN = DATA)
Objects
Prototype / __proto__
Inheritence
Rewriting / Augmenting
built in objects
Component lifecycle hooks in Angular 2.0Eyal Vardi
The document discusses Angular change detection and lifecycle hooks. It provides examples of using change detection strategies like OnPush, examples of implementing DoCheck to watch for changes, and summaries of the different lifecycle hooks and when they are called.
AngularJS uses a compile function to parse HTML into DOM elements and compile directives. The compile function sorts directives by priority and executes their compile and link functions to connect the scope to the DOM. It recursively compiles child elements. This allows directives to manipulate DOM elements and register behavior.
Powerful JavaScript Tips and Best PracticesDragos Ionita
The document provides 11 powerful JavaScript tips and best practices for programmers, including using short-circuit evaluation to set default values, immediately invoked function expressions to avoid polluting the global namespace, and splice instead of delete to remove array items without leaving undefined holes.
This document discusses best practices for writing JavaScript code, including using object-oriented patterns, object hierarchies, and the prototype property to organize code and prevent naming collisions. It also recommends writing reusable code by parameterizing functions, using object literals as flexible parameters, and loading JavaScript on demand. Additionally, it suggests separating content, CSS and JavaScript into different files and reducing file sizes for production.
The document discusses generating headless JavaScript tests for validations. It describes problems with testing JavaScript across many views, models, and validations. It proposes using server-side and client-side validations, widgets, localization, and regular expressions to solve these problems. Tests are generated and executed using RSpec and a standalone JavaScript interpreter to test validations without a browser.
Promises provide a consistent way to write asynchronous code in JavaScript by abstracting callbacks into objects. Some key benefits of promises include: handling errors through rejection instead of nested callbacks, ability to chain operations together through promise methods like .then(), and restoring synchronous-like control flow. The document discusses how promises improve on traditional callback-based patterns and provides examples of converting common asynchronous patterns to use promises.
This document discusses advanced JavaScript techniques. It covers object-oriented JavaScript concepts like references, function overloading, type checking, scopes, closures, object creation, and inheritance. It also discusses performance improvements like scope management, object caching, and optimizing DOM selection. Finally, it discusses debugging and testing JavaScript code as well as distributing JavaScript applications.
AngularJS is a JavaScript MVC framework developed by Google in 2009. It uses HTML enhanced with directives to bind data to the view via two-way data binding. AngularJS controllers define application behavior by mapping user actions to the model. Core features include directives, filters, expressions, dependency injection and scopes that connect controllers and views. Services like $http are used to retrieve server data. AngularJS makes building single page applications easier by taking care of DOM updates automatically.
The document discusses strategies for testing AngularJS applications, including unit testing controllers and services, mocking dependencies like HTTP requests and services, and end-to-end testing. It provides examples of writing tests for controllers, services, directives, and end-to-end tests using Protractor. Key points covered are setting up tests, injecting dependencies, mocking, and making assertions to validate test behavior.
About us
Author: Ted Piotrowski
Find me at: tpiotrowski@atlassian.com
Sample code: https://bitbucket.org/tpiotrowski/js-hcm
Presentation made for Javascript Ho Chi Minh City Meetup Group
You can find us at:
http://www.meetup.com/JavaScript-Ho-Chi-Minh-City/
https://www.facebook.com/JavaScriptHCMC
https://plus.google.com/u/0/communities/116105314977285194967
This document provides an overview and introduction to JavaScript basics and best practices. It covers what JavaScript is, how engines work, language features, and future developments like ES6. The basics section discusses types, variables, expressions, statements, functions, objects, and prototypical inheritance. The best practices section focuses on techniques for enterprise applications. The document is intended to help front-end developers learn JavaScript fundamentals.
This document provides an overview of basic JavaScript concepts including variables, functions, conditional statements, loops and recursion. It includes code examples and assignments for each concept. The assignments demonstrate core JavaScript syntax and increase in complexity, covering if/else statements, switch cases, while/do-while/for loops, and recursive functions for calculating factorials and Fibonacci series. Later assignments involve more complex tasks like printing multiple patterns and combining different statements. The document serves as a learning guide for JavaScript fundamentals.
This document discusses Reactive programming and Angular 2 components. It introduces Observables and how they can be used to handle asynchronous data streams in a reactive way. It provides examples of creating Observables from events, iterables, and intervals. It also discusses how Observables can be used in Angular 2 to reactively process and display asynchronous data.
This document provides an overview and summary of various topics related to intellectual property law, including:
1. Criminal provisions for copyright infringement, including indictable, summary, and strict liability offences.
2. Technological prevention measures that establish criminal penalties for circumventing digital locks or removing electronic rights management information from copyrighted works.
3. Performers' rights, which give performers control over recordings and broadcasts of their live performances, and partial ownership of sound recordings.
4. Moral rights that protect the attribution and integrity of an author's work, including rights of attribution, rights against false attribution, and rights of integrity.
This document provides an overview of Dutch Christian anarchists in the late 19th and early 20th centuries. It lists the names of key figures such as Felix Ortt, who was the most important Dutch Christian anarchist theorist, as well as locations like the village of Blaricum where the first Christian anarchist colony was founded. Various ministers, theologians, and intellectuals are mentioned who were involved with or influenced by the Christian anarchist movement in the Netherlands during this time period.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against developing mental illness and improve symptoms for those who already have a condition.
This document provides an overview of Realism and Impressionism in art, and discusses some of the technological and urban changes in Europe during the second half of the 19th century. It mentions Richard Wagner's opera cycle The Ring of the Nibelungen and discusses leitmotifs. The document also includes sample dialogue between characters discussing killing a rabbit with a magic helmet and spear.
This document discusses social media as a tool for communication and connection between people, allowing networked conversations to occur and markets to understand human voices. It emphasizes using an honest, human voice when communicating through social media that is open and natural, sharing thoughts and emotions without being pretentious or speaking for the company.
iGoogle allows users to customize their homepage by adding RSS feeds, games, news, and entertainment. Firstclass is an email server that offers additional features like web login. Blogger provides a platform for sharing appropriate thoughts and feelings online. The document also mentions an iMac account for storing personal files and pictures, as well as a class wiki housing student profiles and schedules.
Este documento apresenta receitas de salgados e doces utilizando massa folhada, incluindo instruções de preparo detalhadas. Faz parte de um curso online sobre massa folhada ministrado pela Eduk para produção caseira e comercial de variedades de produtos com esta massa versátil.
The document provides guidance on writing a research report, outlining its typical structure and sections. It discusses the front matter (title page, abstract), body of the report (introduction, methods, results, discussion), end matter (acknowledgments, references, appendixes), tables and figures, and submission/review process.
This short document is an AMV (animated music video) by Amithecatgirl set to the song "Realize" by Colbie Caillat. It is dedicated to the creator's soulmate with a declaration of love.
The document provides general life advice such as getting enough sleep, reading enjoyable books, playing with simple things, showing affection, and being happy despite challenges. It suggests maintaining a balance by also getting serious, angry, or changing one's look occasionally while doing what you want and forgetting diets. The overall message is that people can be strong and overcome challenges.
The document discusses the need for companies to genuinely connect with customers instead of using superficial tactics like boastful claims or public relations. It suggests companies should come down from their "ivory towers" and speak to people in a humble, straightforward way using language the public can relate to, in order to build real relationships instead of walls. Marketing should not be based solely on fear of transparency but on understanding what customers truly care about.
Friends with Benefits: Innovative Partnerships in Public LibrariesSue Lawson
Manchester Libraries have delivered various digital literacy projects including Coding for Girls, Curry and Coding Nights, Robogals workshops and Internet Radio Production courses. These innovative activities have stemmed from an exciting partnership with the Manchester Laboratory (MadLab), Manchester Girl Geeks and other members of the tech community in Manchester.
This document provides an introduction to Docker. It discusses what Docker is, how Docker containers work, and how to install and use Docker. Some key points include:
- Docker allows applications to be easily deployed across systems by packaging applications and their dependencies into lightweight containers.
- Docker containers are portable and self-contained, allowing applications to be easily deployed. They are built upon Linux container technologies like LXC.
- The document demonstrates how to pull Docker images, run containers, link containers, and use Dockerfiles to build images. It also discusses 12 factor app methodology and orchestration tools like Docker and Fig.
There are two main types of informal groups that exist in classrooms. Friendship groups form based on common characteristics like being from the same university branch or state. Communities of practice are temporary groups that are formed to accomplish a specific goal, like a group assignment, and then disband once complete. Students are motivated to join informal groups for social bonding, social identity, goal accomplishment, and emotional support.
This document contains information about cellular respiration and photosynthesis. It discusses the circulatory system and how oxygen and glucose are transported to cells through capillaries. It also summarizes how animal cells undergo respiration in the mitochondria to produce carbon dioxide, water, and energy from oxygen and glucose, while plant cells perform photosynthesis in chloroplasts to produce glucose and oxygen from carbon dioxide, water, and sunlight. Diagrams show key structures in cells like mitochondria, nucleus, and chloroplasts, and different types of yeast reproduction.
The document discusses secrets and techniques for JavaScript libraries. It covers topics like the JavaScript language, cross-browser code, events, DOM traversal, styles, animations, distribution, and HTML insertion. It provides examples and explanations of techniques for class creation, timers, options, subclassing, custom events, selector internals, computed styles, and dimension calculations.
The document discusses functional JavaScript programming. It introduces functional concepts like anonymous functions, binding functions to contexts, and enumerable functions. It provides examples of how to write functional code using these concepts like mapping over arrays with anonymous functions and filtering arrays. It also discusses structuring applications and provides an example code snippet for converting HTML elements.
The document discusses building testable PHP applications. It covers topics like testing code, testable architecture, dependency injection, and static code analysis tools like PHP Code Sniffer, PHP Mess Detector, and PHP Copy Paster Detector. The document emphasizes that writing tests and designing for testability leads to fewer bugs and more maintainable code. It provides examples of unit testing and recommends test-driven development practices.
PECL Picks - Extensions to make your life betterZendCon
This document provides information about various PHP extensions available through PECL (PHP Extension Community Library). It introduces the author and their background, describes what PECL is and provides a brief history. It then discusses the current status of PECL, future plans, and how individuals can get involved. Finally, it highlights and provides code examples for several popular and useful PECL extensions, including APC, Memcache, Imagick, HTTP, UploadProgress and others.
This document provides an overview of the evolution of JavaScript from version 1.5 to the planned version 2.0. It discusses new features that were introduced in each version, such as getters and setters in 1.5, array extras in 1.6, generators and iterators in 1.7, block scoping with let in 1.9, and classes and interfaces planned for 2.0. The goal for JavaScript 2.0 is for it to be backwards compatible, suitable for large systems, allow reusable libraries, fix bugs in ECMAScript 3, and keep it usable for small programs. It will integrate the Tamarin virtual machine and bring features from ActionScript.
Developing for Plone using ArchGenXML / ArgoUMLJazkarta, Inc.
July 24, 2006. The training materials for the Plone Magic Camp in Brooklyn, NY. This day-long course helps you get started with rapid application development using ArchGenXML and ArgoUML. We walk through an example of building an Artist and Group classes in ArgoUML, and auto-generate the Plone product code using ArchGenXML.
The document discusses Groovy and Grails. Groovy is a dynamic language for the JVM that is inspired by languages like Python and Ruby. It allows seamless integration with Java classes and libraries. Grails is a web framework for Groovy that is inspired by Ruby on Rails. It uses Spring MVC, Hibernate, and other technologies to provide features like auto-generation of code and integration with databases. The document provides examples of using closures, dynamic methods, lists, and maps in Groovy and generating applications using Grails.
MyApp provides JavaScript best practices including:
1) Using namespaces to avoid naming collisions and define packages like MyApp.string.utils for reusable functions.
2) Branching code during initialization or lazily on first use to handle browser differences efficiently.
3) Passing configuration as an object instead of many parameters to simplify function calls.
4) Defining private methods and properties using closures to encapsulate code.
5) Employing self-executing functions for one-time initialization tasks.
6) Allowing method chaining for readability when calling several related methods.
This talk discusses various issues of low-level PHP performance, such as: When is it more efficient to use arrays or objects? What causes catastrophic garbage collection? Does adding type annotations make PHP faster or slower?
I will answer these types of question with a (shallow) dive into PHP internals, touching on various topics like value representation, bytecode optimization and GC.
This is the Google Tech Talk that I gave August 17th, 2007 on building a JavaScript library. I derived much of the talk from my experiences in building the jQuery and FUEL JavaScript libraries.
Learn how to write scripted load tests in PHP to run against your system without breaking the bank. Jason will cover not only the importance of load testing, but share stories of how load tests uncovered problems that would otherwise not have been discovered until production. Also, learn how to use load testing to learn how to deal with large traffic sites without needing to be employed by a large scale site first. We’ll be using RedLine13, an almost free load testing tool that is at the same time inexpensive, easy, and effective.
Gisting is an implementation of Google\'s MapReduce framework for processing and extracting useful information from very large data sets. At the time of this writing, the code is available for PREVIEW at http://github.com/mchung/gisting. I am currently working to release this framework for general usage.
1) Qooxdoo is a JavaScript framework that provides object-oriented programming features to JavaScript. It turns JavaScript into a "grown up OO language" and allows developers to write browser-based applications without needing HTML or CSS knowledge.
2) The document discusses how to get started with a basic "Hello World" Qooxdoo application by installing Python, unpacking Qooxdoo, and generating and running the application files.
3) Key aspects of programming with Qooxdoo include leveraging JavaScript features like anonymous functions, closures, and proper understanding of scoping, as the framework relies heavily on these elements.
The document describes the Xopus JavaScript application framework. The framework aims to address problems with structuring JavaScript programs by introducing object-oriented paradigms like modules, classes, and dependencies. It allows writing JavaScript code in an extended subset with OO features, compiles it to flattened code, and supports unit testing and other program analysis tools. The framework provides a consistent way to structure programs into packages and make dependencies explicit without runtime overhead.
Presentation showing that writing tests is not really hard with examples on testing a simple class, testing with dataproviders, fixtures, mocks, stubs, databases and how to use zend framework bootstrap for MVC testing.
Given at php|tek 09 unconf sessions.
This document summarizes John Resig's presentation on jQuery internals. It discusses the core parts of jQuery like common functions, selectors, DOM manipulation and events. It also covers jQuery's isolation, chaining, element data, new selector engine Sizzle, and tools for testing and profiling jQuery like the qUnit test suite and profiling plugin.
The document discusses Asynchronous JavaScript and XML (Ajax) and how it can be used to retrieve data from a server without reloading the entire web page. It provides an overview of Ajax fundamentals including the XMLHttpRequest object, DOM manipulation, and different data transport options. It also recommends using a JavaScript library to simplify making Ajax requests instead of writing raw XMLHttpRequest code.
This document provides an overview of the Play! web framework for Java, including how it differs from traditional Java web development approaches by avoiding servlets, portlets, XML, EJBs, JSPs, and other technologies. It demonstrates creating a simple PDF generation application using Play!, including defining a model, controller, and view. The framework uses conventions over configuration and allows rapid development through features like automatic reloading of code changes and helpful error pages.
With this presentation I hope to show that using SPL doesn't require a PHD and that it really benefits your application design, maintainability and implements best practices to solve common development problems.
Similar to What's up with Prototype and script.aculo.us? (20)
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
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.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Webinar: Designing a schema for a Data WarehouseFederico Razzoli
Are you new to data warehouses (DWH)? Do you need to check whether your data warehouse follows the best practices for a good design? In both cases, this webinar is for you.
A data warehouse is a central relational database that contains all measurements about a business or an organisation. This data comes from a variety of heterogeneous data sources, which includes databases of any type that back the applications used by the company, data files exported by some applications, or APIs provided by internal or external services.
But designing a data warehouse correctly is a hard task, which requires gathering information about the business processes that need to be analysed in the first place. These processes must be translated into so-called star schemas, which means, denormalised databases where each table represents a dimension or facts.
We will discuss these topics:
- How to gather information about a business;
- Understanding dictionaries and how to identify business entities;
- Dimensions and facts;
- Setting a table granularity;
- Types of facts;
- Types of dimensions;
- Snowflakes and how to avoid them;
- Expanding existing dimensions and facts.
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.
Generating privacy-protected synthetic data using Secludy and Milvus
What's up with Prototype and script.aculo.us?
1. What’s up with Prototype and
script.aculo.us? (Shiny things in Spinoffsland)
Christophe Porteneuve
CTO, Ciblo.net + Prototype Core member
2. Did you guys catch our Prototype
Developer Day?
• That was on Monday morning
• Bringing the community together
• Discussing contributions (to code, to docs)
• Several Prototype Core members
• Large Q&A session
• Awesome stuff!
3. What we’re going to see
• Prototype 1.6 → 1.6.0.3
• Custom events
• Class system
• Other various improvements
• Where Prototype’s headed
• Prototype 1.6.1 then 2.0
• Sprockets, PDoc
• Where script.aculo.us is headed (Scripty2)
5. Prototype 1.6
• “Hey, that was almost a year ago!”
• Yeah, but never discussed at TAE yet (plus, 1.6.0.3 now…)
• And a lot of good stuff in there!
• Custom events and dom:loaded
• New class system, with inheritance
• New Function-related stuff
• Ajax.Response
• Countless other improvements and fixes
6. Custom events: overview
• Events our own JS code triggers
• Attached to DOM nodes
• Bubble like regular DOM events
• Publish/subscribe model: fire/observe
• Major benefits
• Encapsulation (internal behaviors are not exposed)
• Loose coupling (anyone can trigger/observe any event)
• Ability to bubble favors event delegation
7. Custom events: naming and availability
• How do we tell a custom event from a native one?
• The custom event’s name must have 1+ colon
• e.g. dom:loaded, content:updated, effect:finished
• You don’t need to “register” the event
• You just observe / fire it.
• Custom events available on…
• Any DOM node
• The document object
8. Custom events: “creating” them
• Just observe one somewhere in your code
initComputation: function() {
var target = this.element.down('.computed'), that = this;
function recompute() {
target.update(that.getComputedValue());
}
document.observe('data:changed', recompute);
}
9. Custom events: triggering them
• Simply call fire on the relevant DOM element
new Field.Observer('edtReqTaxRate', 0.5, function(field, value) {
field.fire('data:changed');
});
10. Custom events: the memo property
initComputation: function() {
var target = this.element.down('.computed'), that = this;
function recompute(e) {
target.update(e && e.memo ? e.memo : that.options.value);
}
recompute();
document.observe('data:changed', recompute);
}
new Field.Observer('edtReqTaxRate', 0.5, function(field, value) {
field.fire('data:changed', value);
});
11. Custom events: already much in style
• Especially by UI-oriented third-party libraries
• Lets them create a full communication scheme between
their widgets with no coupling whatsoever
• Prototype UI
• http://prototype-ui.com
• LivePipe UI (f.k.a. Control.Suite)
• http://livepipe.net/
12. dom:loaded
• Our first “standard” custom event
• Triggers right after DOM load
• So just forget
Event.observe(window, 'load', initPage);
• And use
document.observe('dom:loaded', initPage);
13. A note about stopObserving
• You can make partial calls now
• Omit the handler
myEditor.stopObserving('change');
• All handlers for this event on this element
• Omit the event too
myEditor.stopObserving();
• All handlers on all events on this element
• Easier cleanup
14. More Event goodness
• Guaranteed even methods and properties
• relatedTarget, pageX, pageY
• stopPropagation(), preventDefault(), stopped
• Click detection
• isLeftClick(), isMiddleClick(), isRightClick()
• Pointer position
• pointer(), pointerX(), pointerY()
15. A note on event binding
• Pre-1.6, handlers were “unbound” by default
• Unless you had bound them explicitly, they’d end up using
the window scope
• Starting with 1.6, handlers are bound to the
subject of your observe call by default
• If you bound them explicitly, as always, that prior binding
will be retained.
16. New class system
• The idea: ease up traditional OOP constructs and
behaviors
• Inheritance
• Mix-ins
• Method overriding with access to inherited version
• Backward-compatible API
17. Ye Olde Class
var MyClass = Class.create({
initialize: function(…) {
• Key issues:
// “Constructor” code here • initialize required,
},
even if empty
publicMethod1: function(…) {
},
• Can’t give a parent
class
…
}); • Can’t override
methods easily
18. The new class syntax
var MyClass = Class.create([parentClass, ][mixIns…, ]{
[initialize: function(…) { … },]
publicMethod1: …,
…
})
• We can provide a single parent class
• We then handle the prototype chaining for it
• We can provide 1+ “mixins” (modules)
• Bunches of methods that get blended in the prototype.
• initialize is optional (an empty one will fill in)
19. Inheritance becomes a breeze
var XMLParser = Class.create({
initialize: function(source) { … },
…
});
var XHTMLParser = Class.create(XMLParser, {
…
});
var AtomParser = Class.create(XMLParser, {
…
});
20. Free stuff you get
• Every instance has a constructor
• Every class has a superclass and subclasses
XMLParser.superclass // => null
XHTMLParser.superclass // => XMLParser
AtomParser.superclass // => XMLParser
XMLParser.subclasses // => [XHTMLParser, AtomParser]
var parser = new XHTMLParser(someXHTMLSource);
parser.constructor // => XHTMLParser
parser.constructor.superclass // => XMLParser
21. Mixing in modules
• A module is just a bag of properties/methods
• You can mix as many of those as you want at class
creation time.
var FeedAnalyzer = {
// methods…
};
…
var AtomParser = Class.create(XMLParser, FeedAnalyzer,
MarkupFixer, StandardNamespaceHandler, {
…
});
22. Class methods
• These are just methods on the Class object itself,
so we can resort to good ol’ Object.extend.
var MyGenericClassMethods = {
// methods…
};
…
Object.extend(AtomParser, MyGenericClassMethods);
Object.extend(AtomParser, {
adHocMethod1: …,
adHocMethod2: …,
…
});
23. Adding methods post-declaration
• Every class has a addMethods method that mixes
anything module-like in.
• It’s actually used on your modules (and custom
methods) at creation time.
var UberCoolMethodsIGotJustNow = {
leverageMicroFormats: …,
turnIntoiPhoneUIs: …,
turnIntoUniversalWidgets: …
};
AtomParser.addMethods(UberCoolMethodsIGotJustNow);
24. Accessing overridden methods
• Insert a $super first argument. That’s it.
var XMLParser = Class.create({
initialize: function(source) { … },
…
});
var AtomParser = Class.create({
initialize: function($super, source, options) {
$super(source);
// Handle options
},
…
});
25. Function-fu
• Prototype 1.6 introduced a lot of new methods on
function so you can reduce custom anonymous
wrappers and go wild (but reasonable) with AOP
• curry, rescuer of useless binds
• delay and defer, because patience is a virtue
• wrap, because AOP / Decorator can rock
• argumentNames (aka Hackish The First)
26. Spicying up your code with curry
• You know how you always use bind(null,…) just
because you need partial application?
$('preview').observe('mousewheel:up', shiftZoom.bind(null, 125));
$('preview').observe('mousewheel:down', shiftZoom.bind(null, 80));
• Don’t do it.
• That’s what curry is for:
$('preview').observe('mousewheel:up', shiftZoom.curry(125));
$('preview').observe('mousewheel:down', shiftZoom.curry(80));
27. curry vs. bind
• You should use bind when…
• You actually need to bind (set the semantics of this)
• It doesn’t matter whether you want to pre-fill arguments!
• You should use curry when…
• You need to pre-fill arguments
• And you don’t care about the binding, or more specifically
don’t want to change it.
28. Deferring execution: delay and defer
• Schedule execution of a snippet of JS for later
• Either a specific time later
• Or ASAP—typically right after the DOM got a moment to
breathe in your recent updates
• function.delay(seconds)
• defer is the “ASAP” case, and is just…
• delay.curry(0.1) :-)
• Essentially works because of single-threadedness
29. Classical defer use-case
• You just added to the DOM
• You need to manipulate the added fragment now
• Attach event listener, manipulate its styling, whatever
• Most of the time you’ll need to let the browser
“catch its breath”
• So your DOM addition is actually processed and available
through the scripting interfaces.
30. Classical defer use-case
function addAndBindForm(formMarkup) {
$('formsContainer').insert(formMarkup);
$('formsContainer').down('form:last-of-type').
observe('submit', genericFormValidate);
}
Ouch! Likely won’t
return your form!
function addAndBindForm(formMarkup) {
$('formsContainer').insert(formMarkup);
(function() {
$('formsContainer').down('form:last-of-type').
observe('submit', genericFormValidate);
}).defer();
31. Going AOP / Decorator with wrap
• Replacing a method with an augmented version of
it, which means you get a reference to the former
version.
if (Prototype.Browser.IE) {
// Strip handlers on newly-removed elements to prevent memory leaks
Element.Methods.update = Element.Methods.update.wrap(
function(proceed, element, contents) {
Element.select(element, '*').each(Event.stopObserving);
return proceed(element, contents);
}
);
}
32. argumentNames
• Array of argument names for a given function
• Hackish: relies on functions’ toString() capability
• Won’t work once packed in a name-changing way (e.g.
ShrinkSafe)
• Won’t work on lightened-up JS runtimes (e.g. versions of
Opera Mobile)
• We’re using it for our $super trick
• But we should stop, and will find another way
33. Ajax.Response
• Encapsulates the whole response you get
• Headers + body
• Extracts relevant-type contents
• responseText, responseXML, responseJSON
• “Shields” header retrieval
• Exceptions on native fetching turn into nulls
• You get that in callbacks instead of your requester
• API-compatible, but adds stuff
34. Before/after 1.6 for response analysis
Before 1.6 Since 1.6
callback(requester, headerJSON) callback(response, headerJSON)
Watch when you’re grabbing Properties defined only once they
properties make sense
headerJSON, responseJSON,
No JSON support
sanitizeJSON/evalJSON options
Automatic JS evaluation evalJS = false|true|force
Property fetching can raise Fetch wrappers return '' or null
exceptions when necessary.
35. Content insertion
• Element.insert/wrap
• insert now takes either a single element (bottom insertion)
or a hash of insertions (positional keys)
• wrap puts your element within another one (bottom
insertion) and returns, exceptionally, the wrapper (not the
element you called wrap on).
36. Positioning moved into Element
• Positioning methods in Element
• absolutize, relativize
• getOffsetParent
• cumulativeScrollOffset, cumulativeOffset,
positionedOffset, viewportOffset
• clonePosition
• This will likely all move, with dimensioning
methods, into a separate object in 1.6.1.
37. Viewport inspection
• document.viewport
• getDimensions, getWidth, getHeight
• Also remember Element.viewportOffset
• If you cache it, you should probably listen for
window resize events and update your cache
accordingly.
38. JSON support, basic math methods
• JSON support
• Object.toJSON
• toJSON for Date, Array, Number, Hash, String
• String has evalJSON, isJSON and unfilterJSON
• As we saw, Ajax.Response had dedicated stuff
• Methodized usual math on Number
• abs, round, ceil, floor
• e.g. myNumber.abs(), (5.42).floor()
39. Safer Hash and improved serialization
• New Hash
• Essentially we wanted you to be able to store anything
• Functions/methods, stuff whose names clash against builtins…
• So we stopped storing on the Hash itself and use internal
storage
• get/set/unset/index
• Improved form serialization
• W3C specs by the book (buttons, null/disabled/readonly…)
40. More versatile grep
• Extended Enumerable#grep semantics
• Used to toString() items and apply a regex on these
• Now uses its argument’s match method on items
• Backwards-compatible (RegExp.match is RegExp.test)
• Much more versatile. Consider Selector#match…
41. Improved Template
• Allows deep access to interpolated object using []
and . operators
var speaker = {
name: 'Christophe', age: 30,
sessions: [
{ title: 'PDD', time: 'Monday at 8:00am' },
{ title: 'Shiny…', time: 'Wednesday at 11:05am' }
]
};
var tpl = new Template('#{name}, #{age}, will speak #{sessions.length} time(s),
starting on #{sessions[0].time} about #{sessions[0].title}.');
tpl.evaluate(speaker)
// => quot;Christophe, 30, will speak 2 time(s), starting on Monday at 8:00am about PDDquot;
42. Improved Template
• Only for properties.
• If you need method calls, equip your topmost object with a
toTemplateReplacements() method.
var speaker = {
…
toTemplateReplacements: function() {
var scount = this.sessions.length;
return Object.extend({
sessionCount: scount + ' time' + (scount > 1 ? 's' : '')
}, this);
}
};
var tpl = new Template('#{name}, #{age}, will speak #{sessionCount}, starting on
#{sessions[0].time} about #{sessions[0].title}.');
43. And so much more…
• String#interpolate: one-shot templating
'#{name} is #{age} years old'.interpolate(speaker)
• Object.isXxx
• isElement, isArray, isHash, isFunction, isString,
isNumber, isUndefined
• Node constants
• Guaranteed Node namespace and node type constants, from
ELEMENT_NODE to NOTATION_NODE
44. And so much more…
• Array#intersect
[1, 2, 3, 4, 5, 6].intersect([3, 5, 7]) // => [3, 5]
• Element.identify
• Ensure you’ve got an ID in the end
• Element.setStyle(cssString)
• If you’re hardcoding it, can be nicer than a hash
• Is even usually faster!
46. Some serious flux recently…
• 2008 has been an odd year for us
• GitHub + LightHouse + dayjob overloads = ?!?
• 1.6.0.2 was released on January 25
• 1.6.0.3 was released on… September 29!
• We’re resuming active work now…
• On a more solid ground (back to our strong policies)
• With more community involvement (docs/tests/code/etc.)
47. Prototype 1.6.0.4
• Significant bugfix / perffix release
• Backward-compatible, obviously
• General directions
• Massive code restructuration and pattern-based cleanup
• Most notably rewrite of DOM and Event modules
• Dozens of pending patches scheduled for upgraded commit
• Ideally, should release before mid-November 2008
48. Prototype 1.6.1
• The next 3-digit release will be awesome
• General directions*
• Massive code restructuration and pattern-based cleanup
• Stronger, better-quality versions of 80+ pending patches
• More builtin custom events (e.g. content changes)
• Ajax timeouts
• Full-spectrum positioning/dimensioning (aka “layout”)
lookup and modification
* As always, subject to change…
49. Prototype 1.6.1
• When? When, when, when, when, when?
• Er…
• When it’s ready?
• We’d love to ship that before 2008 is over
• But as always, we’ll ship when it’s done
• Still, we’re going to work our asses off. Honest.
* As always, subject to change…
50. Prototype 2
• “Holy XHR, they’ve changed everything!”
• Yes, but we won’t b0rk your scripts!
• General directions:
• Way more modular
• As everyone won’t have to grab full payload, hitherto discarded feature
ideas could become “official modules.”
• Better class system (no “$super”, truer encapsulation, etc.)
• Perhaps stop extending DOM prototypes and find an API-
compatible way to get the same code feel
52. Scripty2
• Currently it’s “just” effects
• 100% new effects engine, custom events-rich
• Debug facility lets us slow down, step through, etc.
• Jaw-droppin’ awesome, but not quite finalized yet
• Current state on GitHub
• Coming soon:
• 100% new drag-and-drop module
• Behaviors module (might end up shared with Prototype 2)
53. Scripty2 • A few demos
• Twistory
• http://twistori.com
• Creative Scrape
• http://creativescrape.com
• Coming-up “Progress” for the Sunlight Foundation
• Local demo
54. Shameless plug
• Fully up-to-date on Prototype 1.6
and script.aculo.us 1.8
• Full API reference
• Tons of examples / use cases
• More content and “Neuron
Workout” solutions at
http://thebungeebook.net/
http://books.pragprog.com/titles/cppsu
55. Fair-trade plug
• Andrew Dupont’s recent book
• An ideal complement to mine
• Tackles the APIs in a different,
very goal-oriented way
• Just like TBB, available as
PDF and in print
http://apress.com/book/view/1590599195