Talk of Aleksandra Stolyar, Ruby developer at DataArt, at Ruby Meditation #29 Kyiv 14.12.2019
Next conference - http://www.rubymeditation.com/
Description:
I will talk about dry-rb ecosystem and it’s major components - dry-validation and dry-schema which are very helpful for validations. This year dry-rb introduced a major update to its’ gems and I faced some problems when decided to marry these updates with a project. This talk will cover some of differences and specifics of dry-validation and dry-schema updates.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Tree-like data relationships are common, but working with trees in SQL usually requires awkward recursive queries. This talk describes alternative solutions in SQL, including:
- Adjacency List
- Path Enumeration
- Nested Sets
- Closure Table
Code examples will show using these designs in PHP, and offer guidelines for choosing one design over another.
Tracing Summit 2014, Düsseldorf. What can Linux learn from DTrace: what went well, and what didn't go well, on its path to success? This talk will discuss not just the DTrace software, but lessons from the marketing and adoption of a system tracer, and an inside look at how DTrace was really deployed and used in production environments. It will also cover ongoing problems with DTrace, and how Linux may surpass them and continue to advance the field of system tracing. A world expert and core contributor to DTrace, Brendan now works at Netflix on Linux performance with the various Linux tracers (ftrace, perf_events, eBPF, SystemTap, ktap, sysdig, LTTng, and the DTrace Linux ports), and will summarize his experiences and suggestions for improvements. He has also been contributing to various tracers: recently promoting ftrace and perf_events adoption through articles and front-end scripts, and testing eBPF.
Session presented at Oracle Developer Live - MySQL, 2020. Recording available at https://developer.oracle.com/developer-live/mysql/
Abstract:
MySQL Shell is the new, advanced command-line client and editor for MySQL. It sends SQL statements to MySQL server, supports both the classic MySQL protocol and the newer X protocol, and provides scripting capabilities for JavaScript and Python. But there's more to MySQL Shell than meets the eye. It delivers a natural and powerful interface for all DevOps tasks related to MySQL by providing APIs for development and administration. This session covers MySQL Shell's core features, along with demonstrations of how to use the various APIs and how to extend MySQL Shell. We’ll address the regular interaction with databases, the built-in tools that make DBAs and developers’ lives easier, the easy and flawless set up of HA architectures, and the plugins and extensions framework.
This presentation was given at PSConfEU and covers common privilege escalation vectors for Windows systems, as well as how to enumerate these issues with PowerUp.
G1 Garbage Collector: Details and TuningSimone Bordet
This document provides an overview and details about the G1 garbage collector in Java. It begins with introductions of the author and an overview of G1. Key points include that G1 is designed to provide low pause times, works well with large heap sizes, and will become the default collector in JDK 9. The document then discusses various aspects of G1 including its memory layout using regions, young generation collection, remembered set and write barrier for tracking references, and concurrent marking approach for old generation collection. It provides advice on G1 logging, tuning and common issues. An example migration from CMS to G1 for an online chess application is also summarized.
Under The Hood Of A Shard-Per-Core Database ArchitectureScyllaDB
This document summarizes the key design decisions behind ScyllaDB's shard-per-core database architecture. It discusses how ScyllaDB addresses the challenges of scaling databases across hundreds of CPU cores by utilizing an asynchronous task model with one thread and one data shard per CPU core. This allows for linear scalability. It also overhauls the I/O scheduling to prioritize workloads and maximize throughput from SSDs under mixed read/write workloads. Benchmark results show ScyllaDB's architecture can handle petabyte-scale databases with high performance and low latency even on commodity hardware.
Tree-like data relationships are common, but working with trees in SQL usually requires awkward recursive queries. This talk describes alternative solutions in SQL, including:
- Adjacency List
- Path Enumeration
- Nested Sets
- Closure Table
Code examples will show using these designs in PHP, and offer guidelines for choosing one design over another.
Tracing Summit 2014, Düsseldorf. What can Linux learn from DTrace: what went well, and what didn't go well, on its path to success? This talk will discuss not just the DTrace software, but lessons from the marketing and adoption of a system tracer, and an inside look at how DTrace was really deployed and used in production environments. It will also cover ongoing problems with DTrace, and how Linux may surpass them and continue to advance the field of system tracing. A world expert and core contributor to DTrace, Brendan now works at Netflix on Linux performance with the various Linux tracers (ftrace, perf_events, eBPF, SystemTap, ktap, sysdig, LTTng, and the DTrace Linux ports), and will summarize his experiences and suggestions for improvements. He has also been contributing to various tracers: recently promoting ftrace and perf_events adoption through articles and front-end scripts, and testing eBPF.
Session presented at Oracle Developer Live - MySQL, 2020. Recording available at https://developer.oracle.com/developer-live/mysql/
Abstract:
MySQL Shell is the new, advanced command-line client and editor for MySQL. It sends SQL statements to MySQL server, supports both the classic MySQL protocol and the newer X protocol, and provides scripting capabilities for JavaScript and Python. But there's more to MySQL Shell than meets the eye. It delivers a natural and powerful interface for all DevOps tasks related to MySQL by providing APIs for development and administration. This session covers MySQL Shell's core features, along with demonstrations of how to use the various APIs and how to extend MySQL Shell. We’ll address the regular interaction with databases, the built-in tools that make DBAs and developers’ lives easier, the easy and flawless set up of HA architectures, and the plugins and extensions framework.
This presentation was given at PSConfEU and covers common privilege escalation vectors for Windows systems, as well as how to enumerate these issues with PowerUp.
G1 Garbage Collector: Details and TuningSimone Bordet
This document provides an overview and details about the G1 garbage collector in Java. It begins with introductions of the author and an overview of G1. Key points include that G1 is designed to provide low pause times, works well with large heap sizes, and will become the default collector in JDK 9. The document then discusses various aspects of G1 including its memory layout using regions, young generation collection, remembered set and write barrier for tracking references, and concurrent marking approach for old generation collection. It provides advice on G1 logging, tuning and common issues. An example migration from CMS to G1 for an online chess application is also summarized.
Under The Hood Of A Shard-Per-Core Database ArchitectureScyllaDB
This document summarizes the key design decisions behind ScyllaDB's shard-per-core database architecture. It discusses how ScyllaDB addresses the challenges of scaling databases across hundreds of CPU cores by utilizing an asynchronous task model with one thread and one data shard per CPU core. This allows for linear scalability. It also overhauls the I/O scheduling to prioritize workloads and maximize throughput from SSDs under mixed read/write workloads. Benchmark results show ScyllaDB's architecture can handle petabyte-scale databases with high performance and low latency even on commodity hardware.
This document summarizes a presentation on reverse engineering OS X drivers. It discusses the structure of the OS X kernel, drivers, and kernel extensions. It outlines some of the challenges in reverse engineering OS X drivers, such as parsing C++ code and dependencies, and describes approaches to address these challenges like processing relocation information and parsing DWARF files to build a kernel type library in IDA.
Called “downcase” on nil? Forgot to return the right object in one of your logic branches? Called “first” on a String instead of an Array and spent half an hour trying to figure out why a single character was getting passed around everywhere?
At Grailed, these situations were not uncommon. We are the largest marketplace for luxury men's fashion, with over 7 million users, and a growing Rails codebase that spans hundreds of thousands of lines. Before typing, changes to core interfaces often required creative grepping, modification of type checking unit tests, and updating brittle type documentation.
Ever since we started gradually typing our codebase with Sorbet, we’ve been able to make intrusive changes faster and confidently. In this talk, we’ll walk you through our prior art, challenges, learnings, and big benefits of typing our codebase.
Max De Marzi gave a presentation on Gremlin, a graph traversal language used for traversing property graphs. He explained that Gremlin is implemented by most graph database vendors and is primarily used with Groovy. He demonstrated how to use Gremlin to query a Neo4j graph database, showing examples of traversing nodes and relationships. Finally, he presented a Gremlin script for providing movie recommendations based on a user's genres and ratings.
Most VLDBs should use partitioning and in today’s world scaling up and out a database is something critical, so every DBA and Developer should work together to accomplish this task. Partitioning may help the application run faster and also helps DBAs to perform their work.
O que aprendi após 3 bilhões de jobs processados no SidekiqAnderson Dias
Nos últimos anos Sidekiq se tornou uma das principais ferramentas relacionadas à processamento assíncrono na comunidade Ruby.
Trabalhei com suas versões open source, pro e enterprise, e após mais de 3 bilhões de jobs processados aprendi algumas lições, algumas à duras penas.
Nesta palestra irei falar sobre Sidekiq, suas versões e sobre pequenos detalhes que fazem toda a diferença quando o utilizamos em larga escala.
The hidden power of network maps on ZabbixRicardo Santos
Maps can be customized in various ways including custom icons, labels, links, and real-time data display. Elements on maps can be edited, multiple elements selected together, and links can branch. Maps can be saved, exported as XML, and accessed via the API or by name in the URL. Background images and icons can be imported.
CanSecWest 2017 - Port(al) to the iOS CoreStefan Esser
This document discusses a new iOS kernel exploitation technique that involves manipulating mach ports. It fills the kernel heap with pointers to mach ports, then overwrites those pointers to fake ports that point to attacker-controlled data structures. This allows calling kernel APIs and the Mach API using the fake ports to potentially execute arbitrary code or escalate privileges. The technique was previously private but was leaked in late 2016 and used in the Yalu jailbreak.
Speaker: Alex Komyagin
MongoDB replica sets allow you to make the database highly available so that you can keep your applications running even when some of the database nodes are down. In a distributed system, local durability of writes with journaling is no longer enough to guarantee system-wide durability, as the node might go down just before any other node replicates new write operations from it. As such, we need a new concept of cluster-wide durability.
How do you make sure that your write operations are durable within a replica set? How do you make sure that your read operations do not see those writes that are not yet durable? This talk will cover the mechanics of ensuring durability of writes via write concern and how to prevent reading of stale data in MongoDB using read concern. We will discuss the decision flow for selecting an appropriate level of write concern, as well as associated tradeoffs and several practical use cases and examples."
The document provides instructions for a tutorial on how to write your own JavaServer Faces (JSF) components. The tutorial is broken into 7 steps, with each step building on the previous one. In step 1, the reader creates a basic component that renders a <div> tag with some text inside. This establishes the foundation for the component. Step 2 will add attributes to the component to make the rendered output more visually appealing.
Использование GMock для обеспечения спокойной и сытой жизни разработчика. Обзор как верхушки так и некоторых подводных частей GMock. Разбор возможностей фреймворка на примерах.
The document discusses three optimization tips for C++ code: reduce strength by using fewer operations like division and instead using comparisons and additions; minimize writes to arrays which can disable optimizations; and reformulate algorithms to make an extra pass to compute values instead of writing to arrays. It provides examples of digit counting functions optimized using these tips by reducing divisions, writing to arrays backwards, and making an extra pass to find the length.
PostgreSQL is a very popular and feature-rich DBMS. At the same time, PostgreSQL has a set of annoying wicked problems, which haven't been resolved in decades. Miraculously, with just a small patch to PostgreSQL core extending this API, it appears possible to solve wicked PostgreSQL problems in a new engine made within an extension.
This document proposes two methods for integrating SystemC models with virtual platform simulators like QEMU and Simics: 1) A "QEMU SystemC Bridge" that synchronizes the two simulators using lazy synchronization. 2) Wrapping QEMU as a TLM-2.0 initiator to standardize the integration. Experiments showed little performance overhead (<5%) for both approaches. The techniques allow developing full virtual platforms using SystemC for device modeling.
Domain Driven Design with the F# type System -- F#unctional Londoners 2014Scott Wlaschin
(Video of these slides here http://fsharpforfunandprofit.com/ddd)
Statically typed functional programming languages like F# encourage a very different way of thinking about types. The type system is your friend, not an annoyance, and can be used in many ways that might not be familiar to OO programmers.
Types can be used to represent the domain in a fine-grained, self documenting way. And in many cases, types can even be used to encode business rules so that you literally cannot create incorrect code. You can then use the static type checking almost as an instant unit test — making sure that your code is correct at compile time.
In this talk, we'll look at some of the ways you can use types as part of a domain driven design process, with some simple real world examples in F#. No jargon, no maths, and no prior F# experience necessary.
Code, links to video, etc., at http://fsharpforfunandprofit.com/ddd
NEW AND IMPROVED - added sections on:
* why OO, not FP is scary
* designing with states and transitions
The Functional Programming Triad of Folding, Scanning and Iteration - a first...Philip Schwarz
This slide deck can work both as an aide mémoire (memory jogger), or as a first (not completely trivial) example of using left folds, left scans and iteration, to implement mathematical induction.
Errata: on almost half of the slides there is some minor typo or imperfection or in some cases a minor error and in one case, an omission. See a later version for corrections and some improvements.
(for best quality images, either download or view here: https://philipschwarz.dev/fpilluminated/?page_id=455)
Scala code for latest version: https://github.com/philipschwarz/fp-fold-scan-iterate-triad-a-first-example-scala
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
The document discusses refactoring code through an "inside out" approach. It begins by showing sample code, then discusses strategies and objectives for refactoring like improving design, adding features, and fixing bugs. Specific refactoring techniques are explained like extracting methods, eliminating duplication, and changing design. The presentation emphasizes using tests during refactoring and considering the "big picture" of strategies and mechanics when refactoring large bodies of code. Coding examples are provided to demonstrate refactoring steps.
BarcelonaJUG2016: walkmod: how to run and design code transformationswalkmod
walkmod is an open source tool to apply and share code conventions. Code conventions are internally designed as code transformations. In this sessions we will se how to run walkmod in a real project and how to contribute designing automatic quick fixes for existing PMD, Checkstyle or Sonar rules
This document summarizes a presentation on reverse engineering OS X drivers. It discusses the structure of the OS X kernel, drivers, and kernel extensions. It outlines some of the challenges in reverse engineering OS X drivers, such as parsing C++ code and dependencies, and describes approaches to address these challenges like processing relocation information and parsing DWARF files to build a kernel type library in IDA.
Called “downcase” on nil? Forgot to return the right object in one of your logic branches? Called “first” on a String instead of an Array and spent half an hour trying to figure out why a single character was getting passed around everywhere?
At Grailed, these situations were not uncommon. We are the largest marketplace for luxury men's fashion, with over 7 million users, and a growing Rails codebase that spans hundreds of thousands of lines. Before typing, changes to core interfaces often required creative grepping, modification of type checking unit tests, and updating brittle type documentation.
Ever since we started gradually typing our codebase with Sorbet, we’ve been able to make intrusive changes faster and confidently. In this talk, we’ll walk you through our prior art, challenges, learnings, and big benefits of typing our codebase.
Max De Marzi gave a presentation on Gremlin, a graph traversal language used for traversing property graphs. He explained that Gremlin is implemented by most graph database vendors and is primarily used with Groovy. He demonstrated how to use Gremlin to query a Neo4j graph database, showing examples of traversing nodes and relationships. Finally, he presented a Gremlin script for providing movie recommendations based on a user's genres and ratings.
Most VLDBs should use partitioning and in today’s world scaling up and out a database is something critical, so every DBA and Developer should work together to accomplish this task. Partitioning may help the application run faster and also helps DBAs to perform their work.
O que aprendi após 3 bilhões de jobs processados no SidekiqAnderson Dias
Nos últimos anos Sidekiq se tornou uma das principais ferramentas relacionadas à processamento assíncrono na comunidade Ruby.
Trabalhei com suas versões open source, pro e enterprise, e após mais de 3 bilhões de jobs processados aprendi algumas lições, algumas à duras penas.
Nesta palestra irei falar sobre Sidekiq, suas versões e sobre pequenos detalhes que fazem toda a diferença quando o utilizamos em larga escala.
The hidden power of network maps on ZabbixRicardo Santos
Maps can be customized in various ways including custom icons, labels, links, and real-time data display. Elements on maps can be edited, multiple elements selected together, and links can branch. Maps can be saved, exported as XML, and accessed via the API or by name in the URL. Background images and icons can be imported.
CanSecWest 2017 - Port(al) to the iOS CoreStefan Esser
This document discusses a new iOS kernel exploitation technique that involves manipulating mach ports. It fills the kernel heap with pointers to mach ports, then overwrites those pointers to fake ports that point to attacker-controlled data structures. This allows calling kernel APIs and the Mach API using the fake ports to potentially execute arbitrary code or escalate privileges. The technique was previously private but was leaked in late 2016 and used in the Yalu jailbreak.
Speaker: Alex Komyagin
MongoDB replica sets allow you to make the database highly available so that you can keep your applications running even when some of the database nodes are down. In a distributed system, local durability of writes with journaling is no longer enough to guarantee system-wide durability, as the node might go down just before any other node replicates new write operations from it. As such, we need a new concept of cluster-wide durability.
How do you make sure that your write operations are durable within a replica set? How do you make sure that your read operations do not see those writes that are not yet durable? This talk will cover the mechanics of ensuring durability of writes via write concern and how to prevent reading of stale data in MongoDB using read concern. We will discuss the decision flow for selecting an appropriate level of write concern, as well as associated tradeoffs and several practical use cases and examples."
The document provides instructions for a tutorial on how to write your own JavaServer Faces (JSF) components. The tutorial is broken into 7 steps, with each step building on the previous one. In step 1, the reader creates a basic component that renders a <div> tag with some text inside. This establishes the foundation for the component. Step 2 will add attributes to the component to make the rendered output more visually appealing.
Использование GMock для обеспечения спокойной и сытой жизни разработчика. Обзор как верхушки так и некоторых подводных частей GMock. Разбор возможностей фреймворка на примерах.
The document discusses three optimization tips for C++ code: reduce strength by using fewer operations like division and instead using comparisons and additions; minimize writes to arrays which can disable optimizations; and reformulate algorithms to make an extra pass to compute values instead of writing to arrays. It provides examples of digit counting functions optimized using these tips by reducing divisions, writing to arrays backwards, and making an extra pass to find the length.
PostgreSQL is a very popular and feature-rich DBMS. At the same time, PostgreSQL has a set of annoying wicked problems, which haven't been resolved in decades. Miraculously, with just a small patch to PostgreSQL core extending this API, it appears possible to solve wicked PostgreSQL problems in a new engine made within an extension.
This document proposes two methods for integrating SystemC models with virtual platform simulators like QEMU and Simics: 1) A "QEMU SystemC Bridge" that synchronizes the two simulators using lazy synchronization. 2) Wrapping QEMU as a TLM-2.0 initiator to standardize the integration. Experiments showed little performance overhead (<5%) for both approaches. The techniques allow developing full virtual platforms using SystemC for device modeling.
Domain Driven Design with the F# type System -- F#unctional Londoners 2014Scott Wlaschin
(Video of these slides here http://fsharpforfunandprofit.com/ddd)
Statically typed functional programming languages like F# encourage a very different way of thinking about types. The type system is your friend, not an annoyance, and can be used in many ways that might not be familiar to OO programmers.
Types can be used to represent the domain in a fine-grained, self documenting way. And in many cases, types can even be used to encode business rules so that you literally cannot create incorrect code. You can then use the static type checking almost as an instant unit test — making sure that your code is correct at compile time.
In this talk, we'll look at some of the ways you can use types as part of a domain driven design process, with some simple real world examples in F#. No jargon, no maths, and no prior F# experience necessary.
Code, links to video, etc., at http://fsharpforfunandprofit.com/ddd
NEW AND IMPROVED - added sections on:
* why OO, not FP is scary
* designing with states and transitions
The Functional Programming Triad of Folding, Scanning and Iteration - a first...Philip Schwarz
This slide deck can work both as an aide mémoire (memory jogger), or as a first (not completely trivial) example of using left folds, left scans and iteration, to implement mathematical induction.
Errata: on almost half of the slides there is some minor typo or imperfection or in some cases a minor error and in one case, an omission. See a later version for corrections and some improvements.
(for best quality images, either download or view here: https://philipschwarz.dev/fpilluminated/?page_id=455)
Scala code for latest version: https://github.com/philipschwarz/fp-fold-scan-iterate-triad-a-first-example-scala
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
The document discusses refactoring code through an "inside out" approach. It begins by showing sample code, then discusses strategies and objectives for refactoring like improving design, adding features, and fixing bugs. Specific refactoring techniques are explained like extracting methods, eliminating duplication, and changing design. The presentation emphasizes using tests during refactoring and considering the "big picture" of strategies and mechanics when refactoring large bodies of code. Coding examples are provided to demonstrate refactoring steps.
BarcelonaJUG2016: walkmod: how to run and design code transformationswalkmod
walkmod is an open source tool to apply and share code conventions. Code conventions are internally designed as code transformations. In this sessions we will se how to run walkmod in a real project and how to contribute designing automatic quick fixes for existing PMD, Checkstyle or Sonar rules
The things we don't see – stories of Software, Scala and AkkaKonrad Malawski
The document discusses some of the unseen aspects of software, programming languages, and distributed systems. It covers topics like tradeoffs that must be made in software but are not visible, the impact of blocking code in Akka applications, and how traits are represented differently in Scala depending on the version. Messages are emphasized as a core abstraction in Akka rather than method calls. Some hidden features of ScalaDoc are also shown.
A better version can be found at https://app.box.com/s/8zuk8yd4x9m7rbvinkb0xztz17x6xoqj
This is the slide for a presentation at Golang Melbourne meetup.
The document discusses several common Java anti-patterns, including:
1) Approving a task by rejecting it in a method called "approve".
2) Avoiding the use of helper libraries to simplify tasks like file name parsing.
3) Using reflection when direct method calls would suffice.
The Ring programming language version 1.9 book - Part 53 of 210Mahmoud Samir Fayed
This document provides code examples and documentation for Ring's web application framework. It includes code for user authentication using a database, classes for database access and web controllers, and descriptions of the main classes and methods in the WebLib API for generating HTML pages and handling requests. The document covers key concepts like generating pages dynamically based on request parameters, working with databases using Model classes, and common tasks like cookies, file uploads, and URL encoding.
FindBugs is a static analysis tool that looks for bugs in Java code based on predefined bug patterns. It analyzes code without executing it and flags issues related to correctness, bad practices, performance, security, and concurrency. Some common bug patterns it finds include null pointer dereferences, ignored return values from methods, and potential infinite recursive loops. The tool is useful for finding bugs early before testing or deployment. Google and other companies use FindBugs to analyze their Java codebases and have found and fixed hundreds of issues through this process.
The Ring programming language version 1.4.1 book - Part 13 of 31Mahmoud Samir Fayed
This document provides documentation on Ring's web library API for generating HTML pages and elements. It describes classes and methods for creating pages, adding content and attributes, handling forms, and more. The Page class allows adding various HTML elements to the page content through methods like text(), html(), h1(), etc. The Application class contains methods for encoding, cookies, and page structure. WebLib enables generating complete HTML pages in Ring code.
Asynchronous operations are getting more and more popular. To the point that we are getting frameworks and environments revolving strictly around that concept. Boost.ASIO, Twisted and node.js are notable example. We will not explore that area. We will focus on techniques for making asynchronous more readable. We will present different currently used solutions. At the end we will introduce coroutines and explain the concept. We will show how these can be integrated with asynchronous code and what we benefit from using coroutines in asynchronous code.
Pro typescript.ch03.Object Orientation in TypeScriptSeok-joon Yun
The document discusses object-oriented programming concepts in TypeScript such as classes, inheritance, polymorphism, and mixins. It provides code examples of implementing interfaces and classes to demonstrate inheritance and composition. Mixins are discussed as a way to reuse behavior across class hierarchies by applying multiple base classes to a derived class using a mixin function. The examples show how to define mixin behaviors as classes and apply them to implementing classes to achieve multiple inheritance in TypeScript.
Taller evento TestingUY 2017 - API Testing utilizando ChakramTestingUy
Expositor: Walter Lijo
Resumen: Con el gran crecimiento de APIs en la industria de software nos vemos obligados a realizar cada vez una mayor cantidad de tests en menos tiempo, y que los mismos sean simples de mantener. Ante esta premisa encontré Chakram que facilita el trabajo que necesitamos realizar.
Chakram nos da la posibilidad de testear de una manera simple y rápida APIs Rest. Este framework nos da como ventaja:
- Realizar HTTP Assertions basadas en Chai.js
- Aprovechar al máximo las promises de javascript
- Usar BDD + Hooks
- Extensible, permitiendo crear nuevas validaciones al framework
El workshop está enfocado a conocer el framework, dar las pautas principales de cómo funciona y crear test de forma simple.
This document discusses machine learning projects in Go. It begins by explaining what machine learning is and provides an example of linear regression. It then outlines the typical steps for a machine learning project, including gathering data, defining models, training and testing models, and deploying models. The document discusses options for developing machine learning models in Go, including using TensorFlow bindings, Gorgonia for building graphs, and Gonum libraries. It provides examples of implementing convolutional neural networks and recurrent neural networks in these Go frameworks. While developing neural networks from scratch in Go is challenging, the document concludes that Go is suitable for machine learning if using existing TensorFlow models or libraries like Gorgonia and Gonum for other model types.
I am Wycliffe S. I am a Python Homework Expert at pythonhomeworkhelp.com. I hold a Master's in Computer Science from, the University of Aberdeen, UK. I have been helping students with their homework for the past 13 years. I solve homework related to Python.
Visit pythonhomeworkhelp.com or email support@pythonhomeworkhelp.com. You can also call on +1 678 648 4277 for any assistance with Python Homework.
The Ring programming language version 1.10 book - Part 17 of 212Mahmoud Samir Fayed
The document describes the new features in Ring 1.10 and Ring 1.5.1. It includes examples of using tracing functions, breakpoints, and an interactive debugger in Ring 1.5. It also provides examples of 3D rendering and textures using OpenGL and Allegro libraries. New syntax features introduced in Ring 1.5 like braces and keywords for packages/classes/functions are demonstrated. The Type Hints library for adding type information to source code is explained. Overall quality improvements and better documentation in Ring 1.5 and 1.5.1 are noted.
This document summarizes a slide presentation on string methods and debugging in Java. It provides examples of common string methods like charAt, compareTo, indexOf, replace, and substring. It also briefly explains how to debug programs using breakpoints and stepping through code line-by-line.
The document discusses various concepts related to abstraction in software development including project architecture, code refactoring, enumerations, and the static keyword in Java. It describes how to split code into logical parts using methods and classes to improve readability, reuse code, and avoid repetition. Refactoring techniques like extracting methods and classes are presented to restructure code without changing behavior. Enumerations are covered as a way to represent numeric values from a fixed set as text. The static keyword is explained for use with classes, variables, methods, and blocks to belong to the class rather than object instances.
The document discusses various static code analysis features available in IntelliJ IDEA, including code inspections, JSR annotations, duplicate detection, stack trace analysis, dataflow analysis, dependency analysis, and more. It provides examples of how to use annotations like @Nullable, @Pattern, and @Language. It also covers dependency structure matrix, UML generation, and how different features can be used at different stages of the software development lifecycle.
The Ring programming language version 1.5.4 book - Part 10 of 185Mahmoud Samir Fayed
This document summarizes the key features and changes in Ring 1.5.2, including updates to the documentation, Ring Notepad, Form Designer, and sample applications. It provides code examples demonstrating new capabilities in the trace library, type hints library, OpenGL graphics, and event handling.
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30Ruby Meditation
Talk of Sergey Sergyenko, CEO at Cybergizer, at Ruby Meditation #30 Online 24.10.2020
Next conference - http://www.rubymeditation.com/
Description:
I hope that the code I write continues to be used after I die. Which is why I only ever write legacy code" - this is what Patterson mentioned on his Twitter last September. In this talk, I will define metrics and try to distinguish code from Legacy to the one that Survived. Also, I will introduce the so-called "Code Survival" refactoring approach.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...Ruby Meditation
Talk of Roman Dubrovsky, Backend developer at Datarockets, at Ruby Meditation #29 Kyiv 14.12.2019
Next conference - http://www.rubymeditation.com/
Description:
More than two years we’re developing and supporting GraphQL API, tried to make it public and integrated our app with other GraphQL APIs. In this talk, I'll try to summarize our experience, say about good practices, issues we found and can resolve. And which we can’t.
I will show you how to set up and how to use them.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29Ruby Meditation
Talk of Viacheslav Miroshnychenko, Software Engineer at Human Agency, at Ruby Meditation #29 Kyiv 14.12.2019
Next conference - http://www.rubymeditation.com/
Description:
Why do we need to think about licenses and check them in our projects? Let's try to figure out it.
During this talk, you will learn tools that help you to automate the process of checking licenses for all libraries in your project.
I will show you how to set up and how to use them.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28 Ruby Meditation
Talk of Bohdan Parshentsev, senior backend engineer at P2H, at Ruby Meditation #28 Kyiv 26.10.2019
Slideshare - **
Next conference - http://www.rubymeditation.com/
This presentation is connected with presentation How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Why we need a Rabbit? Let's try to cook it tasty. And what else? - Live demo of several useful dishes. Be ready to use Telegram to have fun with us.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
* The channel of the organizers of the meetup https://t.me/incredevly
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28Ruby Meditation
Talk of Serhiy Nazarov, founder QPARD, system architect, at Ruby Meditation #28 Kyiv 26.10.2019
Next conference - http://www.rubymeditation.com/
This presentation is connected with presentation How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
Why we need a Rabbit? Let's try to cook it tasty. And what else? - Live demo of several useful dishes. Be ready to use Telegram to have fun with us.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Ruby Meditation
Talk of Julik Tarkhanov, senior backend engineer, WeTransfer, Amsterdam, at Ruby Meditation #28 Kyiv 26.10.2019
Next conference - http://www.rubymeditation.com/
It is often a choice, sometimes a whim, and sometimes an act of desperation. We idolise reuse while sometimes the road not taken is just as exciting. Let's chat about where it is appropriate to "do the thing again", take the scenic route and enjoy the view.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
* The channel of the organizers of the meetup https://t.me/incredevly
Speech of Nihad Abbasov, Senior Software Engineer at Digital Classifieds, at Ruby Meditation 27, Dnipro, 19.05.2019
Slideshare -
Next conference - http://www.rubymeditation.com/
How fast is your code? Performance is crucial as your startup grows, and optimizing your application can make a huge impact on user experience. During this talk, you will learn hints, techniques and best practices for improving the overall speed of your Ruby application.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...Ruby Meditation
Speech of Ruslan Tolstov, Ruby Developer at MLSDev, at Ruby Meditation 27, Dnipro, 19.05.2019
Slideshare -
Next conference - http://www.rubymeditation.com/
During this talk, we’ll discuss serverless technologies. In particular, we will talk about popular serverless platforms like AWS Lambda, Google CF, and Microsoft AF and also dwell upon serverless frameworks for managing and deploying your functions. As well, we will touch upon the potential use cases of this new approach in your existing projects.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...Ruby Meditation
Speech of Orban Botond, Ruby Developer at Toptal, at Ruby Meditation 27, Dnipro, 19.05.2019
Slideshare -
Next conference - http://www.rubymeditation.com/
Software development is a domain where everybody can make a beautiful sculpture or can quickly build an unsolvable maze. According to my observations the later happens more often unfortunately.
In the title for my presentation both the If Jungle and the Civilised Railway Station are methaphors representing the opposite ends of the scale of quality code.
In my presentation I am going to present my personal experiences on how to get out from the trap of the if jungle by making the code to adhere to the SRP and DRY principles. I am also going to show the advantages of the Railway Oriented Programing using the 3 different libraries.
The examples are going to be stereotypical errors, fun and easy to follow.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27Ruby Meditation
Speech of Valentyn Ostakh, Ruby Developer at Ruby Garage, at Ruby Meditation 27, Dnipro, 19.05.2019
Slideshare -
Next conference - http://www.rubymeditation.com/
This talk explores basic concepts of GraphQL.
The main goal is to show how GraphQL works and of what parts it consists of.
From the Ruby side we will look at how to create a GraphQL schema.
In addition, we will consider what pitfalls can be encountered at the start of work with GraphQL.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26Ruby Meditation
Speech of Nihad Abbasov, Backend Engineer at Digital Classifieds, at Ruby Meditation #26 Kyiv 16.02.2019
Next conference - http://www.rubymeditation.com/
What to expect from Rails 6? Review of new features.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Speech of Tetiana Chupryna, Backend developer at GitLab, at Ruby Meditation #26 Kyiv 16.02.2019
Next conference - http://www.rubymeditation.com/
We’ll talk about different types of vulnerabilities, scanning tools and the whole process per se.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
This document discusses telemetry in applications. It defines telemetry as gathering data on application use and performance. Telemetry includes logs, metrics, and traces. Logs provide information for debugging, monitoring, and analysis. Metrics measure performance, health, errors and other indicators. Traces provide low-level debugging information. The document discusses how to implement logging, metrics and tracing in applications and what types of data each provides to various consumers like developers and security teams.
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26Ruby Meditation
Speech of Ike Kurghinyan, Senior Software Engineer at VChain LLC, at Ruby Meditation #26 Kyiv 16.02.2019
Next conference - http://www.rubymeditation.com/
«Is there one grand unifying rule to software engineering? Can so-called best practices be somehow derived from that unifying rule? This speech is a humble attempt to explore the subject and provide you with tools for your own explorations.»
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
* The channel of the organizers of the meetup https://t.me/incredevly
Speech of Alexey Vasiliev, Software Engineer at Railsware, at Ruby Meditation #25 Kyiv 08.12.2018
Next conference - http://www.rubymeditation.com/
In this talk, Alexey will tell about the project in which was necessary to implement A/B testing and what came out of it in result
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...Ruby Meditation
Speech of Dmytro Herasymuk, WEB developer at Softermii, at Ruby Meditation #25 Kyiv 08.12.2018
Next conference - http://www.rubymeditation.com/
The modern world demands to be faster and faster. Engineers create more powerful CPUs every day, but our app depends on third party apps too often in the WEB world. So, even the fastest CPU can't cope with I/O delays. On the one hand multithreading could help in such cases, but on the other hand, it seems to be a hard decision of using concurrency in production.
Dmytro would like to share his experience in this field
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...Ruby Meditation
Speech of Dmytro Shapovalov, Infrastructure Engineer at Cossack Labs, at Ruby Meditation #25 Kyiv 08.12.2018
Next conference - http://www.rubymeditation.com/
Making secure applications is not easy, especially when encryption tools are difficult and incomprehensible. We will talk about typical data security problems in web apps and how to implement encryption properly. We will review cryptographic approaches and exact tools that ensure that no sensitive data leaks from the application or database.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
Rails App performance at the limit - Bogdan GusievRuby Meditation
The document discusses optimizing Rails application performance. It begins by examining where Rails may be slow, such as ActiveRecord and Action Controller. The author advocates for effective database schema as the best general optimization technique. Specific optimizations should target problematic parts of the application and may include avoiding ActiveRecord, conditional GET requests, rewriting controllers in Rack, and introducing caching. The goals of optimization are to improve throughput, reduce infrastructure costs, and make targeted improvements where needed.
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23Ruby Meditation
The document discusses how the General Data Protection Regulation (GDPR) coming into effect in 2018 has caused sleepless nights for developers similar to the Y2K issue in 1999. It notes that every developer should understand the details of GDPR, which it then summarizes as having 8 requirements for personal data handling, 4 pieces of advice, and 3 warnings. The requirements include features for deleting personal data, restricting data processing, exporting data, and editing personal data.
Postgres vs Elasticsearch while enriching data - Vlad Somov | Ruby Meditaiton...Ruby Meditation
Postgres and Elasticsearch can both be used for enriching and searching unstructured data. Postgres performance improved significantly with the addition of multicolumn indexes and a GIN index with trgm_ops on text fields. Elasticsearch was generally faster for searches but Postgres optimization closed the gap. The document also compared index types like B-tree, GIN, GIST and the inner workings of analyzers and indexing in Elasticsearch.
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/
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...Jason Yip
The typical problem in product engineering is not bad strategy, so much as “no strategy”. This leads to confusion, lack of motivation, and incoherent action. The next time you look for a strategy and find an empty space, instead of waiting for it to be filled, I will show you how to fill it in yourself. If you’re wrong, it forces a correction. If you’re right, it helps create focus. I’ll share how I’ve approached this in the past, both what works and lessons for what didn’t work so well.
Dandelion Hashtable: beyond billion requests per second on a commodity serverAntonios Katsarakis
This slide deck presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
Essentials of Automations: Exploring Attributes & Automation ParametersSafe Software
Building automations in FME Flow can save time, money, and help businesses scale by eliminating data silos and providing data to stakeholders in real-time. One essential component to orchestrating complex automations is the use of attributes & automation parameters (both formerly known as “keys”). In fact, it’s unlikely you’ll ever build an Automation without using these components, but what exactly are they?
Attributes & automation parameters enable the automation author to pass data values from one automation component to the next. During this webinar, our FME Flow Specialists will cover leveraging the three types of these output attributes & parameters in FME Flow: Event, Custom, and Automation. As a bonus, they’ll also be making use of the Split-Merge Block functionality.
You’ll leave this webinar with a better understanding of how to maximize the potential of automations by making use of attributes & automation parameters, with the ultimate goal of setting your enterprise integration workflows up on autopilot.
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.
The Microsoft 365 Migration Tutorial For Beginner.pptxoperationspcvita
This presentation will help you understand the power of Microsoft 365. However, we have mentioned every productivity app included in Office 365. Additionally, we have suggested the migration situation related to Office 365 and how we can help you.
You can also read: https://www.systoolsgroup.com/updates/office-365-tenant-to-tenant-migration-step-by-step-complete-guide/
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor IvaniukFwdays
At this talk we will discuss DDoS protection tools and best practices, discuss network architectures and what AWS has to offer. Also, we will look into one of the largest DDoS attacks on Ukrainian infrastructure that happened in February 2022. We'll see, what techniques helped to keep the web resources available for Ukrainians and how AWS improved DDoS protection for all customers based on Ukraine experience
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
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.
This talk will cover ScyllaDB Architecture from the cluster-level view and zoom in on data distribution and internal node architecture. In the process, we will learn the secret sauce used to get ScyllaDB's high availability and superior performance. We will also touch on the upcoming changes to ScyllaDB architecture, moving to strongly consistent metadata and tablets.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
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
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.
6. 2017,
February
• Plans for dry-validation + dry-schema (a new gem!) by Piotr Solnica
2019,
January
• dry-schema introduced
2019,
May
• dry-schema v1.0.0 released
2019,
June
• dry-validation v1.0.0 released
gems update timeline
7. exceptionally about my experience
how I structured knowledge about these gems
features that were crucial for me
workarounds
successes and failures
conclusions, decisions and their consequences
What this talk will be about?
8. bugs that were fixed since dry-validation 0.13
all great features that dry-validation or dry-schema can provide
What I won’t cover?
10. Operations gem ‘trailblazer-operation’
Params schema and Validation Macro in operations gem ‘dry-validation’
Error normalization Macro for errors in operations gem ‘error_normalizer’
I had:
11. Trailblazer Operation v2.0 Contract documentation mentions the ability of validation using:
Dry::Schema (dry-validation < v0.13.3 Schema)
Reform
Trailblazer Macro Contract has dry-validation v0.11.1 dependency
Reform status:
Since September 2019 Emanuele Magliozzi started pushing commits for old and new API compatibility
which use dry-validation < v0.13.3 and dry-validation > v1.0.0 respectively.
In November 2019 he pushed into Trailblazer Reform v2.3.0 with new api which uses
Dry::Validation::Contract
Yet docs are still not updated and 🤔
Trailblazer usage
12. For same purposes you can use:
dry-transaction (active v0.13.0, release of v1.0.0 is planned but further development will be
stopped)
dry-monads
gem ‘interactor’
Other approaches
18. {
"sender": {
"first_name": "Draco",
"last_name": "Malfoy"
},
"receiver": {
"first_name": "Lord",
"last_name": "Voldemort"
},
"receiver_address": "Castle",
"text": "I'm scared",
"asap": true
}
it needs to be validated:
19. Reusing Schemas dry-validation 0.13
optional(:sender).schema(PersonalInfo::FormValidation)
required(:receiver).schema(PersonalInfo::FormValidation)
required(:receiver_address).filled(:str?)
required(:text).filled(:str?)
optional(:asap).filled(:bool?)
module PersonalInfo
FormValidation = Dry::Validation.Schema
required(:first_name).filled(:str?)
required(:last_name).filled(:str?)
end
end
20. Reusing Schemas dry-validation 1.3.1
params do
optional(:sender).hash(PersonalInfo::FormValidation)
required(:receiver).hash(PersonalInfo::FormValidation)
required(:receiver_address).filled(:string)
required(:text).filled(:string)
optional(:asap).filled(:bool)
end
module PersonalInfo
FormValidation = Dry::Schema.Params do
required(:first_name).filled(:string)
required(:last_name).filled(:string)
end
end
21. Reusing Schemas dry-schema 1.3.4
optional(:sender).hash(PersonalInfo::FormValidation)
required(:receiver).hash(PersonalInfo::FormValidation)
required(:receiver_address).filled(:string)
required(:text).filled(:string)
optional(:asap).filled(:bool)
module PersonalInfo
FormValidation = Dry::Schema.Params do
required(:first_name) { filled? > str? }
required(:last_name).filled(:string)
end
end
30. params do
required(:hogwarts_house).schema do
# ...
required(:head).filled(:string)
# ...
required(:common_room).schema do
required(:name).filled(:string)
required(:location).filled(:string)
end
end
end
rule('hogwarts_house.head') do
key.failure(:invalid_format) unless SOME_MAGIC_REGEX.match?(value)
key.failure(:invalid_size, range: 1..255) unless (1..255).cover?(value.length)
end
rule('hogwarts_house.common_room.location') do
Rules dry-validation 1.3.1
33. it needs to be validated:
{
"hogwarts_student": {
"name": "Sasha",
"age": 18,
"parents_owl_id": "hedwig_was_the_best@owail.com",
"has_owl": true,
"has_cat_or_toad": true
}
}
34. required(:hogwarts_student).schema do
# ...
required(:parents_owl_id).filled(:str?, :owl_id?)
optional(:has_owl).filled(:bool?)
optional(:has_cat_or_toad).filled(:bool?)
end
class CommonSchema < Dry::Validation::Schema::Params
configure do
# ...
end
def owl_id?(value)
OwlLib.valid?(value)
end
end
Dry::Validation.Schema(CommonSchema, {}, &block)
Custom Predicates dry-validation 0.13
35. params do
required(:hogwarts_student).schema do
# ...
required(:parents_owl_id).filled(:string)
required(:has_owl).filled(:bool)
required(:has_cat_or_toad).filled(:bool)
end
end
## 1
rule(hogwarts_student: :parents_owl_id) do
key.failure(:invalid_owl_id) unless OwlLib.valid?(value)
end
Custom Predicates dry-validation 1.3.0
36. params do
required(:hogwarts_student).schema do
# ...
required(:parents_owl_id).filled(:string)
required(:has_owl).filled(:bool)
required(:has_cat_or_toad).filled(:bool)
end
end
## 2
rule('hogwarts_student.parents_owl_id') do
unless owl_validator.valid?(value)
key.failure('invalid_owl_id')
end
end
Custom Predicates dry-validation 1.3.0
37. ## 2
class CommonContract < Dry::Validation::Contract
option :owl_validator
end
class OwlValidator
def self.valid?(value)
OwlLib.valid?(value)
end
end
MyContract.new(owl_validator: OwlValidator)
Custom Predicates dry-validation 1.3.0
38. params do
required(:hogwarts_student).schema do
# ...
required(:parents_owl_id).filled(:string)
required(:has_owl).filled(:bool)
required(:has_cat_or_toad).filled(:bool)
end
end
## 3
rule(hogwarts_student: :parents_owl_id).validate(:owl_id_format)
Custom Predicates dry-validation 1.3.0
39. class CommonContract < Dry::Validation::Contract
register_macro(:owl_id_format) do
unless OwlLib.valid?(value)
key.failure('not a valid owl id format')
end
end
end
MyContract.new
Custom Predicates dry-validation 1.3.0
44. Custom Error Messages dry-validation 0.13
class CommonSchema < Dry::Validation::Schema::Params
configure do
I18n.config.backend.load_translations('somewhere/custom_error_messages.yml')
config.messages = :i18n
end
end
en:
errors:
bool?: "must be bla bla bla"
owl_number?: "must be in owl number international format"
rules:
inadmissible_animal_quantity: "either owl or something else"
45. Custom Error Messages dry-validation 1.3.1
class CommonContract < Dry::Validation::Contract
config.messages.load_paths << 'somewhere/custom_error_messages.yml'
end
en:
dry_validation:
errors:
bool?: "must be bla bla bla"
rules:
hogwarts_house:
common_room:
location:
invalid: "must be somewhere in: %{list}"
head:
invalid_format: "must not contain magic"
invalid_size: "length must be within %{range}"
hogwarts_student:
parents_owl_number:
invalid_owl_number: "must be in owl number international format"
owl_errors:
inadmissible_animal_quantity: "either owl or something else"
46. Custom Error Messages dry-schema 1.3.4
en:
dry_schema:
errors:
bool?: "must be bla bla bla"
CommonConfig = Dry::Schema.Params do
config.messages.load_paths << 'somewhere/custom_error_messages.yml'
end
49. class CommonSchema < Dry::Validation::Schema::Params
configure do
# custom errors files and I18n configs
end
# predicates
# custom validation blocks
end
Dry::Validation.Schema(CommonSchema, {}, &block)
Configuration parameters dry-validation 0.13
50. Configuration parameters dry-validation 1.3.1
class CommonContract < Dry::Validation::Contract
# custom errors files and I18n configs
# external dependencies
# predicates as macros
end
MyContract.new(
# list of validators
)
51. Configuration parameters dry-schema 1.3.4
CommonConfig = Dry::Schema.Params do
# custom errors files and I18n configs
# custom types
end
Dry::Schema.Params(
processor: 'Params',
config: CommonConfig.config,
&block
)
55. This separation will not only make dry-v much simpler internally, but also allow us to have schemas for
processing/validating input at the HTTP boundary, and then having domain validators that can be called
in the application layer. Schemas and validators can be composed, it means that you’ll be able to specify
schemas and reuse them in validators. This way your application’s domain validation will live in the app
layer, and hairy HTTP processing/validation will be in the HTTP layer (ie controllers, roda routes, etc.)
and this will be possible with 0 code duplication (ie you won’t have to define same attributes in two
places).
The main idea behind dry-schema is to be a fast type checker and a coercion mechanism. It does
support lots of predicates OOTB through dry-logic but it’s important to understand that for “domain
validation” it is not a good fit. Good use cases for dry-schema with additional predicates (as in, other than
type checks) may include things like processing and validating application configuration or HTTP params
pre-processing (before it is passed down to domain layer where further processing may take place).
Proving the idea by Piotr Solnica
56. How can we draw a line between dry-validation
and dry-schema?
Use dry-validation or use both.
dry-schema for high-level http params
validation
dry-validation for specific and complex
validations, business logic
Ex.:
dry-schema in Controllers
dry-validation in Operations or whatever you
use to process data
Figuring it out
57. About dry-rb gems
https://www.rubyguides.com/2019/01/what-is-dry-rb/
Piotr Solnica about dry-schema 1.0 release
https://solnic.codes/2019/01/31/introducing-dry-schema/
Piotr Solnica about dry-validation 1.0 release
https://dry-rb.org/news/2019/06/10/dry-validation-1-0-0-released/
Tim Riley “A tour of dry-schema and dry-validation 1.0”
https://speakerdeck.com/timriley/a-tour-of-dry-schema-and-dry-validation-1-dot-0
Igor Morozov upgrading dry-gems
https://www.morozov.is/2019/05/31/upgrading-dry-gems.html
Helpful links: