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.
Object Oriented got a lot easier since Moose came around.
This keynote is a one-day advanced Moose workshop covering (almost) everything Moose has to offer perl developers
ES6, also known as ECMAScript 2015, introduces many new features to JavaScript that allow for clearer, more concise code. Some major features include let and const for block scoping, arrow functions, classes, template strings, collections like Maps and Sets, and iterators and generators. New features like default parameters, rest/spread syntax, and destructuring make working with functions and arrays more flexible. Overall, ES6 enhances JavaScript's syntax and capabilities in many ways.
This document discusses Ruby on Rails extensions provided by ActiveSupport. It explains that ActiveSupport provides Ruby extensions, utility classes, and other features used across Rails. It then summarizes some common extensions, including methods added to all objects like blank?, present?, and try. The document provides code examples for how these extensions work and which ActiveSupport files define them.
The document provides an agenda for a mini course on Ruby and Rails, covering topics such as Ruby, Rails, JRuby, JRubyOnRails, GlassfishOnRails, and JBossOnRails. It introduces Ruby as a dynamic, open source language with a natural syntax and focus on simplicity and productivity. Instructions are provided on installing Ruby on Ubuntu and testing the installation using irb and ruby commands.
Fancy is a JavaScript library that combines Underscore functions with functional programming concepts to allow for writing functional code in a more readable way. It constructs FancyArrays and FancyObjects from normal arrays and objects that allow chaining of Underscore functions. This functional approach to problems like evaluating poker hands avoids side effects, combines functions, and solves problems conceptually rather than using loops. While it may not implement all aspects of functional programming, Fancy emphasizes the use of functions and avoids state to make code more reusable, abstracted, and easier to write and extend.
Python's "batteries included" philosophy means that it comes with an astonishing amount of great stuff. On top of that, there's a vibrant world of third-party libraries that help make Python even more wonderful. We'll go on a breezy, example-filled tour through some of my favorites, from treasures in the standard library to great third-party packages that I don't think I could live without, and we'll touch on some of the fuzzier aspects of the Python culture that make it such a joy to be part of.
CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar that makes JavaScript cleaner and adds features inspired by Python and Ruby. Key features include cleaner syntax for functions, objects, conditionals, loops, and classes. CoffeeScript code compiles directly to equivalent JavaScript code, so it can be used anywhere JavaScript is used like web browsers and Node.js. To use CoffeeScript, install the CoffeeScript compiler and use it to compile CoffeeScript files to JavaScript for use in projects.
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.
Object Oriented got a lot easier since Moose came around.
This keynote is a one-day advanced Moose workshop covering (almost) everything Moose has to offer perl developers
ES6, also known as ECMAScript 2015, introduces many new features to JavaScript that allow for clearer, more concise code. Some major features include let and const for block scoping, arrow functions, classes, template strings, collections like Maps and Sets, and iterators and generators. New features like default parameters, rest/spread syntax, and destructuring make working with functions and arrays more flexible. Overall, ES6 enhances JavaScript's syntax and capabilities in many ways.
This document discusses Ruby on Rails extensions provided by ActiveSupport. It explains that ActiveSupport provides Ruby extensions, utility classes, and other features used across Rails. It then summarizes some common extensions, including methods added to all objects like blank?, present?, and try. The document provides code examples for how these extensions work and which ActiveSupport files define them.
The document provides an agenda for a mini course on Ruby and Rails, covering topics such as Ruby, Rails, JRuby, JRubyOnRails, GlassfishOnRails, and JBossOnRails. It introduces Ruby as a dynamic, open source language with a natural syntax and focus on simplicity and productivity. Instructions are provided on installing Ruby on Ubuntu and testing the installation using irb and ruby commands.
Fancy is a JavaScript library that combines Underscore functions with functional programming concepts to allow for writing functional code in a more readable way. It constructs FancyArrays and FancyObjects from normal arrays and objects that allow chaining of Underscore functions. This functional approach to problems like evaluating poker hands avoids side effects, combines functions, and solves problems conceptually rather than using loops. While it may not implement all aspects of functional programming, Fancy emphasizes the use of functions and avoids state to make code more reusable, abstracted, and easier to write and extend.
Python's "batteries included" philosophy means that it comes with an astonishing amount of great stuff. On top of that, there's a vibrant world of third-party libraries that help make Python even more wonderful. We'll go on a breezy, example-filled tour through some of my favorites, from treasures in the standard library to great third-party packages that I don't think I could live without, and we'll touch on some of the fuzzier aspects of the Python culture that make it such a joy to be part of.
CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar that makes JavaScript cleaner and adds features inspired by Python and Ruby. Key features include cleaner syntax for functions, objects, conditionals, loops, and classes. CoffeeScript code compiles directly to equivalent JavaScript code, so it can be used anywhere JavaScript is used like web browsers and Node.js. To use CoffeeScript, install the CoffeeScript compiler and use it to compile CoffeeScript files to JavaScript for use in projects.
Ruby was created in 1995 by Yukihiro Matsumoto who wanted a scripting language more powerful than Perl and more object-oriented than Python. It draws inspiration from Perl for its syntax, Smalltalk for its object model, and Lisp for its meta-programming capabilities. Ruby is an interpreted, object-oriented language with dynamic typing where everything is an object and supports features like classes, modules, blocks and iterators. The Ruby on Rails framework further popularized Ruby for web development.
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM LanguageCodeFest
This document introduces Fantom, a statically typed programming language that runs on the JVM. It highlights Fantom's features that improve developer productivity over Java such as type inference, literals, closures, and mixins. It also discusses Fantom's safety features like nullable types and const classes/fields. The document provides examples of Fantom's support for object-oriented, functional, declarative, and dynamic programming paradigms. It lists companies and projects using Fantom including X5, F4 IDE, Terminals, and Kloudo.com. The document encourages readers to get involved with the Fantom community and language.
The document discusses CoffeeScript, a programming language that compiles to JavaScript. It was designed to have cleaner syntax than JavaScript and be easier to read and write. CoffeeScript code compiles directly to equivalent JavaScript code. Using CoffeeScript can help developers write less code that is more readable and maintainable while still being able to use existing JavaScript libraries. The document provides examples of CoffeeScript code and the equivalent JavaScript output. It also discusses how to use CoffeeScript with Ruby on Rails projects by adding the Barista gem.
Slides from my PyCon 2011 talk, "Exhibition of Atrocity," a confessional of my sins against the Python programming language.
Abstract: http://us.pycon.org/2011/schedule/presentations/138/
Video: http://www.pycon.tv/#/video/49
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
The slide to the Java User Group Talk Exploring Ceylon from Gavin King.
Abstrakt:
Ceylon is a new programming language designed for writing large programs in teams. The language emphasizes readability, modularity, typesafety, and tooling. Ceylon programs execute on Java and JavaScript virtual machines. In this session, Gavin King will talk about the ideas behind Ceylon and demonstrate the language, its type system, its module architecture, and its IDE.
Speaker:
Gavin King leads the Ceylon project at Red Hat. He is the creator of Hibernate, a popular object/relational persistence solution for Java, and the Seam Framework, an application framework for enterprise Java. He's contributed to the Java Community Process as JBoss and then Red Hat representative for the EJB and JPA specifications and as lead of the CDI specification.
Now he works full time on Ceylon, polishing the language specification, developing the compiler frontend, and thinking about the SDK and future of the platform. He's still a fan of Java, and of other languages, especially Smalltalk, Python, and ML.
Rapid Development with Ruby/JRuby and Railselliando dias
This document discusses Ruby and Rails development. It provides an overview of Ruby as a scripting language created by Yukihiro Matsumoto in 1993 with a focus on readability. Key aspects of Ruby covered include conventions, classes, symbols, closures, duck typing, and metaprogramming. The document also discusses how JRuby allows Java developers to use Ruby on the JVM and benefit from Ruby tools like Rails.
Duck typing refers to the concept that in a dynamically typed language like Ruby, an object's suitability is based on whether it implements the expected methods or behaviors, rather than its class or type. So if an object "walks like a duck and quacks like a duck," it can be treated like a duck even if it's not an actual Duck class instance.
This document provides an introduction and overview of the Ruby programming language. It discusses Ruby's history and creator Yukihiro Matsumoto. It demonstrates basic Ruby syntax like integers, floats, strings, variables, methods, and flow control. It also covers Ruby classes, objects, and the interactive Ruby shell IRB. The document then introduces common Ruby libraries and frameworks like Sinatra for web development and Nokogiri for parsing HTML/XML. It includes code examples to demonstrate basic usage.
It's happened to all of us: we ran away from some conversation or library because it kept on using those "weird" phrases. You know, like "type classes", "semigroups", "monoids", "applicatives". Yikes! They all seem so academic, so pointlessly detached from real-world problems. But then again, given how frequently we run into them in functional programming, are they REALLY irrelevant, or do they have real-world applications? This talk will go beyond giving you raw definitions of these terms, and show you real-world motivations behind the concepts. By attending, you'll be able to keep your skills relevant to an ever-changing industry, confuse your significant other ("You know, honey, a monad is just a monoid in the category of endofunctors!"), and sound extra smart on the next job interview!
Coffeescript: No really, it's just JavascriptBrian Mann
This document provides an overview of CoffeeScript, which is a programming language that compiles to JavaScript. It discusses CoffeeScript's syntax and features like removing semicolons, optional parentheses and curly braces, simplified object and function syntax, string interpolation, and destructuring assignment. The presentation covers CoffeeScript's flow control structures like if/else and unless, operators like is and isnt, existential operators, and comprehensions. It also addresses criticisms of CoffeeScript like performance and debugging challenges, and argues that productivity gains outweigh these issues. In the end, CoffeeScript is described as a way to expose the good parts of JavaScript and enhance readability and productivity while compiling directly to plain JavaScript.
1. The document discusses JavaScript concepts like scope, closures, context, and object-oriented programming techniques like constructors, methods, and inheritance.
2. It provides examples of how to create public and private methods, and "privileged" methods that have access to private values and methods.
3. The document shows how to dynamically generate classes at runtime based on properties passed to a constructor using these JavaScript concepts.
This document provides an introduction and overview of the Ruby programming language. It discusses installing Ruby on Windows and Linux/OSX systems, running Ruby scripts, using the interactive Ruby shell (IRB), creating and running .rb files. It also covers key Ruby concepts like classes and objects, duck typing, attributes and accessors, arrays, hashes, symbols, blocks and iterators.
Everything is Permitted: Extending Built-insAndrew Dupont
Adding methods to built-in objects: it’s one of JavaScript’s most powerful features. It’s also a great way to offend the sensibilities of your colleagues. We all hear that it’s irresponsible, that it’s sloppy, that it’s flat-out bad practice and should be avoided.
I’m tired of this one-sided battle. In this talk, I’m going to push back against whatever blog post you read that told you that extending built-ins was unconditionally and universally bad. I’m gonna go all Howard Beale on your asses.
Ruby is a dynamically typed, object-oriented scripting language that is interpreted. It was created by Yukihiro Matsumoto in 1995 and influenced by Smalltalk, Perl, Lisp and Python. Some key features of Ruby include being garbage collected, supporting inheritance and mixins, and being suitable for meta-programming. It gained popularity through frameworks like Ruby on Rails. The core data types in Ruby are implemented as objects and include integers, floats, strings, arrays, hashes, symbols, booleans and nil. Classes and modules provide namespaces and support object-oriented programming principles like inheritance. Ruby supports functional programming patterns through blocks, procs and lambdas.
This document describes a presentation on using the Tagless Final style in the Play Framework for purely functional programming.
The presentation introduces Play Framework and how it uses Google Guice for dependency injection. It discusses separating the program from its execution using techniques like the Reader Monad and Free Monad. However, these have drawbacks like being difficult to use with multiple dependencies.
The presentation then introduces Tagless Final style as an alternative that has less boilerplate than Free Monad and allows separating program and implementation. It demonstrates a basic example of a UserRepository trait and implementation.
The rest of the agenda covers practicing Tagless Final style in the Play Framework, discussing its advantages but also that it is not a silver bullet
This document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim motions and modes like Normal mode, Insert mode, and Visual mode to efficiently edit code. It also covers Vim features like syntax highlighting, custom syntax files, key mappings, and text objects that are useful for Perl. The document advocates that Vim is a powerful editor rather than an IDE and highlights how it can save significant time compared to less efficient editing methods.
Discussing language constructs with fellow developers in the context of solving a particular problem is something we do routinely. While most such conversations are productive and useful, a fair portion degenerate into angry brawls. A pattern we've observed in the latter situation is that a surprising number of times the argument is that "Why shouldn't I use language feature X to achieve objective Y- after all, the language supports X."
In this talk Aakash and Niranjan walk through a few features of the Ruby language which when used wisely allows programmers to solve problems elegantly but if they are used without caution can lead to bad code.
Ruby was created in 1995 by Yukihiro Matsumoto who wanted a scripting language more powerful than Perl and more object-oriented than Python. It draws inspiration from Perl for its syntax, Smalltalk for its object model, and Lisp for its meta-programming capabilities. Ruby is an interpreted, object-oriented language with dynamic typing where everything is an object and supports features like classes, modules, blocks and iterators. The Ruby on Rails framework further popularized Ruby for web development.
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM LanguageCodeFest
This document introduces Fantom, a statically typed programming language that runs on the JVM. It highlights Fantom's features that improve developer productivity over Java such as type inference, literals, closures, and mixins. It also discusses Fantom's safety features like nullable types and const classes/fields. The document provides examples of Fantom's support for object-oriented, functional, declarative, and dynamic programming paradigms. It lists companies and projects using Fantom including X5, F4 IDE, Terminals, and Kloudo.com. The document encourages readers to get involved with the Fantom community and language.
The document discusses CoffeeScript, a programming language that compiles to JavaScript. It was designed to have cleaner syntax than JavaScript and be easier to read and write. CoffeeScript code compiles directly to equivalent JavaScript code. Using CoffeeScript can help developers write less code that is more readable and maintainable while still being able to use existing JavaScript libraries. The document provides examples of CoffeeScript code and the equivalent JavaScript output. It also discusses how to use CoffeeScript with Ruby on Rails projects by adding the Barista gem.
Slides from my PyCon 2011 talk, "Exhibition of Atrocity," a confessional of my sins against the Python programming language.
Abstract: http://us.pycon.org/2011/schedule/presentations/138/
Video: http://www.pycon.tv/#/video/49
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
The slide to the Java User Group Talk Exploring Ceylon from Gavin King.
Abstrakt:
Ceylon is a new programming language designed for writing large programs in teams. The language emphasizes readability, modularity, typesafety, and tooling. Ceylon programs execute on Java and JavaScript virtual machines. In this session, Gavin King will talk about the ideas behind Ceylon and demonstrate the language, its type system, its module architecture, and its IDE.
Speaker:
Gavin King leads the Ceylon project at Red Hat. He is the creator of Hibernate, a popular object/relational persistence solution for Java, and the Seam Framework, an application framework for enterprise Java. He's contributed to the Java Community Process as JBoss and then Red Hat representative for the EJB and JPA specifications and as lead of the CDI specification.
Now he works full time on Ceylon, polishing the language specification, developing the compiler frontend, and thinking about the SDK and future of the platform. He's still a fan of Java, and of other languages, especially Smalltalk, Python, and ML.
Rapid Development with Ruby/JRuby and Railselliando dias
This document discusses Ruby and Rails development. It provides an overview of Ruby as a scripting language created by Yukihiro Matsumoto in 1993 with a focus on readability. Key aspects of Ruby covered include conventions, classes, symbols, closures, duck typing, and metaprogramming. The document also discusses how JRuby allows Java developers to use Ruby on the JVM and benefit from Ruby tools like Rails.
Duck typing refers to the concept that in a dynamically typed language like Ruby, an object's suitability is based on whether it implements the expected methods or behaviors, rather than its class or type. So if an object "walks like a duck and quacks like a duck," it can be treated like a duck even if it's not an actual Duck class instance.
This document provides an introduction and overview of the Ruby programming language. It discusses Ruby's history and creator Yukihiro Matsumoto. It demonstrates basic Ruby syntax like integers, floats, strings, variables, methods, and flow control. It also covers Ruby classes, objects, and the interactive Ruby shell IRB. The document then introduces common Ruby libraries and frameworks like Sinatra for web development and Nokogiri for parsing HTML/XML. It includes code examples to demonstrate basic usage.
It's happened to all of us: we ran away from some conversation or library because it kept on using those "weird" phrases. You know, like "type classes", "semigroups", "monoids", "applicatives". Yikes! They all seem so academic, so pointlessly detached from real-world problems. But then again, given how frequently we run into them in functional programming, are they REALLY irrelevant, or do they have real-world applications? This talk will go beyond giving you raw definitions of these terms, and show you real-world motivations behind the concepts. By attending, you'll be able to keep your skills relevant to an ever-changing industry, confuse your significant other ("You know, honey, a monad is just a monoid in the category of endofunctors!"), and sound extra smart on the next job interview!
Coffeescript: No really, it's just JavascriptBrian Mann
This document provides an overview of CoffeeScript, which is a programming language that compiles to JavaScript. It discusses CoffeeScript's syntax and features like removing semicolons, optional parentheses and curly braces, simplified object and function syntax, string interpolation, and destructuring assignment. The presentation covers CoffeeScript's flow control structures like if/else and unless, operators like is and isnt, existential operators, and comprehensions. It also addresses criticisms of CoffeeScript like performance and debugging challenges, and argues that productivity gains outweigh these issues. In the end, CoffeeScript is described as a way to expose the good parts of JavaScript and enhance readability and productivity while compiling directly to plain JavaScript.
1. The document discusses JavaScript concepts like scope, closures, context, and object-oriented programming techniques like constructors, methods, and inheritance.
2. It provides examples of how to create public and private methods, and "privileged" methods that have access to private values and methods.
3. The document shows how to dynamically generate classes at runtime based on properties passed to a constructor using these JavaScript concepts.
This document provides an introduction and overview of the Ruby programming language. It discusses installing Ruby on Windows and Linux/OSX systems, running Ruby scripts, using the interactive Ruby shell (IRB), creating and running .rb files. It also covers key Ruby concepts like classes and objects, duck typing, attributes and accessors, arrays, hashes, symbols, blocks and iterators.
Everything is Permitted: Extending Built-insAndrew Dupont
Adding methods to built-in objects: it’s one of JavaScript’s most powerful features. It’s also a great way to offend the sensibilities of your colleagues. We all hear that it’s irresponsible, that it’s sloppy, that it’s flat-out bad practice and should be avoided.
I’m tired of this one-sided battle. In this talk, I’m going to push back against whatever blog post you read that told you that extending built-ins was unconditionally and universally bad. I’m gonna go all Howard Beale on your asses.
Ruby is a dynamically typed, object-oriented scripting language that is interpreted. It was created by Yukihiro Matsumoto in 1995 and influenced by Smalltalk, Perl, Lisp and Python. Some key features of Ruby include being garbage collected, supporting inheritance and mixins, and being suitable for meta-programming. It gained popularity through frameworks like Ruby on Rails. The core data types in Ruby are implemented as objects and include integers, floats, strings, arrays, hashes, symbols, booleans and nil. Classes and modules provide namespaces and support object-oriented programming principles like inheritance. Ruby supports functional programming patterns through blocks, procs and lambdas.
This document describes a presentation on using the Tagless Final style in the Play Framework for purely functional programming.
The presentation introduces Play Framework and how it uses Google Guice for dependency injection. It discusses separating the program from its execution using techniques like the Reader Monad and Free Monad. However, these have drawbacks like being difficult to use with multiple dependencies.
The presentation then introduces Tagless Final style as an alternative that has less boilerplate than Free Monad and allows separating program and implementation. It demonstrates a basic example of a UserRepository trait and implementation.
The rest of the agenda covers practicing Tagless Final style in the Play Framework, discussing its advantages but also that it is not a silver bullet
This document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim motions and modes like Normal mode, Insert mode, and Visual mode to efficiently edit code. It also covers Vim features like syntax highlighting, custom syntax files, key mappings, and text objects that are useful for Perl. The document advocates that Vim is a powerful editor rather than an IDE and highlights how it can save significant time compared to less efficient editing methods.
Discussing language constructs with fellow developers in the context of solving a particular problem is something we do routinely. While most such conversations are productive and useful, a fair portion degenerate into angry brawls. A pattern we've observed in the latter situation is that a surprising number of times the argument is that "Why shouldn't I use language feature X to achieve objective Y- after all, the language supports X."
In this talk Aakash and Niranjan walk through a few features of the Ruby language which when used wisely allows programmers to solve problems elegantly but if they are used without caution can lead to bad code.
There are many things that make Ruby a great language, but above all else, the beautiful and friendly syntax. A perfect exemplar of this is the case statement: case enables a flexible method of dispatching on an object that is both natural and intuitive. But case can't do it alone. No, it requires the help of it's little-known and under-appreciated sidekick the === (threequals) operator.
In this talk we'll dive into this fascinating corner of the Ruby language and see what trouble we can cause with the humble threequals. We'll go over the basics of how it interacts with case, and then go into some tips and tricks for making the most of this useful bit of syntax, and ultimately create a little pattern matching mini-language as a demonstration.
The document compares and contrasts the Java and C# programming languages. It summarizes that Java is not fully object-oriented as it uses primitive types, while C# makes all types objects. It also discusses various language features introduced over time, showing that C# often introduced useful features earlier than Java, such as generics and LINQ. The document provides code examples to demonstrate how tasks can be expressed more declaratively and concisely in C# compared to Java.
Crystal is a compiled language that aims to provide Ruby-like syntax with static typing. It compiles to native code, allowing for performance comparable to C/C++. Crystal uses LLVM as a backend, providing type inference, concurrency support, bindings to native libraries, and metaprogramming capabilities. The language is still in active development but has growing adoption, with over 1500 libraries and 80 sponsors supporting continued development.
Gisting is an implementation of Google\'s MapReduce framework for processing and extracting useful information from very large data sets. At the time of this writing, the code is available for PREVIEW at http://github.com/mchung/gisting. I am currently working to release this framework for general usage.
Ruby provides various ways to define and manipulate methods. Methods can be defined on classes, objects, and singleton classes. Singleton classes allow defining methods that are only available to a specific object. Ruby also supports currying methods to return procs that can later be called. Methods can be aliased, undefined, or dynamically defined/manipulated at runtime using techniques like eval, instance_eval, and reflection. Classes in Ruby are also objects that can have singleton classes and methods defined on them.
This document provides information about the Ruby programming language, including its history, implementations, features, and uses. It notes that Ruby was created in 1993 by Yukihiro "Matz" Matsumoto and first released in 1995. It describes Ruby as a dynamic, reflective, object-oriented scripting language that is interpreted, not compiled.
This document provides information about the Ruby programming language, including its history, implementations, features, and uses. It notes that Ruby was created by Yukihiro "Matz" Matsumoto in 1993 and first released in 1995. It describes Ruby as a dynamic, reflective, object-oriented scripting language that is interpreted, not compiled.
This document provides information about the Ruby programming language, including its history, implementations, features, and uses. It notes that Ruby was created by Yukihiro "Matz" Matsumoto in 1993 and first released in 1995. It describes Ruby as a dynamic, reflective, object-oriented scripting language that is interpreted, not compiled.
Ruby parsing tools include Regexp, Rex, PEG parsers like Treetop and Citrus, the Ripper parser introduced in Ruby 1.9, Bootstrap for bootstrapping Ruby, M17N for multilingual support, ERB for embedded Ruby, and Racc for parser generation. Ripper provides a way to parse and inspect Ruby code and handles syntax errors by raising exceptions with the offending source code and message. The Ruby scanner handles different types of literals and operators when parsing code for Ripper.
Making JavaScript Libraries More ApproachablePamela Fox
A talk given at NotConf in Phoenix, Texas in 2012.
(Alternative title: Why nested ternary operators make me want to kick inanimate objects in the nuts.)
This document provides an introduction to jRuby, which allows Ruby code to be run on the Java Virtual Machine. It discusses the history and creator of Ruby, Yukihiro "Matz" Matsumoto, and his goals for the language. It then provides a primer on Ruby syntax including booleans, strings, numbers, arrays, hashes, symbols, and classes. It demonstrates how Ruby code can interact with Java code when using jRuby, such as calling Java classes and methods from Ruby. It also discusses metaprogramming in Ruby and how jRuby enables cross-platform GUI development using Java libraries.
This document provides an overview of mocks and stubs in testing, using Ruby and RSpec examples. It establishes common terminology around mock objects, shows appropriate uses of mocks such as defining interfaces and simulating situations, and demonstrates abuses such as modifying the subject under test and creating "mock trainwrecks" that tie specs too tightly to implementation details. The goal is to understand best practices for using mocks to write clear, maintainable tests.
The document discusses object-oriented programming in Ruby. It introduces some key concepts in OOP like classes, objects, identity, state, and behavior. It also covers Ruby-specific paradigms like modules and mixins. Some common design patterns are mentioned like singleton, iterator, and decorator. The document provides examples to illustrate concepts like inheritance, polymorphism, and visibility in modules.
This document discusses playfulness in the workplace and how it relates to the Ruby programming language. It begins by thanking the organizers and hosts for the event. It then highlights some Ruby libraries created by the host city's Ruby community. The document goes on to discuss reasons for using Ruby at work, including dealing with data formats, scripting other software, sharing code with coworkers, and deploying software to customers. It provides examples using Ruby libraries and tools like Parslet, FFI, ChunkyPNG, and WinGui to parse data formats, control the mouse through its API, read PNG files, and click on points on the screen. The overall message is that Ruby can be used playfully to get tasks done at
The document discusses how RSpec achieves "zero monkey patching mode" in version 3.0. It describes how RSpec previously extensively used monkey patching but has worked to reduce this in recent versions. It details how RSpec loads spec files, builds example groups and hierarchies, runs examples, and makes expectations without monkey patching core objects or classes. Key aspects covered include the rspec executable, loading files, building example groups, running examples, and the expect-based syntax.
This document summarizes a talk given by Ian Dees on writing your own JVM compiler. The talk discusses three main reasons why someone may want to write their own compiler: a hardware background, a computer science background, or following a self-made path of learning computer science topics. It then previews the fictional Thnad programming language that will be used to demonstrate creating a compiler. The talk outlines the main stages of creating a compiler: parsing, transforming, and emitting bytecode. Various Ruby tools like Parslet and BiteScript that will be used are also introduced.
Attributes Unwrapped: Lessons under the surface of active record.toster
Ведущий разработчик Ruby on Rails (Rails Core member) Джон Лейтон не так давно работал над совершенствованием реализации работы с атрибутами в Active Record. Он расскажет о своем опыте работы над важной для производительности областью Rails, даст советы и расскажет о техниках, которые могут быть применены к собственным приложениям слушателей.
Говоря о будущем, Джон также расскажет о своих идеях по изменению API работы с атрибутами в лучшую сторону; эти изменения могут появиться в Rails 4.0.
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.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
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.
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
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
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!
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
A Comprehensive Guide to DeFi Development Services in 2024Intelisync
DeFi represents a paradigm shift in the financial industry. Instead of relying on traditional, centralized institutions like banks, DeFi leverages blockchain technology to create a decentralized network of financial services. This means that financial transactions can occur directly between parties, without intermediaries, using smart contracts on platforms like Ethereum.
In 2024, we are witnessing an explosion of new DeFi projects and protocols, each pushing the boundaries of what’s possible in finance.
In summary, DeFi in 2024 is not just a trend; it’s a revolution that democratizes finance, enhances security and transparency, and fosters continuous innovation. As we proceed through this presentation, we'll explore the various components and services of DeFi in detail, shedding light on how they are transforming the financial landscape.
At Intelisync, we specialize in providing comprehensive DeFi development services tailored to meet the unique needs of our clients. From smart contract development to dApp creation and security audits, we ensure that your DeFi project is built with innovation, security, and scalability in mind. Trust Intelisync to guide you through the intricate landscape of decentralized finance and unlock the full potential of blockchain technology.
Ready to take your DeFi project to the next level? Partner with Intelisync for expert DeFi development services today!
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
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
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.
10. Question
Have you ever experienced *Spec?
*Spec ?
11. RSpec example:
describe "A new chess board" do
before(:each) do
@board = Chess::Board.new
end
it "should have 32 pieces" do
@board.should have(32).pieces
end
end
D. Chelimsky. The RSpec Book
Section 13.7 Generated Descriptions
12. RSpec example:
describe "A new chess board" do
before(:each) do
@board = Chess::Board.new
end
it "should have 32 pieces" do
@board.should have(32).pieces
end
end
D. Chelimsky. The RSpec Book
Section 13.7 Generated Descriptions
13. RSpec example:
$ rspec -fd board_spec.rb
(Output is...)
A new chess board
should have 32 pieces
D. Chelimsky. The RSpec Book
Section 13.7 Generated Descriptions
25. Uncle Bob
Complex fulcrumPoint = Complex.FromRealNumber(23.0);
is generally better than
Complex fulcrumPoint = new Complex(23.0);
Consider enforcing their use by making the corresponding constructors private.
( )
28. Ruby Example: name 1
ex1
class Person
attr_accessor :name
def initialize(name = nil)
@name = name
end
end
shimada = Person.new(“Shimada”)
if shimada.name.split(//)[0] == “S”
puts “Match”
end
29. Ruby Example: name 1
ex2
class Person
attr_accessor :name
def initialize(name = nil)
@name = name
end
def has_a_name_that_begins_with?(expected)
@name.split(//)[0] == expected
end
end
shimada = Person.new(“Shimada”)
if shimada.has_a_name_that_begins_with?(“S”)
puts “Match”
end
30. Ruby Example: name 1
ex3
class Person
attr_accessor :name
def initialize(name = nil)
@name = name
end
def has_a_name_that_begins_with?(expected)
@name.split(//)[0] == expected
end
def method_missing(m, *args, &block)
if m.to_s =~ /has_(a|the)_name_(that|which)_begins_with?/
has_a_name_that_begins_with?(args)
else
super
end
end
end
shimada = Person.new(“Shimada”)
puts “Match” if shimada.has_a_name_that_begins_with?(“S”)
puts “Match” if shimada.has_the_name_that_begins_with?(“S”)
puts “Match” if shimada.has_a_name_which_begins_with?(“S”)
puts “Match” if shimada.has_the_name_which_begins_with?(“S”)
31. Ruby Example: name 1
ex4 name String
has_(a|the)_(.+)_(which|that)_begins_with?
Dynamic setter
undef Singleton Method
class Person
def initialize(args)
args.each do |key, value|
self.class.send(:attr_accessor, :"#{key}") unless instance_variables.include?(:"@#{key}")
instance_variable_set(:"@#{key}", value)
end
end
def self.undef_has_a_var_which_begins_with(var)
method_name = "has_a_#{var}_which_begins_with?"
send("undef_method", method_name) if method_defined? method_name
end
def self.define_has_a_var_which_begins_with(var)
method_name = "has_a_#{var}_which_begins_with?"
define_method(method_name) do |expectation|
value = instance_variable_get(:"@#{var}")
if value.is_a?(String)
value.split(//)[0].downcase == expectation.downcase
else
self.class.undef_has_a_var_which_begins_with(var)
method_missing(method_name.to_sym)
end
end
end
def method_missing(m, *args, &block)
if m.to_s =~ /has_(a|the)_(.+)_(which|that)_begins_with?/ &&
instance_variables.include?(:"@#{Regexp.last_match[2]}") &&
instance_variable_get(:"@#{Regexp.last_match[2]}").is_a?(String)
var_name = Regexp.last_match[2]
self.class.define_has_a_var_which_begins_with(var_name)
send("has_a_#{var_name}_which_begins_with?".to_sym, *args, &block)
else
super(m, *args, &block)
end
end
end
#### sample #####
shimada = Person.new(:name => "Shimada", :age => 18, :sex => :half, :fuga => "bababa")
p shimada.has_a_name_which_begins_with?("S") ? "Good" : "Suck"
p shimada.has_the_name_which_begins_with?("S") ? "Good" : "Suck"
shimada.name = 5
p shimada.has_the_name_which_begins_with?("5") ? "Good" : "Suck" #=> undefined method
34. is does was did
module Kernel
def is(expected)
expected
end
alias_method :does, :is
alias_method :was, :is
alias_method :were, :is
alias_method :did, :is
# alias_method :do, :is × do
end
is air_plane.created_by?(bowing)
does [1,2,3].include?
is he.eligible_to_get?(bonus)
does [1,2,3].include?
is "h".included_in?("hello")
is she, nancy # ?
35. Conclusion & Impression
• Spec
•
•
• Receiver
Array#sort
• Ruby Standard Library if obj.instance_of?(exp) be
(Is Object#is Is#method_missing
self return...)
•
•
•