We all know, or should know, about SOLID. The question is, do we write C++ according to the SOLID principles?
https://platis.solutions/blog/2020/06/22/how-to-write-solid-cpp/
This document discusses lambda expressions in C++. It begins with a brief introduction to lambdas, noting that they are unnamed functions that can access enclosing scopes and have an unspecified type. It then covers lambda syntax including capture lists, arguments, return types, and invocations. Examples are provided to demonstrate capturing values by copy or reference. Advantages of using lambdas like code compacting and algorithm specialization are presented. The document also discusses passing lambdas using std::function and templates. It concludes by asking for additional use cases and any questions.
Dynamic C++ presentation at ACCU 2013 Conference. http://accu.org/index.php/conferences/accu_conference_2013/accu2013_sessions#dynamic_c
The document discusses dynamic C++ and the POCO library. It introduces the problem of accessing data in different formats and proposes POCO as a solution. POCO provides classes like RecordSet and Row that allow dynamically binding data and generating output in different formats like XML. It discusses the implementation details of how POCO achieves dynamic and type-safe behavior through templates and classes like Poco::Dynamic::Var.
The document describes functional lenses in C++. It discusses how lenses allow functional, immutable updates to nested data structures by focusing on a nested element and updating just that element. Lenses hide the data structure implementation and allow composable, reusable updates. The document outlines an implementation of lenses in C++ using templates, getter/setter functions, and lens composition. It also describes using the cpp_lenses library to work with containers and traverse nested elements.
The document compares TypeScript and Rust by providing examples of common programming concepts like variables, functions, collections, and iterators. It shows how concepts are implemented similarly in both languages, though the syntax differs. Key points covered include declaring immutable and mutable variables, defining and calling functions, working with collections like arrays/vectors through methods like map and filter, and how iterators are implemented and consumed in each language.
Coscup2021 - useful abstractions at rust and it's practical usageWayne Tsai
This document provides a summary of a presentation in Chinese about useful abstractions and syntax in Rust. It begins with an introduction of the speaker and their background. The content covers why Rust is useful, collections and iterators in Rust, the Option and Result enums, and concludes with a discussion of how Rust is being used. Key points include:
- Rust provides memory safety and high performance through its borrowing system and compiler checks
- Collections like vectors can be iterated over and methods like map, filter and collect allow transforming and collecting values
- Option and Result are useful for handling errors and absent values, avoiding panics
- Fast fail validation can be done by chaining Results with and
This document provides an overview of key concepts for working with D3, including:
- D3 uses standard web technologies like HTML, SVG, and CSS rather than introducing new representations. Learning D3 largely means learning web standards.
- Visualization with D3 requires mapping data to visual elements using scales. Scales are functions that map from data values to visual values like pixel positions.
- Selections in D3 correspond to elements in the DOM. Data joins allow binding data to selections to drive attribute updates. The enter, update, exit pattern is used to handle new, existing and removed data.
- Common scale types include linear, log, quantize and quantile for quantitative data, and
Razvan Rotari shows an experiment to see how far you can go with binding in C++; Cristian Neamtu follows with an insight on how to achieve this in Rust using Serde.
The document discusses the implementation of a binary search tree (BST) using both recursive and non-recursive traversal methods. It defines a BST node structure with left and right child pointers. Functions are included to insert nodes, perform inorder, preorder and postorder traversals recursively and non-recursively using stacks. Main inserts sample nodes into the tree and calls the various traversal functions to output the node values in the specified orders.
This document provides a summary of key C++ concepts for an online certification course from the Global Open University, including pointers, arrays, parameter passing, classes, constructors/destructors, inheritance, virtual functions, and coding tips. It includes code examples and explanations for working with pointers, arrays, strings, parameter passing, classes, inheritance, polymorphism, and best practices for avoiding errors. The full course material can be accessed online at the provided URL.
Container adapters like stack, queue and priority_queue provide interfaces to common data structures like LIFO stack, FIFO queue and sorted priority queue. They are implemented using underlying containers like deque, list, vector. The document explains various container adapter classes and their member functions, and provides code examples to demonstrate their use for problems like reversing a string, checking balanced parentheses and merging cookies.
This document contains MATLAB code for encoding and decoding DTMF tones. It includes functions to:
- Generate DTMF tones by combining two sinusoids
- Add noise and take the FFT to simulate a received signal
- Filter the signal to identify the two frequencies present
- Map the frequencies to the corresponding DTMF digit
The code contains callbacks to generate all 16 possible DTMF tones and displays the input signal and filtered FFT. It also includes functions to design lowpass and highpass filters used in the decoding process.
Our favorite language is now powering everything from event-driven servers to robots to Git clients to 3D games. The JavaScript package ecosystem has quickly outpaced past that of most other languages, allowing our vibrant community to showcase their talent. The front-end framework war has been taken to the next level, with heavy-hitters like Ember and Angular ushering in the new generation of long-lived, component-based web apps. The extensible web movement, spearheaded by the newly-reformed W3C Technical Architecture Group, has promised to place JavaScript squarely at the foundation of the web platform. Now, the language improvements of ES6 are slowly but surely making their way into the mainstream— witness the recent interest in using generators for async programming. And all the while, whispers of ES7 features are starting to circulate…
JavaScript has grown up. Now it's time to see how far it can go.
Javascript is a dynamic scripting language used widely for client-side web development. It allows asynchronous HTTP (AJAX) requests to update pages dynamically without reloading. Key features include variables, functions, objects, conditionals, closures and exceptions. The DOM represents the structure of a web page and can be manipulated with Javascript to dynamically change content, add/remove elements.
Day 1 of the training covers introductory C++ concepts like object-oriented programming, compilers, IDEs, classes, objects, and procedural programming concepts. Day 2 covers more advanced class concepts like constructors, destructors, static members, returning objects, and arrays of objects. Day 3 covers function and operator overloading.
YUI3 and AlloyUI Introduction for Pernambuco.JS 2012Eduardo Lundgren
The document discusses YUI and AlloyUI frameworks. It introduces YUI components like utilities, selectors, DOM, events, effects, and more. It states that AlloyUI is an extension for YUI and is open source. It provides examples of using YUI for first steps, comparing it to jQuery, and why one would use YUI. Specific examples discussed are the Liferay Portal workflow designer and scheduler applications that were built using YUI widgets, nodes, connectors, and graphics components.
Category theory, Monads, and Duality in the world of (BIG) Datagreenwop
This document discusses democratizing data access and processing through LINQ, Rx, and CoSQL. It introduces LINQ for querying objects and LINQ to SQL for querying tables relationally. It discusses the object-relational impedance mismatch and how Rx makes events first-class. CoSQL is proposed to bring SQL-style querying to NoSQL databases by treating them relationally while keeping their flexibility. Duality principles from category theory are discussed as enabling asynchronous and reactive programming models.
The document introduces AlloyUI Diagram Builder, which provides an intuitive drag-and-drop interface for visually building definitions in HTML5 without Flash. It started by rendering basic nodes and connectors. The architecture includes components like DiagramBuilder, AvailableFields, DiagramNodes, and Connectors. Events and serializing visual data are demonstrated. Finally, its use in Liferay Workflow Designer is shown as a real world application.
The document describes the Aho-Corasick string matching algorithm and provides an example C++ implementation. It constructs a search trie from input strings in the first phase. The second phase creates reverse links from child nodes to their closest parent nodes containing a given character. This allows it to efficiently find all occurrences of strings in a text by traversing the trie. Source code is provided for constructing the trie, creating reverse links, and searching for strings using either a return vector or callback approach.
This document discusses optimizing the Box2D physics engine using SIMD in JavaScript. It begins with background on Box2D, describing how it simulates 2D physics with rigid bodies. It then covers SIMD in JavaScript, how Emscripten can compile C/C++ to JavaScript with SIMD, and how Box2D was ported to JavaScript. Performance profiling showed the position constraint solver could benefit from SIMD. The document explores vectorizing math operations and specializing the solver to process groups of 4 constraints simultaneously.
This document discusses techniques for improving JavaScript performance, including:
- Using for loops instead of foreach loops for improved speed when iterating over arrays
- Memoization to cache function results and avoid repeated computations
- Lazy evaluation with libraries like underscore.js to defer computation until results are needed
- Parallelization using functional programming techniques like liftA3 to run operations concurrently
- Compile-time optimizations like loop fusion that rearrange code to reduce operations
The document emphasizes that functional programming allows optimizations like these through composability and avoiding side effects.
This document provides an overview of programming basics including 2D and 3D arrays, nested loops, and classes. It discusses how to create and access multi-dimensional arrays, use nested loops to repeat operations, and define classes with methods and member variables. Examples are given for 2D and 3D arrays, nested loops that count iterations, and a class for flashing an LED with methods to define on and off times. Challenges are presented at the end involving nested loops, serial printing patterns, counting string occurrences, and creating a class to add integers that is then turned into a library.
This document provides examples of functional JavaScript code using point-free style and typeclasses. It includes code snippets demonstrating:
- Composing functions using point-free style to remove unnecessary variables
- Implementing common typeclass methods like map, chain, and ap for a Container type
- Deriving typeclass instances for custom types to gain functionality like Functor, Applicative, Foldable
- Using typeclasses to compose functions operating on different container types in a uniform way
The document provides code samples but does not explain concepts in detail. It focuses on demonstrating point-free code and typeclass patterns through examples rather than performing in-depth explanations or performance analysis. Questions are provided at the end to prompt
The document discusses abstract classes and polymorphism in C++. It provides examples of:
1. Defining an abstract base class Linear Data Structure (LDS) with pure virtual functions like push() and having derived classes Stack and Queue implement these functions.
2. Using polymorphism through pointers and references to the base class to call push() on either Stack or Queue objects.
3. A similar example with an abstract base class Shape and derived classes Rectangle and Circle implementing the area() function polymorphically.
This document provides an overview and introduction to building a basic fraction calculator app in Objective-C. It begins with an overview of the project architecture using the MVC pattern with a Fraction model class to represent fractions, a Calculator class to perform operations, and a ViewController class to manage the user interface. It then details the implementation of each class, including the Fraction class with methods for creating, modifying, and performing operations on fractions, the Calculator class for setting operands and performing operations, and the ViewController class for handling user interface events and updating the display.
Thrift and PasteScript are frameworks for building distributed applications and services. Thrift allows defining data types and interfaces using a simple definition language that can generate code in multiple languages. It uses a compact binary protocol for efficient RPC-style communication between clients and servers. PasteScript builds on WSGI and provides tools like paster for deploying and managing Python web applications, along with reloading and logging capabilities. It integrates with Thrift via server runners and application factories.
This document discusses architecture components for building modern Android applications. It covers common app architecture problems and principles like separation of concerns. It introduces key Architecture Components like Activities, Fragments, Services, ContentProviders, ViewModels and LiveData. It also discusses architectural patterns like MVC, MVP, MVVM and recommendations like clean architecture. The document emphasizes principles like modularity, separation of concerns, and testability. It provides an overview of alternatives like Room, Paging Library, and recommendations for legacy apps.
Razvan Rotari shows an experiment to see how far you can go with binding in C++; Cristian Neamtu follows with an insight on how to achieve this in Rust using Serde.
The document discusses the implementation of a binary search tree (BST) using both recursive and non-recursive traversal methods. It defines a BST node structure with left and right child pointers. Functions are included to insert nodes, perform inorder, preorder and postorder traversals recursively and non-recursively using stacks. Main inserts sample nodes into the tree and calls the various traversal functions to output the node values in the specified orders.
This document provides a summary of key C++ concepts for an online certification course from the Global Open University, including pointers, arrays, parameter passing, classes, constructors/destructors, inheritance, virtual functions, and coding tips. It includes code examples and explanations for working with pointers, arrays, strings, parameter passing, classes, inheritance, polymorphism, and best practices for avoiding errors. The full course material can be accessed online at the provided URL.
Container adapters like stack, queue and priority_queue provide interfaces to common data structures like LIFO stack, FIFO queue and sorted priority queue. They are implemented using underlying containers like deque, list, vector. The document explains various container adapter classes and their member functions, and provides code examples to demonstrate their use for problems like reversing a string, checking balanced parentheses and merging cookies.
This document contains MATLAB code for encoding and decoding DTMF tones. It includes functions to:
- Generate DTMF tones by combining two sinusoids
- Add noise and take the FFT to simulate a received signal
- Filter the signal to identify the two frequencies present
- Map the frequencies to the corresponding DTMF digit
The code contains callbacks to generate all 16 possible DTMF tones and displays the input signal and filtered FFT. It also includes functions to design lowpass and highpass filters used in the decoding process.
Our favorite language is now powering everything from event-driven servers to robots to Git clients to 3D games. The JavaScript package ecosystem has quickly outpaced past that of most other languages, allowing our vibrant community to showcase their talent. The front-end framework war has been taken to the next level, with heavy-hitters like Ember and Angular ushering in the new generation of long-lived, component-based web apps. The extensible web movement, spearheaded by the newly-reformed W3C Technical Architecture Group, has promised to place JavaScript squarely at the foundation of the web platform. Now, the language improvements of ES6 are slowly but surely making their way into the mainstream— witness the recent interest in using generators for async programming. And all the while, whispers of ES7 features are starting to circulate…
JavaScript has grown up. Now it's time to see how far it can go.
Javascript is a dynamic scripting language used widely for client-side web development. It allows asynchronous HTTP (AJAX) requests to update pages dynamically without reloading. Key features include variables, functions, objects, conditionals, closures and exceptions. The DOM represents the structure of a web page and can be manipulated with Javascript to dynamically change content, add/remove elements.
Day 1 of the training covers introductory C++ concepts like object-oriented programming, compilers, IDEs, classes, objects, and procedural programming concepts. Day 2 covers more advanced class concepts like constructors, destructors, static members, returning objects, and arrays of objects. Day 3 covers function and operator overloading.
YUI3 and AlloyUI Introduction for Pernambuco.JS 2012Eduardo Lundgren
The document discusses YUI and AlloyUI frameworks. It introduces YUI components like utilities, selectors, DOM, events, effects, and more. It states that AlloyUI is an extension for YUI and is open source. It provides examples of using YUI for first steps, comparing it to jQuery, and why one would use YUI. Specific examples discussed are the Liferay Portal workflow designer and scheduler applications that were built using YUI widgets, nodes, connectors, and graphics components.
Category theory, Monads, and Duality in the world of (BIG) Datagreenwop
This document discusses democratizing data access and processing through LINQ, Rx, and CoSQL. It introduces LINQ for querying objects and LINQ to SQL for querying tables relationally. It discusses the object-relational impedance mismatch and how Rx makes events first-class. CoSQL is proposed to bring SQL-style querying to NoSQL databases by treating them relationally while keeping their flexibility. Duality principles from category theory are discussed as enabling asynchronous and reactive programming models.
The document introduces AlloyUI Diagram Builder, which provides an intuitive drag-and-drop interface for visually building definitions in HTML5 without Flash. It started by rendering basic nodes and connectors. The architecture includes components like DiagramBuilder, AvailableFields, DiagramNodes, and Connectors. Events and serializing visual data are demonstrated. Finally, its use in Liferay Workflow Designer is shown as a real world application.
The document describes the Aho-Corasick string matching algorithm and provides an example C++ implementation. It constructs a search trie from input strings in the first phase. The second phase creates reverse links from child nodes to their closest parent nodes containing a given character. This allows it to efficiently find all occurrences of strings in a text by traversing the trie. Source code is provided for constructing the trie, creating reverse links, and searching for strings using either a return vector or callback approach.
This document discusses optimizing the Box2D physics engine using SIMD in JavaScript. It begins with background on Box2D, describing how it simulates 2D physics with rigid bodies. It then covers SIMD in JavaScript, how Emscripten can compile C/C++ to JavaScript with SIMD, and how Box2D was ported to JavaScript. Performance profiling showed the position constraint solver could benefit from SIMD. The document explores vectorizing math operations and specializing the solver to process groups of 4 constraints simultaneously.
This document discusses techniques for improving JavaScript performance, including:
- Using for loops instead of foreach loops for improved speed when iterating over arrays
- Memoization to cache function results and avoid repeated computations
- Lazy evaluation with libraries like underscore.js to defer computation until results are needed
- Parallelization using functional programming techniques like liftA3 to run operations concurrently
- Compile-time optimizations like loop fusion that rearrange code to reduce operations
The document emphasizes that functional programming allows optimizations like these through composability and avoiding side effects.
This document provides an overview of programming basics including 2D and 3D arrays, nested loops, and classes. It discusses how to create and access multi-dimensional arrays, use nested loops to repeat operations, and define classes with methods and member variables. Examples are given for 2D and 3D arrays, nested loops that count iterations, and a class for flashing an LED with methods to define on and off times. Challenges are presented at the end involving nested loops, serial printing patterns, counting string occurrences, and creating a class to add integers that is then turned into a library.
This document provides examples of functional JavaScript code using point-free style and typeclasses. It includes code snippets demonstrating:
- Composing functions using point-free style to remove unnecessary variables
- Implementing common typeclass methods like map, chain, and ap for a Container type
- Deriving typeclass instances for custom types to gain functionality like Functor, Applicative, Foldable
- Using typeclasses to compose functions operating on different container types in a uniform way
The document provides code samples but does not explain concepts in detail. It focuses on demonstrating point-free code and typeclass patterns through examples rather than performing in-depth explanations or performance analysis. Questions are provided at the end to prompt
The document discusses abstract classes and polymorphism in C++. It provides examples of:
1. Defining an abstract base class Linear Data Structure (LDS) with pure virtual functions like push() and having derived classes Stack and Queue implement these functions.
2. Using polymorphism through pointers and references to the base class to call push() on either Stack or Queue objects.
3. A similar example with an abstract base class Shape and derived classes Rectangle and Circle implementing the area() function polymorphically.
This document provides an overview and introduction to building a basic fraction calculator app in Objective-C. It begins with an overview of the project architecture using the MVC pattern with a Fraction model class to represent fractions, a Calculator class to perform operations, and a ViewController class to manage the user interface. It then details the implementation of each class, including the Fraction class with methods for creating, modifying, and performing operations on fractions, the Calculator class for setting operands and performing operations, and the ViewController class for handling user interface events and updating the display.
Thrift and PasteScript are frameworks for building distributed applications and services. Thrift allows defining data types and interfaces using a simple definition language that can generate code in multiple languages. It uses a compact binary protocol for efficient RPC-style communication between clients and servers. PasteScript builds on WSGI and provides tools like paster for deploying and managing Python web applications, along with reloading and logging capabilities. It integrates with Thrift via server runners and application factories.
This document discusses architecture components for building modern Android applications. It covers common app architecture problems and principles like separation of concerns. It introduces key Architecture Components like Activities, Fragments, Services, ContentProviders, ViewModels and LiveData. It also discusses architectural patterns like MVC, MVP, MVVM and recommendations like clean architecture. The document emphasizes principles like modularity, separation of concerns, and testability. It provides an overview of alternatives like Room, Paging Library, and recommendations for legacy apps.
This document discusses architecture components for building modern Android applications. It covers common app architecture problems and principles like separation of concerns. It introduces key Architecture Components like Activities, Fragments, Services, ContentProviders, ViewModels and LiveData. It also discusses architectural patterns like MVC, MVP, MVVM and recommendations like clean architecture. The document emphasizes principles like modularity, separation of concerns, and testability. It provides an overview of alternatives like Room, Paging Library, and recommendations for legacy apps.
The document discusses SOLID principles of object-oriented design. It provides examples of code that demonstrate poor adherence to SOLID and ways the code can be refactored to better follow SOLID. Specifically, it shows how to apply the single responsibility principle, open/closed principle, Liskov substitution principle, interface segregation principle and dependency inversion principle to structure code for flexibility, reusability and maintainability.
The document discusses networking on mobile devices. It covers supported networking technologies like cellular data, WiFi, and Bluetooth. It discusses required permissions for network operations and the need to perform networking operations on a separate thread to avoid blocking the UI. It provides an example of using AsyncTask to perform networking operations asynchronously. It also covers best security practices, implementing a network security configuration, checking device connectivity, and using Firebase Cloud Messaging as an alternative to polling for updates from a server.
The document discusses testing in Android applications. It recommends moving as much logic as possible to the Java Virtual Machine (JVM) to allow for easier unit testing. This includes business logic, models, and network code using Retrofit. It also suggests using Espresso for UI testing on Android and monkeyrunner for basic OS interaction testing. The document acknowledges testing on Android can be painful due to speed and fragmentation issues, and proposes compromises like helping quality assurance engineers with tools like the Bee library.
Tricks to Making a Realtime SurfaceView Actually Perform in Realtime - Maarte...DroidConTLV
SurfaceViews allow drawing to a separate thread to achieve realtime performance. Key aspects include:
- Driving the SurfaceView with a thread that locks and draws to the canvas in a loop.
- Using input buffering and object pooling to efficiently process touch/key events from the main thread.
- Employing various timing and drawing techniques like fixed scaling to optimize for performance. Managing the SurfaceView lifecycle to ensure the drawing thread starts and stops appropriately.
The document discusses getting started with the immersive web and WebXR. It introduces key concepts like the WebXR specification which allows accessing virtual and augmented reality devices from the web. It highlights opportunities like discoverability, reach, and accessibility that WebXR provides. Frameworks like A-Frame, BabylonJS, and THREE.js are presented for building immersive experiences. Examples like a solar system, LOVE sculpture, and Ava avatar demonstrate how to create VR content. The document emphasizes thinking about user interaction, readability in 360 environments, and combining WebXR with features like service workers to enable offline capabilities.
Proxy Deep Dive JUG Saxony Day 2015-10-02Sven Ruppert
Ein wenig über Proxy´s. Wer mehr Hintergrundinfos dazu haben möchte, empfehle ich das Buch von Dr. Kabutz und mir :
http://www.amazon.de/Dynamic-Proxies-Dr-Heinz-Kabutz/dp/3868021531/ref=asap_bc?ie=UTF8
The document discusses various methods for connecting to a network and downloading content in Android, including checking network connectivity, performing long operations off the main thread using AsyncTask, downloading content from URLs, and considerations around using HttpClient versus HttpURLConnection. It provides code examples for tasks like retrieving the device IP address, disabling HTTP connection reuse, and handling gzip encoding.
Cassandra Summit 2014: Highly Scalable Web Application in the Cloud with Cass...DataStax Academy
Presenters, L
Putting together a cloud based web application that allows end users to upload, encode, manage and distribute video media files is not a difficult task these days. Especially with the number of related frameworks and services available, ready to be used or consumed. The situation gets more complex when the expected traffic is in the millions-of-users range, globally distributed, and requiring detailed monitoring for usage. Using this scenario, in this session you will learn how to use the recently updated Datastax C# Cassandra driver, how to deploy a multi-datacenter Cassandra cluster using the Microsoft Azure platform that can be accessed from different programming languages, and how to leverage existing cloud services to perform some of the tasks associated with this use case.
The process of creating HDTR images from the photographic shot to the processing via a Photoshop JS script explained.
This is the slide I used for my talk at the monthly MadridJS meeting held on May, 23rd 2013.
The document discusses networking on mobile devices. It covers supported networking technologies like cellular data, WiFi and Bluetooth. It discusses required permissions for network operations and that networking should be performed on a separate thread to avoid blocking the UI. It provides an example of using AsyncTask to perform networking operations asynchronously. It also covers best security practices, checking network connectivity, and using Firebase Cloud Messaging as an alternative to polling for updates.
The 2016 Android Developer Toolbox [MOBILIZATION]Nilhcem
This document discusses various tools that can be used in Android development. It describes build tools like Gradle and build variants. It also covers debugging tools such as Stetho, Hugo, and Pidcat. Metrics and performance tools like LeakCanary, Takt, and AndroidDevMetrics are also mentioned. The document provides links to code analysis tools and testing tools like mock servers. It concludes by recommending choosing the right tools for the job.
UberFire is a web framework for building extensible workbenches and console applications that provides an Eclipse-like workbench experience for the web. It allows users to easily build rich web apps by providing a strong ecosystem of pluggable components and infrastructure. UberFire's goal is to provide a customizable workbench experience on the web for building maintainable apps. It uses techniques like hierarchical composition, menus, and life-cycle management to achieve this.
This document provides an overview of key Android development concepts and techniques. It discusses fragments, the support library, dependency injection, image caching, threading and AsyncTask, notifications, supporting multiple screens, and optimizing ListView performance. The document also recommends several popular Android libraries and open source apps that demonstrate best practices.
In this webinar, we talked about hard-to-test patterns in C++ and show how to refactor them. The difficulty, in this context, does not lie in the code's inherent complexity.
The focus will be on patterns technically difficult to unit test because they may:
* Require irrelevant software to be tested too
* E.g.: 3rd party libraries, classes other than the one under test
* Delay the test execution
* E.g.: sleeps inside code under test
* Require intricate structures to be copied or written from scratch
* E.g.: fakes containing a lot of logic
* Require test details to be included in the production code
* E.g.: #ifdef UNIT_TESTS
* Make changes and/or are dependent on the runtime environment
* E.g.: Creating or reading from files
How and why i roll my own node.js frameworkBen Lin
1) The document discusses the author's experience building their own node.js web framework, including their background with other technologies like Ruby on Rails.
2) It describes the key features of their framework, such as MVC structure, middleware support, asset packaging, and command line tools.
3) The author explains that they rolled their own framework to learn more about how frameworks work, have more control over the technology stack, and because node.js performance is better than Ruby on Rails. They emphasize that building the framework was a fun learning experience.
Just a few years ago all software systems were designed to be monoliths running on a single big and powerful machine. But nowadays most companies desire to scale out instead of scaling up, because it is much easier to buy or rent a large cluster of commodity hardware then to get a single machine that is powerful enough. In the database area scaling out is realized by utilizing a combination of polyglot persistence and sharding of data. On the application level scaling out is realized by microservices. In this talk I will briefly introduce the concepts and ideas of microservices and discuss their benefits and drawbacks. Afterwards I will focus on the point of intersection of a microservice based application talking to one or many NoSQL databases. We will try and find answers to these questions: Are the differences to a monolithic application? How to scale the whole system properly? What about polyglot persistence? Is there a data-centric way to split microservices?
C++20 `requires` and `concept`.
Presentation held at 2025-01-15 at XM, Athens, Greece.
https://www.meetup.com/grcpp-athens/events/304885164
Welcome the the next GRCPP meetup where we will introduce a powerful new feature in C++20: Concepts.
Concepts are a way to specify requirements on template parameter types and to make templates more expressive and easier to understand..
We will show how to use concepts to create "interfaces" for your template types, how to simplify your code and provide better error messages.
We will demonstrate how to use `requires` to create "contracts" for your templates and how to use `concept` to constrain the acceptable types.
This document provides a crash course on using OpenAI APIs, focusing on the Chat Completion API. It discusses how to get started by installing the Python library and getting an API key. Examples are given for constructing prompts and messages to generate responses. Function calling is demonstrated to have the model select and call functions. Tips are provided for reducing costs and fine-tuning models. The overall message is that prompt engineering is iterative and specificity is important for reliable responses.
The document discusses the builder pattern, which is used to construct complex objects with many optional attributes. It provides an example of building menus with optional attributes like title, border, and orientation. The builder pattern avoids many constructors by splitting construction into steps, initializing only relevant attributes at each step and returning the complete object at the end. The document recommends keeping builder implementations simple and not over-engineering unless there are truly many optional arguments.
Operating systems offer a number of mechanisms for processes to communicate with each other.
In this workshop we introduce two of these mechanisms, messages queues and shared memory, look into a simple cross-platform implementation using Boost.Interprocess and cover some of the common pitfalls.
Το CMake είναι το πιο διαδεδομένο εργαλείο για να "χτίσεις" projects γραμμένα σε C++ για το 2021.
Το CMake δε μεταγλωτίζει το ίδιο τον κώδικα αλλά παράγει τις κατάλληλες παραμέτρους για άλλα εργαλεία (π.χ. make) τα οποία αναλαμβάνουν τη μεταγλώτισση.
Η χρήση εργαλείων όπως το CMake είναι μονόδρομος όταν ένα έργο σε C++ περιλαμβάνει πολλά αρχεία, διάφορες παραμέτρους, εξωτερικά dependencies κλπ. Σε αυτή την περίπτωση η ανάπτυξή του γίνεται εκθετικά δυσκολότερη όσο το μέγεθός του αυξάνεται, εάν δεν υιοθετηθεί χρήση εργαλείων όπως το CMake.
邏 Στο εργαστήριο θα δείξουμε πως μπορούμε να στήσουμε ένα τυπικό project γραμμένο σε C++ και θα καλύψουμε τα πιο βασικά σενάρια που χρειάζεται να γνωρίζει κάποιος όπως:
✅ Παραγωγή εκτελέσιμου αρχείου
✅ Καθορισμός του include path
✅ Δημιουργία βιβλιοθήκης για static ή dynamic linking
✅ Ελεγχος των διάφορων compilation flags
✅ Δημιουργία functions εντός του CMake
✅ Παραμετροποίηση μέσω options
The pImpl idiom allows you to hide implementation details from a class interface during compilation. It optimizes compilation time by preventing recompilation when implementation changes are made. It also fully hides implementation and internal dependencies when distributing precompiled libraries. The pImpl idiom makes it possible to transparently switch class implementations and maintain backward compatibility by allowing linking with different shared libraries that satisfy the same interface. The document provides an example of refactoring code using the pImpl idiom in C++, including defining the implementation class privately and using a unique pointer to decouple it from the class interface.
With increased software size and complexity, there is an increased risk in terms of software failures that could lead to unacceptable hazards. Part 6 of ISO26262 standard (International Standard for safety of automotive electronics) provides appropriate requirements and processes to develop automotive software acceptably safe. Following ISO26262 standard is almost mandatory in every leading company.
The topic of the meetup is to introduce the ISO26262 standard and briefly address the following questions:
1. How to develop automotive software according to ISO26262?
2. What is safety analysis and how to use it in software?
3. How to manage software according to requirements from standard?
4. What are the other constraints from ISO26262 towards software development and testing?
Speaker:
Chaitanya Raju is currently consulting across safety critical automotive systems and software. He has a master's in automotive embedded systems and experience of around 10 years in the automotive domain. As a safety practitioner he worked at Volvo Trucks (GTT), NEVS, CEVT, Hyundai Mobis and currently working in Volvo Cars. Chaitanya trained function owners, software developers and project managers in ISO26262.
How to create your own Linux distribution (embedded-gothenburg)Dimitrios Platis
= Please note that the code in the slides may not be working
= Refer to the repository for working examples: https://github.com/platisd/meta-dimitriOS
Welcome to a beginner-friendly deep dive on how to create your own Linux distribution!
But why would you want to create one yourself?
** BACKGROUND **
Mainstream Linux distributions (e.g. Ubuntu, ArchLinux) enable their users to perform a plethora of tasks and often include the means for further customization of the system via a package manager, development tools, a desktop environment etc.
However, if you are creating a device that has a very specific set of use cases and needs to operate under strict constraints in regards to resources, power consumption, performance, or robustness, then using a full-fledged desktop operating system is infeasible. This is very common when developing embedded systems, meant to be used in an IoT application, the automotive or telecom industry, and so forth.
To create an Embedded Linux operating system, there are two paths you can follow:
1. Create a "golden image"; often the first choice when prototyping with a development board, e.g. a Raspberry Pi.
An off-the-shelf operating system, such as Debian, is hacked until it fits the purpose. Then clones of that "golden image" are created and installed in more devices.
This is good enough for creating a proof-of-concept but quickly falls short when the project becomes more complicated, larger, or the need to develop product variants arises.
2. Create a configuration-based distribution; the industry-proven way to create an Embedded Linux operating system.
Instead of maintaining the operating system as a big binary, its components are specified in version controllable configuration files. Setting everything up may require a steeper learning curve since things are not already conveniently in place. However, it is the only sustainable way to go forward when it comes to serious Embedded Linux development.
More on the topic: https://www.linuxjournal.com/content/linux-iot-development-adjusting-binary-os-yocto-project-workflow
** WORKSHOP **
In this workshop, we are going to demonstrate the "ingredients" needed to build your own Linux distribution using the Yocto project. Then we will run our distribution on a Raspberry Pi board.
Yocto is a collection of tools and processes enabling the creation of configurable Embedded Linux distributions. You define which components are to be included in your operating system with software- and hardware-specific configuration files. "Recipes" determine how these components are built and also what they depend upon. Finally, these recipes are utilized by "bitbake" (a tool offered by Yocto) to build your custom Linux image.
During the workshop, we will go over the setup needed to create a custom operating system for a typical IoT device. It boots up, automatically connects to the internet, and launches a C++ demon that fetches information from a cloud API.
This document discusses refactoring C++ code to make it easier to test. It begins by describing hard-to-test code patterns like tight coupling, dependence on global states, and high complexity. It then discusses refactoring techniques like abstracting dependencies through interfaces, injecting dependencies, and avoiding hard-coded values. The document provides examples refactoring files, odometers, timers, and domain logic to be more testable. It concludes by emphasizing writing unit tests that are fast and focus on verifying code through abstraction and injection.
Get & Download Wondershare Filmora Crack Latest [2025]saniaaftab72555
Copy & Past Link 👉👉
https://dr-up-community.info/
Wondershare Filmora is a video editing software and app designed for both beginners and experienced users. It's known for its user-friendly interface, drag-and-drop functionality, and a wide range of tools and features for creating and editing videos. Filmora is available on Windows, macOS, iOS (iPhone/iPad), and Android platforms.
Exploring Wayland: A Modern Display Server for the FutureICS
Wayland is revolutionizing the way we interact with graphical interfaces, offering a modern alternative to the X Window System. In this webinar, we’ll delve into the architecture and benefits of Wayland, including its streamlined design, enhanced performance, and improved security features.
Not So Common Memory Leaks in Java WebinarTier1 app
This SlideShare presentation is from our May webinar, “Not So Common Memory Leaks & How to Fix Them?”, where we explored lesser-known memory leak patterns in Java applications. Unlike typical leaks, subtle issues such as thread local misuse, inner class references, uncached collections, and misbehaving frameworks often go undetected and gradually degrade performance. This deck provides in-depth insights into identifying these hidden leaks using advanced heap analysis and profiling techniques, along with real-world case studies and practical solutions. Ideal for developers and performance engineers aiming to deepen their understanding of Java memory management and improve application stability.
Discover why Wi-Fi 7 is set to transform wireless networking and how Router Architects is leading the way with next-gen router designs built for speed, reliability, and innovation.
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...Andre Hora
Unittest and pytest are the most popular testing frameworks in Python. Overall, pytest provides some advantages, including simpler assertion, reuse of fixtures, and interoperability. Due to such benefits, multiple projects in the Python ecosystem have migrated from unittest to pytest. To facilitate the migration, pytest can also run unittest tests, thus, the migration can happen gradually over time. However, the migration can be timeconsuming and take a long time to conclude. In this context, projects would benefit from automated solutions to support the migration process. In this paper, we propose TestMigrationsInPy, a dataset of test migrations from unittest to pytest. TestMigrationsInPy contains 923 real-world migrations performed by developers. Future research proposing novel solutions to migrate frameworks in Python can rely on TestMigrationsInPy as a ground truth. Moreover, as TestMigrationsInPy includes information about the migration type (e.g., changes in assertions or fixtures), our dataset enables novel solutions to be verified effectively, for instance, from simpler assertion migrations to more complex fixture migrations. TestMigrationsInPy is publicly available at: https://github.com/altinoalvesjunior/TestMigrationsInPy.
Avast Premium Security Crack FREE Latest Version 2025mu394968
🌍📱👉COPY LINK & PASTE ON GOOGLE https://dr-kain-geera.info/👈🌍
Avast Premium Security is a paid subscription service that provides comprehensive online security and privacy protection for multiple devices. It includes features like antivirus, firewall, ransomware protection, and website scanning, all designed to safeguard against a wide range of online threats, according to Avast.
Key features of Avast Premium Security:
Antivirus: Protects against viruses, malware, and other malicious software, according to Avast.
Firewall: Controls network traffic and blocks unauthorized access to your devices, as noted by All About Cookies.
Ransomware protection: Helps prevent ransomware attacks, which can encrypt your files and hold them hostage.
Website scanning: Checks websites for malicious content before you visit them, according to Avast.
Email Guardian: Scans your emails for suspicious attachments and phishing attempts.
Multi-device protection: Covers up to 10 devices, including Windows, Mac, Android, and iOS, as stated by 2GO Software.
Privacy features: Helps protect your personal data and online privacy.
In essence, Avast Premium Security provides a robust suite of tools to keep your devices and online activity safe and secure, according to Avast.
PDF Reader Pro Crack Latest Version FREE Download 2025mu394968
🌍📱👉COPY LINK & PASTE ON GOOGLE https://dr-kain-geera.info/👈🌍
PDF Reader Pro is a software application, often referred to as an AI-powered PDF editor and converter, designed for viewing, editing, annotating, and managing PDF files. It supports various PDF functionalities like merging, splitting, converting, and protecting PDFs. Additionally, it can handle tasks such as creating fillable forms, adding digital signatures, and performing optical character recognition (OCR).
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Eric D. Schabell
It's time you stopped letting your telemetry data pressure your budgets and get in the way of solving issues with agility! No more I say! Take back control of your telemetry data as we guide you through the open source project Fluent Bit. Learn how to manage your telemetry data from source to destination using the pipeline phases covering collection, parsing, aggregation, transformation, and forwarding from any source to any destination. Buckle up for a fun ride as you learn by exploring how telemetry pipelines work, how to set up your first pipeline, and exploring several common use cases that Fluent Bit helps solve. All this backed by a self-paced, hands-on workshop that attendees can pursue at home after this session (https://o11y-workshops.gitlab.io/workshop-fluentbit).
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe Illustrator is a powerful, professional-grade vector graphics software used for creating a wide range of designs, including logos, icons, illustrations, and more. Unlike raster graphics (like photos), which are made of pixels, vector graphics in Illustrator are defined by mathematical equations, allowing them to be scaled up or down infinitely without losing quality.
Here's a more detailed explanation:
Key Features and Capabilities:
Vector-Based Design:
Illustrator's foundation is its use of vector graphics, meaning designs are created using paths, lines, shapes, and curves defined mathematically.
Scalability:
This vector-based approach allows for designs to be resized without any loss of resolution or quality, making it suitable for various print and digital applications.
Design Creation:
Illustrator is used for a wide variety of design purposes, including:
Logos and Brand Identity: Creating logos, icons, and other brand assets.
Illustrations: Designing detailed illustrations for books, magazines, web pages, and more.
Marketing Materials: Creating posters, flyers, banners, and other marketing visuals.
Web Design: Designing web graphics, including icons, buttons, and layouts.
Text Handling:
Illustrator offers sophisticated typography tools for manipulating and designing text within your graphics.
Brushes and Effects:
It provides a range of brushes and effects for adding artistic touches and visual styles to your designs.
Integration with Other Adobe Software:
Illustrator integrates seamlessly with other Adobe Creative Cloud apps like Photoshop, InDesign, and Dreamweaver, facilitating a smooth workflow.
Why Use Illustrator?
Professional-Grade Features:
Illustrator offers a comprehensive set of tools and features for professional design work.
Versatility:
It can be used for a wide range of design tasks and applications, making it a versatile tool for designers.
Industry Standard:
Illustrator is a widely used and recognized software in the graphic design industry.
Creative Freedom:
It empowers designers to create detailed, high-quality graphics with a high degree of control and precision.
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentShubham Joshi
A secure test infrastructure ensures that the testing process doesn’t become a gateway for vulnerabilities. By protecting test environments, data, and access points, organizations can confidently develop and deploy software without compromising user privacy or system integrity.
Download YouTube By Click 2025 Free Full Activatedsaniamalik72555
Copy & Past Link 👉👉
https://dr-up-community.info/
"YouTube by Click" likely refers to the ByClick Downloader software, a video downloading and conversion tool, specifically designed to download content from YouTube and other video platforms. It allows users to download YouTube videos for offline viewing and to convert them to different formats.
Adobe After Effects Crack FREE FRESH version 2025kashifyounis067
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe After Effects is a software application used for creating motion graphics, special effects, and video compositing. It's widely used in TV and film post-production, as well as for creating visuals for online content, presentations, and more. While it can be used to create basic animations and designs, its primary strength lies in adding visual effects and motion to videos and graphics after they have been edited.
Here's a more detailed breakdown:
Motion Graphics:
.
After Effects is powerful for creating animated titles, transitions, and other visual elements to enhance the look of videos and presentations.
Visual Effects:
.
It's used extensively in film and television for creating special effects like green screen compositing, object manipulation, and other visual enhancements.
Video Compositing:
.
After Effects allows users to combine multiple video clips, images, and graphics to create a final, cohesive visual.
Animation:
.
It uses keyframes to create smooth, animated sequences, allowing for precise control over the movement and appearance of objects.
Integration with Adobe Creative Cloud:
.
After Effects is part of the Adobe Creative Cloud, a suite of software that includes other popular applications like Photoshop and Premiere Pro.
Post-Production Tool:
.
After Effects is primarily used in the post-production phase, meaning it's used to enhance the visuals after the initial editing of footage has been completed.
Copy & Paste On Google >>> https://dr-up-community.info/
EASEUS Partition Master Final with Crack and Key Download If you are looking for a powerful and easy-to-use disk partitioning software,
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfTechSoup
In this webinar we will dive into the essentials of generative AI, address key AI concerns, and demonstrate how nonprofits can benefit from using Microsoft’s AI assistant, Copilot, to achieve their goals.
This event series to help nonprofits obtain Copilot skills is made possible by generous support from Microsoft.
What You’ll Learn in Part 2:
Explore real-world nonprofit use cases and success stories.
Participate in live demonstrations and a hands-on activity to see how you can use Microsoft 365 Copilot in your own work!
Download Wondershare Filmora Crack [2025] With Latesttahirabibi60507
Copy & Past Link 👉👉
http://drfiles.net/
Wondershare Filmora is a video editing software and app designed for both beginners and experienced users. It's known for its user-friendly interface, drag-and-drop functionality, and a wide range of tools and features for creating and editing videos. Filmora is available on Windows, macOS, iOS (iPhone/iPad), and Android platforms.
Solidworks Crack 2025 latest new + license codeaneelaramzan63
Copy & Paste On Google >>> https://dr-up-community.info/
The two main methods for installing standalone licenses of SOLIDWORKS are clean installation and parallel installation (the process is different ...
Disable your internet connection to prevent the software from performing online checks during installation
Why Orangescrum Is a Game Changer for Construction Companies in 2025Orangescrum
Orangescrum revolutionizes construction project management in 2025 with real-time collaboration, resource planning, task tracking, and workflow automation, boosting efficiency, transparency, and on-time project delivery.
3. |
The Zenseact Team
600
Employees
150+
Perception Experts
60+
Deep Learning Engineers
10+
World First Active Active
SafetyServices
COMPETENCES
▪ Pure software company with ONE product focus
▪ Global AI and Edge learning center HQ in Sweden
▪ Built around the inventors of Active Safety
▪ 20+ years of production experience worldwide
Shanghai, China
Gothenburg
HQ
California
7. How to write SOLID C++
...and why it matters!
Join at slido.com
#solid
8. About me Dimitrios Platis
● Grew up in Rodos, Greece
● Software Engineer @ Zenseact, Sweden
● Course responsible @ DIT112, DAT265
● C++ courses
○ Beginner
○ Advanced
○ Software Design & Architecture
● Interests:
○ Embedded systems
○ Open source software & hardware
○ Robots, Portable gadgets, IoT, 3D printing
● Meetups
○ Embedded@Gothenburg
○ grcpp
● Website: https://platis.solutions
9. What do you work with?
ⓘ Start presenting to display the poll results on this slide.
10. How familiar are you with
the SOLID principles?
ⓘ Start presenting to display the poll results on this slide.
11. Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
SOLID
SOLID is an acronym for five design
principles intended to make software
designs more understandable,
flexible and maintainable. They are a
subset of many principles promoted by
Robert C. Martin. Though they apply to
any object-oriented design, the SOLID
principles can also form a core
philosophy for agile development.
- https://en.wikipedia.org/wiki/SOLID
12. High cohesion
● Responsibility over a single
purpose
● The class should only have one
"reason" to change
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
16. Abstract interfaces
● Open for extension, closed for
modification
● Add new functionality without
having to change existing code
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
17. enum class SensorModel {
Good,
Better
};
struct DistanceSensor {
DistanceSensor(SensorModel model) : mModel{model} {}
int getDistance() {
switch (mModel) {
case SensorModel::Good :
// Business logic for "Good" model
case SensorModel::Better :
// Business logic for "Better" model
}
}
};
18. struct DistanceSensor {
virtual ~DistanceSensor() = default;
virtual int getDistance() = 0;
};
struct GoodDistanceSensor : public DistanceSensor {
int getDistance() override {
// Business logic for "Good" model
}
};
struct BetterDistanceSensor : public DistanceSensor {
int getDistance() override {
// Business logic for "Better" model
}
};
19. Substitutability
● A subclass should satisfy not
only the syntactic but also the
behavioral expectations of the
parents
● The behavior of the various
children of a class should be
consistent
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
20. struct InertialMeasurementUnit {
virtual ~InertialMeasurementUnit() = default;
virtual int getOrientation() = 0;
};
struct Gyroscope : public InertialMeasurementUnit {
/**
* @return orientation in degrees [0, 360)
*/
int getOrientation() override;
};
struct Accelerometer : public InertialMeasurementUnit {
/**
* @return orientation in degrees [-180, 180)
*/
int getOrientation() override;
};
21. struct InertialMeasurementUnit {
virtual ~InertialMeasurementUnit
() = default;
/**
* Sets the frequency of measurements
* @param frequency (in Hertz)
* @return Whether frequency was valid
*/
virtual bool setFrequency(double frequency) = 0;
};
struct Gyroscope : public InertialMeasurementUnit {
// Valid range [0.5, 10]
bool setFrequency(double frequency) override;
};
struct Accelerometer : public InertialMeasurementUnit {
// Valid range [0.1, 100]
bool setFrequency(double frequency) override;
};
22. struct InertialMeasurementUnit {
virtual ~InertialMeasurementUnit() = default;
/**
* Sets the frequency of measurements
* @param frequency (in Hertz)
* @throw std::out_of_range exception if frequency is invalid
*/
virtual void setFrequency(double frequency) = 0;
/**
* Provides the valid measurement range
* @return <minimum frequency, maximum frequency>
*/
virtual pair<double, double> getFrequencyRange() const = 0;
};
23. Low coupling
● No one should depend on
methods they do not use
● Multiple single-purpose
interfaces are better than one
multi-purpose
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
27. Loose coupling
● High-level modules should not
depend on low-level modules,
both should depend on
abstractions
● Abstractions should not depend
on, or leak, details from the
implementation domain
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
33. Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
Takeaways
● SOLID enables agility
● SOLID is indirectly promoted by
C++ Core guidelines
○ C.120, C.121, I.25 etc
● SOLID results in testable code
● Many of the SOLID principles
can be adopted by non-OOP
languages
34. How applicable are SOLID
principles in real-life
projects?
ⓘ Start presenting to display the poll results on this slide.
35. Quiz 1. Go to SOCRATIVE.COM
2. Select Login -> Student login
3. Room name: PLATIS
37. JetBrains lottery
1 year license for any Jetbrains IDE!
1. Go to: http://plat.is/jetbrains
2. If you won, please stick around until I
contact you
3. If you did not win, better luck next time!
Did you know that as a university student you
can get a free JetBrains license anyway?