It is mainly about the multithreading and the multiprocessing in Python, and *in Python's flavor*.
It's also the share at Taipei.py [1].
[1] http://www.meetup.com/Taipei-py/events/220452029/
It is the slides for COSCUP[1] 2013 Hands-on[2], "Learning Python from Data".
It aims for using examples to show the world of Python. Hope it will help you with learning Python.
[1] COSCUP: http://coscup.org/
[2] COSCUP Hands-on: http://registrano.com/events/coscup-2013-hands-on-mosky
It was the talk, titled "Graph-Tool: The Efficient Network Analyzing Tool for Python", at PyCon APAC 2014 [1] and PyCon SG 2014 [2]. It introduces you to Graph-Tool by mass code snippets.
[1] https://tw.pycon.org/2014apac
[2] https://pycon.sg/
The document discusses strategies for improving the startup performance of JRuby. It describes how the JRuby team optimized startup by using a Java-heavy JDK instead of native code, tweaking JVM flags, and implementing Drip - a technique that pre-boots the JVM and caches runtime configurations between runs. Drip reduced JRuby startup times from over 10 seconds to under 1 second for many common tasks. Later, it discusses challenges with JNI and how the Java Native Runtime (JNR) provides a better alternative for interfacing Java with native code and libraries.
The document provides an overview of asynchronous programming in Python. It discusses how asynchronous programming can improve performance over traditional synchronous and threaded models by keeping resources utilized continuously. It introduces key concepts like callbacks, coroutines, tasks and the event loop. It also covers popular asynchronous frameworks and modules in Python like Twisted, Tornado, gevent and asyncio. Examples are provided to demonstrate asynchronous HTTP requests and concurrent factorial tasks using the asyncio module. Overall, the document serves as an introduction to asynchronous programming in Python.
It is the slides for SITCON[1] 2013 Workshop[2]: "Git - The Version Control System You Must Know".
[1]: http://sitcon.org/
[2]: http://www.openfoundry.org/tw/activities/details/415-the-open-source-way-coder
This document discusses memory models, non-blocking primitives, and lock-free algorithms for concurrent programming. It provides code examples for implementing atomic operations like set, compareAndSet, and lazySet using the Unsafe class. It evaluates the performance of different producer-consumer algorithms like spin-wait, co-operative yielding, and buffering. The document suggests buffering generally performs best by avoiding busy-waiting and allowing other threads to run. It provides references for further information on lock-free programming.
It is the slides for COSCUP[1] 2013 Hands-on[2], "Learning Python from Data".
It aims for using examples to show the world of Python. Hope it will help you with learning Python.
[1] COSCUP: http://coscup.org/
[2] COSCUP Hands-on: http://registrano.com/events/coscup-2013-hands-on-mosky
It was the talk, titled "Graph-Tool: The Efficient Network Analyzing Tool for Python", at PyCon APAC 2014 [1] and PyCon SG 2014 [2]. It introduces you to Graph-Tool by mass code snippets.
[1] https://tw.pycon.org/2014apac
[2] https://pycon.sg/
The document discusses strategies for improving the startup performance of JRuby. It describes how the JRuby team optimized startup by using a Java-heavy JDK instead of native code, tweaking JVM flags, and implementing Drip - a technique that pre-boots the JVM and caches runtime configurations between runs. Drip reduced JRuby startup times from over 10 seconds to under 1 second for many common tasks. Later, it discusses challenges with JNI and how the Java Native Runtime (JNR) provides a better alternative for interfacing Java with native code and libraries.
The document provides an overview of asynchronous programming in Python. It discusses how asynchronous programming can improve performance over traditional synchronous and threaded models by keeping resources utilized continuously. It introduces key concepts like callbacks, coroutines, tasks and the event loop. It also covers popular asynchronous frameworks and modules in Python like Twisted, Tornado, gevent and asyncio. Examples are provided to demonstrate asynchronous HTTP requests and concurrent factorial tasks using the asyncio module. Overall, the document serves as an introduction to asynchronous programming in Python.
It is the slides for SITCON[1] 2013 Workshop[2]: "Git - The Version Control System You Must Know".
[1]: http://sitcon.org/
[2]: http://www.openfoundry.org/tw/activities/details/415-the-open-source-way-coder
This document discusses memory models, non-blocking primitives, and lock-free algorithms for concurrent programming. It provides code examples for implementing atomic operations like set, compareAndSet, and lazySet using the Unsafe class. It evaluates the performance of different producer-consumer algorithms like spin-wait, co-operative yielding, and buffering. The document suggests buffering generally performs best by avoiding busy-waiting and allowing other threads to run. It provides references for further information on lock-free programming.
The document provides examples of how Python is used in different domains such as websites, desktop applications, science, embedded systems, and more. It also discusses why Python is popular due to its readability, ease of learning, rich libraries, and ability to be sped up with tools like Numba and Cython. The document outlines topics for learning Python including primitives, control flow with if/while statements, composites like lists and dictionaries, and for loops. It recommends keeping learning through tutorials, documentation, and communities.
Rapid Application Design in Financial ServicesAerospike
Applying internet NoSQL design patterns to fraud detection and risk scoring, including when to use SQL and when to use NoSQL. The state of NAND Flash and NVMe is also discussed, as well as storage class memory futures with Intel's 3D Xpoint technology.
This talk was presented in LA at the following meetup:
http://www.meetup.com/scalela/events/233396111/
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...Ontico
This document discusses building a distributed data ingestion system using RabbitMQ. It introduces RabbitMQ as a multi-protocol, polyglot messaging broker. The document then outlines some issues with a naïve ad-hoc solution to distributing data and proposes using RabbitMQ federation to address these issues. It provides an overview of how RabbitMQ federation works and how to configure it. Finally, it discusses additional RabbitMQ features like sharded queues and federated queues that can help scale the system.
Fast as C: How to Write Really Terrible JavaCharles Nutter
For years we’ve been told that the JVM’s amazing optimizers can take your running code and make it “fast” or “as fast as C++” or “as fast as C”…or sometimes “faster than C”. And yet we don’t often see this happen in practice, due in large part to (good and bad) development patterns that have taken hold in the Java world.
In this talk, we’ll explore the main reasons why Java code rarely runs as fast as C or C++ and how you can write really bad Java code that the JVM will do a better job of optimizing. We’ll take some popular microbenchmarks and burn them to the ground, monitoring JIT logs and assembly dumps along the way.
Talk given at DomCode meetup in Utrecht (August 2014) on different frameworks to do asynchronous I/O y Python, with a strong focus on asyncio (PEP-3156).
The document provides an introduction to the Java Virtual Machine (JVM) bytecode and JIT compiler. It discusses how bytecode works, including inspection, generation and the bytecode instructions. It also covers how the JIT compiler works and is monitored. Examples of viewing bytecode with javap and generating bytecode with BiteScript are provided.
A status update on JRuby, covering compatibility, Rails, and next-gen performance numbers. JRuby is currently the fastest way to run Rails apps, and we're doing work to make it even faster in the future.
Troubleshooting RabbitMQ and services that use itMichael Klishin
This document discusses troubleshooting RabbitMQ and services that use it. It provides tips for troubleshooting publishers and consumers, including common issues like I/O exceptions, inadequate delivery quality of service, and lack of confirmations. It also recommends collecting logs, metrics, exceptions and traces system-wide to analyze issues. Distributed system debugging remains a challenging problem.
JRuby 9000 - Taipei Ruby User's Group 2015Charles Nutter
The document discusses JRuby 9000, a new version of JRuby that runs on a new runtime based on an intermediate representation (IR). Some key points:
- JRuby 9000 includes major performance improvements like just-in-time compiling of blocks and optimized define_method performance.
- The new runtime represents code as IR instructions instead of an AST for better optimization capabilities. It allows registering passes to optimize the IR.
- Future work includes improved inlining, numeric specialization to use primitives on the JVM, and leveraging ahead-of-time compilation capabilities being added to the JVM to improve startup time.
- The overall goal is to continue optimizing JRuby to perform
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
Yuta Iwama completed an internship where they added several new features and enhancements to Fluentd. Some of the key additions included implementing a counter API, adding data compression to buffers and forwards, creating a new simpler output plugin for secondary sections, developing a CLI tool to read dumped log data, and optimizing multiple filter calls. The internship provided valuable experience contributing to an open source middleware project and learning about aspects of design, development, and code quality.
This document discusses the development of Apache Pig on Tez, an execution engine for Pig jobs. Pig on Tez allows Pig workflows to be executed as directed acyclic graphs (DAGs) using Tez, improving performance over the default MapReduce execution. Key benefits of Tez include eliminating intermediate data writes, reducing job launch overhead, and allowing more flexible data flows. However, challenges remain around automatically determining optimal parallelism and integrating Tez with user interface and monitoring tools. Future work is needed to address these issues.
The document discusses concepts related to event loops and concurrency in programming. It includes code snippets in Java showing the use of NIO selectors and channels for non-blocking I/O. Diagrams are shown illustrating reactor patterns and Vert.x modules deployed across multiple CPUs. The summary provides an overview of the main topics and techniques discussed in the technical document.
Sphinx autodoc - automated api documentation - PyCon.KR 2015Takayuki Shimizukawa
Using the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program.
You just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats.
In this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions.
Down the Rabbit Hole: An Adventure in JVM WonderlandCharles Nutter
The document discusses exploring interesting Java features and how they are compiled and executed by the JVM. It will look at bytecode, compiler logs, and native code generated for simple Java examples. The goal is to understand hidden performance costs, how code design impacts performance, and what the JVM can and cannot optimize. It begins with a "Hello World" example and examines the bytecode, compiler logs showing inlining, and native assembly code generated by the JIT compiler.
Ruby 2.4.0 includes several performance improvements including faster instance variable access and integer handling. It also protects Proc and Env objects from garbage collection issues by making them write-barrier protected. The presenter proposed changes to Env object handling that allow protection without significant performance impacts, such as lightweight escape detection and conditional write barriers. Benchmark results showed performance gains from these changes and protection of Proc objects.
This document provides an overview of the Tornado web server and summarizes its internals. It begins with an introduction to Tornado, describing it as a scalable, non-blocking web server and framework written in Python. It then outlines the main Tornado modules and discusses sockets, I/O monitoring using select, poll and epoll, and how Tornado sets up its server loop and handles requests.
ZIPCodeTW: Find Taiwan ZIP Code by Address FuzzilyMosky Liu
It was a lightning talk at PyCon APAC 2014 [1]. It introduces the tool to find ZIP code, ZIPCodeTW [2].
[1] http://tw.pycon.org/2014apac/
[2] http://zipcode.mosky.tw
In your code base, to understand a random line, how many lines do you need to read back? Cloud you make it zero?
This talk will start with the impact of the maintainability, define the maintainability as “to understand a random line, the lines you need to read back”, show the practicing techniques to make it zero, or nearly zero, and finally, reach the goal: boost the maintainability.
It's the revision of “Beyond the Style Guides” [1] and the talk at PyCon TW 2016 [2], PyCon APAC/KR 2016 [3], and GDG DevFest Taipei 2016 [4].
[1]: https://speakerdeck.com/mosky/beyond-the-style-guides
[2]: https://tw.pycon.org/2016
[3]: https://www.pycon.kr/2016apac/
[4]: https://devfest-taipei-3cbee.firebaseapp.com/
The document provides examples of how Python is used in different domains such as websites, desktop applications, science, embedded systems, and more. It also discusses why Python is popular due to its readability, ease of learning, rich libraries, and ability to be sped up with tools like Numba and Cython. The document outlines topics for learning Python including primitives, control flow with if/while statements, composites like lists and dictionaries, and for loops. It recommends keeping learning through tutorials, documentation, and communities.
Rapid Application Design in Financial ServicesAerospike
Applying internet NoSQL design patterns to fraud detection and risk scoring, including when to use SQL and when to use NoSQL. The state of NAND Flash and NVMe is also discussed, as well as storage class memory futures with Intel's 3D Xpoint technology.
This talk was presented in LA at the following meetup:
http://www.meetup.com/scalela/events/233396111/
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...Ontico
This document discusses building a distributed data ingestion system using RabbitMQ. It introduces RabbitMQ as a multi-protocol, polyglot messaging broker. The document then outlines some issues with a naïve ad-hoc solution to distributing data and proposes using RabbitMQ federation to address these issues. It provides an overview of how RabbitMQ federation works and how to configure it. Finally, it discusses additional RabbitMQ features like sharded queues and federated queues that can help scale the system.
Fast as C: How to Write Really Terrible JavaCharles Nutter
For years we’ve been told that the JVM’s amazing optimizers can take your running code and make it “fast” or “as fast as C++” or “as fast as C”…or sometimes “faster than C”. And yet we don’t often see this happen in practice, due in large part to (good and bad) development patterns that have taken hold in the Java world.
In this talk, we’ll explore the main reasons why Java code rarely runs as fast as C or C++ and how you can write really bad Java code that the JVM will do a better job of optimizing. We’ll take some popular microbenchmarks and burn them to the ground, monitoring JIT logs and assembly dumps along the way.
Talk given at DomCode meetup in Utrecht (August 2014) on different frameworks to do asynchronous I/O y Python, with a strong focus on asyncio (PEP-3156).
The document provides an introduction to the Java Virtual Machine (JVM) bytecode and JIT compiler. It discusses how bytecode works, including inspection, generation and the bytecode instructions. It also covers how the JIT compiler works and is monitored. Examples of viewing bytecode with javap and generating bytecode with BiteScript are provided.
A status update on JRuby, covering compatibility, Rails, and next-gen performance numbers. JRuby is currently the fastest way to run Rails apps, and we're doing work to make it even faster in the future.
Troubleshooting RabbitMQ and services that use itMichael Klishin
This document discusses troubleshooting RabbitMQ and services that use it. It provides tips for troubleshooting publishers and consumers, including common issues like I/O exceptions, inadequate delivery quality of service, and lack of confirmations. It also recommends collecting logs, metrics, exceptions and traces system-wide to analyze issues. Distributed system debugging remains a challenging problem.
JRuby 9000 - Taipei Ruby User's Group 2015Charles Nutter
The document discusses JRuby 9000, a new version of JRuby that runs on a new runtime based on an intermediate representation (IR). Some key points:
- JRuby 9000 includes major performance improvements like just-in-time compiling of blocks and optimized define_method performance.
- The new runtime represents code as IR instructions instead of an AST for better optimization capabilities. It allows registering passes to optimize the IR.
- Future work includes improved inlining, numeric specialization to use primitives on the JVM, and leveraging ahead-of-time compilation capabilities being added to the JVM to improve startup time.
- The overall goal is to continue optimizing JRuby to perform
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
Yuta Iwama completed an internship where they added several new features and enhancements to Fluentd. Some of the key additions included implementing a counter API, adding data compression to buffers and forwards, creating a new simpler output plugin for secondary sections, developing a CLI tool to read dumped log data, and optimizing multiple filter calls. The internship provided valuable experience contributing to an open source middleware project and learning about aspects of design, development, and code quality.
This document discusses the development of Apache Pig on Tez, an execution engine for Pig jobs. Pig on Tez allows Pig workflows to be executed as directed acyclic graphs (DAGs) using Tez, improving performance over the default MapReduce execution. Key benefits of Tez include eliminating intermediate data writes, reducing job launch overhead, and allowing more flexible data flows. However, challenges remain around automatically determining optimal parallelism and integrating Tez with user interface and monitoring tools. Future work is needed to address these issues.
The document discusses concepts related to event loops and concurrency in programming. It includes code snippets in Java showing the use of NIO selectors and channels for non-blocking I/O. Diagrams are shown illustrating reactor patterns and Vert.x modules deployed across multiple CPUs. The summary provides an overview of the main topics and techniques discussed in the technical document.
Sphinx autodoc - automated api documentation - PyCon.KR 2015Takayuki Shimizukawa
Using the automated documentation feature of Sphinx, you can make with ease the extensive documentation of Python program.
You just write python function documents (docstrings), Sphinx organizes them into the document, can be converted to a variety of formats.
In this session, I'll explain a documentation procedure that uses with sphinx autodoc and autosummary extensions.
Down the Rabbit Hole: An Adventure in JVM WonderlandCharles Nutter
The document discusses exploring interesting Java features and how they are compiled and executed by the JVM. It will look at bytecode, compiler logs, and native code generated for simple Java examples. The goal is to understand hidden performance costs, how code design impacts performance, and what the JVM can and cannot optimize. It begins with a "Hello World" example and examines the bytecode, compiler logs showing inlining, and native assembly code generated by the JIT compiler.
Ruby 2.4.0 includes several performance improvements including faster instance variable access and integer handling. It also protects Proc and Env objects from garbage collection issues by making them write-barrier protected. The presenter proposed changes to Env object handling that allow protection without significant performance impacts, such as lightweight escape detection and conditional write barriers. Benchmark results showed performance gains from these changes and protection of Proc objects.
This document provides an overview of the Tornado web server and summarizes its internals. It begins with an introduction to Tornado, describing it as a scalable, non-blocking web server and framework written in Python. It then outlines the main Tornado modules and discusses sockets, I/O monitoring using select, poll and epoll, and how Tornado sets up its server loop and handles requests.
ZIPCodeTW: Find Taiwan ZIP Code by Address FuzzilyMosky Liu
It was a lightning talk at PyCon APAC 2014 [1]. It introduces the tool to find ZIP code, ZIPCodeTW [2].
[1] http://tw.pycon.org/2014apac/
[2] http://zipcode.mosky.tw
In your code base, to understand a random line, how many lines do you need to read back? Cloud you make it zero?
This talk will start with the impact of the maintainability, define the maintainability as “to understand a random line, the lines you need to read back”, show the practicing techniques to make it zero, or nearly zero, and finally, reach the goal: boost the maintainability.
It's the revision of “Beyond the Style Guides” [1] and the talk at PyCon TW 2016 [2], PyCon APAC/KR 2016 [3], and GDG DevFest Taipei 2016 [4].
[1]: https://speakerdeck.com/mosky/beyond-the-style-guides
[2]: https://tw.pycon.org/2016
[3]: https://www.pycon.kr/2016apac/
[4]: https://devfest-taipei-3cbee.firebaseapp.com/
It's a talk about how to write understandable code from understanding human brain at Taipei.py [1] and PyCon HK 2015 [2].
[1]: http://www.meetup.com/Taipei-py/events/222174472/
[2]: http://2015.pycon.hk/
Clime is a Python library which lets you convert any module into a multi-command CLI program without any configuration.
It is a short tour of Clime.
The full documentation of Clime: http://clime.mosky.tw/.
Python is a great programming language. It is a complete tutorial of using this programming language.
This slides is split into two parts, and it is the second part. Another part is at: http://www.slideshare.net/moskytw/programming-with-python-basic.
This document discusses various tools for analyzing compiler optimizations including Rpass, llvm-opt-report, opt-viewer, and OptView2. It provides sample outputs and usage instructions for opt-viewer and OptView2. It also discusses how to address specific optimization remarks like inlining failures, aliasing issues, and loop invariant code motion failures. Recommendations are provided for when optimization annotations may provide meaningful performance improvements. Bottom line is compilers can provide useful optimization feedback and developers can sometimes address issues through annotations.
Applying the paradigms of core.async in Clojure and ClojureScriptJulian Gamble
In this workshop you’ll see a Clojure program that visually demonstrates Clojure’s concurrency semantics and then see how to solve the same underlying concurrency problems using core.async. You’ll see the mapping between programming paradigms you already know and core.async concepts. You’ll apply this in the browser with ClojureScript.
This document discusses Puppet::Tidy, a tool for formatting Puppet manifests. Puppet::Tidy works by parsing manifests line-by-line and applying transformations to lines that match certain criteria in order to standardize formatting. The talk describes how Puppet::Tidy currently works, examples of checks it performs, and ideas for future improvements such as incorporating more semantic knowledge and using a full parser.
Klepsydra is based in lock-free programming. This kind of programming is the high-level wrapper of the atomic operations in the processor, in particular the so-call compare-and-swap or CAS operation. It was invented back in the 70s, but it didn’t really become popular until the early 90s, when it was implemented in higher-level languages and then it really took off when Java included it in the early 2010s.
Lock-free programming consists of attempting repeatedly to write data in a small piece of memory until the data is in a consistent state. This is usually depicted as a plane trying to land in a busy airport. If the runway is busy, it flies away and then tries it once and again until success.
This technique is substantially lighter than the traditional mutex operation, because it is just specific to a one small piece of memory, as opposed to mutex, which blocks a big portion of the memory. That is why the traditional lock systems are not deterministic, while lock-free systems are more granular and deterministic. It works remarkably more efficient.
Our own ring buffer is wrapped in what we call the Klepsydra SDK. It is just another library that is installed in the operating system that receives data from multiple sources. It is essentially a memory sharing system.
https://klepsydra.com/klepsydra-ros-2-executor-a-ring-buffer-to-rule-them-all/
PHP Backends for Real-Time User Interaction using Apache Storm.DECK36
Engaging users in real-time is the topic of our times. Whether it’s a game, a shop, or a content-network, the aim remains the same: providing a personalized experience. In this workshop we will look under the hood of Apache Storm and lay a firm foundation on how to use it with PHP. By that, you can leverage your existing codebase and PHP expertise for an entirely new world: real-time analytics and business logic working on message streams. During the course of the workshop, we will introduce Apache Storm and take a look at all of its components. We will then skyrocket the applicability of Storm by showing you how to implement their components with PHP. All exercises will be conducted using an example project, the infamous and most exhilarating lolcat kitten game ever conceived: Plan 9 From Outer Kitten. In order to follow the hands-on excercises, you will need a development VM prepared by us with all relevant system components and our project repositories. To make the workshop experience as smooth as possible for all participants, please bring a prepared computer to the workshop, as there will be no time to deal with installation and setup issues. Please download all prerequisites and install them as described: VM, Plan 9 webapp, Plan 9 storm backend, (Tutorial: https://github.com/DECK36/plan9_workshop_tutorial ).
- Puppet has been used at Stanford University since August 24th 2006 to provide consistency of configuration and practice across 20 system administrators. It started with 73,167 lines of code and 1,784 classes.
- The presentation discusses coding practices like using a style guide for readable code, creating reusable modules and classes, and using descriptive names.
- It also covers using packages for compiled software and Puppet for configurations, best team practices like never making local changes, and server practices such as version control, security models, and custom reports.
AOS Lab 4: If you liked it, then you should have put a “lock” on itZubair Nabi
The document discusses concurrency issues that arise in operating systems and how xv6 handles them using locks. It begins by explaining how multiple CPUs can interfere with each other when sharing kernel data structures. It also notes that even on single-CPU systems, interrupt handlers can interfere with non-interrupt code. xv6 uses locks to address concurrency for both of these situations. The document then provides examples of race conditions that can occur without locks, such as when multiple processors concurrently add to a shared linked list. It shows how xv6 implements locks and how they are used to make operations like inserting into a linked list atomic. The document also discusses challenges like lock ordering, handling locks for interrupt handlers, and when to use coarse
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
In this talk, I will talk about why log files are horrible, logging log lines, and more structured performance metrics from large scale production applications as well as building reliable, scaleable and flexible large scale software systems in multiple languages.
Why (almost) all log formats are horrible will be explained, and why JSON is a good solution for logging will be discussed, along with a number of message queuing, middleware and network transport technologies, including STOMP, AMQP and ZeroMQ.
The Message::Passing framework will be introduced, along with the logstash.net project which the perl code is interoperable with. These are pluggable frameworks in ruby/java/jruby and perl with pre-written sets of inputs, filters and outputs for many many different systems, message formats and transports.
They were initially designed to be aggregators and filters of data for logging. However they are flexible enough to be used as part of your messaging middleware, or even as a replacement for centralised message queuing systems.
You can have your cake and eat it too - an architecture which is flexible, extensible, scaleable and distributed. Build discrete, loosely coupled components which just pass messages to each other easily.
Integrate and interoperate with your existing code and code bases easily, consume from or publish to any existing message queue, logging or performance metrics system you have installed.
Simple examples using common input and output classes will be demonstrated using the framework, as will easily adding your own custom filters. A number of common messaging middleware patterns will be shown to be trivial to implement.
Some higher level use-cases will also be explored, demonstrating log indexing in ElasticSearch and how to build a responsive platform API using webhooks.
Interoperability is also an important goal for messaging middleware. The logstash.net project will be highlighted and we'll discuss crossing the single language barrier, allowing us to have full integration between java, ruby and perl components, and to easily write bindings into libraries we want to reuse in any of those languages.
This document discusses using Ruby for distributed storage systems. It describes components like Bigdam, which is Treasure Data's new data ingestion pipeline. Bigdam uses microservices and a distributed key-value store called Bigdam-pool to buffer data. The document discusses designing and testing Bigdam using mocking, interfaces, and integration tests in Ruby. It also explores porting Bigdam-pool from Java to Ruby and investigating Ruby's suitability for tasks like asynchronous I/O, threading, and serialization/deserialization.
This document provides an introduction to Apache Kafka. It describes Kafka as a distributed messaging system with features like durability, scalability, publish-subscribe capabilities, and ordering. It discusses key Kafka concepts like producers, consumers, topics, partitions and brokers. It also summarizes use cases for Kafka and how to implement producers and consumers in code. Finally, it briefly outlines related tools like Kafka Connect and Kafka Streams that build upon the Kafka platform.
LoLA is a tool for verifying properties of Petri nets. This document discusses how to:
1. Choose and manage LoLA configurations to optimally verify properties.
2. Ask the right verification questions in a specific, modular way to efficiently verify properties.
3. Optimize Petri net modeling to take advantage of LoLA's reduction techniques and scale verification.
4. Employ scripts and makefiles to automate calling LoLA and analyzing results.
5. Integrate calling LoLA from other tools using UNIX streams for modular verification.
Tomas Doran presented on their implementation of Logstash at TIM Group to process over 55 million messages per day. Their applications are all Java/Scala/Clojure and they developed their own library to send structured log events as JSON to Logstash using ZeroMQ for reliability. They index data in Elasticsearch and use it for metrics, alerts and dashboards but face challenges with data growth.
Steelcon 2014 - Process Injection with Pythoninfodox
This is the slides to accompany the talk given by Darren Martyn at the Steelcon security conference in July 2014 about process injection using python.
Covers using Python to manipulate processes by injecting code on x86, x86_64, and ARMv7l platforms, and writing a stager that automatically detects what platform it is running on and intelligently decides which shellcode to inject, and via which method.
The Proof of Concept code is available at https://github.com/infodox/steelcon-python-injection
The document discusses modern Java concurrency and provides examples of how to write concurrent code safely and take advantage of modern hardware. It introduces key concepts like the java.util.concurrent package, locks, conditions, concurrent data structures, executors and fork/join. Examples are provided for using constructs like CountDownLatch, LinkedBlockingQueue, thread pools and fork/join tasks. The overall message is that modern Java concurrency allows safer and faster concurrent programming compared to traditional approaches.
This document discusses using ZeroMQ and Elasticsearch for log aggregation. It proposes using ZeroMQ to transmit structured log data from application servers to a central Logstash server, which would then insert the logs into Elasticsearch for querying and analysis. This approach aims to provide a lightweight logging solution that doesn't block application servers like traditional logging to databases can. The document also provides background on tools like Logstash, Elasticsearch, and Splunk.
You didnt see it’s coming? "Dawn of hardened Windows Kernel" Peter Hlavaty
Past few years our team was focusing on different operating systems including Microsoft windows kernel. Honestly our first pwn at Windows kernel was not that challenging. Number of available targets with friendly environment for straightforward pwn, from user up to reliable kernel code execution.
However, step by step, security policies continue to evolve, and it becomes more troublesome to choose ideal attack surface from various sandboxes. In addition, what steps to follow for digging security holes is highly dependent upon the chosen target. In general, a few common strategies are available for researchers to choose: e.g choose “unknown” one which hasn’t been researched before; Select well fuzzed or well audited one, or research on kernel module internals to find “hidden” attack surfaces which are not explicitly interconnected. In the first part of the talk we introduce our methodology of selecting, alongside with cost of tricks around to choose seemingly banned targets, illustrated by notable examples.
After getting hands on potential bug available from targeted sandbox, it is time for Microsoft windows taking hardening efforts to put attacker into corner. Strong mitigations are being introduced more frequently than ever, with promising direction which cuts lots of attack surface off, and a several exploitation techniques being killed. We will show difficulties of developing universal exploitation techniques, and demonstrate needed technical level depending on code quality of target. We will examine how different it becomes with era of Redstone and following versions even with those techniques and good vulnerability in hand. How it changed attacker landscape and how it will (and will not) kill those techniques and applications. However will it really change the game or not?
Node.js is a server-side JavaScript runtime built on Google's V8 engine. It uses non-blocking I/O and an event loop to handle concurrent connections efficiently without threads. This asynchronous model improves performance compared to traditional blocking I/O and threads. The event loop iterates through callbacks and executes them in order, allowing Node.js to handle many concurrent connections with a single thread.
Kernel Recipes 2018 - Zinc: minimal lightweight crypto API - Jason DonenfeldAnne Nicolas
Jason Donenfeld presented Zinc, a proposed new lightweight and minimal crypto API for the Linux kernel. It would provide simple crypto functions like ChaCha20 and Poly1305 without complex configuration. In contrast to the existing crypto API, Zinc would offer formally verified implementations from academic sources, be optimized for speed through compiler inlining and SIMD, and reduce security vulnerabilities through a simpler design. The goal is to include Zinc alongside the WireGuard VPN in the Linux 5.0 kernel release.
The document provides an overview of how Ruby programs are compiled and executed. It discusses how Ruby source code is tokenized and turned into an abstract syntax tree (AST) before being compiled into bytecode. It then describes how the Ruby interpreter implements a virtual machine that maps bytecode instructions to native operations. Key aspects covered include Ruby using a stack-based execution model, the interaction between the C stack, virtual machine stack, and Ruby call stack, and how garbage collection works through mark and sweep to reclaim unused memory.
The document discusses the relationship between hardware, operating systems, and Java Virtual Machines over time. It describes how early systems in the 1970s-1990s attempted to execute bytecode natively but never fully implemented it. Intermediate languages have existed since the 1960s to abstract code from hardware. The Java Virtual Machine model introduced in 1995 provided memory protection, type checking, and a "sandbox" environment for Java bytecode, influencing many later virtual machines. Overall, the JVM takes on operating system-like roles through threads, memory management, and locking, while still interfacing with the underlying OS.
This document provides an overview of statistical regression analysis with Python. It discusses defining assumptions, validating assumptions with a dataset on extramarital affairs, performing correlation analysis, estimating models using ordinary least squares, understanding regression results including interaction effects, handling categorical variables, and addressing outliers. Modeling techniques covered include linear, logistic, and quantile regression as well as robust linear regression.
This document provides an introduction to data science with Python. It discusses key concepts in data science including visualization, statistics, machine learning, deep learning, and big data. Various Python packages are introduced for working with data, including Jupyter, NumPy, SciPy, Matplotlib, Pandas, Scikit-learn and others. The document outlines the main steps in a data science analysis process, including defining assumptions, validating assumptions with data, and iterating. Specific techniques are covered like preprocessing, dimensionality reduction, statistical modeling, and machine learning modeling. The document emphasizes an iterative approach to learning through applying concepts to problems and data.
This document discusses hypothesis testing in Python. It covers simulating and analyzing test datasets, how hypothesis tests work, common statistical tests like t-tests and chi-squared tests, and steps for completing a hypothesis test. Key points include defining the null and alternative hypotheses, estimating error rates from a confusion matrix, determining necessary sample sizes based on desired alpha and beta levels, and fully reporting test results. Other statistical analyses like correlation and regression are also briefly mentioned. Overall the document provides an introduction to performing and interpreting hypothesis tests in Python.
Writing concurrent program is hard; maintaining concurrent program even is a nightmare. Actually, a pattern which helps us to write good concurrent code is available, that is, using “channels” to communicate.
This talk will share the channel concept with common libraries, like threading and multiprocessing, to make concurrent code elegant.
It's the talk at PyCon TW 2017 [1] and PyCon APAC/MY 2017 [2].
[1]: https://tw.pycon.org/2017
[2]: https://pycon.my/pycon-apac-2017-program-schedule/
The document outlines Mosky's background as a Python engineer and speaker who works on the Python packages MoSQL and Clime. It then provides an overview of Mosky discussing topics like the Git workflow, invoice system, and seller dashboard used behind the scenes at Pinkoi. Specific instructions are given on branching, committing, pushing, reviewing, and merging code as part of the recommended Git workflow.
MoSQL: More than SQL, but Less than ORM @ PyCon APAC 2013Mosky Liu
It is the slides of the talk, "MoSQL: More than SQL, but Less than ORM", at PyCon APAC 2013. It introduces MoSQL after v0.6.
About MoSQL:
MoSQL is a Python library which lets you use common Python’s data structures to build SQLs.
http://mosql.mosky.tw/
** Please visit https://speakerdeck.com/mosky/mosql-more-than-sql-but-less-than-orm-at-pycon-apac-2013 for the newer slide. :)
It is the slides of the talk, "MoSQL: More than SQL, but Less than ORM", at PyCon TW 2013.
About MoSQL:
MoSQL is a Python library which lets you use common Python’s data structures to build SQLs, and provides a convenient model of result set.
http://mosql.mosky.tw/
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Boost Your Savings with These Money Management AppsJhone kinadey
A money management app can transform your financial life by tracking expenses, creating budgets, and setting financial goals. These apps offer features like real-time expense tracking, bill reminders, and personalized insights to help you save and manage money effectively. With a user-friendly interface, they simplify financial planning, making it easier to stay on top of your finances and achieve long-term financial stability.
Manyata Tech Park Bangalore_ Infrastructure, Facilities and Morenarinav14
Located in the bustling city of Bangalore, Manyata Tech Park stands as one of India’s largest and most prominent tech parks, playing a pivotal role in shaping the city’s reputation as the Silicon Valley of India. Established to cater to the burgeoning IT and technology sectors
Transforming Product Development using OnePlan To Boost Efficiency and Innova...OnePlan Solutions
Ready to overcome challenges and drive innovation in your organization? Join us in our upcoming webinar where we discuss how to combat resource limitations, scope creep, and the difficulties of aligning your projects with strategic goals. Discover how OnePlan can revolutionize your product development processes, helping your team to innovate faster, manage resources more effectively, and deliver exceptional results.
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
The Rising Future of CPaaS in the Middle East 2024Yara Milbes
Explore "The Rising Future of CPaaS in the Middle East in 2024" with this comprehensive PPT presentation. Discover how Communication Platforms as a Service (CPaaS) is transforming communication across various sectors in the Middle East.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
The Comprehensive Guide to Validating Audio-Visual Performances.pdfkalichargn70th171
Ensuring the optimal performance of your audio-visual (AV) equipment is crucial for delivering exceptional experiences. AV performance validation is a critical process that verifies the quality and functionality of your AV setup. Whether you're a content creator, a business conducting webinars, or a homeowner creating a home theater, validating your AV performance is essential.
Photoshop Tutorial for Beginners (2024 Edition)alowpalsadig
Photoshop Tutorial for Beginners (2024 Edition)
Explore the evolution of programming and software development and design in 2024. Discover emerging trends shaping the future of coding in our insightful analysis."
Here's an overview:Introduction: The Evolution of Programming and Software DevelopmentThe Rise of Artificial Intelligence and Machine Learning in CodingAdopting Low-Code and No-Code PlatformsQuantum Computing: Entering the Software Development MainstreamIntegration of DevOps with Machine Learning: MLOpsAdvancements in Cybersecurity PracticesThe Growth of Edge ComputingEmerging Programming Languages and FrameworksSoftware Development Ethics and AI RegulationSustainability in Software EngineeringThe Future Workforce: Remote and Distributed TeamsConclusion: Adapting to the Changing Software Development LandscapeIntroduction: The Evolution of Programming and Software Development
Photoshop Tutorial for Beginners (2024 Edition)Explore the evolution of programming and software development and design in 2024. Discover emerging trends shaping the future of coding in our insightful analysis."Here's an overview:Introduction: The Evolution of Programming and Software DevelopmentThe Rise of Artificial Intelligence and Machine Learning in CodingAdopting Low-Code and No-Code PlatformsQuantum Computing: Entering the Software Development MainstreamIntegration of DevOps with Machine Learning: MLOpsAdvancements in Cybersecurity PracticesThe Growth of Edge ComputingEmerging Programming Languages and FrameworksSoftware Development Ethics and AI RegulationSustainability in Software EngineeringThe Future Workforce: Remote and Distributed TeamsConclusion: Adapting to the Changing Software Development LandscapeIntroduction: The Evolution of Programming and Software Development
The importance of developing and designing programming in 2024
Programming design and development represents a vital step in keeping pace with technological advancements and meeting ever-changing market needs. This course is intended for anyone who wants to understand the fundamental importance of software development and design, whether you are a beginner or a professional seeking to update your knowledge.
Course objectives:
1. **Learn about the basics of software development:
- Understanding software development processes and tools.
- Identify the role of programmers and designers in software projects.
2. Understanding the software design process:
- Learn about the principles of good software design.
- Discussing common design patterns such as Object-Oriented Design.
3. The importance of user experience (UX) in modern software:
- Explore how user experience can improve software acceptance and usability.
- Tools and techniques to analyze and improve user experience.
4. Increase efficiency and productivity through modern development tools:
- Access to the latest programming tools and languages used in the industry.
- Study live examples of applications
WWDC 2024 Keynote Review: For CocoaCoders AustinPatrick Weigel
Overview of WWDC 2024 Keynote Address.
Covers: Apple Intelligence, iOS18, macOS Sequoia, iPadOS, watchOS, visionOS, and Apple TV+.
Understandable dialogue on Apple TV+
On-device app controlling AI.
Access to ChatGPT with a guest appearance by Chief Data Thief Sam Altman!
App Locking! iPhone Mirroring! And a Calculator!!
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
27. SHARED RESOURCE
• Race condition:
T1: RW
T2: RW
T1+T2: RRWW
• Use lock → Thread-safe:
T1+T2: (RW) (RW)
• But lock causes worse performance and deadlock.
9
28. SHARED RESOURCE
• Race condition:
T1: RW
T2: RW
T1+T2: RRWW
• Use lock → Thread-safe:
T1+T2: (RW) (RW)
• But lock causes worse performance and deadlock.
• Which is the hard part.
9
41. WHY .TASK_DONE?
• It’s for .join.
• When the counter goes zero,
it will notify the threads which are waiting.
14
42. WHY .TASK_DONE?
• It’s for .join.
• When the counter goes zero,
it will notify the threads which are waiting.
• It’s implemented by threading.Condition.
14
72. BROADCAST SIGNAL
TO SUB-THREAD
• Set a global flag when get signal.
• Let thread read it before each task.
23
73. BROADCAST SIGNAL
TO SUB-THREAD
• Set a global flag when get signal.
• Let thread read it before each task.
• No, you can’t kill non-daemonic thread.
23
74. BROADCAST SIGNAL
TO SUB-THREAD
• Set a global flag when get signal.
• Let thread read it before each task.
• No, you can’t kill non-daemonic thread.
• Just can’t do so.
23
75. BROADCAST SIGNAL
TO SUB-THREAD
• Set a global flag when get signal.
• Let thread read it before each task.
• No, you can’t kill non-daemonic thread.
• Just can’t do so.
• It’s Python.
23
77. BROADCAST SIGNAL
TO SUB-PROCESS
• Just broadcast the signal to sub-processes.
24
78. BROADCAST SIGNAL
TO SUB-PROCESS
• Just broadcast the signal to sub-processes.
• Start with register signal handler:
signal(SIGINT, _handle_to_term_signal)
24
86. JUST THREAD IT OUT
• Or process it out.
• Let main thread exit earlier. (Looks faster!)
27
87. JUST THREAD IT OUT
• Or process it out.
• Let main thread exit earlier. (Looks faster!)
• Let main thread keep dispatching tasks.
27
88. JUST THREAD IT OUT
• Or process it out.
• Let main thread exit earlier. (Looks faster!)
• Let main thread keep dispatching tasks.
• “Async”
27
89. JUST THREAD IT OUT
• Or process it out.
• Let main thread exit earlier. (Looks faster!)
• Let main thread keep dispatching tasks.
• “Async”
• And fix some stupid behavior.
(I meant atexit with multiprocessing.Pool.)
27
105. CONCLUSION
• Avoid shared resource
— or just use producer-consumer pattern.
• Signals only go main thread.
32
106. CONCLUSION
• Avoid shared resource
— or just use producer-consumer pattern.
• Signals only go main thread.
• Just thread it out.
32
107. CONCLUSION
• Avoid shared resource
— or just use producer-consumer pattern.
• Signals only go main thread.
• Just thread it out.
• Collect your result smarter.
32
108. CONCLUSION
• Avoid shared resource
— or just use producer-consumer pattern.
• Signals only go main thread.
• Just thread it out.
• Collect your result smarter.
• Monitor and benchmark your code.
32