Metaprogramming…it’s a term that may come across as abstract, nebulous, or just downright scary. In this session, we’ll break down what metaprogramming is and why it’s relevant to know. You’ll also see the tools and frameworks you can use as a .NET developer (such as Reflection, Mono, and Roslyn) to make your programs simple and elegant.
Code Reactions - An Introduction to Reactive Extensionsjasonbock
It’s typical in software development to pull data from different sources. However, in the modern world of asynchronous programs, data is being retrieved in real-time streams, akin to how developers handle events. Reactive Extensions is a library that makes it easier to code in a reactive, asynchronous, composable style. In this session, you’ll get a gentle introduction into this library and how its API works.
Extending C# with Roslyn and Code Aware LibrariesCarlo Pescio
This document discusses extending C# using code-aware libraries with Roslyn analyzers. It begins with an overview and goals, then demonstrates a simple example of an analyzer that checks type parameters for safe casts. The key aspects covered are using Roslyn's compiler API to access the syntax and semantic models, define diagnostics, and emit errors or warnings. It outlines how to set up an analyzer project and debug it. The document concludes with perspectives on how libraries can introduce "inabilities" like type constraints without changing the language.
The document describes unit tests for a PublicHomePageRedirector class that redirects requests for a course sites application. There are two test scenarios: 1) a request missing the "www" subdomain, and 2) a request from the "coursesites.blackboard.com" domain. Both scenarios create mock request and response objects, pass them to the redirector class, and assert that the response is redirected to the expected "index.html" page. The tests are run from the command line using JUnit through an Ant build script.
Java Bytecode for Discriminating Developers - JavaZone 2011Anton Arhipov
The document discusses Java bytecode and provides examples of decompiling a simple "Hello World" Java program to bytecode using the javap tool. It summarizes the structure of bytecode, including one-byte instructions, opcode taxonomy involving stack manipulation, flow control, and object models. The document demonstrates how javap can be used to disassemble a class file into bytecode instructions and interpret the constant pool references.
This is the support of a course to teach mainly Redux, and Redux with React for Java and C# programmers. It is the third part of the course to recycle programmers from desktop app programming to web app programming. This course covers from history of Redux, its origin, step by step what is a reducer, and later concepts like reducer splitting, action handling, async and many more.
You also can use repositories:
- https://github.com/drpicox/learn-redux-bytesting
- https://github.com/drpicox/learn-redux-zoo-bytesting
To improve your skills.
A simple talk about appliyng patterns in Javascript.
It focuses in both jQuery and Angular.
It explains some basics MVC, cohesion and coupling.
It also have many examples of the patterns applied.
Full examples and documentation can be found here: http://david-rodenas.com/tutorial-jspatterns-v1/
ES3-2020-06 Test Driven Development (TDD)David Rodenas
Basics of TDD. Including why? Why it is discipline. Typical Pitfalls. Kinds of TDD, and a Recipe so anyone can do testing quickly. And lots of examples.
Jasmine is a JavaScript testing framework that allows developers to write unit tests for their JavaScript code. The document discusses what Jasmine is, its features and structure. It provides examples of how to write tests using Jasmine including describing suites and specs, expectations, spies, asynchronous tests and testing jQuery code. References for learning more about Jasmine are also included.
Code Reactions - An Introduction to Reactive Extensionsjasonbock
It’s typical in software development to pull data from different sources. However, in the modern world of asynchronous programs, data is being retrieved in real-time streams, akin to how developers handle events. Reactive Extensions is a library that makes it easier to code in a reactive, asynchronous, composable style. In this session, you’ll get a gentle introduction into this library and how its API works.
Extending C# with Roslyn and Code Aware LibrariesCarlo Pescio
This document discusses extending C# using code-aware libraries with Roslyn analyzers. It begins with an overview and goals, then demonstrates a simple example of an analyzer that checks type parameters for safe casts. The key aspects covered are using Roslyn's compiler API to access the syntax and semantic models, define diagnostics, and emit errors or warnings. It outlines how to set up an analyzer project and debug it. The document concludes with perspectives on how libraries can introduce "inabilities" like type constraints without changing the language.
The document describes unit tests for a PublicHomePageRedirector class that redirects requests for a course sites application. There are two test scenarios: 1) a request missing the "www" subdomain, and 2) a request from the "coursesites.blackboard.com" domain. Both scenarios create mock request and response objects, pass them to the redirector class, and assert that the response is redirected to the expected "index.html" page. The tests are run from the command line using JUnit through an Ant build script.
Java Bytecode for Discriminating Developers - JavaZone 2011Anton Arhipov
The document discusses Java bytecode and provides examples of decompiling a simple "Hello World" Java program to bytecode using the javap tool. It summarizes the structure of bytecode, including one-byte instructions, opcode taxonomy involving stack manipulation, flow control, and object models. The document demonstrates how javap can be used to disassemble a class file into bytecode instructions and interpret the constant pool references.
This is the support of a course to teach mainly Redux, and Redux with React for Java and C# programmers. It is the third part of the course to recycle programmers from desktop app programming to web app programming. This course covers from history of Redux, its origin, step by step what is a reducer, and later concepts like reducer splitting, action handling, async and many more.
You also can use repositories:
- https://github.com/drpicox/learn-redux-bytesting
- https://github.com/drpicox/learn-redux-zoo-bytesting
To improve your skills.
A simple talk about appliyng patterns in Javascript.
It focuses in both jQuery and Angular.
It explains some basics MVC, cohesion and coupling.
It also have many examples of the patterns applied.
Full examples and documentation can be found here: http://david-rodenas.com/tutorial-jspatterns-v1/
ES3-2020-06 Test Driven Development (TDD)David Rodenas
Basics of TDD. Including why? Why it is discipline. Typical Pitfalls. Kinds of TDD, and a Recipe so anyone can do testing quickly. And lots of examples.
Jasmine is a JavaScript testing framework that allows developers to write unit tests for their JavaScript code. The document discusses what Jasmine is, its features and structure. It provides examples of how to write tests using Jasmine including describing suites and specs, expectations, spies, asynchronous tests and testing jQuery code. References for learning more about Jasmine are also included.
Writing JavaScript as a hobby and writing JavaScript as a job are two very different things. Learn some common practices for making your JavaScript friendly to a team environment.
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
The document describes 5 Java programming experiments related to database access and web applications:
1. A program that accesses a table from an MS Access database.
2. A similar program that accesses a table from a Derby database.
3. A program that implements remote method invocation using an interface.
4. A simple servlet program that outputs HTML.
5. A servlet program that connects to a Derby database and outputs records.
This document discusses PyMongo, a Python driver for MongoDB. It provides an overview of common PyMongo operations like connecting to a database, inserting and querying documents, and using GridFS for storing and retrieving files. It also covers newer PyMongo features like commands, stored JavaScript, and awareness of datetime limits. The document encourages involvement in the PyMongo open source project.
The document describes a network programming report on a Java chat application. It includes the code for a Server class that implements a threaded server to handle multiple client connections simultaneously. The server opens a port to listen for clients and spins up a new thread for each accepted connection. It then reads and writes data between the server and client over buffered input/output streams. The report notes issues with messages from one client not being visible to others and connection errors that can occur between the client and server.
After years of promoting PHPUnit I still hear it's hard to get started with unit testing. So instead of showing nice step-by-step examples on how to use PHPUnit, we're going to take an example straight from github. So I've taken the challenge to start writing tests for PHP projects that don't have unit tests in place and explain how I decide where to begin, how I approach my test strategy and how I ensure I’m covering each possible use-case (and covering the CRAP index). The goal of this presentation is to show everyone that even legacy code, spaghetti code and complex code bases can be tested. After this talk you can immediately apply my examples on your own codebase (even if it's a clean code base) and get started with testing. To follow along a basic knowledge unit testing with PHPUnit is required.
The document discusses testing techniques and principles for writing tests. It advocates for tests that are FAST, ISOLATING, REPEATABLE, SELF-VALIDATING, and TIMELY (FIRST). It also discusses the Arrange-Act-Assert (AAA) structure for tests and how to achieve high code coverage while maintaining test quality. The document notes that while code coverage is a useful metric, it does not guarantee correctness on its own. It also covers the use of test doubles like stubs, spies, mocks and fakes to replace dependencies.
2013-06-15 - Software Craftsmanship mit JavaScriptJohannes Hoppe
Entwickeln Sie Clean Code mit JavaScript. Den “Software Craftsman” zeichnen dabei Wissen, Werkzeuge und Wiederholung aus. Diese drei Grundfeste werden speziell für JavaScript beleuchtet. Lernen Sie die wichtigsten Patterns für eine stabile und wartbare Website kennen. Überprüfen Sie Ihre persönliche Werkzeugkiste für Entwicklung, Testing und Deployment. Schließen Sie Bekanntschaft mit Code Katas für JavaScript.
2013-06-24 - Software Craftsmanship with JavaScriptJohannes Hoppe
This document discusses principles of software craftsmanship including:
- Common JavaScript pitfalls like implied globals, trailing commas, and return undefined
- Best practices like avoiding globals, using module patterns for organization, and test-driven development
- Tools for JavaScript development like Jasmine for testing, RequireJS for module loading, and Visual Studio for debugging
- The process of test-driven development including writing tests, making them fail, making them pass, refactoring code, and repeating
This document discusses how JavaScript code would look if Java was written in JavaScript. It provides examples of Java-like classes and methods written in JavaScript. It also discusses JavaScript design patterns like the Module pattern and MVC frameworks. Finally, it covers topics like unit testing JavaScript with Jasmine, SVG vs Canvas for graphs, and libraries like Underscore.js and CSS frameworks.
This document summarizes PHP's magic methods. It discusses the purpose and usage of various magic methods like __construct(), __destruct(), __toString(), __get(), __set(), __isset(), __unset(), __call(), __clone(), __set_state(), __callStatic(), __sleep(), __wakeup(), __invoke(), and __autoload(). It provides examples of how each magic method works and when they are called. The document is intended to introduce developers to PHP's magic methods in about an hour and covers their basics.
The document discusses exception handling in C++. It defines synchronous and asynchronous exceptions and explains the purpose of exceptions is to detect and report exceptional circumstances so appropriate action can be taken. It describes the exception handling mechanism using try, throw, and catch keywords. It explains that exceptions can be rethrown from a catch block to propagate the exception outward. It provides examples of rethrowing an exception and creating a user-defined exception by inheriting from the standard exception class.
A lecture about type expressiveness using the Either monad in C#. It's a discussion about the problem that arises from a lack of a built-in mechanism that allows you to express that a function is likely to fail. We implement a solution to this problem and see how it allows us to write production-ready code.
Java Bytecode For Discriminating Developers - GeeCON 2011Anton Arhipov
The document discusses Java bytecode and how it is used to represent compiled Java code. It provides an overview of bytecode basics like the bytecode instruction set and taxonomy. It then gives examples of decompiling simple "Hello World" Java code and analyzing the resulting bytecode instructions. Key details like the stack-based execution model and how frames are used are also outlined.
The presentation describes how to do Oracle ATG Queries
Please find more details in my article: software-engineering-101.com/2016/07/12/atg-repository-queries
CLR Exception Handing And Memory ManagementShiny Zhu
The document discusses best practices for exception handling and memory management in .NET Framework development. It covers topics like when to throw exceptions, what data to include, catching and rethrowing exceptions, implementing the dispose pattern, and using statements. It also discusses memory management techniques like finalizers, handle collectors, and adding/removing memory pressure.
From choosing good names, writing tidy unit tests and learning to keep your code small and reusable, to understanding the single responsibility and other SOLID principles. This workshop will touch all these subjects and more in order to come to a better understanding of cleanliness in code.
Nothing is as frustrated as deploying a new release of your web application to find out functionality you had doesn't work anymore. Of course you have all your unit tests in place and you run them through your CI environment, but nothing prepared you to a failing javascript error or a link that doesn't work anymore. Welcome to User Acceptance testing or UAT. Before you start putting real people in front of your application, create macros and export them as PHPUnit test classes. Then run them in an automated way just like your unit tests and hook them into your CI. In this talk I will show you how easy it is to create Selenium macros that can be converted into PHPUnit scripts and run automatically on different virtual machines (VM's) so you can test all different browsers on a diversity of operating systems.
Relevance trilogy may dream be with you! (dec17)Woonsan Ko
Introducing new BloomReach Experience Plugins which changes the game of DREAM (Digital Relevance Experience & Agility Management), to increase productivity and business agility.
Powerful persistence layer with Google Guice & MyBatissimonetripodi
This document discusses integrating MyBatis, an object-relational mapping tool, with Google Guice for dependency injection. It describes how MyBatis is a fork of Apache iBATIS and the history of the Guice integration project. It also covers how to configure MyBatis using Guice modules, inject mappers, handle transactions with annotations, support various data sources, and provide JDBC helpers.
Writing JavaScript as a hobby and writing JavaScript as a job are two very different things. Learn some common practices for making your JavaScript friendly to a team environment.
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
The document describes 5 Java programming experiments related to database access and web applications:
1. A program that accesses a table from an MS Access database.
2. A similar program that accesses a table from a Derby database.
3. A program that implements remote method invocation using an interface.
4. A simple servlet program that outputs HTML.
5. A servlet program that connects to a Derby database and outputs records.
This document discusses PyMongo, a Python driver for MongoDB. It provides an overview of common PyMongo operations like connecting to a database, inserting and querying documents, and using GridFS for storing and retrieving files. It also covers newer PyMongo features like commands, stored JavaScript, and awareness of datetime limits. The document encourages involvement in the PyMongo open source project.
The document describes a network programming report on a Java chat application. It includes the code for a Server class that implements a threaded server to handle multiple client connections simultaneously. The server opens a port to listen for clients and spins up a new thread for each accepted connection. It then reads and writes data between the server and client over buffered input/output streams. The report notes issues with messages from one client not being visible to others and connection errors that can occur between the client and server.
After years of promoting PHPUnit I still hear it's hard to get started with unit testing. So instead of showing nice step-by-step examples on how to use PHPUnit, we're going to take an example straight from github. So I've taken the challenge to start writing tests for PHP projects that don't have unit tests in place and explain how I decide where to begin, how I approach my test strategy and how I ensure I’m covering each possible use-case (and covering the CRAP index). The goal of this presentation is to show everyone that even legacy code, spaghetti code and complex code bases can be tested. After this talk you can immediately apply my examples on your own codebase (even if it's a clean code base) and get started with testing. To follow along a basic knowledge unit testing with PHPUnit is required.
The document discusses testing techniques and principles for writing tests. It advocates for tests that are FAST, ISOLATING, REPEATABLE, SELF-VALIDATING, and TIMELY (FIRST). It also discusses the Arrange-Act-Assert (AAA) structure for tests and how to achieve high code coverage while maintaining test quality. The document notes that while code coverage is a useful metric, it does not guarantee correctness on its own. It also covers the use of test doubles like stubs, spies, mocks and fakes to replace dependencies.
2013-06-15 - Software Craftsmanship mit JavaScriptJohannes Hoppe
Entwickeln Sie Clean Code mit JavaScript. Den “Software Craftsman” zeichnen dabei Wissen, Werkzeuge und Wiederholung aus. Diese drei Grundfeste werden speziell für JavaScript beleuchtet. Lernen Sie die wichtigsten Patterns für eine stabile und wartbare Website kennen. Überprüfen Sie Ihre persönliche Werkzeugkiste für Entwicklung, Testing und Deployment. Schließen Sie Bekanntschaft mit Code Katas für JavaScript.
2013-06-24 - Software Craftsmanship with JavaScriptJohannes Hoppe
This document discusses principles of software craftsmanship including:
- Common JavaScript pitfalls like implied globals, trailing commas, and return undefined
- Best practices like avoiding globals, using module patterns for organization, and test-driven development
- Tools for JavaScript development like Jasmine for testing, RequireJS for module loading, and Visual Studio for debugging
- The process of test-driven development including writing tests, making them fail, making them pass, refactoring code, and repeating
This document discusses how JavaScript code would look if Java was written in JavaScript. It provides examples of Java-like classes and methods written in JavaScript. It also discusses JavaScript design patterns like the Module pattern and MVC frameworks. Finally, it covers topics like unit testing JavaScript with Jasmine, SVG vs Canvas for graphs, and libraries like Underscore.js and CSS frameworks.
This document summarizes PHP's magic methods. It discusses the purpose and usage of various magic methods like __construct(), __destruct(), __toString(), __get(), __set(), __isset(), __unset(), __call(), __clone(), __set_state(), __callStatic(), __sleep(), __wakeup(), __invoke(), and __autoload(). It provides examples of how each magic method works and when they are called. The document is intended to introduce developers to PHP's magic methods in about an hour and covers their basics.
The document discusses exception handling in C++. It defines synchronous and asynchronous exceptions and explains the purpose of exceptions is to detect and report exceptional circumstances so appropriate action can be taken. It describes the exception handling mechanism using try, throw, and catch keywords. It explains that exceptions can be rethrown from a catch block to propagate the exception outward. It provides examples of rethrowing an exception and creating a user-defined exception by inheriting from the standard exception class.
A lecture about type expressiveness using the Either monad in C#. It's a discussion about the problem that arises from a lack of a built-in mechanism that allows you to express that a function is likely to fail. We implement a solution to this problem and see how it allows us to write production-ready code.
Java Bytecode For Discriminating Developers - GeeCON 2011Anton Arhipov
The document discusses Java bytecode and how it is used to represent compiled Java code. It provides an overview of bytecode basics like the bytecode instruction set and taxonomy. It then gives examples of decompiling simple "Hello World" Java code and analyzing the resulting bytecode instructions. Key details like the stack-based execution model and how frames are used are also outlined.
The presentation describes how to do Oracle ATG Queries
Please find more details in my article: software-engineering-101.com/2016/07/12/atg-repository-queries
CLR Exception Handing And Memory ManagementShiny Zhu
The document discusses best practices for exception handling and memory management in .NET Framework development. It covers topics like when to throw exceptions, what data to include, catching and rethrowing exceptions, implementing the dispose pattern, and using statements. It also discusses memory management techniques like finalizers, handle collectors, and adding/removing memory pressure.
From choosing good names, writing tidy unit tests and learning to keep your code small and reusable, to understanding the single responsibility and other SOLID principles. This workshop will touch all these subjects and more in order to come to a better understanding of cleanliness in code.
Nothing is as frustrated as deploying a new release of your web application to find out functionality you had doesn't work anymore. Of course you have all your unit tests in place and you run them through your CI environment, but nothing prepared you to a failing javascript error or a link that doesn't work anymore. Welcome to User Acceptance testing or UAT. Before you start putting real people in front of your application, create macros and export them as PHPUnit test classes. Then run them in an automated way just like your unit tests and hook them into your CI. In this talk I will show you how easy it is to create Selenium macros that can be converted into PHPUnit scripts and run automatically on different virtual machines (VM's) so you can test all different browsers on a diversity of operating systems.
Relevance trilogy may dream be with you! (dec17)Woonsan Ko
Introducing new BloomReach Experience Plugins which changes the game of DREAM (Digital Relevance Experience & Agility Management), to increase productivity and business agility.
Powerful persistence layer with Google Guice & MyBatissimonetripodi
This document discusses integrating MyBatis, an object-relational mapping tool, with Google Guice for dependency injection. It describes how MyBatis is a fork of Apache iBATIS and the history of the Guice integration project. It also covers how to configure MyBatis using Guice modules, inject mappers, handle transactions with annotations, support various data sources, and provide JDBC helpers.
Metaprogramming allows programs to treat other programs as data by reading, generating, analyzing, transforming, or modifying other programs or even themselves at runtime. It has benefits like keeping code small, simple, DRY, lightweight, intuitive, and scalable. Metaprogramming techniques include macros, domain-specific languages, reflection, introspection, annotations, bytecode transformation, and abstract syntax tree manipulation. Many programming languages support metaprogramming through features like method missing, dynamic method definition, reflection, and abstract syntax tree transformations.
The document discusses 10 ways to improve code quality based on a presentation by Martin Cronje. It provides examples of refactoring code to remove switch/if statements, use polymorphism instead of switch statements, extract methods to improve readability, add comments appropriately, use frameworks instead of building your own, and avoid premature optimization. It also emphasizes fundamentals over cool technologies and understanding quality and purpose.
JavaScript is evolving with the addition of modules, platform consistency, and harmony features. Modules allow JavaScript code to be organized and avoid naming collisions. CommonJS and AMD module formats are used widely. Platform consistency is improved through polyfills that mimic future APIs for older browsers. Harmony brings language-level modules and features like destructuring assignment, default parameters, and promises to JavaScript. Traceur compiles Harmony code to existing JavaScript.
Tornado is a Python web framework and asynchronous networking library. It is non-blocking and scalable, using epoll and other low-level I/O modules. Tornado includes modules for HTTP handling, templates, authentication, and more. It was originally developed at FriendFeed and later open sourced by Facebook. Example usages include a simple "Hello World" app, handling requests and responses, using cookies and secure cookies, internationalization, and asynchronous database requests.
In the recent Functional Thursday meetup, I gave this talk about SpiderMonkey: Mozilla's JavaScript engine used in Firefox. The content covers the architecture and some interesting internal implementations.
The document discusses the Dynamic Language Runtime (DLR). The DLR was created by Jim Hugunin to enable dynamic languages like IronPython to run on the .NET Common Language Runtime (CLR). It provides features needed for dynamic languages like a script engine, dynamic typing, metaprogramming, and interoperability between dynamic languages. The DLR also includes expression trees that allow expressions to be compiled at runtime and late binding.
React mit TypeScript – eine glückliche Eheinovex GmbH
In seiner Brownbag sprach inovexler Johann über die Verwendung von TypeScript in einer React-Anwendung.
Als Java-Land Immigrant mit Typisierungshintergrund, fällt es einem in der neuen JavaScript-Welt erstmal schwer auf etablierte Refactoring-Traditionen und die gute, alte Code-Literatur zu verzichten. TypeScript bringt verloren geglaubte Möglichkeiten zurück und ist auch zu React eine willkommene Bereicherung.
In diesem Vortrag wird gezeigt, wie man möglichst einfach ein React-Projekt mit TypeScript aufsetzt, einfache Typisierungsregeln etabliert und bekannte Bibliotheken integriert.
Event: Brownbag bei inovex
Speaker: Johann Böhler, inovex
Datum: 25.06.2018
Weitere Tech-Vorträge: https://www.inovex.de/de/content-pool/vortraege/
Weitere Tech-Artikel: www.inovex.de/blog
The document discusses various static code analysis features available in IntelliJ IDEA, including code inspections, JSR annotations, duplicate detection, stack trace analysis, dataflow analysis, dependency analysis, and more. It provides examples of how to use annotations like @Nullable, @Pattern, and @Language. It also covers dependency structure matrix, UML generation, and how different features can be used at different stages of the software development lifecycle.
The document provides an overview of front-end technologies including HTML, CSS, JavaScript, Ajax and jQuery. It discusses how the front-end interacts with the user's browser and backend servers. It describes the roles of HTML, CSS and JavaScript in content, styles and behaviors. It then covers HTML tags and structures, CSS, JavaScript basics and its use in browsers with BOM and DOM APIs. The document also summarizes Ajax and how it enables asynchronous JavaScript requests, and introduces jQuery and how it simplifies DOM and Ajax operations.
This DrupalCon 2019 Amsterdam talk provides a look beyond the world of PHP and Javascript. It explores how other languages such as Ruby, Java, Rust and Perl handle things and highlights some interesting features of those languages. Not all the things that other languages can do can be done in PHP or Javascript but the concepts and ideas can still be used.
This document discusses how domain-specific languages (DSLs) can be used to make Java code more readable and maintainable. It describes different types of DSLs including external and internal DSLs built with Java and scripting languages. It also discusses JetBrains MPS, a language workbench that provides a new approach for building DSLs without relying on a specific output language. DSLs allow raising the level of abstraction and separating stable and changing parts of code. Fluent APIs and internal DSLs in Java provide readability benefits, while scripting languages allow further readability through features like closures and list literals.
Machine learning techniques are powerful, but building and deploying such models for production use require a lot of care and expertise.
A lot of books, articles, and best practices have been written and discussed on machine learning techniques and feature engineering, but putting those techniques into use on a production environment is usually forgotten and under- estimated , the aim of this talk is to shed some lights on current machine learning deployment practices, and go into details on how to deploy sustainable machine learning pipelines.
The document discusses how JavaScript frameworks like MooTools can be leveraged in Joomla sites to provide features like DOM manipulation, classes, event listeners, and effects. It describes how MooTools is the default framework used by Joomla and provides examples of its key capabilities. Additionally, it offers suggestions for optimizing framework usage, such as implementing the Google Loader API to decrease page load times.
Esta charla comprende las lecciones aprendidas convirtiendo la app de Android de Teambox (una app repleta de deuda técnica y con un alto nivel de acoplamiento entre clases), en la versión actual de Redbooth, que intenta cumplir la arquitectura Hexagonal y los principios SOLID. Durante la exposición explicaremos como fuimos desenredando el código paso a paso; como aplicamos por partes los conceptos de la arquitectura hexagonal; como dejamos de lado componentes del framework de Android que dificultaban el mantenimiento de la app; y que errores cometimos, como los solucionamos y como se podrían haber evitado.
The document discusses the components and utilities of the Backbone.js framework. It describes the key components of Backbone - Models, Collections, Views - and how they work together. Models contain interactive data and bind attributes to the DOM. Collections provide methods to manage ordered sets of models. Views handle templating and user interactions. The document also covers utilities like routing and events that help connect components.
The document discusses the Dojo JavaScript toolkit. It provides an overview of what Dojo is, including that it is a lightweight JavaScript toolkit with modular components for tasks like charts, calendars, file uploads and more. It also discusses Dojo's build system for concatenating and minifying files, its module loading system, and patterns used like ambiguous constructors, chaining and deferreds. The document promotes Dojo's large developer community and active development.
The Rising Future of CPaaS in the Middle East 2024Yara Milbes
Explore "The Rising Future of CPaaS in the Middle East in 2024" with this comprehensive PPT presentation. Discover how Communication Platforms as a Service (CPaaS) is transforming communication across various sectors in the Middle East.
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...Luigi Fugaro
Vector databases are transforming how we handle data, allowing us to search through text, images, and audio by converting them into vectors. Today, we'll dive into the basics of this exciting technology and discuss its potential to revolutionize our next-generation AI applications. We'll examine typical uses for these databases and the essential tools
developers need. Plus, we'll zoom in on the advanced capabilities of vector search and semantic caching in Java, showcasing these through a live demo with Redis libraries. Get ready to see how these powerful tools can change the game!
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
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...kalichargn70th171
In today's fiercely competitive mobile app market, the role of the QA team is pivotal for continuous improvement and sustained success. Effective testing strategies are essential to navigate the challenges confidently and precisely. Ensuring the perfection of mobile apps before they reach end-users requires thoughtful decisions in the testing plan.
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Paul Brebner
Closing talk for the Performance Engineering track at Community Over Code EU (Bratislava, Slovakia, June 5 2024) https://eu.communityovercode.org/sessions/2024/why-apache-kafka-clusters-are-like-galaxies-and-other-cosmic-kafka-quandaries-explored/ Instaclustr (now part of NetApp) manages 100s of Apache Kafka clusters of many different sizes, for a variety of use cases and customers. For the last 7 years I’ve been focused outwardly on exploring Kafka application development challenges, but recently I decided to look inward and see what I could discover about the performance, scalability and resource characteristics of the Kafka clusters themselves. Using a suite of Performance Engineering techniques, I will reveal some surprising discoveries about cosmic Kafka mysteries in our data centres, related to: cluster sizes and distribution (using Zipf’s Law), horizontal vs. vertical scalability, and predicting Kafka performance using metrics, modelling and regression techniques. These insights are relevant to Kafka developers and operators.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
WWDC 2024 Keynote Review: For CocoaCoders AustinPatrick Weigel
Overview of WWDC 2024 Keynote Address.
Covers: Apple Intelligence, iOS18, macOS Sequoia, iPadOS, watchOS, visionOS, and Apple TV+.
Understandable dialogue on Apple TV+
On-device app controlling AI.
Access to ChatGPT with a guest appearance by Chief Data Thief Sam Altman!
App Locking! iPhone Mirroring! And a Calculator!!
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
Liberarsi dai framework con i Web Component.pptxMassimo Artizzu
In Italian
Presentazione sulle feature e l'utilizzo dei Web Component nell sviluppo di pagine e applicazioni web. Racconto delle ragioni storiche dell'avvento dei Web Component. Evidenziazione dei vantaggi e delle sfide poste, indicazione delle best practices, con particolare accento sulla possibilità di usare web component per facilitare la migrazione delle proprie applicazioni verso nuovi stack tecnologici.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
React.js, a JavaScript library developed by Facebook, has gained immense popularity for building user interfaces, especially for single-page applications. Over the years, React has evolved and expanded its capabilities, becoming a preferred choice for mobile app development. This article will explore why React.js is an excellent choice for the Best Mobile App development company in Noida.
Visit Us For Information: https://www.linkedin.com/pulse/what-makes-reactjs-stand-out-mobile-app-development-rajesh-rai-pihvf/
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.
52. Metaprogramming in
.NET
Jason Bock
Practice Lead
Remember…
https://github.com/JasonBock (see notes for specific repos)
http://www.slideshare.net/jasonbock/metaprogramming-in-net
References in the notes on this slide
Editor's Notes
It’s all magic….but not really
This is a pretty typical definition of metaprogramming.
So I co-authored a book…
This is the definition I used in my book, but what does it mean? Let’s look at a couple of simple examples.
With C# 4, you can use the dynamic keyword to manipulate members at runtime.
In JavaScript, you can write code as a string, and have the JS environment evaluate the code for you (though eval is considered ‘evil’)
Metaprogramming can be viewed as taking complex code, and reducing its visibility. There’s still complex things to be done, but metaprogramming techniques can reduce it and lead you to a design where it’s relatively easy to manage
You’re going to acquire a new set of tools. Used wisely, it can make your programming life easier.
Doing metaprogramming in .NET requires some dedication to learn new ideas, use frameworks that may be unfamiliar, etc. However, keep at it. The further you go, the easier it becomes, and you’ll start to see your programs in a whole new way.
Reflection provides you to find out information about your code, and execute it if you want.
A testing framework uses reflection to find all of the test classes and test methods.
Here’s a simple piece of code, let’s look at how it would be represented in a Reflection graph
You have an assembly, types, methods, parameters, as well as events, properties, etc.
Here’s what that code sample looks like with its names.
If you’d want to get the type of the 2nd argument, here’s the code.
If you wanted to invoke a method on an object, here’s the code
While Reflection is a powerful tool for metaprogramming, it can be slow. Always consider performance when using Reflection.
You can generate code based on a template in Visual Studio. These are called Code Snippets
Once you create the snippet, you can import it via the Code Snippets Manager
And then use it in your code
How do I make a code snippet for ArgumentNullException?
There’s a tool called ILDasm that’s been in the .NET installation since 1.0. It lets you see the guts of an assembly at its metadata level…
….and at the IL level.
With IL knowledge, you can do all sorts of tricks that C# or VB don’t support. For example, you can create generic attributes that can be consumed by C# and VB.
Knowing IL is required if you want to run new code at runtime. If you wanted to create a new type, SRE was the way to do it. If you just needed a new method, use DynamicMethod (added in 2.0)
With SRE, you can create dynamic proxies, which are used extensively by mocking engines.
So what the issue with IL? It’s harder to understand, and it’s pretty easy to mess up. Take this simple function.
Here’s the same function in IL.
If the ldstr op code is gone, it’ll probably compile in ilasm, but running it will create all sorts of issues (e.g. InvalidProgramException)
Expressions allow you to view your code as a data structure – a tree. Basing an API on that can make it safer to generate code.
Here’s what that function looks like as a dynamic method
Here’s what it looks like using the LINQ expressions API.
We’ve all seen the property name trick, which uses LINQ expressions. It’s a little slower, but it’s “safe”. But there’s some really cool things you can do with expressions, like genetic programming.
While C# doesn’t support AOP out-of-box, it’s possible through assembly parsing frameworks like Cecil or CCI to add aspects via the presence of attributes.
But you need good debugging experience
Traditionally, compilers are black boxes. You don’t get access to what’s going on, and there’s lot of valuable information within.
Roslyn opens up the compiler, providing APIs to different parts of the pipeline.
There’s lot of crazy things you can do if you can compile code on the fly. Let’s create a dynamic class that is a mock of another class (useful for testing)
Makes total sense, right?
But I can take the generated proxy class, save it to disk, and step into the code
Knowing IL is required if you want to run new code at runtime. If you wanted to create a new type, SRE was the way to do it. If you just needed a new method, use DynamicMethod (added in 2.0)
Don’t fear metaprogramming. The tools may be a little more advanced than unusual, and you may need to invest some time, but it’s worth it.
Embrace metaprogramming. It’ll make your coding peaceful
GitHub repos
Csla.AutoAddBusinessRules
CodeSnippets
ExpressionEvolver
Injectors
Rocks
References
Code Snippets (C#) - https://msdn.microsoft.com/en-us/library/f7d3wz0k(v=vs.90).aspx
Creating and Using IntelliSense Code Snippets - https://msdn.microsoft.com/en-us/library/vstudio/ms165392(v=vs.100).aspx
Comparison of code generation tools - http://en.wikipedia.org/wiki/Comparison_of_code_generation_tools
Sigil: Adding Some (More) Magic To IL - http://kevinmontrose.com/2013/02/14/sigil-adding-some-more-magic-to-il/
Visual Studio Code Snippets - http://visualstudiocodesnippets.com/
Visual Studio code snippets - http://www.codeproject.com/Articles/737354/Visual-Studio-code-snippets