This talk covers several techniques for extending Ruby programs using C and C++. Examples are shown for foreign function interface techniques, inline native code and a gem that wraps Ruby's C API with C++ classes and templates.
Este documento describe el framework Laravel. Laravel es un framework de desarrollo web MVC escrito en PHP que ofrece funcionalidades para desarrollar aplicaciones modernas de manera fácil y segura. Utiliza la arquitectura MVC y fue creado por Taylor Otwell en 2011 bajo licencia MIT. Ofrece ventajas como reducción de costos, sintaxis clara, buena documentación y herramientas como Artisan.
Laravel es un framework para desarrollo web que utiliza el patrón MVC. Para empezar a usar Laravel, es necesario conocer herramientas como Composer, Blade, Artisan y configurar variables de entorno. También es útil familiarizarse con conceptos como namespaces, JSON y Git.
PL/SQL is Oracle's standard language for accessing and manipulating data in Oracle databases. It allows developers to integrate SQL statements with procedural constructs like variables, conditions, and loops. PL/SQL code is organized into blocks that define a declarative section for variable declarations and an executable section containing SQL and PL/SQL statements. Variables can be scalar, composite, reference, or LOB types and are declared in the declarative section before being used in the executable section.
My Beginners Perl tutorial, much abbreviated and as presented at the London Perl Workshop on Dec 1st 2007.
Also includes the section on Regular Expressions that we didn't have time for on the day.
Polymorphism refers to an object's ability to take on multiple forms. In object-oriented programming, polymorphism occurs when an entity such as a variable, function, or object can have more than one form. There are two main types of polymorphism: compile-time polymorphism (such as function and operator overloading) and runtime polymorphism (using virtual functions). Polymorphism allows programmers to work with general classes and let the runtime system handle the specific types, providing flexibility.
Single inheritance allows a subclass to inherit properties from a single parent class. The parent class is known as the base class while the subclass is known as the derived class. An example program demonstrates single inheritance by defining a base class "first" with integer properties "a" and "b", and a derived class "second" that inherits from "first" and adds an integer property "c". The program gets user input for "a" and "b", displays their values, and calculates the sum stored in "c".
Este documento describe la herencia simple y múltiple en programación orientada a objetos. Explica que la herencia simple permite que una clase herede los atributos y métodos de una superclase. Mientras que C# no permite la herencia múltiple, sí permite que clases derivadas hereden de otras clases derivadas a través de la herencia simple. También provee consejos sobre la clase Object y la invocación de constructores en herencia.
Este documento describe el framework Laravel. Laravel es un framework de desarrollo web MVC escrito en PHP que ofrece funcionalidades para desarrollar aplicaciones modernas de manera fácil y segura. Utiliza la arquitectura MVC y fue creado por Taylor Otwell en 2011 bajo licencia MIT. Ofrece ventajas como reducción de costos, sintaxis clara, buena documentación y herramientas como Artisan.
Laravel es un framework para desarrollo web que utiliza el patrón MVC. Para empezar a usar Laravel, es necesario conocer herramientas como Composer, Blade, Artisan y configurar variables de entorno. También es útil familiarizarse con conceptos como namespaces, JSON y Git.
PL/SQL is Oracle's standard language for accessing and manipulating data in Oracle databases. It allows developers to integrate SQL statements with procedural constructs like variables, conditions, and loops. PL/SQL code is organized into blocks that define a declarative section for variable declarations and an executable section containing SQL and PL/SQL statements. Variables can be scalar, composite, reference, or LOB types and are declared in the declarative section before being used in the executable section.
My Beginners Perl tutorial, much abbreviated and as presented at the London Perl Workshop on Dec 1st 2007.
Also includes the section on Regular Expressions that we didn't have time for on the day.
Polymorphism refers to an object's ability to take on multiple forms. In object-oriented programming, polymorphism occurs when an entity such as a variable, function, or object can have more than one form. There are two main types of polymorphism: compile-time polymorphism (such as function and operator overloading) and runtime polymorphism (using virtual functions). Polymorphism allows programmers to work with general classes and let the runtime system handle the specific types, providing flexibility.
Single inheritance allows a subclass to inherit properties from a single parent class. The parent class is known as the base class while the subclass is known as the derived class. An example program demonstrates single inheritance by defining a base class "first" with integer properties "a" and "b", and a derived class "second" that inherits from "first" and adds an integer property "c". The program gets user input for "a" and "b", displays their values, and calculates the sum stored in "c".
Este documento describe la herencia simple y múltiple en programación orientada a objetos. Explica que la herencia simple permite que una clase herede los atributos y métodos de una superclase. Mientras que C# no permite la herencia múltiple, sí permite que clases derivadas hereden de otras clases derivadas a través de la herencia simple. También provee consejos sobre la clase Object y la invocación de constructores en herencia.
Inheritance and polymorphism are key concepts in object-oriented programming that allow for code reuse. Inheritance allows a subclass to inherit attributes and behaviors from a superclass, while also adding its own attributes and behaviors. Polymorphism allows subclasses to override or modify inherited behaviors from the superclass. This allows subclasses to be treated as their superclass type while still maintaining their specific behaviors. The document discusses inheritance in Java including inheriting classes, the super reference, overriding and final methods/classes, abstract classes, and interfaces. It also covers polymorphism, access modifiers, and packages in Java.
Objetivo: Capacitar al estudiante para que sepa decidir la técnica de replicación más apropiada para una mejor disponibilidad y rendimiento de las operaciones sobre una base de datos.
This document discusses function overloading, inline functions, and friend functions in C++. It defines function overloading as having two or more functions with the same name but different parameters, allowing for compile-time polymorphism. Inline functions have their body inserted at call sites for faster execution. Friend functions are non-member functions that have access to private members of a class. Examples are provided to demonstrate overloaded functions, inline functions checking for prime numbers, and using a friend function to check if a number is even or odd. Important concepts and questions for discussion are also outlined.
El documento describe el lenguaje de programación Perl, incluyendo su historia, características y aplicaciones. Perl fue creado por Larry Wall en 1987 y se ha utilizado principalmente para la manipulación de textos y administración de sistemas. El lenguaje ofrece flexibilidad y portabilidad a través de características como variables escalares, arreglos, subrutinas, expresiones regulares y la capacidad de programación orientada a objetos y por módulos. Perl se ha aplicado a sistemas operativos, páginas web dinámicas y otras
Java 11 is the second LTS release after Java 8. Java 11 onwards, Oracle JDK would no longer be free for commercial use.
Agenda:
~ Java 11
~ How to download Java 11 free version
~ Important changes and information.
~ Java 11 Features and Enhancements
~ Removed Features
~ Deprecated Features
~ Migration to Java 11
This document discusses generics in .NET. It introduces generics, generic classes, interfaces, structs and methods. Generics allow defining type-safe and reusable collection classes without compromising type safety or performance. Generic classes encapsulate operations that are not specific to a data type, commonly used for collections. Generic interfaces avoid boxing/unboxing for value types. Methods can also be generic with the ability to apply constraints.
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...Kuntal Bhowmick
This document contains a 20-question multiple choice quiz on basic object-oriented programming concepts in Java. Each question is presented on an even page with possible answer options, while the corresponding solution and explanation is given on the adjacent odd page. The quiz covers fundamental topics like data types, access specifiers, inheritance, polymorphism, and more.
Dynamic method dispatch allows the determination of which version of an overridden method to execute at runtime based on the object's type. Abstract classes cannot be instantiated and can contain both abstract and concrete methods. Final methods and classes prevent inheritance and overriding.
The document discusses object oriented concepts in PHP. Some key points:
- PHP 5 introduced a complete object oriented programming model, allowing PHP programmers to code like Java and C#.
- Object oriented programming in PHP revolves around classes, which act as templates to define objects. Classes contain properties (variables) and methods (functions).
- The document provides a step-by-step process for developing an object oriented PHP application, including creating classes, instantiating objects from classes, setting and getting object properties and methods, and restricting access using modifiers.
In JavaScript, almost "everything" is an object.
-Booleans can be objects (if defined with the new keyword)
-Numbers can be objects (if defined with the new keyword)
-Strings can be objects (if defined with the new keyword)
-Dates are always objects
-Maths are always objects
-Regular expressions are always objects
-Arrays are always objects
-Functions are always objects
-Objects are always objects
Este documento explica los comandos DDL y DML del lenguaje SQL. Los comandos DDL (Data Definition Language) se usan para definir y modificar la estructura de la base de datos y incluyen CREATE, ALTER y DROP. Los comandos DML (Data Manipulation Language) se usan para manipular los datos y incluyen SELECT, UPDATE, INSERT y DELETE.
JRE , JDK and platform independent nature of JAVAMehak Tawakley
Java programming language was originally developed by Sun Microsystems which was initiated by James Gosling and released in 1995 as core component of Sun Microsystems.
JRE stands for Java Runtime Environment which is used to provide an environment at runtime.
JVM or Java Virtual Machine is the medium which compiles Java code to bytecode which gets interpreted on a different machine and hence it makes it Platform/ Operating system independent.
JDK (Java SE Development Kit) Includes a complete JRE (Java Runtime Environment) plus tools for developing, debugging, and monitoring Java applications.
El documento introduce los conceptos básicos de la programación orientada a objetos, utilizando ejemplos como una puerta y un despertador para ilustrar la diferencia entre los paradigmas de programación estructurada y orientada a objetos. Explica que en POO los programas se desarrollan creando objetos con atributos y métodos, en lugar de solo procesar datos. Además, proporciona definiciones clave como clase, objeto, instancia, atributo, método y mensaje.
The document discusses the architecture of the Linux operating system. It is composed of the kernel, shell, and application programs. The kernel manages hardware resources and provides access to them for user programs through system calls. The shell acts as the interface between the user and kernel, translating commands into actions. Application programs are executed by users to perform tasks. System calls allow processes to communicate with the kernel to access hardware resources and perform functions like opening and writing files.
This document provides an agenda and overview for a two-day PL/SQL Fundamentals training course. The agenda covers key PL/SQL concepts like language features, the DECLARE, BEGIN, and EXCEPTION clauses, explicit cursors, nested blocks, and declared subprograms. Students will learn to program with PL/SQL using a sample COMPANY database that will be set up on Oracle Database Express Edition. The course is a prerequisite for more advanced PL/SQL trainings.
This document provides an overview and instructions for using Oracle's SQL Fundamentals II course. It discusses copyright and usage restrictions, outlines the course objectives and prerequisites. It also lists additional resources for SQL and describes the HR schema used in examples.
This document is the first lesson in a C# for beginners course. It introduces keywords, identifiers, and naming conventions in C#. Keywords are predefined reserved words with special meaning, and C# has 79 keywords written in lowercase. Identifiers are used to identify variables, methods, classes, and other user-defined items. Identifiers must begin with a letter or underscore and can include letters, digits, and underscores but no spaces or other symbols. There are also naming conventions for identifiers, including camelCase, PascalCase, and prefixing with an underscore.
Using subqueries allows you to solve complex queries by executing a subquery first to help filter or provide information for the main query. There are different types of subqueries - single-row subqueries that return one row and use single-row operators like =, >, and multiple-row subqueries that return multiple rows and use operators like IN, ANY, ALL. Proper syntax and understanding when to use different types of subqueries is important to get the correct results.
Inheritance and polymorphism are key concepts in object-oriented programming that allow for code reuse. Inheritance allows a subclass to inherit attributes and behaviors from a superclass, while also adding its own attributes and behaviors. Polymorphism allows subclasses to override or modify inherited behaviors from the superclass. This allows subclasses to be treated as their superclass type while still maintaining their specific behaviors. The document discusses inheritance in Java including inheriting classes, the super reference, overriding and final methods/classes, abstract classes, and interfaces. It also covers polymorphism, access modifiers, and packages in Java.
Objetivo: Capacitar al estudiante para que sepa decidir la técnica de replicación más apropiada para una mejor disponibilidad y rendimiento de las operaciones sobre una base de datos.
This document discusses function overloading, inline functions, and friend functions in C++. It defines function overloading as having two or more functions with the same name but different parameters, allowing for compile-time polymorphism. Inline functions have their body inserted at call sites for faster execution. Friend functions are non-member functions that have access to private members of a class. Examples are provided to demonstrate overloaded functions, inline functions checking for prime numbers, and using a friend function to check if a number is even or odd. Important concepts and questions for discussion are also outlined.
El documento describe el lenguaje de programación Perl, incluyendo su historia, características y aplicaciones. Perl fue creado por Larry Wall en 1987 y se ha utilizado principalmente para la manipulación de textos y administración de sistemas. El lenguaje ofrece flexibilidad y portabilidad a través de características como variables escalares, arreglos, subrutinas, expresiones regulares y la capacidad de programación orientada a objetos y por módulos. Perl se ha aplicado a sistemas operativos, páginas web dinámicas y otras
Java 11 is the second LTS release after Java 8. Java 11 onwards, Oracle JDK would no longer be free for commercial use.
Agenda:
~ Java 11
~ How to download Java 11 free version
~ Important changes and information.
~ Java 11 Features and Enhancements
~ Removed Features
~ Deprecated Features
~ Migration to Java 11
This document discusses generics in .NET. It introduces generics, generic classes, interfaces, structs and methods. Generics allow defining type-safe and reusable collection classes without compromising type safety or performance. Generic classes encapsulate operations that are not specific to a data type, commonly used for collections. Generic interfaces avoid boxing/unboxing for value types. Methods can also be generic with the ability to apply constraints.
Multiple Choice Questions on JAVA (object oriented programming) bank 2 -- bas...Kuntal Bhowmick
This document contains a 20-question multiple choice quiz on basic object-oriented programming concepts in Java. Each question is presented on an even page with possible answer options, while the corresponding solution and explanation is given on the adjacent odd page. The quiz covers fundamental topics like data types, access specifiers, inheritance, polymorphism, and more.
Dynamic method dispatch allows the determination of which version of an overridden method to execute at runtime based on the object's type. Abstract classes cannot be instantiated and can contain both abstract and concrete methods. Final methods and classes prevent inheritance and overriding.
The document discusses object oriented concepts in PHP. Some key points:
- PHP 5 introduced a complete object oriented programming model, allowing PHP programmers to code like Java and C#.
- Object oriented programming in PHP revolves around classes, which act as templates to define objects. Classes contain properties (variables) and methods (functions).
- The document provides a step-by-step process for developing an object oriented PHP application, including creating classes, instantiating objects from classes, setting and getting object properties and methods, and restricting access using modifiers.
In JavaScript, almost "everything" is an object.
-Booleans can be objects (if defined with the new keyword)
-Numbers can be objects (if defined with the new keyword)
-Strings can be objects (if defined with the new keyword)
-Dates are always objects
-Maths are always objects
-Regular expressions are always objects
-Arrays are always objects
-Functions are always objects
-Objects are always objects
Este documento explica los comandos DDL y DML del lenguaje SQL. Los comandos DDL (Data Definition Language) se usan para definir y modificar la estructura de la base de datos y incluyen CREATE, ALTER y DROP. Los comandos DML (Data Manipulation Language) se usan para manipular los datos y incluyen SELECT, UPDATE, INSERT y DELETE.
JRE , JDK and platform independent nature of JAVAMehak Tawakley
Java programming language was originally developed by Sun Microsystems which was initiated by James Gosling and released in 1995 as core component of Sun Microsystems.
JRE stands for Java Runtime Environment which is used to provide an environment at runtime.
JVM or Java Virtual Machine is the medium which compiles Java code to bytecode which gets interpreted on a different machine and hence it makes it Platform/ Operating system independent.
JDK (Java SE Development Kit) Includes a complete JRE (Java Runtime Environment) plus tools for developing, debugging, and monitoring Java applications.
El documento introduce los conceptos básicos de la programación orientada a objetos, utilizando ejemplos como una puerta y un despertador para ilustrar la diferencia entre los paradigmas de programación estructurada y orientada a objetos. Explica que en POO los programas se desarrollan creando objetos con atributos y métodos, en lugar de solo procesar datos. Además, proporciona definiciones clave como clase, objeto, instancia, atributo, método y mensaje.
The document discusses the architecture of the Linux operating system. It is composed of the kernel, shell, and application programs. The kernel manages hardware resources and provides access to them for user programs through system calls. The shell acts as the interface between the user and kernel, translating commands into actions. Application programs are executed by users to perform tasks. System calls allow processes to communicate with the kernel to access hardware resources and perform functions like opening and writing files.
This document provides an agenda and overview for a two-day PL/SQL Fundamentals training course. The agenda covers key PL/SQL concepts like language features, the DECLARE, BEGIN, and EXCEPTION clauses, explicit cursors, nested blocks, and declared subprograms. Students will learn to program with PL/SQL using a sample COMPANY database that will be set up on Oracle Database Express Edition. The course is a prerequisite for more advanced PL/SQL trainings.
This document provides an overview and instructions for using Oracle's SQL Fundamentals II course. It discusses copyright and usage restrictions, outlines the course objectives and prerequisites. It also lists additional resources for SQL and describes the HR schema used in examples.
This document is the first lesson in a C# for beginners course. It introduces keywords, identifiers, and naming conventions in C#. Keywords are predefined reserved words with special meaning, and C# has 79 keywords written in lowercase. Identifiers are used to identify variables, methods, classes, and other user-defined items. Identifiers must begin with a letter or underscore and can include letters, digits, and underscores but no spaces or other symbols. There are also naming conventions for identifiers, including camelCase, PascalCase, and prefixing with an underscore.
Using subqueries allows you to solve complex queries by executing a subquery first to help filter or provide information for the main query. There are different types of subqueries - single-row subqueries that return one row and use single-row operators like =, >, and multiple-row subqueries that return multiple rows and use operators like IN, ANY, ALL. Proper syntax and understanding when to use different types of subqueries is important to get the correct results.
Introduction to Ruby Native Extensions and Foreign Function InterfaceOleksii Sukhovii
Native extensions allow Ruby code to directly interface with external C libraries for improved performance. They are C code compiled as Ruby gems that convert between Ruby and C data types. While faster, native extensions require C expertise and careful memory management. Alternatives like Ruby Inline, FFI and Fiddle provide safer interfaces but introduce overhead. For high performance needs with minimal lines of C code, inline is best; FFI performs well and is easy to use; Fiddle is simplest but slower. Native extensions remain the highest performing approach when performance is critical.
RubyCocoa allows Ruby scripts to access and control Objective-C objects. It automatically creates Ruby proxy objects that are bridged to Objective-C classes, forwarding Ruby messages to instances of Objective-C classes. This allows mixing Ruby and Objective-C in the same source files. RubyCocoa is officially supported by Apple and supports key Cocoa features. To use it, one imports the RubyCocoa framework, subclasses NSObject in Ruby, and connects Ruby controllers to outlets and actions in Interface Builder. A demo showed controlling a Lego Mindstorms NXT robot via Bluetooth using the ruby-nxt gem.
RubyCocoa allows Ruby scripts to access and control Objective-C objects. It automatically creates Ruby proxy objects that are bridged to Objective-C classes, forwarding Ruby messages to instances of Objective-C classes. This allows Ruby and Objective-C code to be mixed in the same source files. RubyCocoa is supported by Apple and integrates with Xcode, providing full Cocoa support. To use RubyCocoa, one imports the OSX module, subclasses NSObject, connects outlets and actions, and calls Objective-C methods.
The talk focuses on the processes and requirements to ship a software, which was written with MacRuby, to the end user. I present libraries and tools, that are helpful for this purpose and show how to use them.
C# is an object-oriented programming language that is part of Microsoft's .NET framework. It can be used to create web applications, Windows applications, web services, and more. Some key features of C# include being modern, object-oriented, type-safe, and providing cross-platform interoperability through the .NET runtime. It is similar to but also has differences from languages like C++ and Java.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files (.cpp) containing definitions and header files (.h) containing declarations.
- The main() function is where execution begins. It can take arguments like the number of command line parameters and their values.
- Common elements of C++ programs include using namespaces, including header files, and defining functions like main().
- The development process involves writing code, compiling, linking, and running the executable. Integrated development environments and command line tools can be used.
- Studios provide time to work through exercises to develop C++ skills and understanding tested in exams and labs.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files (.cpp) containing definitions and header files (.h) containing declarations.
- The main() function is where execution begins. It can take arguments like the number of command line parameters and their values.
- Common elements of C++ programs include using namespaces, including header files, and defining functions like main().
- The development process involves writing code, compiling, linking, and running the executable. Integrated development environments and command line tools can be used.
- C++ classes and templates are also discussed at a high level.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- Programs go through preprocessing, compilation, linking, and execution. Development environments help manage these steps and provide tools like debugging.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- Programs go through preprocessing, compilation, linking, and execution. Development environments help manage these steps and provide tools like editors, compilers, debuggers.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- C++ code is compiled into object files then linked together into an executable program. Development environments help with building, debugging, and submitting code.
C++ programming: Basic introduction to C++.pptyp02
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- C++ code is compiled into object files then linked together with libraries to create an executable program. Development environments help with building, debugging, and submitting code.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- Programs go through preprocessing, compilation, linking, and execution. Development environments help manage these steps and provide tools like debugging.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- Programs are compiled from source code into object files, then linked together with libraries to create an executable. Development environments help with tasks like editing, compiling, debugging.
This document discusses the structure of C++ programs and the development environment. It covers:
- C++ programs are made up of source code files with .cpp extensions containing function definitions, and header files with .h extensions containing declarations.
- The main() function is where program execution begins. It can take command line arguments which are passed via the argc and argv parameters.
- Common elements of C++ programs include #include directives to import headers, namespaces like std, and output streams like cout.
- C++ code is compiled into object files then linked together into an executable program. Development environments help with building, debugging, and submitting code.
The document discusses RubyCocoa, which bridges the Ruby and Objective-C programming languages allowing Ruby code to access Cocoa frameworks, describes its history and key contributors, and provides an example of how RubyCocoa allows Ruby code to call methods on Objective-C classes similarly to how it is done in Objective-C. It also lists additional resources for learning more about RubyCocoa, Cocoa, and Objective-C.
As modern, agile architects and developers we need to master several different languages and technologies all at once to build state-of-the-art solutions and yet be 100% productive. We define our development environments using Gradle. We implement our software in Java, Kotlin or another JVM based language. We use Groovy or Scala to test our code at different layers. We construct the build pipelines for our software using a Groovy DSL or JSON. We use YAML and Python to describe the infrastructure and the deployment for our applications. We document our architectures using AsciiDoc and JRuby. Welcome to Babel!
Making the right choices in the multitude of available languages and technologies is not easy. Randomly combining every hip technology out there will surely lead into chaos. What we need is a customized, streamlined tool chain and technology stack that fits the project, your team and the customer’s ecosystem all at once. This code intense, polyglot session is an opinionated journey into the modern era of software industrialization.
Everything-as-code - A polyglot adventureQAware GmbH
Devoxx 2017, Poland: Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware).
Abstract: As modern, agile architects and developers we need to master several different languages and technologies all at once to build state-of-the-art solutions and yet be 100% productive. We define our development environments using Gradle. We implement our software in Java, Kotlin or another JVM based language. We use Groovy or Scala to test our code at different layers. We construct the build pipelines for our software using a Groovy DSL or JSON. We use YAML and Python to describe the infrastructure and the deployment for our applications. We document our architectures using AsciiDoc and JRuby. Welcome to Babel!
Making the right choices in the multitude of available languages and technologies is not easy. Randomly combining every hip technology out there will surely lead into chaos. What we need is a customized, streamlined tool chain and technology stack that fits the project, your team and the customer’s ecosystem all at once. This code intense, polyglot session is an opinionated journey into the modern era of software industrialization.
Binding Objective-C Libraries, Miguel de IcazaXamarin
This document discusses how to create bindings between Objective-C and C# code using Xamarin.iOS. It covers when to create bindings, how the binding process works, and ways to improve bindings. Key points include:
- Bindings allow existing Objective-C/C code and libraries to be consumed from C# in Xamarin.iOS apps. They map Objective-C APIs and objects to equivalent C# interfaces and classes.
- The binding process involves generating C# interfaces that map to Objective-C headers, then building a binding library that surfaces the native APIs in C#.
- Features like notifications, properties, enums and structures are discussed. Advanced topics cover improving bindings through extensions, strong
When it is all about ERP solutions, companies typically meet their needs with common ERP solutions like SAP, Oracle, and Microsoft Dynamics. These big players have demonstrated that ERP systems can be either simple or highly comprehensive. This remains true today, but there are new factors to consider, including a promising new contender in the market that’s Odoo. This blog compares Odoo ERP with traditional ERP systems and explains why many companies now see Odoo ERP as the best choice.
What are ERP Systems?
An ERP, or Enterprise Resource Planning, system provides your company with valuable information to help you make better decisions and boost your ROI. You should choose an ERP system based on your company’s specific needs. For instance, if you run a manufacturing or retail business, you will need an ERP system that efficiently manages inventory. A consulting firm, on the other hand, would benefit from an ERP system that enhances daily operations. Similarly, eCommerce stores would select an ERP system tailored to their needs.
Because different businesses have different requirements, ERP system functionalities can vary. Among the various ERP systems available, Odoo ERP is considered one of the best in the ERp market with more than 12 million global users today.
Odoo is an open-source ERP system initially designed for small to medium-sized businesses but now suitable for a wide range of companies. Odoo offers a scalable and configurable point-of-sale management solution and allows you to create customised modules for specific industries. Odoo is gaining more popularity because it is built in a way that allows easy customisation, has a user-friendly interface, and is affordable. Here, you will cover the main differences and get to know why Odoo is gaining attention despite the many other ERP systems available in the market.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
UI5con 2024 - Bring Your Own Design SystemPeter Muessig
How do you combine the OpenUI5/SAPUI5 programming model with a design system that makes its controls available as Web Components? Since OpenUI5/SAPUI5 1.120, the framework supports the integration of any Web Components. This makes it possible, for example, to natively embed own Web Components of your design system which are created with Stencil. The integration embeds the Web Components in a way that they can be used naturally in XMLViews, like with standard UI5 controls, and can be bound with data binding. Learn how you can also make use of the Web Components base class in OpenUI5/SAPUI5 to also integrate your Web Components and get inspired by the solution to generate a custom UI5 library providing the Web Components control wrappers for the native ones.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
2. Ruby essentials
What is Ruby?
Ruby is a dynamically-typed, object-oriented language
Garbage collection built into the VM
Several implementations exist
MRI – Matz's Ruby Interpreter (a.k.a. CRuby)
JRuby – JVM based implementation
Rubinius – Implemented in C++ and Ruby
Ruby libraries are typically packaged as Gems
Gems that need to use C or C++ typically do so via native
extensions
3. Ruby essentials
class Person
attr_reader :name, :age
def initialize(name, age) # constructor
@name, @age =name, age
end
def <=>(person) #the comparison operator for sorting
@age <=> person.age
end
def to_s #returns string representation of Person
"#{@name} (#{@age})"
end
end
Example code (1/2)
5. Ruby essentials
Popular gems with native extensions
• Byebug - a debugger for Ruby, that uses Ruby's TracePoint API
for execution control and the Debug Inspector API for call
stack navigation. Written as a C extension for speed.
• nokogiri - an HTML and XML parser. Uses native libraries for
speed and ensure standards compliance.
• RMagick - bindings for the ImageMagick image manipulation
library.
• sqlite3 - bindings for the SQLite3 database engine.
6. Ruby essentials
Installing gems
$ gem install <gem_name>
To install the 'ffi' gem, which we'll use in the first example:
$ gem install ffi
This gem includes native extensions, so output will look like:
Fetching: ffi-1.9.25.gem (100%)
Building native extensions. Thiscould take a while...
Successfully installed ffi-1.9.25
Parsing documentation forffi-1.9.25
Installing ridocumentation forffi-1.9.25
Done installing documentation for ffi after 27 seconds
1 gem installed
7. Options for extending Ruby
• Foreign function interface
– Technique for accessing shared libraries that follow C-style
calling convention
• Inlined C / C++ code
– Compiles native code at runtime
• Native extensions with C and C++
– Precompiled
• All example code is available at:
https://github.com/tristanpenman/ruby-cpp-examples
8. Foreign function interface
require 'ffi'
module Simon
#Include ffi functionality as a 'mixin'
extend FFI::Library
#Link with libc
ffi_lib 'c'
#Define afunction that takes astring (char *) andprints it
attach_function :says, :puts, [:string ],:int
end
Simon.says 'Hello'
simon_ffi.rb
9. Foreign function interface
Limitations
• Generally requires that code is available as a shared library on
the user's operating system
• That library needs to export an API that follow the C-style
calling convention (__cdecl)
• Link errors may occur at runtime, rather than when a gem is
first installed
• In the simple case, 'ffi' gem defines methods as belonging to a
Ruby module
– Not appropriate for exposing C++ classes in Ruby
10. Inlined C / C++ code
require 'inline'
module Simon
inline(:C) do |builder|
builder.add_compile_flags'-xc++', '-lstdc++'
builder.include '<iostream>'
builder.c_singleton '
void says(const char *str) {
std::cout <<str <<std::endl;
}'
end
end
Simon.says 'Hello'
simon_inline.rb
11. Inlined C++ code
Limitations
• Incurs runtime compile overhead
• Semantics of RubyInline gem are a bit tricky
– Moving beyond defining individual methods becomes
much more complicated
– Best documentation for this happens to 'inline.rb' in the
RubyInline source code
12. Native extensions
• Address some of the limitations of FFI and inline C++ code
techniques
• Compiled prior to runtime, but they are generally subject to
rigorous runtime requirements
• Typically implemented using the Ruby C API
• Our simple example requires two files:
– simon_native.c, which contains the implementation code
– extconf.rb, to generate a Makefile
• simon_native.c must include Init_simon_native(), which is
called by the Ruby VM to load the extension
14. Native extensions
require 'mkmf'
#Generates aMakefile tocompile simon_native.c intoa bundle
#that can be loaded intoa Ruby VM
create_makefile 'simon_native'
extconf.rb
Running 'make' should generate a bundle that can be loaded into
your Ruby program like so:
require './simon_native'
Simon.says 'Hello'
Hello
15. Native extensions
Limitations
• Requires code to be written in C
– Assumptions around considerations such as file extensions
• Uses Ruby C API, which is not terribly user friendly
• What about C++?
16. Native extensions with C++
Using the 'rice' gem
• Rice is a C++ wrapper for Ruby's C API
• Provides classes and templates that make the Ruby API easier
and safer to use
• Also provides template functions that can take an existing C++
class and make it available to Ruby code
• Minor changes to extconf.rb are required
18. Native extensions with C++
extconf.rb
require 'mkmf-rice'
#Assumes the presence ofa file named 'simon_native_rice.cpp'
create_makefile 'simon_native_rice'
19. Native extensions with C++
Wrapping C++ classes
• Say we have an existing C++ class that we want to make
accessible via Ruby
• Declared in simon.hpp:
#pragmaonce
#include <iostream>
class Simon {
void says(const char * str) {
std::cout <<str << std::endl;
}
}
21. Native extensions with C++
extconf.rb
require 'mkmf-rice' #instead of'mkmf'
create_makefile 'simon_native_rice_wrapper'
require './simon_native_rice_wrapper'
simon =Simon.new
simon.says 'Hello'
After running 'make', usage is similar to the example for the
'RubyInline' gem:
23. Resources
• IBM's Building Ruby extensions in C++ using Rice
https://www.ibm.com/developerworks/library/os-
extendruby/index.html
• Chris Lalancette's in-depth series on writing Ruby extensions
in C, which covers numerous topics:
http://clalance.blogspot.com/2011/01/writing-ruby-
extensions-in-c-part-1.html