The document discusses Peter Higgins' presentation at ZendCon 2009 on the Dojo Toolkit. It provides an overview of Dojo's history and components, including the base toolkit, modules, widgets, effects, build system and more.
JavaScript - Like a Box of Chocolates - jsDayRobert Nyman
This presentation aims to give you information about the JavaScript language itself; pros, cons and pitfalls. It will cover the basics and then go into objects, scope, closure and some performance bits.
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018 Codemotion
I Google Developer Group (GDG) sono una community internazionale di appassionati delle tecnologie: sviluppatori, designer e startupper. Sono suddivisi per città, e GDG Italia è la famiglia che rappresenta tutti i gruppi presenti sul territorio locale. Mike Trizio e Carmelo Ventimiglia introdurranno i GDG, le loro attività e perchè è utile e divertente farne parte. Leonardo Pirro invece ci introdurrà Kotlin, un linguaggio di programmazione che ha avuto un crescente successo negli ultimi anni. Analizzeremo le caratteristiche principali del linguaggio e i suoi vantaggi/benefici rispetto a Java.
jQuery Data Manipulate API - A source code dissecting journeyHuiyi Yan
Represent major data manipulate API in jQuery 1.6; such as .data(), removeData(), index(), globalEval() and so no. Also, HTML5 data-* attributes. I will walk you through with diving into jQuery source code and find out the killing techniques used in jQuery.
JavaScript - Like a Box of Chocolates - jsDayRobert Nyman
This presentation aims to give you information about the JavaScript language itself; pros, cons and pitfalls. It will cover the basics and then go into objects, scope, closure and some performance bits.
Meetup di GDG Italia - Leonardo Pirro - Codemotion Rome 2018 Codemotion
I Google Developer Group (GDG) sono una community internazionale di appassionati delle tecnologie: sviluppatori, designer e startupper. Sono suddivisi per città, e GDG Italia è la famiglia che rappresenta tutti i gruppi presenti sul territorio locale. Mike Trizio e Carmelo Ventimiglia introdurranno i GDG, le loro attività e perchè è utile e divertente farne parte. Leonardo Pirro invece ci introdurrà Kotlin, un linguaggio di programmazione che ha avuto un crescente successo negli ultimi anni. Analizzeremo le caratteristiche principali del linguaggio e i suoi vantaggi/benefici rispetto a Java.
jQuery Data Manipulate API - A source code dissecting journeyHuiyi Yan
Represent major data manipulate API in jQuery 1.6; such as .data(), removeData(), index(), globalEval() and so no. Also, HTML5 data-* attributes. I will walk you through with diving into jQuery source code and find out the killing techniques used in jQuery.
Using Templates to Achieve Awesomer ArchitectureGarann Means
Templates are the best kind of tool: simple to write and implement, but powerful enough to make your architecture slicker and your code leaner. Getting markup out of your Javascript is a huge deal, but templates can help with more than that. They can manage repeated code snippets, allow you to deftly switch states in single page applications, and help keep your code DRY when supporting users with and without Javascript enabled. Using and extending them creatively can make any architecture a little awesomer.
jQuery is drawing newcomers to JavaSCript in droves. As a community, we have an obligation -- and it is in our interest -- to help these newcomers understand where jQuery ends and JavaScript begins.
Objective-C is a Smalltalk-like Object-Oriented layer on top of the C language. It is the official language of OS X and iOS. Assuming you have a background in Object-Oriented Programming and a basic understanding of the C language or syntax, this talk will cover everything you need to know about Objective-C. By the end of the talk, you will understand how to make and use your own objects, the Foundation Framework and the data structures it provides, and the Objective-C specific language constructs and syntactic-sugar.
This presentation will give you a brief background to JavaScript, what it is and where it comes from. Then it will walk you through general pitfalls, best practices and more advanced topics such as object-orientation, scope and closures.
Sprockets is an easy solution to managing large JavaScript codebases by letting you structure it, bundle it with related assets, and consolidate it as one single file, with pre-baked command-line tooling, CGI front and Rails plugin. It's a framework-agnostic open-source solution that makes for great serving performance while helping you structure and manage your codebase better.
Everything is Permitted: Extending Built-insAndrew Dupont
Adding methods to built-in objects: it’s one of JavaScript’s most powerful features. It’s also a great way to offend the sensibilities of your colleagues. We all hear that it’s irresponsible, that it’s sloppy, that it’s flat-out bad practice and should be avoided.
I’m tired of this one-sided battle. In this talk, I’m going to push back against whatever blog post you read that told you that extending built-ins was unconditionally and universally bad. I’m gonna go all Howard Beale on your asses.
Slides from Ajax Experience 2009. In this session:
- Object creation patterns
- Code reuse patterns
- Functional patterns
- More on object creation
- Design patterns
Some example patterns: object creation with literals and constructos, prototypes, inheritance and other code reuse patterns, lazy definition, callbacks, singleton, factory, classical and prototypal inheritance, namespaces, chaining, modules, static methods, private and privileged members
For more information, see:
http://jspatterns.com
My column in the JavaScript Magazine (http://jsmag.com)
Blog: http://phpied.com
Mnogim programerima JavaScript ne predstavlja osnovni programski jezik, već ga koriste ad-hoc, oslanjajući se na koncepte kojima su ovladali u drugim jezicima. To često može dovesti do zabune i do raznih iznenađenja, što dalje neopravdano razvija negativna osećanja prema JavaScript-u. Ova prezentacija otklanja deo te zabune i omogućava jasno razumevanje koncepta nasleđivanja u JavaScript-u
Snimak prezentacije: https://www.youtube.com/watch?v=pOaAraGnpZg
Using Templates to Achieve Awesomer ArchitectureGarann Means
Templates are the best kind of tool: simple to write and implement, but powerful enough to make your architecture slicker and your code leaner. Getting markup out of your Javascript is a huge deal, but templates can help with more than that. They can manage repeated code snippets, allow you to deftly switch states in single page applications, and help keep your code DRY when supporting users with and without Javascript enabled. Using and extending them creatively can make any architecture a little awesomer.
jQuery is drawing newcomers to JavaSCript in droves. As a community, we have an obligation -- and it is in our interest -- to help these newcomers understand where jQuery ends and JavaScript begins.
Objective-C is a Smalltalk-like Object-Oriented layer on top of the C language. It is the official language of OS X and iOS. Assuming you have a background in Object-Oriented Programming and a basic understanding of the C language or syntax, this talk will cover everything you need to know about Objective-C. By the end of the talk, you will understand how to make and use your own objects, the Foundation Framework and the data structures it provides, and the Objective-C specific language constructs and syntactic-sugar.
This presentation will give you a brief background to JavaScript, what it is and where it comes from. Then it will walk you through general pitfalls, best practices and more advanced topics such as object-orientation, scope and closures.
Sprockets is an easy solution to managing large JavaScript codebases by letting you structure it, bundle it with related assets, and consolidate it as one single file, with pre-baked command-line tooling, CGI front and Rails plugin. It's a framework-agnostic open-source solution that makes for great serving performance while helping you structure and manage your codebase better.
Everything is Permitted: Extending Built-insAndrew Dupont
Adding methods to built-in objects: it’s one of JavaScript’s most powerful features. It’s also a great way to offend the sensibilities of your colleagues. We all hear that it’s irresponsible, that it’s sloppy, that it’s flat-out bad practice and should be avoided.
I’m tired of this one-sided battle. In this talk, I’m going to push back against whatever blog post you read that told you that extending built-ins was unconditionally and universally bad. I’m gonna go all Howard Beale on your asses.
Slides from Ajax Experience 2009. In this session:
- Object creation patterns
- Code reuse patterns
- Functional patterns
- More on object creation
- Design patterns
Some example patterns: object creation with literals and constructos, prototypes, inheritance and other code reuse patterns, lazy definition, callbacks, singleton, factory, classical and prototypal inheritance, namespaces, chaining, modules, static methods, private and privileged members
For more information, see:
http://jspatterns.com
My column in the JavaScript Magazine (http://jsmag.com)
Blog: http://phpied.com
Mnogim programerima JavaScript ne predstavlja osnovni programski jezik, već ga koriste ad-hoc, oslanjajući se na koncepte kojima su ovladali u drugim jezicima. To često može dovesti do zabune i do raznih iznenađenja, što dalje neopravdano razvija negativna osećanja prema JavaScript-u. Ova prezentacija otklanja deo te zabune i omogućava jasno razumevanje koncepta nasleđivanja u JavaScript-u
Snimak prezentacije: https://www.youtube.com/watch?v=pOaAraGnpZg
Slides from talk "Getting Started with Dojo Toolkit" at Cologne.JS in August 2010
some sample Dojo Code from my presentation is on http://code.google.com/p/dojodemo/
Cologne.JS is a local JavaScript user group: http://colognejs.de/
The jQuery community has provided thousands of useful plugins which can be stitched together to create exceptional websites. However, organizing those plugins, tracking their upstream changes and managing dependencies can become a nightmare with a system to help you manage. JavascriptMVC, and specifically its new version 3 release, provides a framework for organizing outside code, integrating it into your workflow and compressing down to a single output javascript file. This talk will focus on taking external plugins such as jQuery Tools, jQuery UI and other popular plugins and creating a workflow for building larger applications from these components. I will show how to use the JavascriptMVC “getter” and “pluginify” scripts to pull external resources. With JavascriptMVC 3, css and javascript can be packaged together creating truly convenient widgets. I will also demonstrate how often-used pieces of functionality can be abstracted into plugins and shared with the general community via Github.
I’ve been using, teaching, and evangelizing about jQuery for years. The library's simplicity is seductive; after a while, it kind of writes itself. So why did I venture into the unknown world of Dojo for a recent project? Find out what I learned about JavaScript code organization, inheritance, dependency management, and more in a whirlwind beginner's tour of a toolkit that answers some of the big questions surrounding JavaScript development.
An overview of the practical and useful Dojo Toolkit for the Fairfield County JavaScript Meetup, Sept. 26 2012. A shout to Chris Barber and his excellent presentation which served as inspiration.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
6. A Team.
http://demos.dojotoolkit.org/demos/skew/
Thursday, October 22, 2009
7. The Dojo Toolkit
• Long standing Development
• Friendly Professional Community
• Liberally Licensed, Clean IP
http://dojotoolkit.org http://dojofoundation.org
Thursday, October 22, 2009
8. What is Dojo?
• Unified JavaScript Toolkit
- Supafast Light-weight Base (6k - 30k)
- Package System
- Use at will Library
- Countless tools
- Exposed Foundations
- Defined deprecation policies
- Defined release policies
Thursday, October 22, 2009
14. dojo.query / dojo.NodeList
• Fastest available Selector Engine - “Acme”
• 1:1 pairing with dojo.* functions
- dojo.style(“nodeid”, { props }) // fast
- dojo.query(“#nodeid”).style({ props }) // sugar
• Syntatic Sugar for events:
- dojo.query(“.bar”).onclick(fnA).onmouseenter(fnB)
Thursday, October 22, 2009
15. Dojo Plugins
// give all NodeList instances a hash of new functions:
dojo.extend(dojo.NodeList, {
color: function(color){
// set nodes to a color. getter/setter:
return this.style(“color”, color);
},
html: function(markup){
// set the HTML to some passed markup snippet
return this.forEach(function(n){
n.innerHTML = markup;
});
}
});
Thursday, October 22, 2009
19. Using “layers”
// teh php:
$this->dojo()->enable()
->registerModulePath(“myns”, “../myns”)
->requireModule(“myns.kernel”);
// or:
$view->dojo()->addLayer(“/js/myns/kernel.js”);
// and js: ../myns/kernel.js
dojo.provide(“myns.kernel”);
dojo.require(“myns.stuff”);
dojo.require(“dojox.image.LightboxNano”);
dojo.require(“myns.FirstWidget”);
Thursday, October 22, 2009
20. Ajax is eaaaaasy
• All route through dojo.xhr(verb, kwArgs)
• Common dojo.Deferred interface
• Definable custom content handlers
Thursday, October 22, 2009
21. Ajax is eaaaaasy
// basic.
dojo.xhrGet({
url:”/foo”,
load: function(data){
dojo.byId(“bar”).innerHTML = data;
}
});
// direct dfd
var inflight = dojo.xhrGet({ url:”/foo” })
.addCallback(function(data){ ... })
.addErrback(function(error){ ... })
;
// alternate content-type:
dojo.xhrPost({
url:”/foo/bar”,
handleAs:”json”,
load: function(data){
for(var i in data){ ... }
}
});
Thursday, October 22, 2009
22. Custom Content Handlers
// define the content-handler
dojo.mixin(dojo.contentHandlers, {
loadInto: function(xhr){
var n = dojo.byId(xhr.ioArgs.node);
n.innerHTML = xhr.responseText;
}
});
// use the content-handler
dojo.xhrGet({
url:”/foo”,
handleAs:”loadInto”,
node:”someId”
});
Thursday, October 22, 2009
23. Events
• dojo.connect
- DOM or Functional
- Built-in scoping (everywhere!)
- Explicit disconnect
• Topics
- publish/subscribe/unsubscribe
Thursday, October 22, 2009
24. Events
var n = dojo.byId(“foo”);
// plain ole’ onclick
dojo.connect(n, “click”, function(e){ ... });
// calls thisObj.method(e) in scope of thisObj
dojo.connect(n, “mouseenter”, thisObj, “method”);
// anonymous with scope
dojo.connect(n, “keydown”, thisObj, function(e){
// “this” == thisObj
});
// with query:
dojo.query(“#foo”)
.onclick(function(e){ })
.onmouseenter(thisObj, “method”)
.onkeydown(thisObj, function(e){ ... })
;
Thursday, October 22, 2009
25. Topics
// same hitching pattern:
dojo.subscribe(“/are/you/listening”, function(a, b, c){ ... });
dojo.subscribe(“/are/you/listening”, thisObj, “method”);
dojo.subscribe(“/are/you/listening”, thisObj, function(){ ... });
// trigger it all
dojo.publish(“/are/you/listening”, [1, 2, 3]);
Thursday, October 22, 2009
26. hitch()
// mini singleton
var myObj = {
counter:0,
addOne: function(){
this.counter++;
}
}
// more hitching pattern:
dojo.connect(n, “onclick”, myObj, “addOne”);
dojo.subscribe(“/who/knows”, myObj, “addOne”);
var adder = dojo.hitch(myObj, “addOne”);
dojo.connect(n, “mouseenter”, adder);
Thursday, October 22, 2009
27. hitch() for Classes
dojo.declare(“my.Thing”, null, {
url:”/foo”,
message:””,
loader: function(){
dojo.xhrGet({
url: this.url,
load: dojo.hitch(this, “handler”)
})
},
handler: function(data){
this.message = data;
}
});
var mt = new my.Thing();
mt.loader();
Thursday, October 22, 2009
28. FX
• dojo.animateProperty(kwArgs)
• dojo.anim(node, props, ...)
• dojo.fadeOut(kwArgs)
• dojo.fadeIn(kwArgs)
• new dojo.Animation(kwArgs)
Thursday, October 22, 2009
29. Animation Events
var anim = dojo.fadeOut({ node:”bar” });
dojo.connect(anim, “onEnd”, function(n){
// animation is done
});
dojo.connect(anim, “beforeBegin”, function(n){
// animation starts after this
});
dojo.connect(anim, “onBegin”, function(n){
// animation just started
});
anim.play();
// also onAnimate, onPlay, onStop, etc.
dojo.fadeOut({ node:”baz”, onEnd:function(n){ /* inline, too */ }).play();
Thursday, October 22, 2009
30. FX++
• dojo.require(“dojo.fx”); // or dojox.fx ...
• dojo.fx.chain([animations])
• dojo.fx.combine([animations]);
• dojo.fx.wipeIn/Out/slideIn/Out/etc
Thursday, October 22, 2009
32. dojo.require() away
• dojo.data
- Common API for data handling
• Advanced I/O
- dojo.io.script, dojo.io.iframe ...
• dojo.cookie
• dojo.behavior!
Thursday, October 22, 2009
33. Behavior?
dojo.behavior.add({
“.foo .bar”: function(n){
// newly found
},
“#baz”:{
“found”: function(n){
// also newly found
},
“onclick”: function(e){
// handler
}
}
});
dojo.behavior.apply();
Live behaviors available in `plugd`
Thursday, October 22, 2009
46. All-in-One
• Works transparently with Package System
• Group modules into ‘layers’
• Concatenate CSS @import into ‘layers’
• Layer & File minification
- Comments, Whitespace, newlines ...
• stripConsole (console.warn, .log, .error)
Thursday, October 22, 2009
47. #ifdef in JavaScript?
// the code:
//>>excludeStart(“something”, kwArgs.condition == true);
/* code to exclude */
//>>excludeStop(“something”);
# exclude it:
./build.sh condition=true profile=myprofile
Thursday, October 22, 2009
48. Development Debugging
// ...
handler: function(data){
if(data && !data.error){
/* do something with the data */
}
//>>excludeStart(“debuggykins”, true);
else{
console.warn(“We require data, and didn’t get it.”);
console.log(“got:”, arguments);
}
//>>excludeStop(“debuggykins”);
},
// ...
Thursday, October 22, 2009
49. Special Builds
• Stubs (6k dojo.js)
• Base++ (dojo.js with modules)
• Cross-Domain
• plugd
• Scope Burning
Thursday, October 22, 2009