This document provides an overview of advanced JavaScript concepts. It begins with a brief history of JavaScript and discusses its data types including primitive types like numbers, strings, booleans, and objects. It then covers functions, objects, inheritance, and closures. The document explains that JavaScript uses prototypal inheritance rather than classes and objects inherit directly from other objects. It also discusses common gotchas with functions and objects in JavaScript.
Presented at Web Unleashed on September 16-17, 2015 in Toronto, Canada
More info at www.fitc.ca/webu
Why TypeScript?
with Jeff Francis
OVERVIEW
TypeScript is a type-checked superset of JavaScript that benefits medium-sized to complex JavaScript projects. Why would you want to learn a new language, instead of another JavaScript framework? You have all this existing JavaScript code, so how can you adopt something new without throwing the old stuff out?
This session is about the benefits of using TypeScript on top of JavaScript in your projects, and demonstrate step by step ways of migrating an existing JavaScript project to TypeScript. We will dive into code generated by the compiler and look at resources and tools that make working in TypeScript a pleasurable experience.
OBJECTIVE
To understand when it’s a good idea to use TypeScript.
TARGET AUDIENCE
JavaScript developers.
ASSUMED AUDIENCE KNOWLEDGE
Intermediate JavaScript experience.
FIVE THINGS AUDIENCE MEMBERS WILL LEARN
The basics of TypeScript – types, classes, modules, and functions
How TypeScript’s design makes getting started simple and helps projects
What compiled TypeScript looks like and how to debug
What tools can help take advantage of TypeScript’s type information
How to migrate a JavaScript project to TypeScript
- Xslate is a template engine for Perl5 that is written in C using XS. It aims to be fast, safe from XSS attacks, and support multiple template syntaxes including Kolon and TTerse.
- Xslate templates are first preprocessed, parsed into an AST, compiled into bytecode, and then executed by a virtual machine for high performance. Automatic HTML escaping also helps prevent XSS issues.
- Future goals include adding features like loop controls and context controls, as well as exploring more template syntaxes and better integrations with web frameworks.
CoffeeScript is a little language that compiles to JavaScript. It repairs confusing aspects of JavaScript while keeping its flexibility. The document discusses CoffeeScript types like numbers, strings, booleans, objects and functions. It also covers CoffeeScript concepts like variables, operators, expressions, statements, control flow, arrays, objects, loops, classes, inheritance and functions. CoffeeScript aims to expose the good parts of JavaScript in a simpler way.
Rami Sayar presented on ECMAScript 6 (ES6) features including block scoping with let and const, destructuring, modules and classes, and iterators and generators. ES6 is targeted for ratification in mid-2015 and brings significant updates to JavaScript. Browser and Node.js support is emerging for ES6 features through experimental flags or transpilation to ES5.
This document provides an overview of Ruby for Java developers, covering the history and culture of both languages, their technical backgrounds, key differences in their languages and frameworks, and how Ruby on Rails works. It demonstrates Ruby concepts through examples and concludes with a discussion on performance and common use cases for each language.
This is brief presentation on the Scala programming language. It is aimed at Java developers who are curious about Scala. It was given at a San Francisco Java User Group in January 2009.
Part of a series of talk to help you write your first Perl 6 program today. So its basic syntax and concepts of its object orientation and a comparison to the widely used P5 OO system Moose which is similar by no accident.
One of the advantages of learning a new language is being exposed to new idioms and new approaches to solving old problems. In this talk, we will introduce the Ruby language with particular focus on the idioms and concepts that are different from what is found in Java.
We will introduce concepts such as closures, continuations and meta programming. We will also examine powerful techniques that are practically impossible in Java due to its compile time binding of types.
No experience with Ruby is assumed although an understanding of Java would be helpful.
This talk was given at the Toronto Java Users Group in April 2008
Presented at Web Unleashed on September 16-17, 2015 in Toronto, Canada
More info at www.fitc.ca/webu
Why TypeScript?
with Jeff Francis
OVERVIEW
TypeScript is a type-checked superset of JavaScript that benefits medium-sized to complex JavaScript projects. Why would you want to learn a new language, instead of another JavaScript framework? You have all this existing JavaScript code, so how can you adopt something new without throwing the old stuff out?
This session is about the benefits of using TypeScript on top of JavaScript in your projects, and demonstrate step by step ways of migrating an existing JavaScript project to TypeScript. We will dive into code generated by the compiler and look at resources and tools that make working in TypeScript a pleasurable experience.
OBJECTIVE
To understand when it’s a good idea to use TypeScript.
TARGET AUDIENCE
JavaScript developers.
ASSUMED AUDIENCE KNOWLEDGE
Intermediate JavaScript experience.
FIVE THINGS AUDIENCE MEMBERS WILL LEARN
The basics of TypeScript – types, classes, modules, and functions
How TypeScript’s design makes getting started simple and helps projects
What compiled TypeScript looks like and how to debug
What tools can help take advantage of TypeScript’s type information
How to migrate a JavaScript project to TypeScript
- Xslate is a template engine for Perl5 that is written in C using XS. It aims to be fast, safe from XSS attacks, and support multiple template syntaxes including Kolon and TTerse.
- Xslate templates are first preprocessed, parsed into an AST, compiled into bytecode, and then executed by a virtual machine for high performance. Automatic HTML escaping also helps prevent XSS issues.
- Future goals include adding features like loop controls and context controls, as well as exploring more template syntaxes and better integrations with web frameworks.
CoffeeScript is a little language that compiles to JavaScript. It repairs confusing aspects of JavaScript while keeping its flexibility. The document discusses CoffeeScript types like numbers, strings, booleans, objects and functions. It also covers CoffeeScript concepts like variables, operators, expressions, statements, control flow, arrays, objects, loops, classes, inheritance and functions. CoffeeScript aims to expose the good parts of JavaScript in a simpler way.
Rami Sayar presented on ECMAScript 6 (ES6) features including block scoping with let and const, destructuring, modules and classes, and iterators and generators. ES6 is targeted for ratification in mid-2015 and brings significant updates to JavaScript. Browser and Node.js support is emerging for ES6 features through experimental flags or transpilation to ES5.
This document provides an overview of Ruby for Java developers, covering the history and culture of both languages, their technical backgrounds, key differences in their languages and frameworks, and how Ruby on Rails works. It demonstrates Ruby concepts through examples and concludes with a discussion on performance and common use cases for each language.
This is brief presentation on the Scala programming language. It is aimed at Java developers who are curious about Scala. It was given at a San Francisco Java User Group in January 2009.
Part of a series of talk to help you write your first Perl 6 program today. So its basic syntax and concepts of its object orientation and a comparison to the widely used P5 OO system Moose which is similar by no accident.
One of the advantages of learning a new language is being exposed to new idioms and new approaches to solving old problems. In this talk, we will introduce the Ruby language with particular focus on the idioms and concepts that are different from what is found in Java.
We will introduce concepts such as closures, continuations and meta programming. We will also examine powerful techniques that are practically impossible in Java due to its compile time binding of types.
No experience with Ruby is assumed although an understanding of Java would be helpful.
This talk was given at the Toronto Java Users Group in April 2008
Talk about ECMAScript 6 at YAPC::Asia Tokyo 2015
http://yapcasia.org/2015/talk/show/44721562-10e4-11e5-88a0-d7f07d574c3a
https://www.youtube.com/watch?v=oSPv5IPDSxE
The document discusses Modern Perl and how the language has evolved over time. Some key changes include new features like say() in Perl 5.10, improved object orientation with Moose, and improved error handling with modules like autodie. Modern Perl development focuses on stability while still innovating and uses CPAN to share thousands of open source modules.
The document discusses building interpreters using PyPy. It describes how PyPy can be used to build interpreters for other languages like Ruby, PHP, Prolog by compiling a language to RPython and then using PyPy's just-in-time compiler. The document then outlines building a BASIC interpreter that can run the Hamurabi program. It covers parsing the BASIC code into an AST using a lexer and parser generated with RPLY. It also describes compiling the AST to bytecode using an intermediate representation and executing the bytecode on a virtual machine.
The document discusses the Just-In-Time (JIT) compiler that was introduced in PHP 8. It provides a brief history of JIT in PHP, explaining that early prototypes showed that the rest of PHP was too slow to benefit from JIT. It then discusses how optimizations from JIT were integrated into opcache without needing a full JIT. It provides information on configuring and using the JIT compiler, and shows performance improvements on benchmarks. It also provides an example of how a function is compiled to machine code by the JIT compiler.
Modern Objective-C introduces several syntactic sugars that simplify working with collections and objects in Objective-C, including array, dictionary and boxed expression literals that avoid explicit constructor methods, as well as object subscripting syntax that allows accessing elements in collections using subscript syntax like nsarray[index]. These features help reduce verbosity and make code more readable while still generating the same underlying method calls as before.
Automatic Reference Counting (ARC) makes memory management the job of the compiler by inserting retain and release calls. ARC consists of a frontend compiler that inserts the appropriate memory management calls and an optimizer that removes unnecessary calls. ARC supports iOS 5+ and OS X 10.7+ and allows using variable ownership qualifiers like __strong (default), __weak, __unsafe_unretained, and __autoreleasing to avoid retain cycles.
The document compares and contrasts features of the Scala and Ruby programming languages, including type systems, pattern matching, monkey patching, dynamic calls, traits/modules, and more. It discusses how each language handles the given features, often providing code examples, and notes similarities and differences between the two approaches. The overall assessment is that a draw is the best way to characterize the comparison between Scala and Ruby, as both languages have their merits for different use cases and preferences.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
This talk will discuss new features already implemented in PHP 8, backwards-compatibility breaks to watch out for, as well as some features that are still under discussion.
This document discusses building a Java tracer using bytecode, JNI, JVMTI and ASM. It covers Java bytecode format, using JNI and JVMTI to build C extensions that interface with the JVM, ASM for bytecode analysis and manipulation, and a demo of using these technologies to trace a "Hello, World" program. It also outlines areas for further work on the tracer and takes questions.
PHP 8.0 comes with many long-awaited features: A just-in-time compiler, attributes, union types, and named arguments are just a small part of the list. As a major version, it also includes some backward-incompatible changes, which are centered around stricter error handling and enhanced type safety. Let's have an overview of the important changes in PHP 8.0 and how they might affect you!
This document discusses the history of extensibility in Perl, from early techniques using import subroutines and prototypes, to modern approaches like Devel::Declare, the keyword API, and Moops. Moops provides an easy and extensible way to define new syntax using Keyword::Simple, and was created to improve on earlier modules like MooseX::Declare by using a simpler design focused on extensibility. The document concludes by showing how Moops can be used to define a custom "setup" module that injects imports and extends the syntax, providing a cleaner way to share commonly used functions and roles.
PHP 8.1 brings Enums, one of the most requested features in PHP.
Enums, or Enumerations, allow creating strict and type-safe structures for fixed values. An Enum structure can hold a number of values that can also be backed with integer or string values.
In this comprehensive session, we will discover what Enums are, why they are useful, how to apply them on our applications, and things to watch out for when using Enums.
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
This document summarizes two PHP monitoring tools: APM (Alternative PHP Monitor) and Pinba.
APM is a tool dedicated to error handling in PHP applications. It provides functions to retrieve error events and slow requests from a database. Pinba is focused on real-time performance monitoring. It allows setting timers and retrieving performance metrics like request time and memory usage. Both tools have low overhead and are open source alternatives to commercial monitoring solutions.
Static Optimization of PHP bytecode (PHPSC 2017)Nikita Popov
This document discusses static optimization of PHP bytecode. It describes optimizations like constant propagation, dead code elimination, inlining, and specialization that have been implemented in PHP. It also discusses challenges to optimization from features like references, eval(), and variable variables. Type inference using static single assignment form is explained. Metrics on performance improvements from optimizations in libraries and applications like WordPress are provided. Current and future work on additional optimizations in PHP is mentioned.
The Perl API for the Mortally Terrified (beta)Mike Friedman
A brief introduction to get you started in working with Perl's internal API. This presentation is a work in progress.
Code samples: http://github.com/friedo/perl-api-terror
C++11 introduced many new features including type deduction with auto, uniform initialization syntax, rvalue references and move semantics, improved enums, lambda expressions, and smart pointers. Type deduction with auto lets the compiler deduce the type of a variable based on its initializer. Uniform initialization uses curly braces {} and allows narrowing conversions only if explicitly cast. Rvalue references and move semantics allow moving an object to avoid expensive copies by leaving the source object in a valid but unspecified state.
This document discusses various techniques for writing doctests, including:
- Summarizing how doctests allow testing functions through documentation strings.
- Handling unpredictable output like object IDs using options like ELLIPSIS.
- Working around whitespace issues using tags like <BLANKLINE>.
- Specifying test locations within modules or external files.
- Documenting functions in external files like .rst files.
- Running tests on modules, files, or via a unittest suite.
- Isolating test globals and contexts to avoid interference across tests.
Typed Properties and more: What's coming in PHP 7.4?Nikita Popov
The document summarizes new features coming in PHP 7.4, including typed properties, arrow functions, the nullsafe operator, and array spread syntax. It also discusses future language features like property accessors and generics. Some deprecations are noted, such as changes to ternary operator and concatenation precedence to avoid ambiguity.
General Assembly Workshop: Advanced JavaScriptSpike Brehm
The document discusses isomorphic JavaScript, which allows JavaScript code to run on both the client and server. It provides examples using libraries like Underscore.js and Handlebars.js isomorphically. Frameworks like Meteor, Mojito, and Rendr are introduced that support building isomorphic apps. The benefits are around performance, SEO, and code maintainability. The presentation concludes with a demo of building features into an sample isomorphic blog application.
The document discusses JavaScript and the issues with cross-site scripting (XSS) attacks on the web. It argues that XSS is a fundamental problem caused by a confusion of interests in the browser model. The document calls for resetting the HTML5 proposal to make solving XSS the top priority and developing a new "safe mode" with a simpler DOM and capabilities model to protect all interests.
Talk about ECMAScript 6 at YAPC::Asia Tokyo 2015
http://yapcasia.org/2015/talk/show/44721562-10e4-11e5-88a0-d7f07d574c3a
https://www.youtube.com/watch?v=oSPv5IPDSxE
The document discusses Modern Perl and how the language has evolved over time. Some key changes include new features like say() in Perl 5.10, improved object orientation with Moose, and improved error handling with modules like autodie. Modern Perl development focuses on stability while still innovating and uses CPAN to share thousands of open source modules.
The document discusses building interpreters using PyPy. It describes how PyPy can be used to build interpreters for other languages like Ruby, PHP, Prolog by compiling a language to RPython and then using PyPy's just-in-time compiler. The document then outlines building a BASIC interpreter that can run the Hamurabi program. It covers parsing the BASIC code into an AST using a lexer and parser generated with RPLY. It also describes compiling the AST to bytecode using an intermediate representation and executing the bytecode on a virtual machine.
The document discusses the Just-In-Time (JIT) compiler that was introduced in PHP 8. It provides a brief history of JIT in PHP, explaining that early prototypes showed that the rest of PHP was too slow to benefit from JIT. It then discusses how optimizations from JIT were integrated into opcache without needing a full JIT. It provides information on configuring and using the JIT compiler, and shows performance improvements on benchmarks. It also provides an example of how a function is compiled to machine code by the JIT compiler.
Modern Objective-C introduces several syntactic sugars that simplify working with collections and objects in Objective-C, including array, dictionary and boxed expression literals that avoid explicit constructor methods, as well as object subscripting syntax that allows accessing elements in collections using subscript syntax like nsarray[index]. These features help reduce verbosity and make code more readable while still generating the same underlying method calls as before.
Automatic Reference Counting (ARC) makes memory management the job of the compiler by inserting retain and release calls. ARC consists of a frontend compiler that inserts the appropriate memory management calls and an optimizer that removes unnecessary calls. ARC supports iOS 5+ and OS X 10.7+ and allows using variable ownership qualifiers like __strong (default), __weak, __unsafe_unretained, and __autoreleasing to avoid retain cycles.
The document compares and contrasts features of the Scala and Ruby programming languages, including type systems, pattern matching, monkey patching, dynamic calls, traits/modules, and more. It discusses how each language handles the given features, often providing code examples, and notes similarities and differences between the two approaches. The overall assessment is that a draw is the best way to characterize the comparison between Scala and Ruby, as both languages have their merits for different use cases and preferences.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
This talk will discuss new features already implemented in PHP 8, backwards-compatibility breaks to watch out for, as well as some features that are still under discussion.
This document discusses building a Java tracer using bytecode, JNI, JVMTI and ASM. It covers Java bytecode format, using JNI and JVMTI to build C extensions that interface with the JVM, ASM for bytecode analysis and manipulation, and a demo of using these technologies to trace a "Hello, World" program. It also outlines areas for further work on the tracer and takes questions.
PHP 8.0 comes with many long-awaited features: A just-in-time compiler, attributes, union types, and named arguments are just a small part of the list. As a major version, it also includes some backward-incompatible changes, which are centered around stricter error handling and enhanced type safety. Let's have an overview of the important changes in PHP 8.0 and how they might affect you!
This document discusses the history of extensibility in Perl, from early techniques using import subroutines and prototypes, to modern approaches like Devel::Declare, the keyword API, and Moops. Moops provides an easy and extensible way to define new syntax using Keyword::Simple, and was created to improve on earlier modules like MooseX::Declare by using a simpler design focused on extensibility. The document concludes by showing how Moops can be used to define a custom "setup" module that injects imports and extends the syntax, providing a cleaner way to share commonly used functions and roles.
PHP 8.1 brings Enums, one of the most requested features in PHP.
Enums, or Enumerations, allow creating strict and type-safe structures for fixed values. An Enum structure can hold a number of values that can also be backed with integer or string values.
In this comprehensive session, we will discover what Enums are, why they are useful, how to apply them on our applications, and things to watch out for when using Enums.
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
This document summarizes two PHP monitoring tools: APM (Alternative PHP Monitor) and Pinba.
APM is a tool dedicated to error handling in PHP applications. It provides functions to retrieve error events and slow requests from a database. Pinba is focused on real-time performance monitoring. It allows setting timers and retrieving performance metrics like request time and memory usage. Both tools have low overhead and are open source alternatives to commercial monitoring solutions.
Static Optimization of PHP bytecode (PHPSC 2017)Nikita Popov
This document discusses static optimization of PHP bytecode. It describes optimizations like constant propagation, dead code elimination, inlining, and specialization that have been implemented in PHP. It also discusses challenges to optimization from features like references, eval(), and variable variables. Type inference using static single assignment form is explained. Metrics on performance improvements from optimizations in libraries and applications like WordPress are provided. Current and future work on additional optimizations in PHP is mentioned.
The Perl API for the Mortally Terrified (beta)Mike Friedman
A brief introduction to get you started in working with Perl's internal API. This presentation is a work in progress.
Code samples: http://github.com/friedo/perl-api-terror
C++11 introduced many new features including type deduction with auto, uniform initialization syntax, rvalue references and move semantics, improved enums, lambda expressions, and smart pointers. Type deduction with auto lets the compiler deduce the type of a variable based on its initializer. Uniform initialization uses curly braces {} and allows narrowing conversions only if explicitly cast. Rvalue references and move semantics allow moving an object to avoid expensive copies by leaving the source object in a valid but unspecified state.
This document discusses various techniques for writing doctests, including:
- Summarizing how doctests allow testing functions through documentation strings.
- Handling unpredictable output like object IDs using options like ELLIPSIS.
- Working around whitespace issues using tags like <BLANKLINE>.
- Specifying test locations within modules or external files.
- Documenting functions in external files like .rst files.
- Running tests on modules, files, or via a unittest suite.
- Isolating test globals and contexts to avoid interference across tests.
Typed Properties and more: What's coming in PHP 7.4?Nikita Popov
The document summarizes new features coming in PHP 7.4, including typed properties, arrow functions, the nullsafe operator, and array spread syntax. It also discusses future language features like property accessors and generics. Some deprecations are noted, such as changes to ternary operator and concatenation precedence to avoid ambiguity.
General Assembly Workshop: Advanced JavaScriptSpike Brehm
The document discusses isomorphic JavaScript, which allows JavaScript code to run on both the client and server. It provides examples using libraries like Underscore.js and Handlebars.js isomorphically. Frameworks like Meteor, Mojito, and Rendr are introduced that support building isomorphic apps. The benefits are around performance, SEO, and code maintainability. The presentation concludes with a demo of building features into an sample isomorphic blog application.
The document discusses JavaScript and the issues with cross-site scripting (XSS) attacks on the web. It argues that XSS is a fundamental problem caused by a confusion of interests in the browser model. The document calls for resetting the HTML5 proposal to make solving XSS the top priority and developing a new "safe mode" with a simpler DOM and capabilities model to protect all interests.
JavaScript language plays a very important role in Web 2.0 application development. JavaScript has its own characteristics different than object-oriented languages and it's not easy for developers to understand.
This presentation covers major advanced topics in JavaScript languages, including prototype chain, identifier resolving, "this" keyword, "new" operator, execution context and scope chain and closure. Besides that, it also covers best practices when using JavaScript.
JavaScript: Advanced Scoping & Other PuzzlesSencha
In this session, we'll review the fundamentals of Javascript variable scope and common "execution context" (scope) challenges associated with early/late binding of event handlers, specifically within complex Ext JS layouts. We'll also bring several patterns (namespaced references, Function closures, inline references, ref/refOwner, and the "Poor-man's message bus") to bear on the bowl of soup we call "scope."
The document provides an overview and agenda for an Advanced JavaScript course. It covers JavaScript history from 1995-1996, how JavaScript is used today both on the client-side and server-side with Node.js. It also discusses JavaScript language fundamentals like data types, objects, arrays, functions and prototypes. The agenda includes deep dives into these topics with examples and exercises to practice working with objects, arrays, functions and prototypes in JavaScript.
This document is a 53 page presentation by Andreas Ecker of 1&1 Internet AG on advanced object-oriented JavaScript. It covers topics like classes, inheritance, scopes, closures, namespaces, and design patterns. It also introduces the qooxdoo framework, which provides features like classes, static members, interfaces, and mixins to improve the object model of JavaScript.
The document discusses different approaches to object-oriented programming in JavaScript, including classical and prototypal inheritance, constructor functions, and the prototype property. It explains how prototypal inheritance works by linking objects together through their internal prototype properties. Constructor functions and the new operator allow simulating classical inheritance by establishing prototype links. Various design patterns are also covered, such as public/privileged methods, singletons, modules, and parasitic inheritance.
This document contains code snippets and discussions around various JavaScript technologies including Node.js, CoffeeScript, testing frameworks like Vows and Nodeunit, package management with npm, and more. It discusses using Node.js for non-blocking I/O, creating HTTP servers, making HTTP requests, and reading/writing files. It also briefly introduces CoffeeScript syntax and mentions composition patterns, reactive programming, and the growing Node.js module ecosystem.
The document discusses the beauty of JavaScript and its many features. It covers how JavaScript offers classless object-oriented programming and functional programming. It also discusses how JavaScript can run on both the client-side and server-side. The document provides examples of JavaScript syntax like variables, functions, objects, inheritance through prototypes, and AJAX requests. It emphasizes how libraries help create abstractions and beautiful patterns in JavaScript code.
Slides from my Lonestar Ruby Conf 2011 presentation.
*** Video of presentation: http://confreaks.com/videos/2531-lsrc2011-testing-javascript-with-jasmine ***
Agenda:
- Briefly cover why you should unit test
- Discuss what Jasmine is and isn't
- Show syntax with comparisons to RSpec
- Jasmine with:
- Vanilla JavaScript
- Jasmine with jQuery
- Jasmine with Ruby (not Rails)
- Jasmine with Rails
- Evergreen
- capybara-webkit
- Where does CoffeeScript, node.js, etc. fit in?
- Other helpful libraries/Wrap-up
The document discusses the beauty of JavaScript and its many features. It covers how JavaScript offers classless object-oriented programming and functional programming. It also discusses how JavaScript can run on both the client-side and server-side. The document provides examples of JavaScript syntax like variables, functions, objects, prototypes and more to demonstrate JavaScript's capabilities. It emphasizes that libraries help create abstractions and beautiful patterns in JavaScript code.
This document discusses the Scala programming language. It begins by introducing Scala as a hybrid object-functional language that runs on the JVM and CLR with type inference, duck typing, and multiple inheritance. It then provides examples of Scala code for common tasks like partitioning a list, reducing values, sorting, and working with objects as functions. The document also covers Scala features like implicit parameters, XML processing, handling nulls, and who is using Scala in industry. It promotes Scala as the heir to Java and encourages the reader to try Scala for its powerful features.
This document summarizes a talk given at YAPC Tokyo 2010 about calling C code from Perl using various techniques. It discusses Ctypes, a module for directly calling C functions without XS; Libperl++, a C++ library for embedding and extending Perl; and XS++, which allows writing C++ classes that integrate seamlessly with Perl using a special syntax.
The document proposes design changes and a new framework called Fantom that aims to create a simpler and more modern Java-like language by removing unnecessary syntax like semicolons, adding features like string interpolation and type inference, and providing a framework called Tales that embraces HTML, JavaScript, and SQL for building web applications in a simpler way compared to other frameworks. Fantom also focuses on better modularity, APIs, concurrency model with actors, and integration of static and dynamic typing features to achieve a very boring but productive language and framework for application development.
this talk is about some of the features of Javascript that are not always good understood by developers like me (that are mainly back-end and work mainly in c# or Java)
Perl 5.10 introduces several new features including say for easy printing, smart matching with ~~, switch statement, defined-or operator //, and state variables for persistent data within subs. It also includes improvements to the regex engine, modules like Hash::Util::FieldHash, better Windows support and a faster UTF-8 implementation. The release timeline is 5.8.9 stable by April 1st 2006, 5.10 after lunch before Christmas 2006, and Perl 6 after lunch before Christmas 2006.
This document provides an overview of JavaScript for PHP developers. It compares the syntax and core concepts between the two languages. Some of the key points covered include: variables and data types are similar, functions are objects in JavaScript, JavaScript uses prototypes instead of classes, and functions provide scope. The document also summarizes the built-in global functions and properties, common methods for objects like Array and String, and emphasizes that constructor functions are often not needed in JavaScript.
Specs is a Scala library for behaviour-driven development (BDD) that allows tests to be written in a business-domain language. It provides structures, matchers, and other tools to specify systems and examples to be tested. Matchers are used for assertions, and setup/teardown mechanisms are available at different levels. Contexts and mocking can also be used to share state and isolate dependencies.
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
Groovy is a dynamic language for the Java Virtual Machine that aims to provide a concise, readable syntax with features like closures, metaprogramming and domain-specific language support. Some key features include dynamic typing, operator overloading, builders for generating XML/Swing code and the ability to extend any class or category of objects with additional methods. Groovy aims to be fully interoperable with Java while allowing more compact representations of common patterns.
The document discusses JavaScript, describing it as:
- Created in 1995 by Netscape and based on the ECMAScript standard.
- A dynamic, weakly typed, object-oriented programming language that is often misunderstood.
- Used for client-side scripting of webpages as well as server-side and application scripting.
- Commonly disliked due to past bad practices, implementations, and browser differences, but these issues are improving over time.
The document provides an overview of JavaScript for PHP developers. It discusses similarities and differences between JavaScript and PHP syntax, including variables, arrays, conditionals, loops, functions, objects, prototypes, and more. It also summarizes the built-in JavaScript API, including global functions, constructors, and properties and methods of objects like Object, Array, Function, String, Number, Math, Date, and Error.
Ajax, JSON & jQuery
"JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.”
– json.org
JSON is often used in Ajax calls instead of XML because it’s more lightweight compared to XML, less text is needed for defining the same data.
Python - Getting to the Essence - Points.com - Dave Parkpointstechgeeks
This document provides an introduction to Python and compares sorting lists in Java and Python. It demonstrates how to sort a list of tuples by different elements in Python using key functions with the built-in sorted() function. It also covers Python concepts like lists, dictionaries, list comprehensions, objects, built-in functions, and more.
The document discusses Node.js and compares it to other technologies like CakePHP. It provides an overview of Node.js including its event-driven and asynchronous model, key features like the V8 engine and packages/modules, and frameworks like Express. It then demonstrates building a sample messaging application with a JSON API using both CakePHP and Node.js.
Similar to JavaScript, Beyond the Curly Braces (20)
Specflow: One Step closer to Executable SpecificationsChicago ALT.NET
(see http://chicagoalt.net/event/october-2010-meeting-specflow--one-step-closer-to-executable-specifications)
What if you could take the lessons you've learned with Test Driven Development to a whole new level? What if in this new paradigm you were able to involve business users much closer to your development process? What if you and your business users could reduce the number of conversions between the spoken language and the implemented behavior of the application?
This document provides an overview and definitions of CQRS (Command Query Responsibility Segregation). It discusses:
1. CQRS separates commands, which change data, from queries, which retrieve data without modifying it. This avoids polluting domain models with query logic.
2. Queries access a read-optimized data store directly via DTOs (data transfer objects) without involving domain models or object-relational mapping. Commands update data by invoking command handlers and raising domain events.
3. Internal events are raised in response to commands and can be persisted for audit logging, recovery, and data analysis purposes. External events are published to notify other systems of changes.
This document discusses the new dynamic keyword in C# and some of the possibilities it enables, such as duck typing, expando objects, metaprogramming, and interoperability with dynamically typed languages. It acknowledges performance tradeoffs but argues many applications are not CPU-bound. It demonstrates some "stupid dynamic C# tricks" and envisions uses like end-user defined object fields. While dynamic opens new areas to explore like LINQ, the author cautions it is not suitable everywhere and TDD is important to avoid runtime errors and maintenance issues.
Alex Pedenko's presentation on CouchDB from .NET code. Go to http://chicagoalt.net/event/October2009Meeting-GetComfyWithCouchDB for more details and video.
This document summarizes an ALT.NET meetup presentation about Git and its core concepts:
1) Git is a distributed version control system originally created by Linus Torvalds to manage the Linux kernel source code as a replacement for BitKeeper.
2) Git uses a content-addressable filesystem to store objects like blobs (file contents), trees, commits, and tags in a compressed database for versioning code and files efficiently with deltas.
3) The basic Git workflow involves making local changes, staging files to the index, and committing snapshots of the changes to the repository along a branch lineage with parent commits.
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.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
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.
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
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
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!
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
26. Advanced Javascript Undefined (undefined) Null (null) Default value for variables, parameters, and missing object properties var name = "Homer"; varhairColor = null; var city = "Springfield"; var state;
29. Advanced Javascript Date vartoday = new Date(); //milliseconds since 1/1/1970 vard = new Date(1234); //explicit var xmas = new Date(2008, 11, 25); //parsing, locale-dependent, avoid var xmas = new Date(Date.parse('12/25/2008'));
32. Advanced Javascript Function //functions are data as well function f1() { alert('inside f1'); } var f2 = f1; function run( someFunc ){ someFunc(); } run( f2 ); // 'inside f1'
33. Advanced Javascript Function //functions are data as well function f1() { alert('inside f1'); } var f2 = f1; function run( someFunc ){ someFunc(); } run( f2 ); // 'inside f1'
34. Advanced Javascript Function //functions don't need a name function run( someFunc ){ someFunc(); } run(function () { alert('inside function'); }); // 'inside function'
35. Advanced Javascript Function //functions don't need a name function run( someFunc ){ someFunc(); } run( function () { alert('inside function'); } ); // 'inside function'
36. Advanced Javascript Function //parameter lists are optional function concat(){ var res = ''; for (var i=0; i<arguments.length; i++) { res += arguments[i]; } return res; } alert( concat(123, 'abc', [7, 8, 9]) ); // '123abc7,8,9'
37. Advanced Javascript Function //can be nested function prettyPrint(value, currency, rate){ function formatCurr(num) { returnnum + ' ' + currency; } function convert() { return rate * value; } var converted = convert(value); var text = formatCurr(converted); alert(text); } prettyPrint(10.5, 'EUR', 0.797); // 8.3685 EUR
39. Advanced Javascript Invocation and the problem with this function func(arg1, arg2){ return [this, arg1, arg2]; } func(123, 456); // [window, 123, 456] var car = new Object(); car.start = func; car.start('now', 9); // [car, 'now', 9] func.apply(car, ['p1', 'p2']);// [car, 'p1', 'p2'] func.call(car, 'p1', 'p2'); // [car, 'p1', 'p2']
40. Advanced Javascript Inner functions and this function calculateTotal(){ function getTax(){ return this.price * this.tax; } returnthis.price + getTax() + this.shippingCost; } var order = new Object(); order.price = 10.25; order.tax = 0.07; order.shippingCost = 5; order.getTotal = calculateTotal; order.getTotal();
41. Advanced Javascript Inner functions and this (the fix) function calculateTotal(){ var that = this; // very common function getTax(){ return that.price * that.tax; } returnthis.price + getTax() + this.shippingCost; } var order = new Object(); order.price = 10.25; order.tax = 0.07; order.shippingCost = 5; order.getTotal = calculateTotal; order.getTotal();
42. Advanced Javascript Closures function createFuncArray() { var funcs = [ ]; for (var n=0; n<10; n++) { funcs[n] = function () { alert('The number is ' + n); }; } return funcs; } var allFunctions = createFuncArray(); var show = allFunctions[6]; show();// Can you guess?
48. Advanced Javascript Object //notation for methods var guitar = { stringCount: 6, make: 'Gibson', model: 'Les Paul', play: function (chord) { alert(chord + ' from a ' + this.model); } }; guitar.play('C#'); // 'C# from a Les Paul'
49. Advanced Javascript Object Wait, was that JSON? Not exactly. //JSON (see http://www.json.org/ ) var guitarJson = "{ " + " 'stringCount': 6, " + " 'make': 'Gibson'," + " 'colors': [ 'black', 'white', 'red']," + " 'model': 'Les Paul'" + "} "; JSON is basically a collection of name:value pairs. - name is a string literal - value can be: a string, a number, null, true, false, an array, or another JSON object literal.
50. Advanced Javascript Object //constructor function functionGuitar(strings, make, model){ this.stringCount = strings; this.make = make; this.model = model; this.play = function (chord) { alert(chord + ' from a ' + this.model); }; } var g = new Guitar(6, 'Gibson', 'Les Paul'); g.play('C#'); // 'C# from a Les Paul'
51. Advanced Javascript Member access notations //good 'ole dot notation guitar.model = 'Gibson'; var p = guitar.price; //indexer notation guitar['model'] = 'Gibson'; guitar['play']('C#');
65. Advanced Javascript Inheritance in JavaScript generic var generic = { make: 'none', price :0 }; var guitar = object( generic ); guitar.model = 'Les Paul'; guitar.price = 1200; guitar generic.year = 2001; generic.model = 'n/a'; alert(guitar.model); // Les Paul alert(guitar.year); // 2001
66. Advanced Javascript Inheritance in JavaScript Every object inherits from Object.prototype var obj = new Object(); //same as var obj = object( Object.prototype ); var d = new Date(1000); //behind the scenes: var newObj = object( Date.prototype ); d = Date.apply( newObj, [1000] ); if (d == null ) d = newObj;
67. Advanced Javascript Inheritance in JavaScript Our constructors also have a prototype functionGuitar(strings, make, model){ this.stringCount = strings; this.make = make; this.model = model; } Guitar.prototype.play = function (chord) { alert(chord + ' from a ' + this.model); };
69. Advanced Javascript Inheritance in JavaScript Oldest trick in JavaScript inheritance String.prototype.trim = function () { return this.replace( /^*(*(++)*)*$/, "$1"); }; var text = ' some user-entered value '; alert(text); // 'some user-entered value'
70. Advanced Javascript I lied There's no object() function in Javascript. But let me give you one. function object(o) { function F() {} F.prototype = o; returnnew F(); }
71. Advanced Javascript JavaScript Idioms: Truthy & Falsy //Falsy values var f[1]= false;// D'oh! var f[2] = null; var f[3] = undefined; var f[4] = 0; var f[5] = ""; var f[6] = NaN; if( f[X] ){ // never gets here } //Truthy values var t[1] = true; var t[2] = new Object(); var t[3] = "1"; var t[4] = "0"; // !! var t[5] = "false";// !! if( t[X] ){ // gets here always }
72. Advanced Javascript JavaScript Idioms: || Default operator //returns the first Truthy or last operand. //e.g.: overriding missing arguments var sortOrder; if (arg) { sortOrder = arg; } else { sortOrder = 'Name ASC'; } //same as var sortOrder = arg || 'Name ASC';
73. Advanced Javascript JavaScript Idioms: && Guard operator //returns the first Falsy or last operand. // e.g.: avoiding null reference errors var obj2; if (obj1) { obj2 = obj1.prop; } else { obj2 = obj1; } //same as var obj2 = obj1 && obj1.prop;
74. Advanced Javascript JavaScript Idioms: === and !== if (0 == "") { alert('Hey, I did not expect to see this.');//displayed } if (0 === "") { alert('This will not be displayed.');//not displayed } if (1 != true) { alert('Hey, I expected to see this.'); //not displayed } if (1 !== true) { alert('This will be displayed.');//displayed }
82. Advanced javascript Coding convention: Declare variables at the top of function function f1(){ var a, b, c; a = getA(); if (a) { b = calcB(a); } else { c = getC(); b = calcB(c); } }
83. Advanced javascript Coding convention: Do not use assignments as expressions if ( flag = getFlag() ) { alert(flag); } //prefer: var flag = getFlag(); if (flag) { alert(flag); }
88. Shameless plug: my blog, JavaScript category.sergio@sergiopereira.com http://sergiopereira.com/blog @sergiopereira http://chicagoalt.net
Editor's Notes
In trivia we will give an abridged version of JS history and where it stands todayDrive by shooting: just to make sure we mention the basic data types we deal with all the time. The one item that can be surprisingly different and longer than you might expect are the functions. We will spend a little bit of time talking about them.As the title of the presentation suggests, it can be easy to look at JS syntax and its name and try to map everything else to C#, Java, C, etc. We will see that this is a big mistake and we will point out very important differences.In idiomatic JS we will see what proficient JS looks likeWe will take some time to explain how object creation and inheritance works in JS. If you haven’t read about it before it might just be completely different from anything you saw.JS lives in a very hostile environment. In coding conventions and pitfalls we will learn tidbits of advice that can spare you from a lot of grief.Finally, all the above has just been preparation to really get to the more practical goal. Understanding jQuery and using it to write less and better JS code. We will see that jQuery has good documentation but it can be hard to read if you’re not up to speed with some of the previous topics. Event the jQuery source code is very readable once you get comfortable with idiomatic JS.
In trivia we will give an abridged version of JS history and where it stands todayDrive by shooting: just to make sure we mention the basic data types we deal with all the time. The one item that can be surprisingly different and longer than you might expect are the functions. We will spend a little bit of time talking about them.As the title of the presentation suggests, it can be easy to look at JS syntax and its name and try to map everything else to C#, Java, C, etc. We will see that this is a big mistake and we will point out very important differences.In idiomatic JS we will see what proficient JS looks likeWe will take some time to explain how object creation and inheritance works in JS. If you haven’t read about it before it might just be completely different from anything you saw.JS lives in a very hostile environment. In coding conventions and pitfalls we will learn tidbits of advice that can spare you from a lot of grief.Finally, all the above has just been preparation to really get to the more practical goal. Understanding jQuery and using it to write less and better JS code. We will see that jQuery has good documentation but it can be hard to read if you’re not up to speed with some of the previous topics. Event the jQuery source code is very readable once you get comfortable with idiomatic JS.