A short introduction to the perl debugger's basic commands for executing code, examining data structures. Includes examples of hardwiring breakpoints, tracing sections of code, debugging regexen.
The $path to knowledge: What little it take to unit-test Perl.Workhorse Computing
Metadata-driven lazyness, Perl, and Jenkins provide a nice mix for automated testing. With Perl the only thing required to start testing is a files path, from there the possibilities are endless. Using Symbol's qualify_to_ref makes it easy to validate @EXPORT & @EXPORT_OK, knowing the path makes it easy to use "perl -wc" to get diagnostics.
The beautiful thing is all of it can be lazy... er, "automated". And repeatable. And simple.
Building a Perl5 smoketest environment in Docker using CPAN::Reporter::Smoker. Includes an overview of "smoke testing", shell commands to contstruct a hybrid environment with underlying O/S image and data volumes for /opt, /var/lib/CPAN. This allows maintaining the Perly smoke environemnt without having to rebuild it.
Plack is an interface for web request handlers that simplifies the interface and makes code more portable. It allows developers to focus on request handling rather than API specifics. Plack addresses issues with traditional CGI and mod_perl approaches by running handlers outside of servers in a standardized way. This encapsulation improves performance, debugging, and code reuse across different server implementations. Plack includes modules for common tasks like routing, middleware, and running PSGI applications on various web servers.
Object Trampoline: Why having not the object you want is what you need.Workhorse Computing
Overview of Trampoline Objects in Perl with examples for lazy construction, lazy module use, added sanity checks. This version includes corrections from the original presented at OSCON 2013 and comments.
This document discusses an approach to data-driven testing of objects using Object::Exercise. Key points include:
- Object::Exercise standardizes repetitive test code into a reusable framework.
- Tests are defined declaratively as data, replacing hardwired test code. This avoids issues like testing the tests.
- Tests can validate return values, check for exceptions, and perform more complex checks using regular expressions and code references.
- The approach also allows overriding parts of an object under test by replacing methods that initialize test data. This enables flexible testing of different configurations.
This talk describes refactoring FindBin::libs from Perl5 to Raku: breaking the module up into functional pieces, writing the tests using Raku, testing and releasing the module with mi6.
Variable interpolation is a standard way to BASH your head. This talk looks at interpolation, eval, ${} handling and "set -vx" to debug basic variable handling.
The document discusses processing large sequence data files in parallel using Raku. It describes reading input sequences from files in fixed-size chunks, passing the chunks to worker threads for processing, and using techniques like gather/take and lazy evaluation to improve performance over alternative approaches. The key steps are:
1. Read the input file in chunks and pass chunks to worker threads for parallel processing.
2. Use gather/take and lazy evaluation to improve throughput over alternatives like forking processes or using channels that introduce overhead.
3. SHA sequences in parallel to detect duplicates while avoiding memory issues from comparing all pairs directly.
The document discusses monitoring and analyzing memory usage in Raku processes. It describes using the getrusage(2) system call to retrieve resident set size (RSS) and other memory statistics for a process. It then presents the ProcStats module, which allows periodically sampling getrusage(2) data over time to track RSS and detect changes from an initial baseline. The module outputs differences in memory statistics compared to the first sample, ignoring unchanged values. This provides a concise way to monitor for increases in a process's memory footprint over time.
Face it, backticks are a pain. BASH $() construct provides a simpler, more effective approach. This talk uses examples from automating git branches and command line processing with getopt(1) to show how $() works in shell scripts.
A few general pointers for Perl programmers starting out to write tests using Perl6. This describes a few of the differences in handling arrays vs. hashes, comparing objects, flattening, and value vs. immutable object contents.
Perl6 regular expression ("regex") syntax has a number of improvements over the Perl5 syntax. The inclusion of grammars as first-class entities in the language makes many uses of regexes clearer, simpler, and more maintainable. This talk looks at a few improvements in the regex syntax and also at how grammars can help make regex use cleaner and simpler.
Static Optimization of PHP bytecode (PHPSC 2017)Nikita Popov
This document discusses static optimization of PHP bytecode. It describes optimizations like constant propagation, dead code elimination, inlining, and specialization that have been implemented in PHP. It also discusses challenges to optimization from features like references, eval(), and variable variables. Type inference using static single assignment form is explained. Metrics on performance improvements from optimizations in libraries and applications like WordPress are provided. Current and future work on additional optimizations in PHP is mentioned.
The document discusses the Just-In-Time (JIT) compiler that was introduced in PHP 8. It provides a brief history of JIT in PHP, explaining that early prototypes showed that the rest of PHP was too slow to benefit from JIT. It then discusses how optimizations from JIT were integrated into opcache without needing a full JIT. It provides information on configuring and using the JIT compiler, and shows performance improvements on benchmarks. It also provides an example of how a function is compiled to machine code by the JIT compiler.
This document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim motions and modes like Normal mode, Insert mode, and Visual mode to efficiently edit code. It also covers Vim features like syntax highlighting, custom syntax files, key mappings, and text objects that are useful for Perl. The document advocates that Vim is a powerful editor rather than an IDE and highlights how it can save significant time compared to less efficient editing methods.
I, For One, Welcome Our New Perl6 Overlordsheumann
The document discusses Perl 6 modules and features including variables, binding, classes, attributes, caller, and more. Code examples are provided to demonstrate how to use various Perl 6 constructs like binding variables, defining classes, accessing caller information, and using attributes. Modules like Perl6::Variables, Perl6::Binding, Perl6::Classes are also imported and used.
PHP 8.0 comes with many long-awaited features: A just-in-time compiler, attributes, union types, and named arguments are just a small part of the list. As a major version, it also includes some backward-incompatible changes, which are centered around stricter error handling and enhanced type safety. Let's have an overview of the important changes in PHP 8.0 and how they might affect you!
PHP 8.1 brings Enums, one of the most requested features in PHP.
Enums, or Enumerations, allow creating strict and type-safe structures for fixed values. An Enum structure can hold a number of values that can also be backed with integer or string values.
In this comprehensive session, we will discover what Enums are, why they are useful, how to apply them on our applications, and things to watch out for when using Enums.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
This talk will discuss new features already implemented in PHP 8, backwards-compatibility breaks to watch out for, as well as some features that are still under discussion.
Typed Properties and more: What's coming in PHP 7.4?Nikita Popov
The document summarizes new features coming in PHP 7.4, including typed properties, arrow functions, the nullsafe operator, and array spread syntax. It also discusses future language features like property accessors and generics. Some deprecations are noted, such as changes to ternary operator and concatenation precedence to avoid ambiguity.
This document provides an overview of various programming concepts in Groovy including Eclipse IDE basics, assertions, closures, I/O, and functions. It discusses how to set up an Eclipse workspace and Groovy project. It explains that assertions can be used to check code validity and provides examples using assertions. It describes what closures are and provides examples of using closures on lists and maps. It discusses how to perform I/O operations like reading from standard input and files. Finally, it covers functions in Groovy including overloaded functions, default parameter values, and dynamic dispatch based on argument types.
This document discusses ways to prevent malicious Perl code from executing harmful actions by overriding core functions like die() and system() as well as by faking module imports. It explores how the Acme::BadExample module tries to perform dangerous tasks and ways Anti::Code can intervene to stop it without errors.
November Camp - Spec BDD with PHPSpec 2Kacper Gunia
My slides on PHPSpec 2 from Symfony November Camp Stockholm.
www.symfony.se/november-camp/
More Domain-Driven Design related content at: https://domaincentric.net/
The document discusses Perl web frameworks Catalyst and Mojolicious. It provides an overview of key MVC concepts like routers, controllers, models and views. It then demonstrates how to install and create a basic Catalyst application with a root controller and default action. It also covers additional Catalyst controller features like actions, routes, context object and chained actions.
This document provides an overview of PHP (Hypertext Preprocessor), a popular server-side scripting language used for web development. It discusses key PHP concepts like server-side scripting, inclusion of files, syntax, variables, arrays, operators, functions, branching, looping, forms, MySQL integration, sessions, and cookies. The document is intended to help beginners get started with PHP.
This document discusses binary vulnerabilities and methods for finding and exploiting them. It covers different types of vulnerabilities like stack overflows, heap overflows, and integer overflows. It also discusses vulnerability metrics, identifiers, and tools that can be used to analyze binaries both statically and dynamically like fuzzers, symbolic execution, and taint analysis. Exploitation techniques like bypassing protections and ROP are also mentioned.
The document discusses processing large sequence data files in parallel using Raku. It describes reading input sequences from files in fixed-size chunks, passing the chunks to worker threads for processing, and using techniques like gather/take and lazy evaluation to improve performance over alternative approaches. The key steps are:
1. Read the input file in chunks and pass chunks to worker threads for parallel processing.
2. Use gather/take and lazy evaluation to improve throughput over alternatives like forking processes or using channels that introduce overhead.
3. SHA sequences in parallel to detect duplicates while avoiding memory issues from comparing all pairs directly.
The document discusses monitoring and analyzing memory usage in Raku processes. It describes using the getrusage(2) system call to retrieve resident set size (RSS) and other memory statistics for a process. It then presents the ProcStats module, which allows periodically sampling getrusage(2) data over time to track RSS and detect changes from an initial baseline. The module outputs differences in memory statistics compared to the first sample, ignoring unchanged values. This provides a concise way to monitor for increases in a process's memory footprint over time.
Face it, backticks are a pain. BASH $() construct provides a simpler, more effective approach. This talk uses examples from automating git branches and command line processing with getopt(1) to show how $() works in shell scripts.
A few general pointers for Perl programmers starting out to write tests using Perl6. This describes a few of the differences in handling arrays vs. hashes, comparing objects, flattening, and value vs. immutable object contents.
Perl6 regular expression ("regex") syntax has a number of improvements over the Perl5 syntax. The inclusion of grammars as first-class entities in the language makes many uses of regexes clearer, simpler, and more maintainable. This talk looks at a few improvements in the regex syntax and also at how grammars can help make regex use cleaner and simpler.
Static Optimization of PHP bytecode (PHPSC 2017)Nikita Popov
This document discusses static optimization of PHP bytecode. It describes optimizations like constant propagation, dead code elimination, inlining, and specialization that have been implemented in PHP. It also discusses challenges to optimization from features like references, eval(), and variable variables. Type inference using static single assignment form is explained. Metrics on performance improvements from optimizations in libraries and applications like WordPress are provided. Current and future work on additional optimizations in PHP is mentioned.
The document discusses the Just-In-Time (JIT) compiler that was introduced in PHP 8. It provides a brief history of JIT in PHP, explaining that early prototypes showed that the rest of PHP was too slow to benefit from JIT. It then discusses how optimizations from JIT were integrated into opcache without needing a full JIT. It provides information on configuring and using the JIT compiler, and shows performance improvements on benchmarks. It also provides an example of how a function is compiled to machine code by the JIT compiler.
This document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim motions and modes like Normal mode, Insert mode, and Visual mode to efficiently edit code. It also covers Vim features like syntax highlighting, custom syntax files, key mappings, and text objects that are useful for Perl. The document advocates that Vim is a powerful editor rather than an IDE and highlights how it can save significant time compared to less efficient editing methods.
I, For One, Welcome Our New Perl6 Overlordsheumann
The document discusses Perl 6 modules and features including variables, binding, classes, attributes, caller, and more. Code examples are provided to demonstrate how to use various Perl 6 constructs like binding variables, defining classes, accessing caller information, and using attributes. Modules like Perl6::Variables, Perl6::Binding, Perl6::Classes are also imported and used.
PHP 8.0 comes with many long-awaited features: A just-in-time compiler, attributes, union types, and named arguments are just a small part of the list. As a major version, it also includes some backward-incompatible changes, which are centered around stricter error handling and enhanced type safety. Let's have an overview of the important changes in PHP 8.0 and how they might affect you!
PHP 8.1 brings Enums, one of the most requested features in PHP.
Enums, or Enumerations, allow creating strict and type-safe structures for fixed values. An Enum structure can hold a number of values that can also be backed with integer or string values.
In this comprehensive session, we will discover what Enums are, why they are useful, how to apply them on our applications, and things to watch out for when using Enums.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
This talk will discuss new features already implemented in PHP 8, backwards-compatibility breaks to watch out for, as well as some features that are still under discussion.
Typed Properties and more: What's coming in PHP 7.4?Nikita Popov
The document summarizes new features coming in PHP 7.4, including typed properties, arrow functions, the nullsafe operator, and array spread syntax. It also discusses future language features like property accessors and generics. Some deprecations are noted, such as changes to ternary operator and concatenation precedence to avoid ambiguity.
This document provides an overview of various programming concepts in Groovy including Eclipse IDE basics, assertions, closures, I/O, and functions. It discusses how to set up an Eclipse workspace and Groovy project. It explains that assertions can be used to check code validity and provides examples using assertions. It describes what closures are and provides examples of using closures on lists and maps. It discusses how to perform I/O operations like reading from standard input and files. Finally, it covers functions in Groovy including overloaded functions, default parameter values, and dynamic dispatch based on argument types.
This document discusses ways to prevent malicious Perl code from executing harmful actions by overriding core functions like die() and system() as well as by faking module imports. It explores how the Acme::BadExample module tries to perform dangerous tasks and ways Anti::Code can intervene to stop it without errors.
November Camp - Spec BDD with PHPSpec 2Kacper Gunia
My slides on PHPSpec 2 from Symfony November Camp Stockholm.
www.symfony.se/november-camp/
More Domain-Driven Design related content at: https://domaincentric.net/
The document discusses Perl web frameworks Catalyst and Mojolicious. It provides an overview of key MVC concepts like routers, controllers, models and views. It then demonstrates how to install and create a basic Catalyst application with a root controller and default action. It also covers additional Catalyst controller features like actions, routes, context object and chained actions.
This document provides an overview of PHP (Hypertext Preprocessor), a popular server-side scripting language used for web development. It discusses key PHP concepts like server-side scripting, inclusion of files, syntax, variables, arrays, operators, functions, branching, looping, forms, MySQL integration, sessions, and cookies. The document is intended to help beginners get started with PHP.
This document discusses binary vulnerabilities and methods for finding and exploiting them. It covers different types of vulnerabilities like stack overflows, heap overflows, and integer overflows. It also discusses vulnerability metrics, identifiers, and tools that can be used to analyze binaries both statically and dynamically like fuzzers, symbolic execution, and taint analysis. Exploitation techniques like bypassing protections and ROP are also mentioned.
This document discusses binary vulnerabilities and methods for identifying and exploiting them. It covers topics like stack overflows, heap overflows, integer overflows, and pointer vulnerabilities. It also discusses vulnerability metrics, identifiers, and tools that can be used for analysis like fuzzers, symbolic execution, and decompilers. Exploitation techniques like bypassing protections and transferring control are also mentioned.
Beijing Perl Workshop 2008 Hiveminder Secret SauceJesse Vincent
Template::Declare is a pure Perl templating engine that allows templates to be treated like code. Templates can be refactored, use object orientation and mixins. Tags are implemented as closures that can output content immediately or return closures. CSS::Squish is a CSS compiler that combines multiple small CSS files into one large file for easier serving, improving performance by allowing browsers to cache the combined file.
Perl is a programming language which can be used for a large variety of tasks. A typical simple use of Perl would be for extracting information from a text file and printing out a report or for converting a text file into another form. But Perl provides a large number of tools for quite complicated problems, including systems programming.
Programs written in Perl are called Perl scripts, whereas the term the perl program refers to the system program named perl for executing Perl scripts.
If you have used shell scripts or awk or sed or similar (Unix) utilities for various purposes, you will find that you can normally use Perl for those and many other purposes, and the code tends to be more compact. And if you haven't used such utilities but have started thinking you might have need for them, then perhaps what you really need to learn is Perl instead of all kinds of futilities.
Perl is implemented as an interpreted (not compiled) language. Thus, the execution of a Perl script tends to use more CPU time than a corresponding C program, for instance. On the other hand, computers tend to get faster and faster, and writing something in Perl instead of C tends to save your time.
Why Perl ?
Perl is still used in today's world as like
data mining / statistical analysis - the perl regex engine, even if slightly outdated, (PCRE, a spinned off library, tops it up in any possibile way and it's the default PHP engine) is still good for simple analysis
UNIX system administration - Perl shall always be installed on UNIX.
You can count on it being readily available even on Mac OS X.
network prototyping - many core network experts learned Perl when it was all the rage; and they still do their proofs-of-concept with it.
security - many security experts, too, need fast prototyping. (and fast automated fixes) Perl can, and does, cover for that.
Benefits of Perl Certification-
The Perl Programming certificate series comprises four courses that take students from a complete beginner to an advanced level that includes use of reusable code and creation of objects for network-based applications.
Upon completion of this certificate program, you will be able to:
Create Perl scripts that use variables, conditionals, interpolation, arrays, lists, hashes, subroutines, loops, formatted printing, data mapping, and sorting.
Implement Perl scripts that work with external files.
Utilize regular expressions, exception handling, multiprocessing, objects, and complex data structures.
Develop applications that perform complex text processing, web page scraping and form handling, and database interaction.
Navigate third-party code in the Comprehensive Perl Archive Network (CPAN) and use it in your own applications.
Contact us today to know more about Perl.
www.vibranttechnologies.co.in
sdlBasic is a basic interpreter that allows creating simple 2D games across multiple platforms like Linux, Windows, MacOS, and others. It uses the SDL library for graphics and allows working with sprites, sounds, user input and more. The interpreter was created by adapting and combining open source code distributed under licenses like GPL and LGPL.
This document provides an overview of Linux shells and shell scripting. It discusses key concepts such as the command line interface, different types of shells, shell prompts, command line parsing, variables, quoting, I/O redirection, subshells, and basic and advanced shell features. The document is presented in multiple parts that cover topics such as the shell definition, common shell commands, variable usage, process handling, and data stream manipulation.
Perl uses reference counted scalars (SV) to represent variables like strings, numbers, and references. Strings are stored as C-style null-terminated strings which do not shrink when characters are removed. Arrays are lists of SVs, and hashes are arrays of arrays. While removing elements may change counts, it does not necessarily free memory. Perl favors speed of allocation over memory efficiency, so the programmer must manage memory usage.
Slides for my talk at SkyCon'12 in Limerick.
Here I've squeezed four talks into one, covering a lot of ground quickly, so I've included links to more detailed presentations and other resources.
GUN Make is a tool used to automate the building of executables from source code. It determines which files need to be recompiled based on timestamps and builds the necessary targets. Rules define dependencies and commands to transform files. Variables, macros, conditionals, and functions allow for complex logic and reuse in the makefile. Includes allow splitting makefiles into modular pieces.
The document discusses debugging tools and techniques, focusing on GDB (the GNU Project debugger). It covers:
1. How debuggers work under the hood using ptrace to control programs and set breakpoints.
2. The basics of using GDB - starting and running programs, setting breakpoints, printing variables, and examining stack traces.
3. Additional GDB commands for inspection, as well as examples of inline assembly code, calling conventions, and disassembling code.
Hiveminder - Everything but the Secret SauceJesse Vincent
Ten tools and techniques to help you:
Find bugs faster バグの検出をもっと素早く
Build web apps ウェブアプリの構築
Ship software ソフトのリリース
Get input from users ユーザからの入力を受けつける
Own the Inbox 受信箱を用意する
今日の話
Macros are essential in Clojure and are used to provide fundamental operations like "when". Macros receive unevaluated code and return data structures for Clojure to evaluate. Writing macros involves building lists to represent code. Care must be taken to avoid issues like variable capture and double evaluation. While powerful, macros can lead to overly complex code if overused.
What would it be like if you could write a program in Scheme and then let
anyone on the planet run it? With the advent of new standards in web browsers,
this day is finally here: the world is our oyster.
In this talk, Andy presents Hoot, a new implementation of Guile that targets
WebAssembly. Hoot is on the cutting edge of Wasm language run-times, using the
newly-exposed built-in garbage collection and tail-call capabilities of web
browsers. These facilities allow users to program the browser in a Scheme that
really feels like a Scheme.
The talk will go deep into the details of what the new Wasm capabilities are,
what affordances and obstacles they pose to the kinds of features that Schemers
want, how the Hoot implementation works, and a vision for future directions.
Hoot’s choices aren’t the only ones possible, and we as a community should
explore the possibilities as broadly as we can!
(c) The 29th ACM SIGPLAN International Conference on Functional Programming (ICFP 2024)
Scheme 2024 Series
Mon 2 - Sat 7 September 2024
Milan, Italy
https://icfp24.sigplan.org/home/scheme-2024
BITS: Introduction to relational databases and MySQL - Schema designBITS
BITS training: Introduction to relational databases and MySQL - Module 3: Schema design.
See http://www.bits.vib.be/index.php?option=com_content&view=article&id=17204047:green-basics-of-databases&catid=81:training-pages&Itemid=190
Perl is a high-level scripting language useful for tasks like parsing and restructuring data files, CGI scripts, and more. It was created in 1987 by Larry Wall as a "glue" language to connect systems. Perl code is compiled at runtime. Key features include regular expressions, hashes for associative arrays, object-oriented capabilities, and extensive standard and third-party libraries. Perl uses C-like syntax and data types like scalars, lists, and hashes. It supports control structures like if/else, for loops, and subroutines for modular programming. Perl is well-suited for text manipulation and system administration tasks.
Our new blog post featuring some common python programming patterns and their C++ equivalents is now up!
Leave us a comment below and let us know what you'd like to see covered in our future posts!
█ Read More
Technical Insights: Introduction to GraphQL|goo.gl/d7PyXH
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...Data Con LA
This presentation will explore how Bloomberg uses Spark, with its formidable computational model for distributed, high-performance analytics, to take this process to the next level, and look into one of the innovative practices the team is currently developing to increase efficiency: the introduction of a logical signature for datasets.
Our Friends the Utils: A highway traveled by wheels we didn't re-invent. Workhorse Computing
Scalar::Util, List::Util, and List::MoreUtils provide simpler, cleaner, and faster solutions in XS for scalar introspection and list management than what is available in Pure Perl. This is a short introduction to the utilities and how they work with more recent Perl features like smart matching.
With all of the focus on OOP and frameworks, sometimes the utilities get ignored. These modules provide us with lightweight, simple, effective solutions to everyday problems, saving us all from reinventing the wheel. This talk looks at a several of the utilities and shows some of the less common ways they can save a lot of time.
Nonparametric statistics show up in all sorts of places with fuzzy, ranked, or labeled data. The techniques allow handling messy data with more robust results than assuming normality. This talk describes the basics of nonparametric analysis and shows some examples with the Kolomogrov-Smirnov test, one of the most commonly used.
perl often doesn't get updated because people don't have a way to know if their current code works with the new one. The problem is that they lack unit tests. This talk describes how simple it is to generate unit tests with Perl and shell, use them to automate solving problems like missing modules, and test a complete code base.
This document discusses PostgreSQL features for defining and working with date ranges and intervals to generate calendars and periods. It includes:
1) Defining calendars by starting with a base year and interval, generating date ranges for different period types like annual, quarterly, monthly etc.
2) Selecting date ranges from the generated calendar that contain or intersect with given dates.
3) Creating indexes on the calendar to efficiently search by date range.
Performance benchmarks are all too often inaccurate. This talk introduces some things to look for in setting up and running benchmarks to make them effective.
A short description of the W-curve and its application to aligning genomic sequences. This includes a short introduction to the W-curve, example of SQL-based alignment of a crossover, suggestions for further work on its application.
The document discusses using functional programming techniques in Perl to efficiently calculate tree hashes of large files uploaded in chunks to cloud storage services. It presents a tree_fold keyword and implementation that allows recursively reducing a list of values using a block in a tail-call optimized manner to avoid stack overflows. This approach is shown to provide concise, efficient and elegant functional code for calculating tree hashes in both Perl 5 and Perl 6.
Implementing Glacier's Tree Hash using recursive, functional programming in Perl5. With Keyword::Declare we get clean syntax for tail-call elimination. Result is a simple, fast, functional solution.
FUSE allows processes to mount their own private filesystems without requiring root privileges. Some examples of FUSE filesystems include encrypted volumes using encfs and remote filesystems mounted over SSH using sshfs. These filesystems can be mounted automatically and only be visible to the mounting process, providing security and privacy for personal data even from the root user.
Short introduction to the use of non-parametric statistical analysis for quality assessment, general robust analysis of data. Includes a short introduction to the normal distribution and requirements for parametric analysis, review of binomial and poisson distributions, examples of non-parametric data, and example of using Kolomogrov-Smirnov. Final sections include references.
Shared Object images in Docker: What you need is what you want.Workhorse Computing
Docker images require appropriate shared object files (".so") to run. Rather than assume Ubuntu has the correct lib's, use ldd to get a list and install the ones you know you need. This can reduce the underlying images from GB to a few MB.
Logical Volume Management ("LVM") on linux looks like a complicated mess at first. The basics are not all that hard, and some features like mirroring, dynamic space management, snapshots for stable backups, mirroring, and over-provisioning via thin volumes can save a lot of time and effort.
This document discusses using an HTTP proxy to load specific web pages for testing purposes. It explains that many web pages contain resources from multiple domains that cannot be saved locally. An HTTP proxy can be used to intercept requests and redirect local URLs to a test server, while passing through external URLs to the actual web server. The document provides code examples for setting up an HTTP proxy using HTTP::Proxy and modifying the LWP user agent to handle local and remote URLs differently. Using this approach allows a test loop to load repeatable web page content from both local and external sources.
Testing web front ends is a pain, partly because we end up testing the back end with them. Selenium helps by automating the input, but the selenium driver code lacks high-level interfaces for things like "find_and_click" or "find_and_key". Adding these with a wrapper makes data-driven selenium testing via Object::Exercise easy.
The document discusses building a lightweight Docker container for Perl by starting with a minimal base image like BusyBox, copying just the Perl installation and necessary shared libraries into the container, and setting Perl as the default command to avoid including unnecessary dependencies and tools from a full Linux distribution. It provides examples of Dockerfiles to build optimized Perl containers from Gentoo and by directly importing a tarball for minimal size and easy distribution.
The document discusses designing a Perl module called Net::AWS::Glacier for interacting with Amazon Glacier, a cloud storage service. It proposes a two-level design with a low-level API module that mirrors the Glacier API and a high-level module that provides a more object-oriented interface. The high-level module would use a "Vault" object to manage downloads and access to archive data, hiding low-level details like iterating through job lists. An inheritance-based approach is described where derived classes can customize initialization while reusing a common object structure and initialization logic.
Perl6 introduces a variety of tools for functional programming and writing readable code. Among them parameter declarations and lazy lists. This talk looks at how to get Perl6, where to find examples on RakudoCode, and how to use Perl6 functional tools for converting an algorithm from imperative to functional code, including parallel dispatch with the ">>" operator.
Big Data Analytics Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
Artificial Intelligence is providing benefits in many areas of work within the heritage sector, from image analysis, to ideas generation, and new research tools. However, it is more critical than ever for people, with analogue intelligence, to ensure the integrity and ethical use of AI. Including real people can improve the use of AI by identifying potential biases, cross-checking results, refining workflows, and providing contextual relevance to AI-driven results.
News about the impact of AI often paints a rosy picture. In practice, there are many potential pitfalls. This presentation discusses these issues and looks at the role of analogue intelligence and analogue interfaces in providing the best results to our audiences. How do we deal with factually incorrect results? How do we get content generated that better reflects the diversity of our communities? What roles are there for physical, in-person experiences in the digital world?
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfSoftware Company
Explore the benefits and features of advanced logistics management software for businesses in Riyadh. This guide delves into the latest technologies, from real-time tracking and route optimization to warehouse management and inventory control, helping businesses streamline their logistics operations and reduce costs. Learn how implementing the right software solution can enhance efficiency, improve customer satisfaction, and provide a competitive edge in the growing logistics sector of Riyadh.
TrsLabs - Fintech Product & Business ConsultingTrs Labs
Hybrid Growth Mandate Model with TrsLabs
Strategic Investments, Inorganic Growth, Business Model Pivoting are critical activities that business don't do/change everyday. In cases like this, it may benefit your business to choose a temporary external consultant.
An unbiased plan driven by clearcut deliverables, market dynamics and without the influence of your internal office equations empower business leaders to make right choices.
Getting things done within a budget within a timeframe is key to Growing Business - No matter whether you are a start-up or a big company
Talk to us & Unlock the competitive advantage
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersToradex
Toradex brings robust Linux support to SMARC (Smart Mobility Architecture), ensuring high performance and long-term reliability for embedded applications. Here’s how:
• Optimized Torizon OS & Yocto Support – Toradex provides Torizon OS, a Debian-based easy-to-use platform, and Yocto BSPs for customized Linux images on SMARC modules.
• Seamless Integration with i.MX 8M Plus and i.MX 95 – Toradex SMARC solutions leverage NXP’s i.MX 8 M Plus and i.MX 95 SoCs, delivering power efficiency and AI-ready performance.
• Secure and Reliable – With Secure Boot, over-the-air (OTA) updates, and LTS kernel support, Toradex ensures industrial-grade security and longevity.
• Containerized Workflows for AI & IoT – Support for Docker, ROS, and real-time Linux enables scalable AI, ML, and IoT applications.
• Strong Ecosystem & Developer Support – Toradex offers comprehensive documentation, developer tools, and dedicated support, accelerating time-to-market.
With Toradex’s Linux support for SMARC, developers get a scalable, secure, and high-performance solution for industrial, medical, and AI-driven applications.
Do you have a specific project or application in mind where you're considering SMARC? We can help with Free Compatibility Check and help you with quick time-to-market
For more information: https://www.toradex.com/computer-on-modules/smarc-arm-family
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...SOFTTECHHUB
I started my online journey with several hosting services before stumbling upon Ai EngineHost. At first, the idea of paying one fee and getting lifetime access seemed too good to pass up. The platform is built on reliable US-based servers, ensuring your projects run at high speeds and remain safe. Let me take you step by step through its benefits and features as I explain why this hosting solution is a perfect fit for digital entrepreneurs.
Spark is a powerhouse for large datasets, but when it comes to smaller data workloads, its overhead can sometimes slow things down. What if you could achieve high performance and efficiency without the need for Spark?
At S&P Global Commodity Insights, having a complete view of global energy and commodities markets enables customers to make data-driven decisions with confidence and create long-term, sustainable value. 🌍
Explore delta-rs + CDC and how these open-source innovations power lightweight, high-performance data applications beyond Spark! 🚀
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Aqusag Technologies
In late April 2025, a significant portion of Europe, particularly Spain, Portugal, and parts of southern France, experienced widespread, rolling power outages that continue to affect millions of residents, businesses, and infrastructure systems.
Technology Trends in 2025: AI and Big Data AnalyticsInData Labs
At InData Labs, we have been keeping an ear to the ground, looking out for AI-enabled digital transformation trends coming our way in 2025. Our report will provide a look into the technology landscape of the future, including:
-Artificial Intelligence Market Overview
-Strategies for AI Adoption in 2025
-Anticipated drivers of AI adoption and transformative technologies
-Benefits of AI and Big data for your business
-Tips on how to prepare your business for innovation
-AI and data privacy: Strategies for securing data privacy in AI models, etc.
Download your free copy nowand implement the key findings to improve your business.
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-und-verwaltung-von-multiuser-umgebungen/
HCL Nomad Web wird als die nächste Generation des HCL Notes-Clients gefeiert und bietet zahlreiche Vorteile, wie die Beseitigung des Bedarfs an Paketierung, Verteilung und Installation. Nomad Web-Client-Updates werden “automatisch” im Hintergrund installiert, was den administrativen Aufwand im Vergleich zu traditionellen HCL Notes-Clients erheblich reduziert. Allerdings stellt die Fehlerbehebung in Nomad Web im Vergleich zum Notes-Client einzigartige Herausforderungen dar.
Begleiten Sie Christoph und Marc, während sie demonstrieren, wie der Fehlerbehebungsprozess in HCL Nomad Web vereinfacht werden kann, um eine reibungslose und effiziente Benutzererfahrung zu gewährleisten.
In diesem Webinar werden wir effektive Strategien zur Diagnose und Lösung häufiger Probleme in HCL Nomad Web untersuchen, einschließlich
- Zugriff auf die Konsole
- Auffinden und Interpretieren von Protokolldateien
- Zugriff auf den Datenordner im Cache des Browsers (unter Verwendung von OPFS)
- Verständnis der Unterschiede zwischen Einzel- und Mehrbenutzerszenarien
- Nutzung der Client Clocking-Funktion
Procurement Insights Cost To Value Guide.pptxJon Hansen
Procurement Insights integrated Historic Procurement Industry Archives, serves as a powerful complement — not a competitor — to other procurement industry firms. It fills critical gaps in depth, agility, and contextual insight that most traditional analyst and association models overlook.
Learn more about this value- driven proprietary service offering here.
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPathCommunity
Join this UiPath Community Berlin meetup to explore the Orchestrator API, Swagger interface, and the Test Manager API. Learn how to leverage these tools to streamline automation, enhance testing, and integrate more efficiently with UiPath. Perfect for developers, testers, and automation enthusiasts!
📕 Agenda
Welcome & Introductions
Orchestrator API Overview
Exploring the Swagger Interface
Test Manager API Highlights
Streamlining Automation & Testing with APIs (Demo)
Q&A and Open Discussion
Perfect for developers, testers, and automation enthusiasts!
👉 Join our UiPath Community Berlin chapter: https://community.uipath.com/berlin/
This session streamed live on April 29, 2025, 18:00 CET.
Check out all our upcoming UiPath Community sessions at https://community.uipath.com/events/.
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell
With expertise in data architecture, performance tracking, and revenue forecasting, Andrew Marnell plays a vital role in aligning business strategies with data insights. Andrew Marnell’s ability to lead cross-functional teams ensures businesses achieve sustainable growth and operational excellence.
Book industry standards are evolving rapidly. In the first part of this session, we’ll share an overview of key developments from 2024 and the early months of 2025. Then, BookNet’s resident standards expert, Tom Richardson, and CEO, Lauren Stewart, have a forward-looking conversation about what’s next.
Link to recording, presentation slides, and accompanying resource: https://bnctechforum.ca/sessions/standardsgoals-for-2025-standards-certification-roundup/
Presented by BookNet Canada on May 6, 2025 with support from the Department of Canadian Heritage.
Semantic Cultivators : The Critical Future Role to Enable AIartmondano
By 2026, AI agents will consume 10x more enterprise data than humans, but with none of the contextual understanding that prevents catastrophic misinterpretations.
Dev Dives: Automate and orchestrate your processes with UiPath MaestroUiPathCommunity
This session is designed to equip developers with the skills needed to build mission-critical, end-to-end processes that seamlessly orchestrate agents, people, and robots.
📕 Here's what you can expect:
- Modeling: Build end-to-end processes using BPMN.
- Implementing: Integrate agentic tasks, RPA, APIs, and advanced decisioning into processes.
- Operating: Control process instances with rewind, replay, pause, and stop functions.
- Monitoring: Use dashboards and embedded analytics for real-time insights into process instances.
This webinar is a must-attend for developers looking to enhance their agentic automation skills and orchestrate robust, mission-critical processes.
👨🏫 Speaker:
Andrei Vintila, Principal Product Manager @UiPath
This session streamed live on April 29, 2025, 16:00 CET.
Check out all our upcoming Dev Dives sessions at https://community.uipath.com/dev-dives-automation-developer-2025/.
This is the keynote of the Into the Box conference, highlighting the release of the BoxLang JVM language, its key enhancements, and its vision for the future.
2. Introducing Perl's Debugger
● Overview of the obvious uses, common commands.
● Few less obvious uses:
● Debugging regexen.
● Evaluating structure bloat.
● Some pitfalls and how to avoid them.
3. What is the Perl Debugger?
● The Perl debugger comes with perl, in fact it is perl.
● 'd' is built into perl's command line.
● It functions like a perly shell, evaluating source code
from files or the command line or executing
debugger commands.
● You also use perl d with profiling utilities like
NYTprof.
4. Smarter Than Your Average Code
● The most obvious thing you can do is walking code
to track down bugs.
● You can also test Perl syntax: just type it in.
● Use it as a “perly shell” when your oneliners run
into multiple lines or you have to eyeball data
structures between commands.
● Q&D interactive data mining.
● Good for examining data structures when writing
talks on data manglement or module guts.
5. The Basics: Getting In
● At the command $ perl d e 42;
line: perl d enters $ perl d foo.pm;
the debugger.
$ perl d bar;
● You can start it
'vanilla', with $ perl MDevel::Size d e foo;
modules to watch
startup, with code,
or using modules to
pull in utilities (e.g.
regex debugging).
6. Basics: The Prompt
● Once in you get the command prompt:
$ perl d e 42
Loading DB routines from perl5db.pl version 1.22
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(e:1): 42
DB<1>
● This is a “vanilla” session: there is no running code,
you can enter debugger commands, perl syntax.
● The single “<1>” indicate that this is the outermost
call level.
● The “1” says that this is the first command.
7. Executing Perl Statements
● Q: Who remembers what localtime returns?
● A: How to find out?
DB<1> x
localtime
0 31
1 31
2 15
3 15
4 5
5 111
6 3
7 165
8 1
DB<2>
● Notice that now I'm at command #2.
8. Gotchas
● Each command you type is run its own block.
● Lexical variables like “my $foo” will vanish.
● Local values like “local $” or “local $foo{ bar } = ...”
will also be unavailable after the line completes.
● You can put multiple statements onto a line with
semicolon separators.
● You can only input one line at a time.
● Cutandpaste of multiple lines won't work.
9. Debugger Commands
● These intentionally look pretty much like gdb.
● On the other hand, if you didn't grow up debugging C
code this may not help you much.
● The most common commands are for running code,
managing breakpoints (i.e. stopping code),
interrogating values.
● Please note: “q” gets you out.
● Not “quit”, ^C, ^D, or “getmeoutofhere!”.
10. Setting Up the Debugger
● You may want to edit your commands.
● Installing Term::ReadKey &Term::ReadLine.
● perl will use your .inputrc if you have one.
● For example, my .inputrc looks like:
set editing-mode vi
set show-all-if-ambiguous on
with allows ^[k to pull up the last line for editing.
● Check the doc's if you use Emacs.
11. Running Code
● Say some code blows up.
● You could just run it with “r” from the start.
● That is handy once to see where it blows up.
● Usually you want to stop at a particular place to see
why it blows up.
● You can continue to a line no or sub name with:
c 15
c call_foomatic
12. Stepping Code
● You can also watch the code one line at a time.
● “n” (“next”) steps over the subroutine calls.
● “s” (“step”) steps into the subroutine calls.
● “r” (“return”) goes back to the caller if you accidentally
step one level too deep.
● One really common combination:
● “c” to a subroutine that blows up.
● “n” to the point before it dies.
● “s” into the call that failed and see what happens.
13. Getting Out of a Hole: “r”
● Sometimes you 's' into the wrong sub (say a DBI
call).
● You don't want to abort the session.
● You don't want to “n” your way through DBI.
● Use “r” to return from the current call.
● This also shows you the return value passed back to
the caller.
● Nice for checking that what you expect gets returned.
● Beware if the structure is really large.
14. Stopping Code: Breakpoints
● Breakpoints stop the code.
● They can include a condition.
● Say the code blows up at line 842 with a non
reference value in $thingy after roughly 8_000
iterations.
● Set a breakpoint and continue:
<1> b 842 ! ref $thingy
<2> c
16. Hashes Are Lists to “x”
● Hashes look a little odd at first:
DB<8> x %a = map { $_ => [ 1 ] } ( 'a' .. 'c' )
0 'a'
1 ARRAY(0xc122a0)
0 1
2 'b'
3 ARRAY(0xb07fe0)
0 1
4 'c'
5 ARRAY(0xc122e8)
0 1
● They look exactly like the array: a list.
17. Hashref's Are Structures
● Examining a hashref shows it as key => value pairs:
DB<9> x %a
0 HASH(0xc47008)
'a' => ARRAY(0xc122a0)
0 1
'b' => ARRAY(0xb07fe0)
0 1
'c' => ARRAY(0xc122e8)
0 1
18. You Don't Always Want It All
● Occasionally you'll get something like:
0 ARRAY(0xc99050)
0 ARRAY(0xc99080)
0 ARRAY(0xc990b0)
0 ARRAY(0xc990e0)
0 ARRAY(0xc99110)
0 ARRAY(0xc99140)
empty array
DB<17>
● This was a structure that didn't fit onto the screen.
● Use “x” with a limit to display less of it.
19. Getting What You Need
● A digit following “x” limits the depth:
DB<26> $i = 'z'
DB<27> $a = $b = []
DB<28> for( 1 .. 100 ) { $b = $b->[0] = [], $b->[1] = ++$i }
DB<29> x 6 $a
0 ARRAY(0xc90e38)
0 ARRAY(0xc917f8)
0 ARRAY(0xc988e8)
0 ARRAY(0xc98af8)
0 ARRAY(0xc98a20)
0 ARRAY(0xc98b10)
1 'ad'
1 'ac'
1 'ab'
1 'aa'
20. Mining Large Data Structures
● x 2 $struct will show the top level, including hash
keys or offset lists.
● x 2 $struct>{ key } will show the single hash value.
● To walk through a structure in viewable chunks:
● x 2 $struct>{ key1 }{ key2 }
● See what matters, paste on the next key/offset and keep
looking:
● x 2 $struct>{ key1 }{ key2 }[ offset ]
21. You Are Here
● The “T” command provides a stack trace.
● Useful with hardwired breakpoints.
● They show the calling line numbers and values.
● Makes it easier to set breakpoints up the stack to see how
values are [mis]managed down the call stack.
● Viewing the code uses “l” and “v”.
● “l” (list) shows the next line to be executed.
● “v” (view) shows a small window around the line.
22. Finding Out What You Can Do
35: my $frag
36: = WCurve::Fragment->new
37: (
● “m” shows the 38:
39: );
FloatCyl => ( $base x $length ), $name
methods of an DB<1> n
Testify::(01-FloatCart-basic-geometry.t:41):
41: ok $frag eq $name, "Name: $frag ($name)";
object. DB<1> m $frag
add_skip_chain
carp
● Items with confess
converge_limit
looks_like_number
package via WCurve::Fragment: (""
prefixes are via
via
WCurve::Fragment:
WCurve::Fragment:
()
(0+
via WCurve::Fragment: (bool
inherited. via
via
WCurve::Fragment:
WCurve::Fragment:
(int
stop_offset
● Leading '(' is via
via
WCurve::Fragment: sum
WCurve::Fragment -> ArrayObj: (<=>
an overload. via
via
WCurve::Fragment -> ArrayObj: (cmp
WCurve::Fragment -> ArrayObj: DESTROY
via UNIVERSAL: DOES
via UNIVERSAL: VERSION
via UNIVERSAL: can
via UNIVERSAL: isa
23. Hardwired Breakpoints
● Because the perl debugger is written in perl, you can
also set “hardwired” breakpoints:
$DB::single = 1;
$DB::single = 1 unless ref $thingy;
$DB::single = 1 if $counter > @itemz;
● These can be useful in permanent code:
eval { … }
or do
{ print $@; $DB::single = 1; 0 };
24. Tracing Code
● Tracing code usually produces too much output.
● To turn on tracing use $DB::trace = 1.
● You can localize it to trace a code block.
● Add iflogic to trace code leading up to errors:
$DB::trace = 1 if ! ref $foo;
● One trick for restartable subs is to eval them and
trace the failures:
eval { foo } or do{ trace = 1; foo }
25. Ever Wonder How a Regex Works?
● The “re” module allows debugging regexen:
use re 'debug';
use re 'debugcolor';
● There is more info in “perldoc perldebug”.
● A monochrome example:
26. DB<7> do { use re 'debug'; $a = qr/ (w+) $/x; print 'this is a test' =~ /
$a/; }
Compiling REx " (w+) $"
Final program:
1: OPEN1 (3)
3: PLUS (5)
4: ALNUM (0)
5: CLOSE1 (7)
7: EOL (8)
8: END (0)
floating ""$ at 1..2147483647 (checking floating) stclass ALNUM plus minlen 1
Guessing start of match in sv for REx " (w+) $" against "this is a test"
Found floating substr ""$ at offset 14...
start_shift: 1 check_at: 14 s: 0 endpos: 14
Does not contradict STCLASS...
Guessed: match at offset 0
Matching REx " (w+) $" against "this is a test"
Matching stclass ALNUM against "this is a test" (14 chars)
0 <this is a >| 1:OPEN1(3)
0 <this is a >| 3:PLUS(5)
ALNUM can match 4 times out of 2147483647...
4 <this is a test>| 5: CLOSE1(7)
4 <this is a test>| 7: EOL(8)
failed...
...
1 <this is a t>| 5: CLOSE1(7)
1 <this is a t>| 7: EOL(8)
...
7 <this is a test>| 5: CLOSE1(7)
7 <this is a test>| 7: EOL(8)
failed...
...
10 <this is a test>| 3:PLUS(5)
ALNUM can match 4 times out of 2147483647...
14 <this is a test>| 5: CLOSE1(7)
14 <this is a test>| 7: EOL(8)
14 <this is a test>| 8: END(0)
Match successful!
test
DB<8>
27. Benchmarking Size
● Devel::Peek && Devel::Size show the contents and
size of structures inside of perl.
● There are lots of examples in Perl Memory
Manglement, which is mostly a session of
perl -Mdevel::Size -d -e 0;
● The advantage to dealing with this in the debugger is
being able to interactively query the sizes of sub
structures to see where bloat comes from.
28. Knowing When You're There
● The variable $^P will be true when code is running
in the debugger.
● This allows you to automatically set hardwired
breakpoints or verbosity:
my $max_verbose = $cmdline{ verbose } > 1 || $^P;
29. Spoon Feeding
● The debugger does not handle forks automatically.
● The problem is that multiple processes latch on to the tty
device files for input and output.
● You can set the display to a set of perinitialized ttys
(usually preopened xterm's).
● At that point you can switch to the alternate terminals to
handle each session.
30. Semiautomated Forks
● You can usually dodge the issue by simply not
forking in the debugger:
if( my $pid = $^P ? '' : fork )
{
# parent
}
elsif( defined $pid )
{
# child, debugger
}
else
{
die "Phorkafobia: $!";
}
31. A Modern Version
given( $^P ? '' : fork )
{
when( '' ) { ... }
when( undef ) { die "Phorkafobia: $!" }
my $child = wait;
# parent processes results.
}
32. Further Reference
● A always, perldoc is your friend.
● perldoc perldebug
● perldoc perlre
● Perldoc DB
● For examples of querying memory use:
● perldoc Devel::Peek
● perldoc Devel::Size
● http://www.slideshare.net/lembark/perl5memorymanglement