The document discusses using CoffeeScript to write JavaScript code in a more Ruby-like style. It provides examples of CoffeeScript code for functions, objects, classes, and other concepts. CoffeeScript allows JavaScript code to be written in a cleaner syntax that resembles Ruby. This helps address problems with JavaScript code appearing "ugly" and unfamiliar to developers experienced in Ruby. CoffeeScript transpires to regular JavaScript, enabling the Ruby-like code to run in browsers.
This document summarizes Rails on Oracle and the Oracle enhanced ActiveRecord adapter. It discusses the main components, how the adapter maps data types between Ruby/Rails and Oracle, and how it handles legacy schemas, PL/SQL CRUD procedures, and full-text indexes. It also provides information on testing, contributing, reporting issues and related libraries.
This document discusses why every tester should learn Ruby. It notes that testers often use scripting languages like VBScript, SQABasic, RobotJ, and VU to automate tests, but that Ruby is a better alternative being a simple yet powerful object-oriented and dynamic programming language. Ruby has a high testing culture in its community and is used for test automation with frameworks like Selenium and Watir for web testing, JRuby for GUI testing with Java libraries, and can interface with databases using Ruby-PLSQL-Spec for testing Oracle PL/SQL code. The document provides examples of test scripts in Ruby and argues that Ruby allows tests to serve as executable specifications.
This document discusses testing Backbone applications with Jasmine. It provides examples of how to test models, views, user interactions, and more. Key points covered include:
- Using Behavior Driven Development (BDD) style tests with Jasmine's describe and it blocks to test app behaviors.
- Spying on and mocking functions like jQuery's ajax call to test view logic without external dependencies.
- Testing models by calling methods and checking property values change as expected.
- Testing views by triggering events and checking models and DOM update appropriately.
- The jasmine-jquery plugin allows testing user interactions like clicks directly.
This document summarizes how to use Ruby on Rails with legacy Oracle databases. It discusses using the ruby-oci8 and jruby-oci8 gems to connect to Oracle from Ruby. It also covers using the activerecord-oracle_enhanced-adapter gem to connect to Oracle from Rails. It provides examples of calling PL/SQL functions from Ruby using the ruby-plsql gem and overriding ActiveRecord methods to call custom PL/SQL packages. Finally, it diagrams a typical Rails application architecture when using an Oracle database.
The document discusses Ruby and Ruby on Rails. It notes that Ruby is an object-oriented programming language created by Yukihiro Matsumoto in 1995. Ruby on Rails is a web application framework built on Ruby that was created by David Heinemeier Hansson in 2004. It follows the model-view-controller architectural pattern, separating applications into models, views, and controllers.
- Ruby is an interactive, object-oriented programming language created by Yukihiro Matsumoto in 1995.
- Ruby on Rails is a web application framework built on Ruby that emphasizes convention over configuration and is optimized for programmer happiness.
- The document discusses Ruby and Ruby on Rails, providing an overview of their history, key principles like MVC, REST, and conventions used in Rails. It also provides examples of modeling data with classes and ActiveRecord in Rails.
The document appears to be notes on Backbone.js. It includes summaries of Backbone models, events, views and how to bind events. It demonstrates creating a model with defaults, getting/setting attributes, and binding event handlers. It also shows creating a view with tagName, className and attributes, and logging the generated HTML element.
Generators in ECMAScript provide a way to write iterator functions using the yield keyword. This allows for writing functions that can be iterated over manually or used to create infinite streams. Generators also enable asynchronous programming using coroutines instead of callbacks. They allow for cooperative multitasking by starting multiple generator functions as "threads" that yield values in a nondeterministic order. Array comprehensions are also proposed as a shorthand for transforming arrays using generators.
This document summarizes Rails on Oracle and the Oracle enhanced ActiveRecord adapter. It discusses the main components, how the adapter maps data types between Ruby/Rails and Oracle, and how it handles legacy schemas, PL/SQL CRUD procedures, and full-text indexes. It also provides information on testing, contributing, reporting issues and related libraries.
This document discusses why every tester should learn Ruby. It notes that testers often use scripting languages like VBScript, SQABasic, RobotJ, and VU to automate tests, but that Ruby is a better alternative being a simple yet powerful object-oriented and dynamic programming language. Ruby has a high testing culture in its community and is used for test automation with frameworks like Selenium and Watir for web testing, JRuby for GUI testing with Java libraries, and can interface with databases using Ruby-PLSQL-Spec for testing Oracle PL/SQL code. The document provides examples of test scripts in Ruby and argues that Ruby allows tests to serve as executable specifications.
This document discusses testing Backbone applications with Jasmine. It provides examples of how to test models, views, user interactions, and more. Key points covered include:
- Using Behavior Driven Development (BDD) style tests with Jasmine's describe and it blocks to test app behaviors.
- Spying on and mocking functions like jQuery's ajax call to test view logic without external dependencies.
- Testing models by calling methods and checking property values change as expected.
- Testing views by triggering events and checking models and DOM update appropriately.
- The jasmine-jquery plugin allows testing user interactions like clicks directly.
This document summarizes how to use Ruby on Rails with legacy Oracle databases. It discusses using the ruby-oci8 and jruby-oci8 gems to connect to Oracle from Ruby. It also covers using the activerecord-oracle_enhanced-adapter gem to connect to Oracle from Rails. It provides examples of calling PL/SQL functions from Ruby using the ruby-plsql gem and overriding ActiveRecord methods to call custom PL/SQL packages. Finally, it diagrams a typical Rails application architecture when using an Oracle database.
The document discusses Ruby and Ruby on Rails. It notes that Ruby is an object-oriented programming language created by Yukihiro Matsumoto in 1995. Ruby on Rails is a web application framework built on Ruby that was created by David Heinemeier Hansson in 2004. It follows the model-view-controller architectural pattern, separating applications into models, views, and controllers.
- Ruby is an interactive, object-oriented programming language created by Yukihiro Matsumoto in 1995.
- Ruby on Rails is a web application framework built on Ruby that emphasizes convention over configuration and is optimized for programmer happiness.
- The document discusses Ruby and Ruby on Rails, providing an overview of their history, key principles like MVC, REST, and conventions used in Rails. It also provides examples of modeling data with classes and ActiveRecord in Rails.
The document appears to be notes on Backbone.js. It includes summaries of Backbone models, events, views and how to bind events. It demonstrates creating a model with defaults, getting/setting attributes, and binding event handlers. It also shows creating a view with tagName, className and attributes, and logging the generated HTML element.
Generators in ECMAScript provide a way to write iterator functions using the yield keyword. This allows for writing functions that can be iterated over manually or used to create infinite streams. Generators also enable asynchronous programming using coroutines instead of callbacks. They allow for cooperative multitasking by starting multiple generator functions as "threads" that yield values in a nondeterministic order. Array comprehensions are also proposed as a shorthand for transforming arrays using generators.
This document introduces Scala ActiveRecord, an ORM library for Scala that aims to provide an ActiveRecord-like experience. It summarizes the motivations for creating Scala ActiveRecord, which were to have a more usable database library that supports type-safety, conventions over configuration, and avoids repetition. It describes key features of Scala ActiveRecord like validations, associations, and callbacks. It also provides examples of basic CRUD operations and queries using Scala ActiveRecord's interface.
The document discusses using Rust and Emscripten to compile Rust code to JavaScript and WebAssembly. It covers how to export Rust functions, call JavaScript from Rust, and handle types through Embind to integrate Rust and JavaScript. Embind uses C++ templates to register Rust classes and implement bindings, allowing Rust code to interoperate with JavaScript through Emscripten.
ECMAScript 5 (ES5) is the 5th edition of the ECMAScript standard. It introduces new meta-level controls like property descriptors to define properties, refinements like making built-ins tamper-proof, and additions to the language API like new methods for strings and arrays. Strict mode helps catch errors and undefined behavior. Support for ES5 varies across browsers.
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Domenic Denicola
This talk takes a deep dive into asynchronous programming patterns and practices, with an emphasis on the promise pattern.
We go through the basics of the event loop, highlighting the drawbacks of asynchronous programming in a naive callback style. Fortunately, we can use the magic of promises to escape from callback hell with a powerful and unified interface for async APIs. Finally, we take a quick look at the possibilities for using coroutines both in current and future (ECMAScript Harmony) JavaScript.
Love it or hate it, JavaScript is playing an increasingly important role in the next generation of web and mobile apps. As code continues to move from the server to the client, JavaScript is being used to do more than simple HTML manipulation. Be prepared for this transition and make sure the JavaScript you write is optimized and ready to perform on desktops and devices! In this session, you will learn ten practical tips that you can use today to write faster, more maintainable, memory friendly JavaScript.
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
This document provides an overview of Scala-ActiveRecord, a type-safe Active Record model library for Scala. It discusses features such as being type-safe, having Rails ActiveRecord-like functionality, automatic transaction control, and support for associations and validations. The document also covers getting started, defining schemas, CRUD operations, queries, caching queries, validations, callbacks, and relationships.
AST - the only true tool for building JavaScriptIngvar Stepanyan
The document discusses working with code abstract syntax trees (ASTs). It provides examples of parsing code into ASTs using libraries like Esprima, querying ASTs using libraries like grasp-equery, constructing and transforming ASTs, and generating code from ASTs. It introduces aster, an AST-based code builder that allows defining reusable AST transformations as plugins and integrating AST-based builds into generic build systems like Grunt and Gulp. Aster aims to improve on file-based builders by working directly with ASTs in a streaming fashion.
Mastering Java Bytecode With ASM - 33rd degree, 2012Anton Arhipov
The document discusses bytecode and the ASM library for manipulating Java bytecode. It provides an overview of bytecode structure and instructions. ASM is introduced as a low-level API for working with bytecode using visitors and nodes. Examples are given for generating bytecode using ASM, such as creating a ClassWriter, visiting classes, fields and methods, and generating instructions.
This was a talk given at HTML5DevConf SF in 2015.
Ever wanted to write your own Browserify or Babel? Maybe have an idea for something new? This talk will get you started understanding how to use a JavaScript AST to transform and generate new code.
Video presentation: https://www.youtube.com/watch?v=jLAFXQ1Av50
Most applications written in Ruby are great, but also exists evil code applying WOP techniques. There are many workarounds in several programming languages, but in Ruby, when it happens, the proportion is bigger. It's very easy to write Ruby code with collateral damage.
You will see a collection of bad Ruby codes, with a description of how these codes affected negatively their applications and the solutions to fix and avoid them. Long classes, coupling, misapplication of OO, illegible code, tangled flows, naming issues and other things you can ever imagine are examples what you'll get.
This document describes configuration files and commands related to the Grails web application framework. It includes snippets of code for configuring data sources, dependencies, plugins, logging and more. It also shows URL mapping definitions, service classes, tag libraries and examples of testing controllers and services. The document provides an overview of the core components and configuration of Grails applications.
The document discusses abstract syntax trees (ASTs) and parsing of code. It provides examples of parsing JavaScript code into tokens and then building a syntax tree. It also discusses common JavaScript parsers like Esprima and Acorn, and AST specifications like ESTree. Homomorphic parsing is shown where code and AST are equivalent. Common uses of ASTs include transpilation, linting, minification, and code transformation.
Ten useful JavaScript tips & best practicesAnkit Rastogi
In this presentation there are ten useful JavaScript techniques which can be included in your application easily with less friction along with some AngularJs tips and best practices as a bonus. These tips and best practices are accompanied by examples & will cover script loading, design pattern, performance optimization and other areas.
Since best practices are very subjective topics, proper benchmarking needs to be done.
This document provides instructions for setting up a demonstration of the magic_model_generator gem. It mentions setting up the database.yml file and increasing the font size. It also provides commands for starting the postgres database, generating models from existing tables, and preparing the development environment for the demo.
Xlab #1: Advantages of functional programming in Java 8XSolve
Presentation from xlab workshop about functional programming components introduced to the Java 8. How to operate the streams and lambdas in theory and practice.
Http4s, Doobie and Circe: The Functional Web StackGaryCoady
Http4s, Doobie and Circe together form a nice platform for building web services. This presentations provides an introduction to using them to build your own service.
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
The document discusses CoffeeScript, a programming language that compiles to JavaScript. It provides examples of CoffeeScript syntax for functions, conditionals, loops, classes, and other constructs. It explains how CoffeeScript aims to have less syntactic noise than JavaScript while remaining true to the underlying JavaScript semantics through compilation.
CoffeeScript is a programming language that compiles to JavaScript. It aims to enhance JavaScript with features like significant whitespace, variables and functions declarations, and pattern matching. The document provides an overview of CoffeeScript's syntax and features like classes, functions, objects, and array/object comprehensions which compile down to cleaner JavaScript code. Examples are given throughout to illustrate CoffeeScript code and its compiled JavaScript output.
This document introduces Scala ActiveRecord, an ORM library for Scala that aims to provide an ActiveRecord-like experience. It summarizes the motivations for creating Scala ActiveRecord, which were to have a more usable database library that supports type-safety, conventions over configuration, and avoids repetition. It describes key features of Scala ActiveRecord like validations, associations, and callbacks. It also provides examples of basic CRUD operations and queries using Scala ActiveRecord's interface.
The document discusses using Rust and Emscripten to compile Rust code to JavaScript and WebAssembly. It covers how to export Rust functions, call JavaScript from Rust, and handle types through Embind to integrate Rust and JavaScript. Embind uses C++ templates to register Rust classes and implement bindings, allowing Rust code to interoperate with JavaScript through Emscripten.
ECMAScript 5 (ES5) is the 5th edition of the ECMAScript standard. It introduces new meta-level controls like property descriptors to define properties, refinements like making built-ins tamper-proof, and additions to the language API like new methods for strings and arrays. Strict mode helps catch errors and undefined behavior. Support for ES5 varies across browsers.
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Domenic Denicola
This talk takes a deep dive into asynchronous programming patterns and practices, with an emphasis on the promise pattern.
We go through the basics of the event loop, highlighting the drawbacks of asynchronous programming in a naive callback style. Fortunately, we can use the magic of promises to escape from callback hell with a powerful and unified interface for async APIs. Finally, we take a quick look at the possibilities for using coroutines both in current and future (ECMAScript Harmony) JavaScript.
Love it or hate it, JavaScript is playing an increasingly important role in the next generation of web and mobile apps. As code continues to move from the server to the client, JavaScript is being used to do more than simple HTML manipulation. Be prepared for this transition and make sure the JavaScript you write is optimized and ready to perform on desktops and devices! In this session, you will learn ten practical tips that you can use today to write faster, more maintainable, memory friendly JavaScript.
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
This document provides an overview of Scala-ActiveRecord, a type-safe Active Record model library for Scala. It discusses features such as being type-safe, having Rails ActiveRecord-like functionality, automatic transaction control, and support for associations and validations. The document also covers getting started, defining schemas, CRUD operations, queries, caching queries, validations, callbacks, and relationships.
AST - the only true tool for building JavaScriptIngvar Stepanyan
The document discusses working with code abstract syntax trees (ASTs). It provides examples of parsing code into ASTs using libraries like Esprima, querying ASTs using libraries like grasp-equery, constructing and transforming ASTs, and generating code from ASTs. It introduces aster, an AST-based code builder that allows defining reusable AST transformations as plugins and integrating AST-based builds into generic build systems like Grunt and Gulp. Aster aims to improve on file-based builders by working directly with ASTs in a streaming fashion.
Mastering Java Bytecode With ASM - 33rd degree, 2012Anton Arhipov
The document discusses bytecode and the ASM library for manipulating Java bytecode. It provides an overview of bytecode structure and instructions. ASM is introduced as a low-level API for working with bytecode using visitors and nodes. Examples are given for generating bytecode using ASM, such as creating a ClassWriter, visiting classes, fields and methods, and generating instructions.
This was a talk given at HTML5DevConf SF in 2015.
Ever wanted to write your own Browserify or Babel? Maybe have an idea for something new? This talk will get you started understanding how to use a JavaScript AST to transform and generate new code.
Video presentation: https://www.youtube.com/watch?v=jLAFXQ1Av50
Most applications written in Ruby are great, but also exists evil code applying WOP techniques. There are many workarounds in several programming languages, but in Ruby, when it happens, the proportion is bigger. It's very easy to write Ruby code with collateral damage.
You will see a collection of bad Ruby codes, with a description of how these codes affected negatively their applications and the solutions to fix and avoid them. Long classes, coupling, misapplication of OO, illegible code, tangled flows, naming issues and other things you can ever imagine are examples what you'll get.
This document describes configuration files and commands related to the Grails web application framework. It includes snippets of code for configuring data sources, dependencies, plugins, logging and more. It also shows URL mapping definitions, service classes, tag libraries and examples of testing controllers and services. The document provides an overview of the core components and configuration of Grails applications.
The document discusses abstract syntax trees (ASTs) and parsing of code. It provides examples of parsing JavaScript code into tokens and then building a syntax tree. It also discusses common JavaScript parsers like Esprima and Acorn, and AST specifications like ESTree. Homomorphic parsing is shown where code and AST are equivalent. Common uses of ASTs include transpilation, linting, minification, and code transformation.
Ten useful JavaScript tips & best practicesAnkit Rastogi
In this presentation there are ten useful JavaScript techniques which can be included in your application easily with less friction along with some AngularJs tips and best practices as a bonus. These tips and best practices are accompanied by examples & will cover script loading, design pattern, performance optimization and other areas.
Since best practices are very subjective topics, proper benchmarking needs to be done.
This document provides instructions for setting up a demonstration of the magic_model_generator gem. It mentions setting up the database.yml file and increasing the font size. It also provides commands for starting the postgres database, generating models from existing tables, and preparing the development environment for the demo.
Xlab #1: Advantages of functional programming in Java 8XSolve
Presentation from xlab workshop about functional programming components introduced to the Java 8. How to operate the streams and lambdas in theory and practice.
Http4s, Doobie and Circe: The Functional Web StackGaryCoady
Http4s, Doobie and Circe together form a nice platform for building web services. This presentations provides an introduction to using them to build your own service.
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
The document discusses CoffeeScript, a programming language that compiles to JavaScript. It provides examples of CoffeeScript syntax for functions, conditionals, loops, classes, and other constructs. It explains how CoffeeScript aims to have less syntactic noise than JavaScript while remaining true to the underlying JavaScript semantics through compilation.
CoffeeScript is a programming language that compiles to JavaScript. It aims to enhance JavaScript with features like significant whitespace, variables and functions declarations, and pattern matching. The document provides an overview of CoffeeScript's syntax and features like classes, functions, objects, and array/object comprehensions which compile down to cleaner JavaScript code. Examples are given throughout to illustrate CoffeeScript code and its compiled JavaScript output.
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
This document discusses using CoffeeScript, Backbone.js, and Jasmine BDD to build single page web applications. It begins by explaining why CoffeeScript is useful for cleaning up JavaScript code and avoiding errors. It then discusses how Backbone.js provides structure for single page apps by defining models, collections, views and routers. It notes that Backbone works well with CoffeeScript. Finally, it mentions that Jasmine BDD can be used for writing professional tests.
Javascript & jQuery: A pragmatic introductionIban Martinez
This document provides an introduction to Javascript and jQuery. It covers Javascript data types including numbers, strings, Booleans, null/undefined, and arrays. It then covers jQuery topics like jQuery objects, selectors, CSS manipulation, events including ready and load, and AJAX/JSON requests using both asynchronous and synchronous modes. It includes examples for working with numbers, strings, selectors, events, AJAX calls and shortcuts. The document aims to provide a pragmatic introduction to Javascript and jQuery concepts and functionality.
Groovy is a dynamic language for the Java platform that provides features inspired by languages like Python, Ruby and Smalltalk. It allows Java developers to use these features with a syntax that is very similar to Java. Groovy code can be compiled to Java bytecode and integrated with Java applications and libraries. It supports features like closures, metaprogramming, builders and templates to improve developer productivity.
This document provides an overview of various JavaScript concepts and techniques, including:
- Prototypal inheritance allows objects in JavaScript to inherit properties from other objects. Functions can act as objects and have a prototype property for inheritance.
- Asynchronous code execution in JavaScript is event-driven. Callbacks are assigned as event handlers to execute code when an event occurs.
- Scope and closures - variables are scoped to functions. Functions create closures where they have access to variables declared in their parent functions.
- Optimization techniques like event delegation and requestAnimationFrame can improve performance of event handlers and animations.
The document provides an overview of the Ruby programming language with sections on installation, data types, operators, control structures, methods, classes and modules. It discusses key aspects of Ruby like its object oriented nature, dynamic typing, syntax and cross-platform capabilities. The document serves as a quick tour of the Ruby language covering its basic concepts, structures and features.
Introduction à CoffeeScript pour ParisRB jhchabran
This document provides an overview of CoffeeScript, highlighting some of its key features and benefits compared to JavaScript. It discusses CoffeeScript's lighter syntax, object literals, list comprehensions, and implicit returns. It also addresses some criticisms of CoffeeScript, such as concerns about it being "just JavaScript" or a "toy language." Overall, the document promotes CoffeeScript as a cleaner syntax for writing JavaScript code.
This document provides an overview and introduction to CoffeeScript, a programming language that compiles to JavaScript. It shows how CoffeeScript code compiles to equivalent JavaScript code, and demonstrates CoffeeScript features like functions, classes, and object-oriented programming. The document introduces CoffeeScript syntax for arrays, objects, loops, and functions, and compares syntax to JavaScript. It also covers CoffeeScript concepts like scoping, context, and class-based object-oriented programming using prototypes.
The document describes MOBL, a programming language for building mobile web applications. MOBL aims to provide a small core language with large and extensible libraries. It includes built-in types, controls, and abstraction mechanisms like screens and functions. The language exposes low-level primitives while providing a native interface to external APIs. MOBL code can be deployed by concatenating, eliminating dead code, and minifying for client-side execution on mobile browsers. The language has been publicly released since January 2011 and sees over 1,000 visitors per day, with ongoing development focused on error handling, data evolution, documentation and libraries.
Mobl is a programming language for building mobile web applications. It aims to provide portability across different mobile platforms and browsers by compiling to JavaScript and HTML5. Mobl supports common mobile features like location services, camera, contacts and more through a simple object-oriented syntax. It also includes tools for building user interfaces, accessing data through entities and queries, and making web service requests. The goal is to enable complete coverage of mobile development needs while avoiding platform-specific code.
jQuery Tips and Trick by NagaHarish on 21 Jan 2012... For the Demos given in this slides refer
https://github.com/anubavam-techkt/jQuery-tricks-tips-nagaharish
This document discusses refactoring Java code to Clojure using macros. It provides examples of refactoring Java code that uses method chaining to equivalent Clojure code using the threading macros (->> and -<>). It also discusses other Clojure features like type hints, the doto macro, and polyglot projects using Leiningen.
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
Redux-observable allows combining RxJS and Redux by introducing Epics. Epics are Observable streams that handle asynchronous logic in response to Redux actions. This avoids callback hell and enables features like cancellation. An Epic takes an action stream, performs asynchronous operations like AJAX calls using RxJS, and dispatches result actions. This keeps Redux synchronous while managing complex async flows in a declarative and reusable way.
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptGuy Royse
Long ago, in the late days of the first Internet boom, before jQuery, before Underscore, before Angular, there was a web application built by a large corporation. This application was written as a server-side application using server-side technology like Java or PHP. A tiny seed of JavaScript was added to some of the pages of this application to give it a little sizzle.
Over the ages, this tiny bit of JavaScript grew like kudzu. Most of it was embedded in the HTML in
PHP is a server-side scripting language that is embedded into HTML files. The goal is to generate client-side code like HTML, CSS, and JavaScript. PHP files are executed on the web server and must be saved in a subdirectory that is accessible to the server, like /var/www. PHP allows variables, operators, conditional statements, loops, functions, and arrays. Sessions and cookies can be used to store and retrieve information across multiple requests.
JavaScript Advanced - Useful methods to power up your codeLaurence Svekis ✔
Get this Course
https://www.udemy.com/javascript-course-plus/?couponCode=SLIDESHARE
Useful methods and JavaScript code snippets power up your code and make even more happen with it.
This course is perfect for anyone who has fundamental JavaScript experience and wants to move to the next level. Use and apply more advanced code, and do more with JavaScript.
Everything you need to learn more about JavaScript
Source code is included
60+ page Downloadable PDF guide with resources and code snippets
3 Challenges to get you coding try the code
demonstrating useful JavaScript methods that can power up your code and make even more happen with it.
Course lessons will cover
JavaScript Number Methods
JavaScript String Methods
JavaScript Math - including math random
DOMContentLoaded - DOM ready when the document has loaded.
JavaScript Date - Date methods and how to get set and use date.
JavaScript parse and stringify - strings to objects back to strings
JavaScript LocalStorage - store variables in the user browser
JavaScript getBoundingClientRect() - get the dimensions of an element
JavaScript Timers setTimeout() setInterval() requestAnimationFrame() - Run code when you want too
encodeURIComponent - encoding made easy
Regex - so powerful use it to get values from your string
prototype - extend JavaScript objects with customized powers
Try and catch - perfect for error and testing
Fetch xHR requests - bring content in from servers
and more
No libraries, no shortcuts just learning JavaScript making it DYNAMIC and INTERACTIVE web application.
Step by step learning with all steps included.
Ähnlich wie Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine (20)
Mondrian MDX requests can be slow in production environments for several reasons: large schemas with many dimensions and measures can cause performance issues; querying large datasets from the database can also impact performance. To address these issues, the document discusses profiling Mondrian requests, optimizing the JVM and database, using caching, and tuning the Mondrian schema. A Mondrian schema pool is also described that reuses schema objects and periodically flushes unused schemas to free memory.
The document discusses improving MDX usability in Mondrian through user defined functions (UDFs). It provides examples of UDFs that allow accessing member properties, parsing dates, performing date calculations, calculating cumulative totals over time periods, aggregating calculated members, and setting default context. The UDFs extend MDX capabilities and make queries more readable and maintainable.
Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015Raimonds Simanovskis
This document discusses analyzing and visualizing git commit logs to gain insights. It provides examples of visualizing commit data by time, authors, files changed, and other dimensions. Examples shown include contributions over time to Rails and Node.js, top contributors, and analyzing patterns in commit times. The document advocates using git logs for code metrics and "Mining" them to learn from a codebase's history.
The document discusses data warehouses and multi-dimensional data analysis. It provides an example of modeling sales data across multiple tables in a relational database and shows how long queries take on large amounts of data. It then introduces dimensional modeling and how to structure data in a data warehouse using fact and dimension tables. Finally, it demonstrates how to model the sales data multidimensionally using a data cube and discusses OLAP technologies like Mondrian for multi-dimensional analysis.
The document describes mondrian-olap, a JRuby library that allows querying Mondrian OLAP schemas using Ruby and provides examples of defining Mondrian schemas, connecting to databases, executing MDX queries, and extending functionality through user-defined functions in Ruby, JavaScript, and CoffeeScript. It proposes defining Mondrian schemas directly in CoffeeScript for increased brevity and readability.
This document discusses embedding the Mondrian OLAP engine in other applications. It describes how eazyBI embeds Mondrian in its integrated business intelligence application to provide ETL, reports, charts, dashboards and the ability to embed analytics in other apps. It also discusses options for deploying Mondrian in embedded and multi-tenant configurations, current issues with long running threads and calculated measures, and additional user defined functions developed for Mondrian.
This document discusses JavaScript unit testing with Jasmine. It provides an overview of Jasmine's syntax including describes, contexts, matches, spies and stubs. It also discusses tools that can be used with Jasmine like jasmine-jquery for DOM testing and jasmine-given for behavior-driven development style tests.
This document discusses Ruby, an object-oriented scripting language, and its integration with Java via JRuby. It provides an overview of Ruby concepts like classes, modules, and metaprogramming. It then discusses how JRuby allows embedding Ruby as a scripting language in Java applications and using Java classes from Ruby. It also covers Ruby on Rails and how JRuby can be used to deploy Rails applications on the JVM. Finally, it discusses performance improvements in JRuby 1.7 and some benefits of using JRuby.
1) Agile values and practices can be applied to operations by focusing on individuals and interactions, comprehensive automation through infrastructure as code, and responding quickly to changes rather than following a predefined plan.
2) Typical system administration involves manual and repetitive installation and configuration tasks, whereas automating infrastructure build through version control and continuous deployment allows infrastructure to be provisioned and configured in a consistent, automated way.
3) Monitoring everything from end-user experience to applications, databases, and operating systems enables detecting problems early. Automated alerts and root cause analysis facilitate fast problem resolution.
Presented at DevClub.lv meeting http://devclub.lv/announcing-6th-devclub-lv
(video recording of talk is here http://devclub.lv/test-driven-development-tdd-why-and-how-raimonds-simanovskis) and at Agile Tour Vilnius 2013 conference (http://www.agileturas.lt/vilnius#raimonds_simanovskis).
This document discusses analyzing and visualizing Git commit logs to gain insights from a codebase's history. It describes analyzing commits across dimensions like authors, file extensions, times, and dates to understand contributor patterns and identify opportunities for improvement. Visualizations are shown examining contributions by time zone, hour of day, and day of week to learn about developer workflows and prevent burnout.
This document discusses unit testing PL/SQL code using Ruby. It introduces the ruby-plsql-spec gem, which allows writing PL/SQL unit tests in Ruby with a readable RSpec-style syntax. The gem provides powerful testing features and best practices from the Ruby community. A demo shows connecting to a database and calling PL/SQL procedures from Ruby tests. The benefits highlighted are compact readable syntax, support for complex tests, following best practices, and being open-source. More information is provided in blog posts and the GitHub repository for ruby-plsql-spec.
opendata.lv Case Study - Promote Open Data with Analytics and VisualizationsRaimonds Simanovskis
This case study promotes opening up government data through analytics and visualizations to make the information more engaging and reusable. It suggests crawling Latvian government websites to publish analytical reports and dashboards using open data from sources like election donations, university applications, and traffic accidents. The main challenges are a lack of awareness about open data in the country, data published in undocumented XMLs or PDFs instead of open formats, and no regulations around open data.
This document discusses extending Oracle E-Business Suite using Ruby on Rails. It provides an overview of how to extend EBS functionality by embedding EBS data in other systems or customizing forms and reports. It then discusses the evolution of EBS extension approaches over time from custom PL/SQL to various Java-based frameworks. It introduces Ruby on Rails as an alternative approach, describing how Rails uses an MVC architecture and Active Record pattern. It demonstrates how to connect Rails to Oracle databases using enhanced Oracle adapters and call PL/SQL from Ruby. Finally, it discusses deployment options and provides references for more information.
This document discusses multidimensional data analysis using JRuby and OLAP. It covers relational and multidimensional data models, SQL and MDX query languages, commercial OLAP vendors, and defining OLAP schemas and querying data in Ruby. Example queries are provided to illustrate getting analytical data such as total sales by product groups for a time period and location.
This document discusses multidimensional data analysis using JRuby and OLAP technologies. It provides examples of SQL queries for relational data that become complex for analytical queries. It then introduces multidimensional data modeling and cubes with dimensions, hierarchies and measures. Examples are given of MDX queries and equivalent Ruby queries against OLAP cubes for analytical reporting. Finally, it discusses defining an OLAP schema to map cubes to database tables.
Rails-like JavaScript using CoffeeScript, Backbone.js and JasmineRaimonds Simanovskis
This document discusses using CoffeeScript, Backbone.js, and Jasmine to provide a Rails-like structure for developing rich JavaScript web applications. It provides examples of CoffeeScript code for a Todo model, collection, and view using Backbone.js. It also shows sample Jasmine tests for the Todo model.
The document discusses an event called Agile Riga Day 2011 about adopting agile practices at organizations. It outlines some common challenges organizations face before and after starting their agile adoption, such as resistance to change, not fully understanding agile principles and rituals, lack of customer involvement, and difficulties implementing technical practices. The document provides recommendations for a successful agile adoption, such as starting iteratively, involving customers, implementing quality practices, and maintaining readiness for continuous change.
This document discusses using Ruby to perform multidimensional data analysis on relational databases. It introduces Mondrian, an open-source OLAP engine that allows for multidimensional analysis on top of SQL databases using the MDX query language. A new Ruby gem called mondrian-olap will integrate Mondrian and provide a Ruby DSL and ActiveRecord-like query interface for defining OLAP schemas and performing analytical queries on relational data in a simpler way than SQL. Examples show how to write multidimensional queries in MDX and the Ruby interface to analyze sales data across dimensions like time, products, and customers.
6. application.js
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
12. Sample JavaScript
(from RailsCasts #267)
var CreditCard = {
cleanNumber: function(number) {
return number.replace(/[- ]/g, "");
},
validNumber: function(number) {
var total = 0;
number = this.cleanNumber(number);
for (var i=number.length-1; i >= 0; i--) {
var n = parseInt(number[i]);
if ((i+number.length) % 2 == 0) {
n = n*2 > 9 ? n*2 - 9 : n*2;
}
total += n;
};
return total % 10 == 0;
}
};
console.log(CreditCard.validNumber('4111 1111-11111111')); // true
console.log(CreditCard.validNumber('4111111111111121')); // false
13. We see as this
“ugly” Ruby
CreditCard = {
:cleanNumber => lambda { |number|
return number.gsub(/[- ]/, "");
},
:validNumber => lambda { |number|
total = 0;
number = CreditCard[:cleanNumber].call(number);
for i in 0..(number.length-1)
n = number[i].to_i;
if ((i+number.length) % 2 == 0)
n = n*2 > 9 ? n*2 - 9 : n*2;
end
total += n;
end;
return total % 10 == 0;
}
};
puts(CreditCard[:validNumber].call('4111 1111-11111111')); # true
puts(CreditCard[:validNumber].call('4111111111111121')); # false
14. Or as this “normal” Ruby
module CreditCard
def self.clean_number(number)
number.gsub(/[- ]/, "")
end
def self.valid_number?(number)
total = 0
number = clean_number(number)
for i in 0...number.length
n = number[i].to_i
if i+number.length % 2 == 0
n = n*2 > 9 ? n*2 - 9 : n*2
end
total += n
end
total % 10 == 0
end
end
puts CreditCard.valid_number?('4111 1111-11111111') # true
puts CreditCard.valid_number?('4111111111111121') # false
15. “Best practices” Ruby
class CreditCard
def initialize(number)
@number = clean_number(number)
end
def valid?
total = 0
for i in 0...@number.length
n = @number[i].to_i
if i+@number.length % 2 == 0
n = n*2 > 9 ? n*2 - 9 : n*2
end
total += n
end
total % 10 == 0
end
private
def clean_number(number)
number.gsub(/[- ]/, "")
end
end
puts CreditCard.new('4111 1111-11111111').valid? # true
puts CreditCard.new('4111111111111121').valid? # false
16. JavaScript has objects too!
var CreditCard = function(number) {
function cleanNumber(number) {
return number.replace(/[- ]/g, "");
}
this.number = cleanNumber(number);
};
CreditCard.prototype = {
isValid: function() {
var total = 0;
for (var i=this.number.length-1; i >= 0; i--) {
var n = parseInt(this.number[i]);
if ((i+this.number.length) % 2 == 0) {
n = n*2 > 9 ? n*2 - 9 : n*2;
}
total += n;
};
return total % 10 == 0;
}
};
console.log( (new CreditCard('4111 1111-11111111')).isValid() ); // true
console.log( (new CreditCard('4111111111111121')).isValid() ); // false
17. But this would be much
more Ruby-like!
class CreditCard
cleanNumber = (number) -> number.replace /[- ]/g, ""
constructor: (number) ->
@number = cleanNumber number
isValid: (number) ->
total = 0
for i in [0...@number.length]
n = +@number[i]
if (i+@number.length) % 2 == 0
n = if n*2 > 9 then n*2 - 9 else n*2
total += n
total % 10 == 0
console.log (new CreditCard '4111 1111-11111111').isValid() # true
console.log (new CreditCard '4111111111111121').isValid() # false
18.
19.
20. Sample CoffeeScript
# Assignment: # Splats:
number = 42 race = (winner, runners...) ->
opposite = true print winner, runners
# Conditions: # Existence:
number = -42 if opposite alert "I knew it!" if elvis?
# Functions: # Array comprehensions:
square = (x) -> x * x cubes = (math.cube num for num in list)
# Arrays:
list = [1, 2, 3, 4, 5]
# Objects:
math =
root: Math.sqrt
square: square
cube: (x) -> x * square x
21. Functions
square = (x) -> x * x
cube = (x) -> square(x) * x
fill = (container, liquid = "coffee") ->
"Filling the #{container} with #{liquid}..."
awardMedals = (first, second, others...) ->
gold = first
silver = second
rest = others
contenders = [
"Michael Phelps"
"Liu Xiang"
"Yao Ming"
"Allyson Felix"
"Shawn Johnson"
]
awardMedals contenders...
24. Existential Operator
solipsism = true if mind? and not world?
speed ?= 75
footprints = yeti ? "bear"
zip = lottery.drawWinner?().address?.zipcode
25. Conditionals
mood = greatlyImproved if singing
if happy and knowsIt
clapsHands()
chaChaCha()
else
showIt()
date = if friday then sue else jill
options or= defaults
26. Loops
eat food for food in ['toast', 'cheese', 'wine']
countdown = (num for num in [10..1])
earsOld = max: 10, ida: 9, tim: 11
ages = for child, age of yearsOld
child + " is " + age
27. Classes, Inheritance
and super
class Animal
constructor: (@name) ->
move: (meters) ->
alert @name + " moved " + meters + "m."
class Snake extends Animal
move: ->
alert "Slithering..."
super 5
class Horse extends Animal
move: ->
alert "Galloping..."
super 45
sam = new Snake "Sammy the Python"
tom = new Horse "Tommy the Palomino"
sam.move()
tom.move()
36. Browser-side
Views and Models
AppView
TodoList
keypress event
click event TodoView Todo
dblclick event TodoView Todo
TodoView Todo
click event
37. Browser-side
Views and Models
AppView
new, fetch
TodoList
keypress event
click event TodoView create, save
Todo
dblclick event TodoView Todo
TodoView Todo
click event
38. Browser-side
Views and Models
AppView
refresh, add TodoList
keypress event
click event TodoView Todo
dblclick event TodoViewchange, destroy Todo
TodoView Todo
click event
39. Browser-side Models
and RESTful resources
Browser Rails
GET
TodoList TodosController
POST index
Todo PUT show
Todo create
DELETE update
Todo
destroy
JSON
43. Todo model
class TodoApp.Todo extends Backbone.Model
# If you don't provide a todo, one will be provided for you.
EMPTY: "empty todo..."
# Ensure that each todo created has `content`.
initialize: ->
unless @get "content"
@set content: @EMPTY
# Toggle the `done` state of this todo item.
toggle: ->
@save done: not @get "done"
44. TodoList collection
class TodoApp.TodoList extends Backbone.Collection
# Reference to this collection's model.
model: TodoApp.Todo
# Save all of the todo items under the `"todos"` namespace.
url: '/todos'
# Filter down the list of all todo items that are finished.
done: ->
@filter (todo) -> todo.get 'done'
# Filter down the list to only todo items that are still not finished.
remaining: ->
@without this.done()...
# We keep the Todos in sequential order, despite being saved by unordered
# GUID in the database. This generates the next order number for new items.
nextOrder: ->
if @length then @last().get('order') + 1 else 1
# Todos are sorted by their original insertion order.
comparator: (todo) ->
todo.get 'order'
45. Todo item view
class TodoApp.TodoView extends Backbone.View
# ... is a list tag.
tagName: "li"
# Cache the template function for a single item.
template: TodoApp.template '#item-template'
# The DOM events specific to an item.
events:
"click .check" : "toggleDone"
"dblclick div.todo-content" : "edit"
"click span.todo-destroy" : "destroy"
"keypress .todo-input" : "updateOnEnter"
# The TodoView listens for changes to its model, re-rendering. Since there's
# a one-to-one correspondence between a **Todo** and a **TodoView** in this
# app, we set a direct reference on the model for convenience.
initialize: ->
_.bindAll this, 'render', 'close'
@model.bind 'change', @render
@model.bind 'destroy', => @remove()
# Re-render the contents of the todo item.
render: ->
$(@el).html @template @model.toJSON()
@setContent()
this
46. # Re-render the contents of the todo item.
render: ->
$(@el).html @template @model.toJSON()
@setContent()
Todo item view
this
# To avoid XSS (not that it would be harmful in this particular app),
# we use `jQuery.text` to set the contents of the todo item.
setContent: ->
content = @model.get 'content'
@$('.todo-content').text content
@input = @$('.todo-input')
@input.blur @close
@input.val content
# Toggle the `"done"` state of the model.
toggleDone: ->
@model.toggle()
# Switch this view into `"editing"` mode, displaying the input field.
edit: ->
$(@el).addClass "editing"
@input.focus()
# Close the `"editing"` mode, saving changes to the todo.
close: ->
@model.save content: @input.val()
$(@el).removeClass "editing"
# If you hit `enter`, we're through editing the item.
updateOnEnter: (e) ->
@close() if e.keyCode == 13
# Destroy the model.
destroy: ->
@model.destroy()
47. Application view
class TodoApp.AppView extends Backbone.View
# Instead of generating a new element, bind to the existing skeleton of
# the App already present in the HTML.
el: "#todoapp"
# Our template for the line of statistics at the bottom of the app.
statsTemplate: TodoApp.template '#stats-template'
# Delegated events for creating new items, and clearing completed ones.
events:
"keypress #new-todo" : "createOnEnter"
"keyup #new-todo" : "showTooltip"
"click .todo-clear a" : "clearCompleted"
# At initialization we bind to the relevant events on the `Todos`
# collection, when items are added or changed. Kick things off by
# loading any preexisting todos that might be saved.
initialize: ->
_.bindAll this, 'addOne', 'addAll', 'renderStats'
@input = @$("#new-todo")
@collection.bind 'add', @addOne
@collection.bind 'refresh', @addAll
@collection.bind 'all', @renderStats
@collection.fetch()
48. @collection.bind 'add', @addOne
@collection.bind 'refresh', @addAll
@collection.bind 'all', @renderStats
Application view
@collection.fetch()
# Re-rendering the App just means refreshing the statistics -- the rest
# of the app doesn't change.
renderStats: ->
@$('#todo-stats').html @statsTemplate
total: @collection.length
done: @collection.done().length
remaining: @collection.remaining().length
# Add a single todo item to the list by creating a view for it, and
# appending its element to the `<ul>`.
addOne: (todo) ->
view = new TodoApp.TodoView model: todo
@$("#todo-list").append view.render().el
# Add all items in the collection at once.
addAll: ->
@collection.each @addOne
# Generate the attributes for a new Todo item.
newAttributes: ->
content: @input.val()
order: @collection.nextOrder()
done: false
# If you hit return in the main input field, create new **Todo** model,
# persisting it to server.
createOnEnter: (e) ->
if e.keyCode == 13
@collection.create @newAttributes()
@input.val ''
49. view = new TodoApp.TodoView model: todo
@$("#todo-list").append view.render().el
# Add all items in the collection at once.
Application view
addAll: ->
@collection.each @addOne
# Generate the attributes for a new Todo item.
newAttributes: ->
content: @input.val()
order: @collection.nextOrder()
done: false
# If you hit return in the main input field, create new **Todo** model,
# persisting it to server.
createOnEnter: (e) ->
if e.keyCode == 13
@collection.create @newAttributes()
@input.val ''
# Clear all done todo items, destroying their views and models.
clearCompleted: ->
todo.destroy() for todo in @collection.done()
false
# Lazily show the tooltip that tells you to press `enter` to save
# a new todo item, after one second.
showTooltip: (e) ->
tooltip = @$(".ui-tooltip-top")
val = @input.val()
tooltip.fadeOut()
clearTimeout @tooltipTimeout if @tooltipTimeout
unless val == '' or val == @input.attr 'placeholder'
@tooltipTimeout = _.delay ->
tooltip.show().fadeIn()
, 1000
50. #todoapp
index.html.haml
.title
%h1 Todos
.content
#create-todo
%input#new-todo{:placeholder => "What needs to be done?", :type => "text"}/
%span.ui-tooltip-top{:style => "display:none;"} Press Enter to save this task
#todos
%ul#todo-list
#todo-stats
%ul#instructions
%li Double-click to edit a todo.
:coffeescript
$ ->
TodoApp.appView = new TodoApp.AppView collection: new TodoApp.TodoList
%script#item-template{:type => "text/html"}
.todo{:class => "{{#done}}done{{/done}}"}
.display
%input{:class => "check", :type => "checkbox", :"{{#done}}checked{{/done}}" => true}
.todo-content
%span.todo-destroy
.edit
%input.todo-input{:type => "text", :value => ""}
%script#stats-template{:type => "text/html"}
{{#if total}}
%span.todo-count
51. %input#new-todo{:placeholder => "What needs to be done?", :type => "text"}/
%span.ui-tooltip-top{:style => "display:none;"} Press Enter to save this task
#todos
%ul#todo-list
index.html.haml
#todo-stats
%ul#instructions
%li Double-click to edit a todo.
:coffeescript
$ ->
TodoApp.appView = new TodoApp.AppView collection: new TodoApp.TodoList
%script#item-template{:type => "text/html"}
.todo{:class => "{{#done}}done{{/done}}"}
.display
%input{:class => "check", :type => "checkbox", :"{{#done}}checked{{/done}}" => true}
.todo-content
%span.todo-destroy
.edit
%input.todo-input{:type => "text", :value => ""}
%script#stats-template{:type => "text/html"}
{{#if total}}
%span.todo-count
%span.number {{remaining}}
%span.word {{pluralize remaining "item"}}
left.
{{/if}}
{{#if done}}
%span.todo-clear
%a{:href => "#"}
Clear
%span.number-done {{done}}
completed
%span.word-done {{pluralize done "item"}}
{{/if}}
56. Testing Todo model
describe "Todo", ->
todo = null
ajaxCall = (param) -> jQuery.ajax.mostRecentCall.args[0][param]
beforeEach ->
todo = new TodoApp.Todo
todos = new TodoApp.TodoList [todo]
it "should initialize with empty content", ->
expect(todo.get "content").toEqual "empty todo..."
it "should initialize as not done", ->
expect(todo.get "done").toBeFalsy()
it "should save after toggle", ->
spyOn jQuery, "ajax"
todo.toggle()
expect(ajaxCall "url").toEqual "/todos"
expect(todo.get "done").toBeTruthy()
57. and TodoList
collection
describe "TodoList", ->
attributes = [
content: "First"
done: true
,
content: "Second"
]
todos = null
beforeEach ->
todos = new TodoApp.TodoList attributes
it "should return done todos", ->
expect(_.invoke todos.done(), "toJSON").toEqual [attributes[0]]
it "should return remaining todos", ->
expect(_.invoke todos.remaining(), "toJSON").toEqual [attributes[1]]