DDD udowodniło już, że jego zastosowanie w przy implementowaniu złożonej logiki biznesowej pozwala nam tworzyć niezawodny, testowalny i rozwijany kod. Wiele zostało już powiedziane i napisane na temat zastosowania DDD w Javie, C# czy w PHP. Mimo to ciężko jeszcze znaleźć dobre i poprawnie zaimplementowane przykłady w Go, które do stosowania DDD nadają się naprawdę dobrze.
Podczas prezentacji pokażę zbiór patternów, które wypracowałem wraz z teamem przez prawie rok produkcyjnego stosowania DDD. Opowiem też z czym wiąże się ich stosowanie.
Jeśli nie miałeś/miałaś jeszcze do czynienia z DDD tym bardziej zapraszam - wspomnę o źródłach, z których można czerpać wiedzę żeby zgłębić temat i to, dlaczego warto zainteresować się tą techniką.
The document discusses abstract syntax tree (AST) transformations in Groovy and Java. It covers several tools and techniques for AST transformations including Lombok, Groovy, CodeNarc, IntelliJ IDEA, Mirah macros, and how they allow generating code, performing static analysis, and rewriting code at compile time through analyzing and modifying the AST. The key topics are how these tools work by compiling code to an AST, analyzing and modifying the AST nodes, and sometimes generating source code from the transformed AST.
The document describes how JBoss Drools can be used to model business rules and requirements by defining rules using a domain-specific language that can validate objects like orders against the defined rules. Drools provides features like declarative rule patterns, object mapping, functions, queries, and templates to define complex validation logic in a more readable way compared to implementing the same logic in Java. Drools also supports defining metadata, classes and integrating with a rules engine and working memory to efficiently execute rules on facts.
A better version can be found at https://app.box.com/s/8zuk8yd4x9m7rbvinkb0xztz17x6xoqj
This is the slide for a presentation at Golang Melbourne meetup.
The document discusses good code practices and principles. It begins with an agenda that covers why code quality matters, object oriented principles like SOLID, code smells and heuristics for good code, and concludes with questions. Some key principles discussed include the single responsibility principle, open/closed principle, Liskov substitution principle, and interface segregation principle. Examples are given to illustrate how to apply these principles and improve code quality.
Michael Fogus discusses creating a minimal Lisp variant using only 7 core functions and forms. He demonstrates how to build up common Lisp features like lists, conditionals, functions, and recursion using only the primitive functions car, cdr, cons, cond, label, lambda, and dynamic scoping. Through a series of examples, he shows how more advanced features can emerge from these basics alone, culminating in a meta-circular evaluator. He argues the core set could be reduced even further to just 3 primitive forms.
Building native Android applications with Mirah and PindahNick Plante
Mirah is a Ruby-like language that compiles to Java bytecode, allowing Ruby developers to write Android apps without using Java. The document introduces Mirah and Pindah, a framework that makes it easier to develop Android apps in Mirah. It provides an example "Up or Down?" app that checks the status of websites and displays results. While Mirah offers a more Ruby-like syntax, it is still immature and tooling support needs improvement, making large Android app development challenging.
The document discusses code generation on the JVM using various tools and frameworks. It provides an overview of Lombok for generating Java boilerplate code, Groovy AST transformations, CodeNarc for static analysis, and Spock, GContracts, and Groovy++ for framework-oriented code generation. It also discusses generating code at compile time using abstract syntax trees.
The document describes the development of a C++ wrapper class for the C libcurl library. It defines a curl::easy class that encapsulates a CURL handle and provides methods like set_url() and perform() to set options and execute requests. Over time, the class is refined to add functionality, handle different string types more generically, and improve exception safety. Template classes are introduced to represent C strings in a more object-oriented way.
The document discusses abstract syntax tree (AST) transformations in Groovy and Java. It covers several tools and techniques for AST transformations including Lombok, Groovy, CodeNarc, IntelliJ IDEA, Mirah macros, and how they allow generating code, performing static analysis, and rewriting code at compile time through analyzing and modifying the AST. The key topics are how these tools work by compiling code to an AST, analyzing and modifying the AST nodes, and sometimes generating source code from the transformed AST.
The document describes how JBoss Drools can be used to model business rules and requirements by defining rules using a domain-specific language that can validate objects like orders against the defined rules. Drools provides features like declarative rule patterns, object mapping, functions, queries, and templates to define complex validation logic in a more readable way compared to implementing the same logic in Java. Drools also supports defining metadata, classes and integrating with a rules engine and working memory to efficiently execute rules on facts.
A better version can be found at https://app.box.com/s/8zuk8yd4x9m7rbvinkb0xztz17x6xoqj
This is the slide for a presentation at Golang Melbourne meetup.
The document discusses good code practices and principles. It begins with an agenda that covers why code quality matters, object oriented principles like SOLID, code smells and heuristics for good code, and concludes with questions. Some key principles discussed include the single responsibility principle, open/closed principle, Liskov substitution principle, and interface segregation principle. Examples are given to illustrate how to apply these principles and improve code quality.
Michael Fogus discusses creating a minimal Lisp variant using only 7 core functions and forms. He demonstrates how to build up common Lisp features like lists, conditionals, functions, and recursion using only the primitive functions car, cdr, cons, cond, label, lambda, and dynamic scoping. Through a series of examples, he shows how more advanced features can emerge from these basics alone, culminating in a meta-circular evaluator. He argues the core set could be reduced even further to just 3 primitive forms.
Building native Android applications with Mirah and PindahNick Plante
Mirah is a Ruby-like language that compiles to Java bytecode, allowing Ruby developers to write Android apps without using Java. The document introduces Mirah and Pindah, a framework that makes it easier to develop Android apps in Mirah. It provides an example "Up or Down?" app that checks the status of websites and displays results. While Mirah offers a more Ruby-like syntax, it is still immature and tooling support needs improvement, making large Android app development challenging.
The document discusses code generation on the JVM using various tools and frameworks. It provides an overview of Lombok for generating Java boilerplate code, Groovy AST transformations, CodeNarc for static analysis, and Spock, GContracts, and Groovy++ for framework-oriented code generation. It also discusses generating code at compile time using abstract syntax trees.
The document describes the development of a C++ wrapper class for the C libcurl library. It defines a curl::easy class that encapsulates a CURL handle and provides methods like set_url() and perform() to set options and execute requests. Over time, the class is refined to add functionality, handle different string types more generically, and improve exception safety. Template classes are introduced to represent C strings in a more object-oriented way.
The document summarizes changes and additions in Clojure 1.1 and beyond. Key changes include replacing watchers with add-watch/remove-watch, removing add-classpath, deprecating ^ in favor of meta, reworking clojure.parallel to use Java 7 fork-join, and replacing clojure.lang.Repl and clojure.lang.Script with clojure.main. Additions include primitive array generation/casting, chunked sequences, futures, promises, transients, pre-/post- conditions, and new namespaces like clojure.test. Future versions may include reify, deftype, defprotocol, fine-grained locals clearing, and agent
This document provides step-by-step instructions for cloning and building a Flappy Bird clone using Swift. It begins with setting up the project structure and basic gameplay elements like the background, ground and bird. It then adds parallax scrolling, bird animation and physics. Pipes and collision detection are implemented along with scoring. The document details many Swift concepts like classes, protocols and physics bodies to recreate the classic mobile game.
The Ring programming language version 1.5.2 book - Part 78 of 181Mahmoud Samir Fayed
This document describes how to use the Ring code generator to wrap C/C++ libraries for use in Ring applications. The code generator takes a configuration file that lists C function prototypes as input and generates Ring wrapper functions to call those C functions. Configuration files simply list the C function prototypes to wrap. The generated code implements the Ring wrapper functions that check the number and types of arguments passed, make the call to the corresponding C function, and return any results.
This document summarizes Hamlet D'Arcy's presentation on AST transformations using tools like Lombok, Groovy, CodeNarc, and Mirah. It discusses how these tools allow manipulating abstract syntax trees to add functionality like automatic property generation, static analysis, and embedded domain-specific languages. Local AST transformations are performed without changing bytecode or requiring new semantics. Type checking can also be added through transformations. Mirah compiles to pure Java classes without additional syntax.
The Ring programming language version 1.2 book - Part 79 of 84Mahmoud Samir Fayed
The document discusses extending Ring by adding new classes and functions. It can be done by writing C/C++ code and compiling it into a DLL that can be loaded from Ring using LoadLib(). Functions defined in the DLL can then be called from Ring. Alternatively, RingQt classes can be extended by defining new classes that inherit from existing Qt classes. A code generator written in Ring is also presented that can automatically generate wrapper code to interface with external C/C++ libraries from Ring.
The Ring programming language version 1.8 book - Part 91 of 202Mahmoud Samir Fayed
This document describes the configuration file used to wrap Qt classes for use in Ring. It includes code to include necessary Qt headers, define classes for wrapping, and configure options like ignoring pointer types and defining alternative method names. Wrapping the Qt classes allows Ring applications to create graphical user interfaces and interact with the Qt framework.
When I left Frogtrade, I was asked to provide a presentation on Javascript basics to act as reference material for the PHP developers I left behind. This is that presentation.
This document provides an overview of JavaScript basics including data types, strings, objects, arrays, functions, and closures. It discusses the history and evolution of JavaScript, from its origins as LiveScript in 1995 to the modern ECMAScript standard. Various JavaScript operators, methods, and built-in objects like window and document are also explained at a high level.
Wiktor Toporek: Pomimo tego że JavaScript mocno ewoluował na przestrzeni ostatnich lat, zakorzeniona w nim jego asynchroniczna natura wciąż może sprawiać problem programistom i to zarówno początkującym jak i tym zaawansowanym. W prezentacji przyjrzymy się jednemu z bohaterów programowania asynchronicznego jakim jest Promise, przeanalizujemy niektóre z pułapek oraz zastanowimy się również czy w pełni wykorzystujemy jego potencjał.
The document discusses JavaScript patterns. It begins by introducing the author and their motivation for learning patterns. It then covers essential patterns around scope, literals and constructors, functions, and code reuse. It discusses the single var pattern, constructor functions, private members, and classical versus prototypal inheritance. The document is an educational guide to common JavaScript patterns.
Introduction to modern c++ principles(part 1)Oky Firmansyah
The document introduces modern C++ principles and smart pointers. It discusses how C++ is still actively used and evolved, and defines modern C++ as using new language features and libraries. It then covers smart pointers like unique_ptr, shared_ptr, and weak_ptr which help manage object lifetimes and avoid memory leaks. The document also discusses move semantics and perfect forwarding which allow efficient moving of objects. It provides examples of how RAII (Resource Acquisition Is Initialization) binds resource management to object lifetime through constructors and destructors.
The document discusses JavaScript functions and closures. It explains that functions are first-class objects that can be assigned to variables and passed as arguments. Closures allow inner functions to access variables in an outer function's scope even after it has returned. This can be used to emulate private variables or classes. The document provides many examples demonstrating functions, scopes, closures, recursion, and other JavaScript concepts.
Lisp Macros in 20 Minutes (Featuring Clojure)Phil Calçado
"We just started holding 20 minutes presentations during lunch time in the ThoughtWorks Sydney office. For the first session I gave a not-that-short talk on Lisp macros using Clojure. The slides are below.
It turns out that 20 minutes is too little time to actually acquire content but I think at least we now have some people interested in how metaprogramming can be more than monkey patching."
http://fragmental.tw/2009/01/20/presentation-slides-macros-in-20-minutes/
Groovy is a dynamic language for the Java Virtual Machine that aims to provide a concise, readable syntax with features like closures, metaprogramming and domain-specific language support. Some key features include dynamic typing, operator overloading, builders for generating XML/Swing code and the ability to extend any class or category of objects with additional methods. Groovy aims to be fully interoperable with Java while allowing more compact representations of common patterns.
What We Talk About When We Talk About Unit TestingKevlin Henney
Presented at ACCU (23rd April 2015)
These days unit testing is considered sexy for programmers. Who'd have thought it? But there is a lot more to effective programmer testing than the fashionable donning of a unit-testing framework: writing Good Unit Tests (GUTs) involves (a lot) more than knowledge of assertion syntax.
Testing represents a form of communication and, as such, it offers multiple levels and forms of feedback, not just basic defect detection. Effective unit testing requires an understanding of what forms of feedback and communication are offered by tests, and what styles encourage or discourage such qualities.
What styles of test partitioning are common, and yet scale poorly, are uncohesive and are ineffective at properly expressing the behaviour of a class or component? What styles, tricks and tips can be used to make tests more specification-like and scalable to large codebases? How do we choose between scenario-based and property-based test cases?
Presented at ACCU Oxford (14th September 2015)
Functional C++? As opposed to what — dysfunctional? Well, kind of, yeah. Sure, in C++ the principal unit of composition is called a function, but that doesn't mean it's a functional language. And the idea of restricting mutability of state gets a nod with const, but it's a nod not a hug. And the STL shows influences of functional programming, although it falls short of being compositional. And, yes, sure, C++11 has lambdas, but then again, these days, who doesn't? Lambda calculus was invented in the 1930s.
This talk looks at how to express functional programming ideas in (post)modern C++ in a way that can be considered idiomatic to C++, rather than trying to use the power of overloading and meta-programming to pretend C++ is Haskell or Lisp. In short, immutability beyond const and into shared and persistent data structures, concurrency beyond threading and locks, and thinking about functions as transformations and units of composition rather than actions.
Groovy is a dynamic language that provides different types of metaprogramming techniques. In this talk we’ll mainly see runtime metaprogramming. You’ll understand the Groovy Meta-Object-Protocol (MOP), the metaclass, how to intercept method calls, how to deal with method missing and property missing, the use of mixins, traits and categories. All of these topics will be explained with examples in order to understand them. Also, you’ll see a little bit about compile-time metaprogramming with AST Transformations. AST Transformations provide a wonderful way of manipulating code at compile time via modifications of the Abstract Syntax Tree. You’ll see a basic but powerful example of what we can do with AST transformations.
JavaScript ist eine sehr dynamische Sprache und verhält sich zudem je nach Browser unterschiedlich. Daher sind automatisierte Tests besonders wertvoll. Dieser Vortrag von Tobias Bosch und Stefan Scheidt (OPITZ CONSULTING) zeigt, wie Cross-Browser-Tests für JavaScript entwickelt werden können.
The document discusses new features in Java SE 7 including Project Coin, NIO.2, invokedynamic, and try-with-resources. It also covers concurrency topics such as fork/join, executors, and synchronization patterns. Examples are provided for using fork/join tasks to sum arrays in parallel and the try-with-resources statement to ensure stream resources are closed automatically.
Andriy Slobodyanyk "How to Use Hibernate: Key Problems and Solutions"LogeekNightUkraine
The document discusses common problems when using Hibernate and provides solutions. It covers issues like mixing entities and DTOs, improper use of @Transient, failing to override equals() and hashCode(), and fetching strategies. The document also provides examples of properly annotating entities with JPA annotations like @Entity, @Id, @ManyToOne, mapping enums, embedded types, and relationships between entities. It emphasizes separating concerns between entities, DTOs, and business logic.
JavaScript - i och utanför webbläsaren (2010-03-03)Anders Jönsson
This document provides an overview of JavaScript concepts including variables, data types, objects, functions, conditionals, loops, callbacks, prototypes, this keyword, scope, closures, events, DOM manipulation, and asynchronous programming. It includes code examples to demonstrate these concepts such as defining variables, creating and accessing objects and their properties, writing functions with parameters and return values, if/else statements, for loops, and using callbacks with asynchronous functions.
The document summarizes changes and additions in Clojure 1.1 and beyond. Key changes include replacing watchers with add-watch/remove-watch, removing add-classpath, deprecating ^ in favor of meta, reworking clojure.parallel to use Java 7 fork-join, and replacing clojure.lang.Repl and clojure.lang.Script with clojure.main. Additions include primitive array generation/casting, chunked sequences, futures, promises, transients, pre-/post- conditions, and new namespaces like clojure.test. Future versions may include reify, deftype, defprotocol, fine-grained locals clearing, and agent
This document provides step-by-step instructions for cloning and building a Flappy Bird clone using Swift. It begins with setting up the project structure and basic gameplay elements like the background, ground and bird. It then adds parallax scrolling, bird animation and physics. Pipes and collision detection are implemented along with scoring. The document details many Swift concepts like classes, protocols and physics bodies to recreate the classic mobile game.
The Ring programming language version 1.5.2 book - Part 78 of 181Mahmoud Samir Fayed
This document describes how to use the Ring code generator to wrap C/C++ libraries for use in Ring applications. The code generator takes a configuration file that lists C function prototypes as input and generates Ring wrapper functions to call those C functions. Configuration files simply list the C function prototypes to wrap. The generated code implements the Ring wrapper functions that check the number and types of arguments passed, make the call to the corresponding C function, and return any results.
This document summarizes Hamlet D'Arcy's presentation on AST transformations using tools like Lombok, Groovy, CodeNarc, and Mirah. It discusses how these tools allow manipulating abstract syntax trees to add functionality like automatic property generation, static analysis, and embedded domain-specific languages. Local AST transformations are performed without changing bytecode or requiring new semantics. Type checking can also be added through transformations. Mirah compiles to pure Java classes without additional syntax.
The Ring programming language version 1.2 book - Part 79 of 84Mahmoud Samir Fayed
The document discusses extending Ring by adding new classes and functions. It can be done by writing C/C++ code and compiling it into a DLL that can be loaded from Ring using LoadLib(). Functions defined in the DLL can then be called from Ring. Alternatively, RingQt classes can be extended by defining new classes that inherit from existing Qt classes. A code generator written in Ring is also presented that can automatically generate wrapper code to interface with external C/C++ libraries from Ring.
The Ring programming language version 1.8 book - Part 91 of 202Mahmoud Samir Fayed
This document describes the configuration file used to wrap Qt classes for use in Ring. It includes code to include necessary Qt headers, define classes for wrapping, and configure options like ignoring pointer types and defining alternative method names. Wrapping the Qt classes allows Ring applications to create graphical user interfaces and interact with the Qt framework.
When I left Frogtrade, I was asked to provide a presentation on Javascript basics to act as reference material for the PHP developers I left behind. This is that presentation.
This document provides an overview of JavaScript basics including data types, strings, objects, arrays, functions, and closures. It discusses the history and evolution of JavaScript, from its origins as LiveScript in 1995 to the modern ECMAScript standard. Various JavaScript operators, methods, and built-in objects like window and document are also explained at a high level.
Wiktor Toporek: Pomimo tego że JavaScript mocno ewoluował na przestrzeni ostatnich lat, zakorzeniona w nim jego asynchroniczna natura wciąż może sprawiać problem programistom i to zarówno początkującym jak i tym zaawansowanym. W prezentacji przyjrzymy się jednemu z bohaterów programowania asynchronicznego jakim jest Promise, przeanalizujemy niektóre z pułapek oraz zastanowimy się również czy w pełni wykorzystujemy jego potencjał.
The document discusses JavaScript patterns. It begins by introducing the author and their motivation for learning patterns. It then covers essential patterns around scope, literals and constructors, functions, and code reuse. It discusses the single var pattern, constructor functions, private members, and classical versus prototypal inheritance. The document is an educational guide to common JavaScript patterns.
Introduction to modern c++ principles(part 1)Oky Firmansyah
The document introduces modern C++ principles and smart pointers. It discusses how C++ is still actively used and evolved, and defines modern C++ as using new language features and libraries. It then covers smart pointers like unique_ptr, shared_ptr, and weak_ptr which help manage object lifetimes and avoid memory leaks. The document also discusses move semantics and perfect forwarding which allow efficient moving of objects. It provides examples of how RAII (Resource Acquisition Is Initialization) binds resource management to object lifetime through constructors and destructors.
The document discusses JavaScript functions and closures. It explains that functions are first-class objects that can be assigned to variables and passed as arguments. Closures allow inner functions to access variables in an outer function's scope even after it has returned. This can be used to emulate private variables or classes. The document provides many examples demonstrating functions, scopes, closures, recursion, and other JavaScript concepts.
Lisp Macros in 20 Minutes (Featuring Clojure)Phil Calçado
"We just started holding 20 minutes presentations during lunch time in the ThoughtWorks Sydney office. For the first session I gave a not-that-short talk on Lisp macros using Clojure. The slides are below.
It turns out that 20 minutes is too little time to actually acquire content but I think at least we now have some people interested in how metaprogramming can be more than monkey patching."
http://fragmental.tw/2009/01/20/presentation-slides-macros-in-20-minutes/
Groovy is a dynamic language for the Java Virtual Machine that aims to provide a concise, readable syntax with features like closures, metaprogramming and domain-specific language support. Some key features include dynamic typing, operator overloading, builders for generating XML/Swing code and the ability to extend any class or category of objects with additional methods. Groovy aims to be fully interoperable with Java while allowing more compact representations of common patterns.
What We Talk About When We Talk About Unit TestingKevlin Henney
Presented at ACCU (23rd April 2015)
These days unit testing is considered sexy for programmers. Who'd have thought it? But there is a lot more to effective programmer testing than the fashionable donning of a unit-testing framework: writing Good Unit Tests (GUTs) involves (a lot) more than knowledge of assertion syntax.
Testing represents a form of communication and, as such, it offers multiple levels and forms of feedback, not just basic defect detection. Effective unit testing requires an understanding of what forms of feedback and communication are offered by tests, and what styles encourage or discourage such qualities.
What styles of test partitioning are common, and yet scale poorly, are uncohesive and are ineffective at properly expressing the behaviour of a class or component? What styles, tricks and tips can be used to make tests more specification-like and scalable to large codebases? How do we choose between scenario-based and property-based test cases?
Presented at ACCU Oxford (14th September 2015)
Functional C++? As opposed to what — dysfunctional? Well, kind of, yeah. Sure, in C++ the principal unit of composition is called a function, but that doesn't mean it's a functional language. And the idea of restricting mutability of state gets a nod with const, but it's a nod not a hug. And the STL shows influences of functional programming, although it falls short of being compositional. And, yes, sure, C++11 has lambdas, but then again, these days, who doesn't? Lambda calculus was invented in the 1930s.
This talk looks at how to express functional programming ideas in (post)modern C++ in a way that can be considered idiomatic to C++, rather than trying to use the power of overloading and meta-programming to pretend C++ is Haskell or Lisp. In short, immutability beyond const and into shared and persistent data structures, concurrency beyond threading and locks, and thinking about functions as transformations and units of composition rather than actions.
Groovy is a dynamic language that provides different types of metaprogramming techniques. In this talk we’ll mainly see runtime metaprogramming. You’ll understand the Groovy Meta-Object-Protocol (MOP), the metaclass, how to intercept method calls, how to deal with method missing and property missing, the use of mixins, traits and categories. All of these topics will be explained with examples in order to understand them. Also, you’ll see a little bit about compile-time metaprogramming with AST Transformations. AST Transformations provide a wonderful way of manipulating code at compile time via modifications of the Abstract Syntax Tree. You’ll see a basic but powerful example of what we can do with AST transformations.
JavaScript ist eine sehr dynamische Sprache und verhält sich zudem je nach Browser unterschiedlich. Daher sind automatisierte Tests besonders wertvoll. Dieser Vortrag von Tobias Bosch und Stefan Scheidt (OPITZ CONSULTING) zeigt, wie Cross-Browser-Tests für JavaScript entwickelt werden können.
The document discusses new features in Java SE 7 including Project Coin, NIO.2, invokedynamic, and try-with-resources. It also covers concurrency topics such as fork/join, executors, and synchronization patterns. Examples are provided for using fork/join tasks to sum arrays in parallel and the try-with-resources statement to ensure stream resources are closed automatically.
Andriy Slobodyanyk "How to Use Hibernate: Key Problems and Solutions"LogeekNightUkraine
The document discusses common problems when using Hibernate and provides solutions. It covers issues like mixing entities and DTOs, improper use of @Transient, failing to override equals() and hashCode(), and fetching strategies. The document also provides examples of properly annotating entities with JPA annotations like @Entity, @Id, @ManyToOne, mapping enums, embedded types, and relationships between entities. It emphasizes separating concerns between entities, DTOs, and business logic.
JavaScript - i och utanför webbläsaren (2010-03-03)Anders Jönsson
This document provides an overview of JavaScript concepts including variables, data types, objects, functions, conditionals, loops, callbacks, prototypes, this keyword, scope, closures, events, DOM manipulation, and asynchronous programming. It includes code examples to demonstrate these concepts such as defining variables, creating and accessing objects and their properties, writing functions with parameters and return values, if/else statements, for loops, and using callbacks with asynchronous functions.
Empathic Programming - How to write comprehensible codeMario Gleichmann
Slides to a (non-commercial) talk i gave 2011 at XPUG Rhein/Main (Germany) about how to write comprehensible code, regarding cognitive abilities of human mind.
The document contains code snippets from a C++ program. It includes functions and methods that process services, create new rules, set IDs, and notify CRM systems. Conditionals like if/else statements and exceptions are used for validation and error handling.
Tips and Tricks of Developing .NET ApplicationJoni
This document provides tips and best practices for developing .NET applications. It covers general best practices such as optimization of loops, proper object disposal, and avoiding unnecessary object instantiation. It also includes ASP.NET specific tips like disabling viewstate if not used and avoiding unnecessary round trips to the server. Windows Forms tips involve using multithreading properly and marshaling method calls to the correct thread. The document recommends using existing libraries and not reinventing functionality unnecessarily.
Самые вкусные баги из игрового кода: как ошибаются наши коллеги-программисты ...DevGAMM Conference
Один из лучших способов снизить количество багов в играх – это показывать программистам, как не стоит писать код. В своём докладе я соберу самые вкусные и необычные ошибки, которые удалось найти в C++ и C# коде таких игр, как VVVVVV, Space Engineers, Command & Conquer, osu! и даже Doom. Я уверен, что каждый из слушателей обязательно узнает для себя что-то новое. В конце концов, это просто приятно – лично увидеть ошибки из кода знакомой и любимой игры!
CodiLime Tech Talk - Grzegorz Rozdzialik: What the java scriptCodiLime
The document discusses various JavaScript quirks, including:
- Numbers have limited precision for non-power-of-2 fractions due to IEEE 754 representation. This can cause issues like 0.1 + 0.2 not equalling 0.3.
- Regular expressions have state stored in the lastIndex property, and the global flag g must be used carefully between matches.
- Variable declarations differ between var, let, and const. var has function scope and hoisting, while let and const have block scope without hoisting.
- Operators like void and || can be useful in certain cases like preventing function returns or providing default parameter values.
This talk was part tongue in cheek, part serious, but entirely fun and given twice as a lightning talk - once at Europython & once at the ACCU python uk 05. It presents a generic python like language parser which does actually work. Think of it as an alternative to brackets in Lisp!
1. The document discusses the evolution of the C# programming language from versions 1.0 through 4.0, highlighting new features introduced in each version such as generics, LINQ, dynamic programming, and covariance/contravariance.
2. It provides code examples to illustrate key concepts like generics, LINQ queries, dynamic binding, and how covariance/contravariance enables safer usage of generics.
3. The last section summarizes some of the main features introduced in each C# version from managed code to generics to dynamic programming.
This document discusses object-oriented programming principles and best practices. It introduces the speaker, Paige Watson, and covers topics like encapsulation, inheritance, polymorphism, and the SOLID principles. The document discusses moving away from imperative programming styles and toward more object-oriented styles by avoiding statics, if/else statements, getters/setters, and null values. It advocates for techniques like using classes instead of static methods, guard clauses instead of deep if/else logic, and the null object pattern instead of null values.
The document discusses Behavior Driven Development (BDD) testing in Go. It introduces the godog library for BDD testing but notes its limitations. A new library called gobdd is presented which aims to address those limitations by using Go's standard testing package, allowing debugging of tests, and passing data between steps via a context. Examples of using gobdd are provided. Future improvements like additional pre-defined steps and output formats are discussed.
This document summarizes a keynote presentation about developing mobile applications using domain-specific languages. It discusses current mobile platforms and their programming languages, challenges with cross-platform development and arbitrary app rejections. It then presents an approach using a high-level modeling language that compiles to HTML5/JavaScript to enable cross-platform mobile app development. Key elements of the language include data models, user interfaces, scripting, data binding, web services access, and compilation to optimized JavaScript code.
The document describes a new tool called Sifu that aims to simplify programming by allowing developers to write specifications for applications in a domain-specific language (DSL) called SifuDSL. The SifuCompiler checks these specifications for errors and applies best practices, and the SifuLinker transforms the specifications into maintainable code in the developer's choice of technology stack. The generated code can be freely changed and extended by developers and looks like code written by an experienced developer. Sifu specifications also serve as documentation that is always up to date. The tool claims developers can generate up to 90% of an application's codebase using Sifu alone.
The document describes a new tool called Sifu that aims to simplify programming by allowing developers to write specifications for applications in a domain-specific language (DSL) called SifuDSL. The SifuCompiler checks these specifications for errors and applies best practices, and the SifuLinker transforms the specifications into maintainable code in the developer's choice of technology stack. The generated code can be freely changed and extended by developers and looks like code written by an experienced developer. Sifu specifications also serve as documentation that is always up to date. The tool claims developers can generate up to 90% of an application's codebase using Sifu alone.
This document discusses the evolution of C# and .NET Framework over time. It lists various C# versions and their associated .NET Framework versions and Visual Studio versions. It also provides examples of new C# language features such as tuples, nullable reference types, default interface methods, and extension methods.
This document discusses techniques for optimizing JavaScript execution through just-in-time compilation (JIT). It describes how a basic JIT works by generating optimized machine code for common cases like integer math. It also covers challenges like handling different object shapes through inline caching of property accesses and generating polymorphic code stubs. The goal of these techniques is to make JavaScript execution faster while avoiding noticeable compilation pauses.
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
Manyata Tech Park Bangalore_ Infrastructure, Facilities and Morenarinav14
Located in the bustling city of Bangalore, Manyata Tech Park stands as one of India’s largest and most prominent tech parks, playing a pivotal role in shaping the city’s reputation as the Silicon Valley of India. Established to cater to the burgeoning IT and technology sectors
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
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!
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.
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/
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
Orca: Nocode Graphical Editor for Container OrchestrationPedro J. Molina
Tool demo on CEDI/SISTEDES/JISBD2024 at A Coruña, Spain. 2024.06.18
"Orca: Nocode Graphical Editor for Container Orchestration"
by Pedro J. Molina PhD. from Metadev
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!!
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.