Chapter 06 of the lecture Tool Development taught at SAE Institute Hamburg.
Introduction to different approaches to binary serialization, as well as to worker threads in WPF.
Serialization is the process of converting an object into a format that can be stored or transmitted. In .NET, objects are serialized to streams using formatters. Common formatters are BinaryFormatter for compact binary serialization and SoapFormatter for serialization through firewalls. To serialize an object, a stream and formatter are used. Classes can control serialization by implementing ISerializable or using attributes like Serializable and NonSerialized.
Tool Development 10 - MVVM, Tool ChainsNick Pruehs
Chapter 10 of the lecture Tool Development taught at SAE Institute Hamburg.
Introduction to the MVVM pattern and advanced data binding concepts such as data conversion and data validation.
This document provides instructions for a lab assignment to create a C++ console application to store and retrieve contact information from a sequential text file. The program will allow the user to append new records to the file by inputting names and addresses. It will also read the records from the file and display them in a formatted output. The lab consists of 5 steps: 1) requirements for the program, 2) pseudocode for processing logic, 3) creating a new project, 4) compiling and executing the program, and 5) providing screenshots and the program code in a Word document. The goal is to build upon provided code to complete the assignment of writing, reading, and displaying records to and from a sequential text file.
Serialization is the process of converting an object into a format that can be stored or transmitted. In .NET, objects are serialized to streams using formatters. Common formatters are BinaryFormatter for compact binary serialization and SoapFormatter for serialization through firewalls. To serialize an object, a stream and formatter are used. Classes can control serialization by implementing ISerializable or using attributes like Serializable and NonSerialized.
Tool Development 10 - MVVM, Tool ChainsNick Pruehs
Chapter 10 of the lecture Tool Development taught at SAE Institute Hamburg.
Introduction to the MVVM pattern and advanced data binding concepts such as data conversion and data validation.
This document provides instructions for a lab assignment to create a C++ console application to store and retrieve contact information from a sequential text file. The program will allow the user to append new records to the file by inputting names and addresses. It will also read the records from the file and display them in a formatted output. The lab consists of 5 steps: 1) requirements for the program, 2) pseudocode for processing logic, 3) creating a new project, 4) compiling and executing the program, and 5) providing screenshots and the program code in a Word document. The goal is to build upon provided code to complete the assignment of writing, reading, and displaying records to and from a sequential text file.
This document provides instructions for a lab assignment to create a C++ program that stores and retrieves address records from a sequential text file. The program is meant to accept user input of multiple names and addresses, write them to a CSV formatted file, read the records back from the file and display them in a formatted manner. The lab steps guide the user to build upon example code provided to develop the program's processing logic and menu system using pseudocode. They are then instructed to create and compile the C++ project, test and debug it, and provide screenshots of the output and source code in a Word document for submission.
JNA allows Java code to call native C/C++ libraries by mapping native functions and data structures to Java. It uses libffi to invoke native functions from Java. While easier than JNI, JNA still requires understanding native code and careful mapping of data types and memory management to avoid issues like memory corruption. JNA is generally suitable when no pure Java solution exists and native functionality is needed, but precision is required to implement it correctly.
The FDB library is not only a Firebird driver for Python, but also provides a number of add-on modules to build tools and applications, and as such is an important part of the Firebird project. In this session participants will learn about: - the history of the library - its use in the Firebird project and within IBPhoenix - with the concept, structure and capabilities of the library (in version 2) - ways to use the library to create tools and applications, including useful tips and tricks - plans for further development (for 2020 and in connection with the Firebird Butler a Saturnin projects)
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CanSecWest
The document discusses techniques for bypassing Control Flow Guard (CFG) protections on Windows. It begins by introducing the author and their background in security research. It then outlines several potential attack surfaces for bypassing CFG, including using functions like VirtualAlloc and VirtualProtect that can mark memory as valid call targets, writing return addresses, and leveraging indirect calls without CFG checks. The document analyzes six CFG bypass vulnerabilities found by the author in Microsoft Edge and Chakra, and provides details on exploitation methods. It concludes by discussing improvements to harden CFG protections further.
- The document discusses transitioning an existing JavaScript codebase to add types using TypeScript in order to make the code safer, more structured, and easier to understand and maintain.
- It provides examples of defining TypeScript interfaces for existing "freestyle objects" and refactoring the code to use the typed interfaces.
- After 18 days, 70% of the code was typed, showing the benefits of adding types for readability, safety, and refactoring ability even when transitioning existing code.
The document discusses file handling in C# and various classes used for input/output streams. It describes classes like BinaryReader, BinaryWriter, Stream, FileStream, MemoryStream, BufferedStream, NetworkStream, CryptoStream, Directory, File, FileSystemInfo, TextReader, StreamReader, TextWriter, and StreamWriter. It provides examples to demonstrate reading and writing files and streams using these classes. The objectives are to discuss stream handling in C#, list methods for file I/O, and implement file handling using C#.
This document provides an introduction to classes in C++. It discusses that classes are programmer-defined types that are made up of members like variables and functions called methods. Classes have constructors to initialize objects and destructors to clean up objects. The document contrasts classes in C++ with structs in C and discusses syntax differences between C++ and other languages like C# and Java. It provides examples of declaring a class called Point with methods and implementing the class in a .cpp file with definitions of methods and constructors. The document also discusses creating objects of a class on the stack or heap and calling methods on both local objects and objects created with pointers.
The Bundle system is one of the greatest and most powerful features of Symfony2. Bundles contain all the files related to a single feature of your application: controllers, entities, event listeners, form types, Twig templates, etc. But how much of that actually needs to be inside a bundle?
In this talk we’ll take a bundle, containing all those different types of classes, configuration files and templates, and strip it down to the bare necessities. And I promise that after moving many files out of the bundle, everything still works.
While looking for ways to move things out of the bundle, I will discuss some of the more advanced features of bundle design, like prepending configuration, compiler passes and Doctrine mapping drivers. We will end with a very lean bundle, surrounded by a few highly reusable, maximally decoupled libraries.
Defcon 27 - Writing custom backdoor payloads with C#Mauricio Velazco
This workshop aims to provide attendees hands-on experience on writing custom backdoor payloads using C# for the most common command and control frameworks including Metasploit, Powershell Empire and Cobalt Strike. The workshop consists in 7 lab exercises; each of the exercises goes over a different technique that leverages C# and .NET capabilities to obtain a reverse shell on a victim Windows host. The covered techniques include raw shellcode injection, process injection, process hollowing, runtime compilation, parent pid spoofing, antivirus bypassing, etc. At the end of this workshop attendees will have a clear understanding of these techniques both from an attack and defense perspective.
https://www.defcon.org/html/defcon-27/dc-27-workshops.html
This document contains code examples of using streams in C# for reading and writing files. It demonstrates creating a FileStream and using StreamReader to read the contents of a file line by line. Another example shows using StreamWriter to write lines of text to a file. It also briefly explains the Stream, StreamReader, and StreamWriter classes and their uses for transferring bytes and reading/writing strings from streams.
C# is a programming language developed by Microsoft in 2000. It was created as part of the .NET framework. C# code uses the .cs file extension and is compiled by the Common Language Runtime (CLR). The CLR handles memory management and other core tasks. C# supports object-oriented programming and type safety. A basic C# program structure includes using namespaces, declaring classes and methods. Common data types in C# include integers, floats, characters, booleans and strings. The language also supports user input/output, variable declaration using the var keyword, and defining constants.
This document provides guidance on designing and writing a custom SQL precompiler to interface with DB2. It discusses the roles of the application programmer, precompiler, precompiler services, and runtime services in processing SQL statements. The document outlines the major tasks a precompiler must perform, including initializing APIs, processing host variables and SQL statements, and generating runtime function calls. It also provides details on supported precompiler features and recommended data structures.
This document appears to be slides from a workshop on writing custom backdoor payloads using C#. The slides cover topics like command and control frameworks, the C# programming language, Windows API functions for executing code and injecting payloads like shellcode. Labs are described that walk through techniques like creating a Meterpreter stager, injecting raw shellcode, obfuscating shellcode, executing PowerShell without Powershell.exe, DLL injection, process hollowing, and parent process spoofing. The goal is to teach skills for creating backdoors and avoiding detection.
The Bundle system is one of the greatest and most powerful features of Symfony2. Bundles contain all the files related to a single feature of your application: controllers, entities, event listeners, form types, Twig templates, etc. But how much of that actually needs to be inside a bundle?
In this talk we’ll take a bundle, containing all those different types of classes, configuration files and templates, and strip it down to the bare necessities. And I promise that after moving many files out of the bundle, everything still works.
While looking for ways to move things out of the bundle, I will discuss some of the more advanced features of bundle design, like prepending configuration, compiler passes and Doctrine mapping drivers. We will end with a very lean bundle, surrounded by a few highly reusable, maximally decoupled libraries.
Matthias Noback presented on creating "naked bundles" in Symfony that do not rely on bundle conventions and can be reused outside of Symfony. He advocated extracting code from bundles into independent libraries with explicit dependencies instead of implicit ones. This would allow the code to be reused in other frameworks. He provided examples of creating controller classes without extending base classes, using dependency injection instead of service location, and mapping entities with XML instead of annotations. The goal is to remove unnecessary ties to the framework so code is truly decoupled and portable.
This document discusses Java input/output (I/O) streams and readers/writers for processing files, URLs, and other sources of input and output. It covers obtaining and working with input and output streams, reading and writing bytes, character encodings, text I/O, random access files, file operations, URL connections, and object serialization. The key classes for I/O include InputStream, OutputStream, Reader, Writer, File, Path, and URLConnection.
Vawtrak Trojan, also known as Neverquest or Snifula, has been an enduring banking Trojan for a long time and is still one of the most prevalent banking Trojans in the wild today.
This report forms part of Blueliv’s investigation into the Vawtrak group. Reversing the Trojan was a mandatory element of this investigation in order to understand and track the cybercriminal groups and malicious actors behind the Vawtrak malware technical security researchers and reverse engineers can use this report to increase their understanding of how the banking Trojan works.
Dynamic proxies in Java allow an object to dynamically implement interfaces at runtime through reflection and runtime type information. This avoids tight coupling between interfaces and their implementations. Proxies delegate method calls to a real subject object behind the scenes, making it possible to implement interfaces without the implementation class directly implementing them.
This document discusses typed arrays, which provide an efficient way to handle binary data in the browser. Typed arrays allow passing binary data directly to APIs like WebGL through a typed view into an ArrayBuffer. This avoids inefficiencies of passing data through regular JavaScript arrays. The document covers creating and using typed array views, the DataView for heterogeneous data, browser and third-party APIs that utilize typed arrays, the history and design considerations behind typed arrays.
Sixth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Understanding how to drive final character animation poses through animation blueprints and blend spaces
- Learning how to configure, combine and play sound assets
- Understanding the modular nature of particle effects in Unreal Engine
Unreal Engine Basics 05 - User InterfaceNick Pruehs
Fifth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Understanding the difference between Unreal’s UI frameworks Slate and UMG
- Learning how to create basic and complex user interfaces in UMG
- Learning how to build a simple main menu
More Related Content
Similar to Tool Development 06 - Binary Serialization, Worker Threads
This document provides instructions for a lab assignment to create a C++ program that stores and retrieves address records from a sequential text file. The program is meant to accept user input of multiple names and addresses, write them to a CSV formatted file, read the records back from the file and display them in a formatted manner. The lab steps guide the user to build upon example code provided to develop the program's processing logic and menu system using pseudocode. They are then instructed to create and compile the C++ project, test and debug it, and provide screenshots of the output and source code in a Word document for submission.
JNA allows Java code to call native C/C++ libraries by mapping native functions and data structures to Java. It uses libffi to invoke native functions from Java. While easier than JNI, JNA still requires understanding native code and careful mapping of data types and memory management to avoid issues like memory corruption. JNA is generally suitable when no pure Java solution exists and native functionality is needed, but precision is required to implement it correctly.
The FDB library is not only a Firebird driver for Python, but also provides a number of add-on modules to build tools and applications, and as such is an important part of the Firebird project. In this session participants will learn about: - the history of the library - its use in the Firebird project and within IBPhoenix - with the concept, structure and capabilities of the library (in version 2) - ways to use the library to create tools and applications, including useful tips and tricks - plans for further development (for 2020 and in connection with the Firebird Butler a Saturnin projects)
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CanSecWest
The document discusses techniques for bypassing Control Flow Guard (CFG) protections on Windows. It begins by introducing the author and their background in security research. It then outlines several potential attack surfaces for bypassing CFG, including using functions like VirtualAlloc and VirtualProtect that can mark memory as valid call targets, writing return addresses, and leveraging indirect calls without CFG checks. The document analyzes six CFG bypass vulnerabilities found by the author in Microsoft Edge and Chakra, and provides details on exploitation methods. It concludes by discussing improvements to harden CFG protections further.
- The document discusses transitioning an existing JavaScript codebase to add types using TypeScript in order to make the code safer, more structured, and easier to understand and maintain.
- It provides examples of defining TypeScript interfaces for existing "freestyle objects" and refactoring the code to use the typed interfaces.
- After 18 days, 70% of the code was typed, showing the benefits of adding types for readability, safety, and refactoring ability even when transitioning existing code.
The document discusses file handling in C# and various classes used for input/output streams. It describes classes like BinaryReader, BinaryWriter, Stream, FileStream, MemoryStream, BufferedStream, NetworkStream, CryptoStream, Directory, File, FileSystemInfo, TextReader, StreamReader, TextWriter, and StreamWriter. It provides examples to demonstrate reading and writing files and streams using these classes. The objectives are to discuss stream handling in C#, list methods for file I/O, and implement file handling using C#.
This document provides an introduction to classes in C++. It discusses that classes are programmer-defined types that are made up of members like variables and functions called methods. Classes have constructors to initialize objects and destructors to clean up objects. The document contrasts classes in C++ with structs in C and discusses syntax differences between C++ and other languages like C# and Java. It provides examples of declaring a class called Point with methods and implementing the class in a .cpp file with definitions of methods and constructors. The document also discusses creating objects of a class on the stack or heap and calling methods on both local objects and objects created with pointers.
The Bundle system is one of the greatest and most powerful features of Symfony2. Bundles contain all the files related to a single feature of your application: controllers, entities, event listeners, form types, Twig templates, etc. But how much of that actually needs to be inside a bundle?
In this talk we’ll take a bundle, containing all those different types of classes, configuration files and templates, and strip it down to the bare necessities. And I promise that after moving many files out of the bundle, everything still works.
While looking for ways to move things out of the bundle, I will discuss some of the more advanced features of bundle design, like prepending configuration, compiler passes and Doctrine mapping drivers. We will end with a very lean bundle, surrounded by a few highly reusable, maximally decoupled libraries.
Defcon 27 - Writing custom backdoor payloads with C#Mauricio Velazco
This workshop aims to provide attendees hands-on experience on writing custom backdoor payloads using C# for the most common command and control frameworks including Metasploit, Powershell Empire and Cobalt Strike. The workshop consists in 7 lab exercises; each of the exercises goes over a different technique that leverages C# and .NET capabilities to obtain a reverse shell on a victim Windows host. The covered techniques include raw shellcode injection, process injection, process hollowing, runtime compilation, parent pid spoofing, antivirus bypassing, etc. At the end of this workshop attendees will have a clear understanding of these techniques both from an attack and defense perspective.
https://www.defcon.org/html/defcon-27/dc-27-workshops.html
This document contains code examples of using streams in C# for reading and writing files. It demonstrates creating a FileStream and using StreamReader to read the contents of a file line by line. Another example shows using StreamWriter to write lines of text to a file. It also briefly explains the Stream, StreamReader, and StreamWriter classes and their uses for transferring bytes and reading/writing strings from streams.
C# is a programming language developed by Microsoft in 2000. It was created as part of the .NET framework. C# code uses the .cs file extension and is compiled by the Common Language Runtime (CLR). The CLR handles memory management and other core tasks. C# supports object-oriented programming and type safety. A basic C# program structure includes using namespaces, declaring classes and methods. Common data types in C# include integers, floats, characters, booleans and strings. The language also supports user input/output, variable declaration using the var keyword, and defining constants.
This document provides guidance on designing and writing a custom SQL precompiler to interface with DB2. It discusses the roles of the application programmer, precompiler, precompiler services, and runtime services in processing SQL statements. The document outlines the major tasks a precompiler must perform, including initializing APIs, processing host variables and SQL statements, and generating runtime function calls. It also provides details on supported precompiler features and recommended data structures.
This document appears to be slides from a workshop on writing custom backdoor payloads using C#. The slides cover topics like command and control frameworks, the C# programming language, Windows API functions for executing code and injecting payloads like shellcode. Labs are described that walk through techniques like creating a Meterpreter stager, injecting raw shellcode, obfuscating shellcode, executing PowerShell without Powershell.exe, DLL injection, process hollowing, and parent process spoofing. The goal is to teach skills for creating backdoors and avoiding detection.
The Bundle system is one of the greatest and most powerful features of Symfony2. Bundles contain all the files related to a single feature of your application: controllers, entities, event listeners, form types, Twig templates, etc. But how much of that actually needs to be inside a bundle?
In this talk we’ll take a bundle, containing all those different types of classes, configuration files and templates, and strip it down to the bare necessities. And I promise that after moving many files out of the bundle, everything still works.
While looking for ways to move things out of the bundle, I will discuss some of the more advanced features of bundle design, like prepending configuration, compiler passes and Doctrine mapping drivers. We will end with a very lean bundle, surrounded by a few highly reusable, maximally decoupled libraries.
Matthias Noback presented on creating "naked bundles" in Symfony that do not rely on bundle conventions and can be reused outside of Symfony. He advocated extracting code from bundles into independent libraries with explicit dependencies instead of implicit ones. This would allow the code to be reused in other frameworks. He provided examples of creating controller classes without extending base classes, using dependency injection instead of service location, and mapping entities with XML instead of annotations. The goal is to remove unnecessary ties to the framework so code is truly decoupled and portable.
This document discusses Java input/output (I/O) streams and readers/writers for processing files, URLs, and other sources of input and output. It covers obtaining and working with input and output streams, reading and writing bytes, character encodings, text I/O, random access files, file operations, URL connections, and object serialization. The key classes for I/O include InputStream, OutputStream, Reader, Writer, File, Path, and URLConnection.
Vawtrak Trojan, also known as Neverquest or Snifula, has been an enduring banking Trojan for a long time and is still one of the most prevalent banking Trojans in the wild today.
This report forms part of Blueliv’s investigation into the Vawtrak group. Reversing the Trojan was a mandatory element of this investigation in order to understand and track the cybercriminal groups and malicious actors behind the Vawtrak malware technical security researchers and reverse engineers can use this report to increase their understanding of how the banking Trojan works.
Dynamic proxies in Java allow an object to dynamically implement interfaces at runtime through reflection and runtime type information. This avoids tight coupling between interfaces and their implementations. Proxies delegate method calls to a real subject object behind the scenes, making it possible to implement interfaces without the implementation class directly implementing them.
This document discusses typed arrays, which provide an efficient way to handle binary data in the browser. Typed arrays allow passing binary data directly to APIs like WebGL through a typed view into an ArrayBuffer. This avoids inefficiencies of passing data through regular JavaScript arrays. The document covers creating and using typed array views, the DataView for heterogeneous data, browser and third-party APIs that utilize typed arrays, the history and design considerations behind typed arrays.
Similar to Tool Development 06 - Binary Serialization, Worker Threads (20)
Sixth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Understanding how to drive final character animation poses through animation blueprints and blend spaces
- Learning how to configure, combine and play sound assets
- Understanding the modular nature of particle effects in Unreal Engine
Unreal Engine Basics 05 - User InterfaceNick Pruehs
Fifth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Understanding the difference between Unreal’s UI frameworks Slate and UMG
- Learning how to create basic and complex user interfaces in UMG
- Learning how to build a simple main menu
Forth chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with behavior trees in general
- Learning how to set up and use behavior trees in Unreal Engine
- Learning about the very basics of the Unreal Engine navigation system
Third chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Learning how to expose class fields and functions to blueprints
- Writing basic Unreal gameplay code, such as spawning actors, accessing components and listening for events
- Getting familiar with gameplay concepts in the context of Unreal, such as damage and collision
Second chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with the Unreal Level Editor
- Learning how to bind and handle player keyboard and mouse input
- Understanding character movement properties and functions
Unreal Engine Basics 01 - Game FrameworkNick Pruehs
First chapter of the lecture Unreal Engine Basics taught at SAE Institute Hamburg.
- Getting familiar with Unreal Engine as a technology, framework and toolset
- Learning the basics about writing Unreal Engine C++ code
This document provides an overview of version control systems and how to use Git. It discusses local and centralized version control before focusing on distributed version control with Git. The document then demonstrates how to install Git and SourceTree, create a GitHub account, add and commit files to a repository, pull and push changes, view history and more. It also covers advanced Git topics like branching, merging, and divergent histories.
Designing an actor model game architecture with PonyNick Pruehs
Introduction to Pony, actor model, reference capabilities and making concurrent DirectX games with Pony.
Presented at MVP Fusion #3.
http://mvpfusion.azurewebsites.net/
Scrum - but... Agile Game Development in Small TeamsNick Pruehs
The document discusses Scrum, an agile framework for managing product development. It describes Scrum roles like the Product Owner, Development Team, and Scrum Master. The Scrum process involves sprints, daily stand-ups, sprint planning and reviews. It also introduces an example game development team called Astro City working with Scrum.
When developing games, each and every one of us should strive for perfection. At my desk, I have put up a sign saying “What would Blizzard do?” This talk is about motivation, excitement and learning how to dissect other games in order to learn from each other.
Chapter 11 of the lecture Game Programming taught at HAW Hamburg.
Introduction to kinematics and dynamics, numerical integration, rigid bodies, collision detection and resolving.
Game Programming AI
This document discusses behavior trees, an approach to game AI architecture. Behavior trees split AI decision logic from actions and organize them into a directed tree structure. The root node executes logic which reports back as success, running, or failure. This passes control to child nodes. Key nodes include sequences which run children in order until failure, and selectors which run the first successful child. Behavior trees are modular, reusable, and can be data-driven to design AI visually without code. They have been successfully used in many games due to their flexibility and performance.
This document discusses challenges in game development based on Nick Prühs' experience. It covers the diversity of game types and roles involved in development. It also discusses art pipelines, game engines, physics examples, and lessons learned from developing the "Campus Buddies" social game. Key lessons include expecting API changes, using existing solutions, making testing and deployment easy, mocking network interactions, standardizing code style, using a feature-based project structure, prioritizing collaboration, listening to players, implementing tutorials, considering 2D animation, and addressing challenges with localization.
Session 1 - Intro to Robotic Process Automation.pdfUiPathCommunity
👉 Check out our full 'Africa Series - Automation Student Developers (EN)' page to register for the full program:
https://bit.ly/Automation_Student_Kickstart
In this session, we shall introduce you to the world of automation, the UiPath Platform, and guide you on how to install and setup UiPath Studio on your Windows PC.
📕 Detailed agenda:
What is RPA? Benefits of RPA?
RPA Applications
The UiPath End-to-End Automation Platform
UiPath Studio CE Installation and Setup
💻 Extra training through UiPath Academy:
Introduction to Automation
UiPath Business Automation Platform
Explore automation development with UiPath Studio
👉 Register here for our upcoming Session 2 on June 20: Introduction to UiPath Studio Fundamentals: https://community.uipath.com/events/details/uipath-lagos-presents-session-2-introduction-to-uipath-studio-fundamentals/
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsDianaGray10
Join us to learn how UiPath Apps can directly and easily interact with prebuilt connectors via Integration Service--including Salesforce, ServiceNow, Open GenAI, and more.
The best part is you can achieve this without building a custom workflow! Say goodbye to the hassle of using separate automations to call APIs. By seamlessly integrating within App Studio, you can now easily streamline your workflow, while gaining direct access to our Connector Catalog of popular applications.
We’ll discuss and demo the benefits of UiPath Apps and connectors including:
Creating a compelling user experience for any software, without the limitations of APIs.
Accelerating the app creation process, saving time and effort
Enjoying high-performance CRUD (create, read, update, delete) operations, for
seamless data management.
Speakers:
Russell Alfeche, Technology Leader, RPA at qBotic and UiPath MVP
Charlie Greenberg, host
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/temporal-event-neural-networks-a-more-efficient-alternative-to-the-transformer-a-presentation-from-brainchip/
Chris Jones, Director of Product Management at BrainChip , presents the “Temporal Event Neural Networks: A More Efficient Alternative to the Transformer” tutorial at the May 2024 Embedded Vision Summit.
The expansion of AI services necessitates enhanced computational capabilities on edge devices. Temporal Event Neural Networks (TENNs), developed by BrainChip, represent a novel and highly efficient state-space network. TENNs demonstrate exceptional proficiency in handling multi-dimensional streaming data, facilitating advancements in object detection, action recognition, speech enhancement and language model/sequence generation. Through the utilization of polynomial-based continuous convolutions, TENNs streamline models, expedite training processes and significantly diminish memory requirements, achieving notable reductions of up to 50x in parameters and 5,000x in energy consumption compared to prevailing methodologies like transformers.
Integration with BrainChip’s Akida neuromorphic hardware IP further enhances TENNs’ capabilities, enabling the realization of highly capable, portable and passively cooled edge devices. This presentation delves into the technical innovations underlying TENNs, presents real-world benchmarks, and elucidates how this cutting-edge approach is positioned to revolutionize edge AI across diverse applications.
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
AppSec PNW: Android and iOS Application Security with MobSFAjin Abraham
Mobile Security Framework - MobSF is a free and open source automated mobile application security testing environment designed to help security engineers, researchers, developers, and penetration testers to identify security vulnerabilities, malicious behaviours and privacy concerns in mobile applications using static and dynamic analysis. It supports all the popular mobile application binaries and source code formats built for Android and iOS devices. In addition to automated security assessment, it also offers an interactive testing environment to build and execute scenario based test/fuzz cases against the application.
This talk covers:
Using MobSF for static analysis of mobile applications.
Interactive dynamic security assessment of Android and iOS applications.
Solving Mobile app CTF challenges.
Reverse engineering and runtime analysis of Mobile malware.
How to shift left and integrate MobSF/mobsfscan SAST and DAST in your build pipeline.
Conversational agents, or chatbots, are increasingly used to access all sorts of services using natural language. While open-domain chatbots - like ChatGPT - can converse on any topic, task-oriented chatbots - the focus of this paper - are designed for specific tasks, like booking a flight, obtaining customer support, or setting an appointment. Like any other software, task-oriented chatbots need to be properly tested, usually by defining and executing test scenarios (i.e., sequences of user-chatbot interactions). However, there is currently a lack of methods to quantify the completeness and strength of such test scenarios, which can lead to low-quality tests, and hence to buggy chatbots.
To fill this gap, we propose adapting mutation testing (MuT) for task-oriented chatbots. To this end, we introduce a set of mutation operators that emulate faults in chatbot designs, an architecture that enables MuT on chatbots built using heterogeneous technologies, and a practical realisation as an Eclipse plugin. Moreover, we evaluate the applicability, effectiveness and efficiency of our approach on open-source chatbots, with promising results.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
ScyllaDB is making a major architecture shift. We’re moving from vNode replication to tablets – fragments of tables that are distributed independently, enabling dynamic data distribution and extreme elasticity. In this keynote, ScyllaDB co-founder and CTO Avi Kivity explains the reason for this shift, provides a look at the implementation and roadmap, and shares how this shift benefits ScyllaDB users.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Must Know Postgres Extension for DBA and Developer during MigrationMydbops
Mydbops Opensource Database Meetup 16
Topic: Must-Know PostgreSQL Extensions for Developers and DBAs During Migration
Speaker: Deepak Mahto, Founder of DataCloudGaze Consulting
Date & Time: 8th June | 10 AM - 1 PM IST
Venue: Bangalore International Centre, Bangalore
Abstract: Discover how PostgreSQL extensions can be your secret weapon! This talk explores how key extensions enhance database capabilities and streamline the migration process for users moving from other relational databases like Oracle.
Key Takeaways:
* Learn about crucial extensions like oracle_fdw, pgtt, and pg_audit that ease migration complexities.
* Gain valuable strategies for implementing these extensions in PostgreSQL to achieve license freedom.
* Discover how these key extensions can empower both developers and DBAs during the migration process.
* Don't miss this chance to gain practical knowledge from an industry expert and stay updated on the latest open-source database trends.
Mydbops Managed Services specializes in taking the pain out of database management while optimizing performance. Since 2015, we have been providing top-notch support and assistance for the top three open-source databases: MySQL, MongoDB, and PostgreSQL.
Our team offers a wide range of services, including assistance, support, consulting, 24/7 operations, and expertise in all relevant technologies. We help organizations improve their database's performance, scalability, efficiency, and availability.
Contact us: info@mydbops.com
Visit: https://www.mydbops.com/
Follow us on LinkedIn: https://in.linkedin.com/company/mydbops
For more details and updates, please follow up the below links.
Meetup Page : https://www.meetup.com/mydbops-databa...
Twitter: https://twitter.com/mydbopsofficial
Blogs: https://www.mydbops.com/blog/
Facebook(Meta): https://www.facebook.com/mydbops/
From Natural Language to Structured Solr Queries using LLMsSease
This talk draws on experimentation to enable AI applications with Solr. One important use case is to use AI for better accessibility and discoverability of the data: while User eXperience techniques, lexical search improvements, and data harmonization can take organizations to a good level of accessibility, a structural (or “cognitive” gap) remains between the data user needs and the data producer constraints.
That is where AI – and most importantly, Natural Language Processing and Large Language Model techniques – could make a difference. This natural language, conversational engine could facilitate access and usage of the data leveraging the semantics of any data source.
The objective of the presentation is to propose a technical approach and a way forward to achieve this goal.
The key concept is to enable users to express their search queries in natural language, which the LLM then enriches, interprets, and translates into structured queries based on the Solr index’s metadata.
This approach leverages the LLM’s ability to understand the nuances of natural language and the structure of documents within Apache Solr.
The LLM acts as an intermediary agent, offering a transparent experience to users automatically and potentially uncovering relevant documents that conventional search methods might overlook. The presentation will include the results of this experimental work, lessons learned, best practices, and the scope of future work that should improve the approach and make it production-ready.
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
3. Objectives
• To learn how to properly read and write binary files
• To understand how to use worker threads in order
to create reactive UIs
3 / 58
4. Binary Serialization
• Sometimes you’ll want to serialize data in a format
other than plain text
• As we have learned, this can basically be achieved
using the BinaryReader and BinaryWriter classes
in .NET
4 / 58
5. Writing Binary Data To Files
C#
5 / 58
// Collect information on the file to create.
FileInfo fileInfo = new FileInfo("newFile.dat");
// Create new file.
FileStream fileStream = fileInfo.Create();
// Create new binary writer.
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
// Write data.
binaryWriter.Write(23);
binaryWriter.Write(true);
binaryWriter.Write(0.4f);
// Close file stream and release all resources.
binaryWriter.Close();
6. Reading From Binary Files
C#
6 / 58
// Collect information on the file to read from.
FileInfo fileInfo = new FileInfo("newFile.dat");
// Open file for reading.
FileStream fileStream = fileInfo.OpenRead();
// Create new binary reader.
BinaryReader binaryReader = new BinaryReader(fileStream);
// Read data.
int i = binaryReader.ReadInt32();
bool b = binaryReader.ReadBoolean();
float f = binaryReader.ReadSingle();
// Close file stream and release all resources.
binaryReader.Close();
7. Binary Serialization
• However, writing and reading binary data in the
right order can be tedious and very error-prone.
• In most cases you’ll need arbitrary data to be read and
written.
• Even worse, your type hierarchy will evolve during
development.
• We’ll take a look at two more generic approaches
that try to ensure mostly error-free binary
serialization.
7 / 58
8. Initial Situation
C#
8 / 58
public class Address
{
public string PostCode;
public string City;
}
public class OrderItem
{
public string Name;
public float Price;
}
public class Order
{
public OrderItem Item;
public Address ShipTo;
}
9. Challenge
• In order to be able to automatically serialize and
deserialize objects of type Order,
• we need to recursively serialize and deserialize objects
of type Address and OrderItem,
• we must be able to read and write field values of
primitive types (such as string or float),
• and we must do so in the right order!
9 / 58
10. Binary Serialization
via Interfaces
• All serializable classes implement a new interface
IBinarySerializable.
• Interface enforces methods for reading and writing
binary data.
• These methods can be called for all types that are
referenced by serialized types.
• Reading and writing data in the correct order relies on a
correct implementation of the interface.
10 / 58
12. Interface Implementations
C#
12 / 58
public class Address : IBinarySerializable
{
public string PostCode;
public string City;
public void WriteBinary(BinaryWriter writer)
{
writer.Write(this.PostCode);
writer.Write(this.City);
}
public void ReadBinary(BinaryReader reader)
{
this.PostCode = reader.ReadString();
this.City = reader.ReadString();
}
}
13. Interface Implementations
C#
13 / 58
public class OrderItem : IBinarySerializable
{
public string Name;
public float Price;
public void WriteBinary(BinaryWriter writer)
{
writer.Write(this.Name);
writer.Write(this.Price);
}
public void ReadBinary(BinaryReader reader)
{
this.Name = reader.ReadString();
this.Price = reader.ReadSingle();
}
}
14. Interface Implementations
C#
14 / 58
public class Order : IBinarySerializable
{
public OrderItem Item;
public Address ShipTo;
public void WriteBinary(BinaryWriter writer)
{
this.Item.WriteBinary(writer);
this.ShipTo.WriteBinary(writer);
}
public void ReadBinary(BinaryReader reader)
{
this.Item = new OrderItem();
this.Item.ReadBinary(reader);
this.ShipTo = new Address();
this.ShipTo.ReadBinary(reader);
}
}
15. Writing Binary Data
C#
15 / 58
// Collect information on the file to create.
FileInfo fileInfo = new FileInfo("newFile.dat");
// Create new file.
FileStream fileStream = fileInfo.Create();
// Create new binary writer.
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
// Write data.
order.WriteBinary(binaryWriter);
// Close file stream and release all resources.
binaryWriter.Close();
16. Reading Binary Data
C#
16 / 58
// Collect information on the file to read from.
FileInfo fileInfo = new FileInfo("newFile.dat");
// Open file for reading.
FileStream fileStream = fileInfo.OpenRead();
// Create new binary reader.
BinaryReader binaryReader = new BinaryReader(fileStream);
// Read data.
Order order = new Order();
order.ReadBinary(binaryReader);
// Close file stream and release all resources.
binaryReader.Close();
17. Binary Serialization
via Interfaces - Evaluation
• Delegating the task of serialization to serialized
classes increases code readability and makes
debugging easier
• However, every time a new type is introduced, you need
to implement the interface again.
• Reading and writing data in the correct order relies on a
correct implementation of the interface.
• Strictly spoken, this approach violates the principle of
separation of concerns.
17 / 58
18. Binary Serialization
via Reflection
• We create a new serialization class called
BinarySerializer.
• Similar to XmlSerializer, this class provides
Serialize and Deserialize methods that reflect the
fields of a given type.
18 / 58
19. Class BinarySerializer
C#
19 / 58
public void Serialize(BinaryWriter writer, object obj)
{
if (obj == null)
{
return;
}
// Reflect object fields.
Type type = obj.GetType();
FieldInfo[] fields = type.GetFields
(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
// ...
20. Class BinarySerializer
C#
20 / 58
// ...
foreach (FieldInfo field in fields)
{
// Check how the field value has to be serialized.
object fieldValue = field.GetValue(obj);
if (field.FieldType == typeof(string))
{
writer.Write((string)fieldValue);
}
else if (field.FieldType == typeof(float))
{
writer.Write((float)fieldValue);
}
else if (field.FieldType == typeof(int))
{
writer.Write((int)fieldValue);
}
// ...
}
}
21. Class BinarySerializer
C#
21 / 58
foreach (FieldInfo field in fields)
{
// ...
else if (!field.FieldType.IsPrimitive)
{
// Recursively serialize referenced types.
this.Serialize(writer, fieldValue);
}
else
{
throw new ArgumentException(
string.Format("Unsupported type for binary serialization: {0}.
Cannot serialize fields of type {1}.", type, field.FieldType), "obj");
}
}
}
23. Class BinarySerializer
C#
23 / 58
// ...
foreach (FieldInfo field in fields)
{
object fieldValue;
// Check how the field value has to be deserialized.
if (field.FieldType == typeof(string))
{
fieldValue = reader.ReadString();
}
else if (field.FieldType == typeof(float))
{
fieldValue = reader.ReadSingle();
}
else if (field.FieldType == typeof(int))
{
fieldValue = reader.ReadInt32();
}
// ...
}
}
24. Class BinarySerializer
C#
24 / 58
foreach (FieldInfo field in fields)
{
// ...
else if (!field.FieldType.IsPrimitive)
{
// Recursively deserialize referenced types.
fieldValue = this.Deserialize(reader, field.FieldType);
}
else
{
throw new ArgumentException(
string.Format("Unsupported type for binary deserialization: {0}.
Cannot deserialize fields of type {1}.", type, field.FieldType), "type");
}
// Set field value.
field.SetValue(obj, fieldValue);
}
return obj;
}
25. Writing Binary Data
C#
25 / 58
// Collect information on the file to create.
FileInfo fileInfo = new FileInfo("newFile.dat");
// Create new file.
FileStream fileStream = fileInfo.Create();
// Create new binary writer.
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
// Write data.
BinarySerializer serializer = new BinarySerializer();
serializer.Serialize(binaryWriter, order);
// Close file stream and release all resources.
binaryWriter.Close();
26. Reading Binary Data
C#
26 / 58
// Collect information on the file to read from.
FileInfo fileInfo = new FileInfo("newFile.dat");
// Open file for reading.
FileStream fileStream = fileInfo.OpenRead();
// Create new binary reader.
BinaryReader binaryReader = new BinaryReader(fileStream);
// Read data.
BinarySerializer serializer = new BinarySerializer();
Order order = (Order)serializer.Deserialize(binaryReader, typeof(Order));
// Close file stream and release all resources.
binaryReader.Close();
27. Binary Serialization
via Reflection - Evaluation
• Newly created types don’t need to implement any
interfaces.
• Special cases (enums, nullable types, generics)
need to be considered only once.
• Serialization code is limited to very few lines, which
in turn can be found in a single class.
• However, serialization via reflection is significantly
slower than via interfaces.
• Reading and writing data in the correct order depends
on the order the fields are declared in serialized types!
27 / 58
28. Hint
Never stop improving your error
handling while developing!
(e.g. missing default constructor,
unexpected enum value, etc.)
29 / 78
29. Background Workers
• Time-consuming operations like downloads and
database transactions can cause your UI to seem as
though it has stopped responding while they are
running.
• BackgroundWorker class allows you to run an
operation on a separate, dedicated thread.
30 / 78
30. Background Workers 101
1. Create new BackgroundWorker object.
2. Add event handlers.
1. Perform your time-consuming operation in DoWork.
2. Set WorkerReportsProgress to true and receive
notifications of progress updates in ProgressChanged.
3. Receive a notification when the operation is
completed in RunWorkerCompleted.
3. Call RunWorkerAsync on the worker object.
31 / 78
33. Reporting Progress
• Calling ReportProgress on the background worker
object causes the ProgressChanged event handler
to be called in the UI thread.
• In that event handler, the reported progress is
available through the property
ProgressChangedEventArgs.ProgressPercentage.
34 / 58
34. Passing Parameters
• If your background operation requires a parameter,
call RunWorkerAsync with your parameter.
• Inside the DoWork event handler, you can extract
the parameter from the
DoWorkEventArgs.Argument property.
35 / 58
35. Returning Results
• If your background operation needs to return a
result, set the DoWorkEventArgs.Result property in
your DoWork event handler after your operation is
finished.
• Inside the RunWorkerCompleted event handler of
your UI thread, you can access the result from the
RunWorkerCompletedEventArgs.Result property.
36 / 58
36. Assignment #6
1. Status Bar
Add a StatusBar with a TextBlock and a ProgressBar
to your MainWindow.
37 / 58
37. Assignment #6
2. Worker Threads
1. Modify your application and make creating new maps
happen in a background worker thread.
2. Your status text and progress bar should reflect the
progress of the map creation.
38 / 58
40. 5 Minute Review Session
• What are two possible approaches for binary
serialization?
• What are the advantages and disadvantages of binary
serialization via interfaces?
• What are the advantages and disadvantages of binary
serialization via reflection?
• Why and when should you use a Background Worker in
your UI?
• How do you work with Background Workers?
• How do you pass data to and from Background
Workers?
41 / 58