A brief introduction to get you started in working with Perl's internal API. This presentation is a work in progress.
Code samples: http://github.com/friedo/perl-api-terror
This document discusses the history of extensibility in Perl, from early techniques using import subroutines and prototypes, to modern approaches like Devel::Declare, the keyword API, and Moops. Moops provides an easy and extensible way to define new syntax using Keyword::Simple, and was created to improve on earlier modules like MooseX::Declare by using a simpler design focused on extensibility. The document concludes by showing how Moops can be used to define a custom "setup" module that injects imports and extends the syntax, providing a cleaner way to share commonly used functions and roles.
The document discusses Modern Perl and how the language has evolved over time. Some key changes include new features like say() in Perl 5.10, improved object orientation with Moose, and improved error handling with modules like autodie. Modern Perl development focuses on stability while still innovating and uses CPAN to share thousands of open source modules.
Perl 5.10 introduces several new features including say for easy printing, smart matching with ~~, switch statement, defined-or operator //, and state variables for persistent data within subs. It also includes improvements to the regex engine, modules like Hash::Util::FieldHash, better Windows support and a faster UTF-8 implementation. The release timeline is 5.8.9 stable by April 1st 2006, 5.10 after lunch before Christmas 2006, and Perl 6 after lunch before Christmas 2006.
The document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim's modes, motions, text objects, syntax highlighting and mappings to more efficiently edit Perl code. Specifically, it shows how Normal mode motions, Insert mode, Visual mode, syntax files for custom file types, and mappings can help avoid typos and speed up common tasks like indentation. It estimates that these Vim features could save a developer over 16 hours per year compared to a basic editor.
The document discusses how Vim can improve productivity for Perl coding. It provides examples of using Vim's modes, motions, text objects, syntax highlighting and mappings to more efficiently edit and navigate Perl code. The Normal mode, Insert mode, and Visual mode are demonstrated along with motions, text objects, folding and syntax files that are helpful for Perl. Key mappings are also shown that can make Perl editing more productive in Vim.
Perl provides many powerful features and modules that allow developers to customize and extend the language. Some popular modules include Moose for object-oriented programming, TryCatch for exception handling inspired by Perl 6, and P5.10 features that backport Perl 6 functionality. While useful, some features like autoboxing and state variables could introduce subtle bugs if misused. Overall, Perl's extensibility makes it a very flexible language that can be adapted to many different use cases.
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.
This document provides an introduction and overview of the Ruby programming language. It discusses Ruby's history and creator Yukihiro Matsumoto. It demonstrates basic Ruby syntax like integers, floats, strings, variables, methods, and flow control. It also covers Ruby classes, objects, and the interactive Ruby shell IRB. The document then introduces common Ruby libraries and frameworks like Sinatra for web development and Nokogiri for parsing HTML/XML. It includes code examples to demonstrate basic usage.
This document provides an overview introduction to the Ruby programming language. It discusses what Ruby is, basic syntax, key features like being dynamically typed and object-oriented, implementations, applications, and the ecosystem. It also covers topics like variables, data types, control flow, methods, classes, and encapsulation. Code examples are provided to demonstrate various language constructs.
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.
These are slides from a lecture on Red Flags in Programming that took place at an Israeli Open Source Developers meeting.
Red flags in programming are signs that you likely made a mistake with your application design or code.
Noticing and avoiding these mistakes help us write better code, at any language.
The subject related to mostly dynamic (higher level) languages, even though the sample code is in Perl.
These are the slides I was using when delivering a short talk in Vienna PHP. The talk took place in Vienna on September 22th. More information about the PHP course I deliver can be found at php.course.lifemichael.com
This document discusses the history and features of recent Perl releases. It describes changes such as new features like smart matching, performance enhancements, deprecated functionality and removals, updated modules, documentation improvements, and bug fixes between Perl 5.8 through 5.20. Key details include added features like given/when blocks, improvements to regular expressions, addition of new modules, and transition from Perforce to Git for version control.
Create your own PHP extension, step by step - phpDay 2012 VeronaPatrick Allaert
Ever been interested by contributing to the PHP core team?
In this workshop you will not only learn how (easy it is) to create your own PHP extension from scratch but you will also strengthen your knowledge of PHP by disecting its internals.
After this workshop, you will be able to create an extension on your own, whether it is to optimize the most CPU intensive parts of your code, to create new bindings to C libraries or just to leverage your PHP knowledge.
And what if PHP was a web framework for the C developer?
This workshop requires a bit of C knowledge and preferably a *nix system.
PHP 7 is scheduled for release in November 2015 and will be a major new version that introduces many new features and changes. Some key points include: PHP 7 will provide improved performance through a new Zend Engine 3.0 and full support for 32-bit and 64-bit platforms. New features include scalar type declarations, return type declarations, new operators like the null coalesce operator and the spaceship operator, and anonymous classes. The release will also change some behaviors and remove deprecated features.
The document provides guidance on how to write PHP extensions in C. It discusses compiling extensions, writing tests, handling data types, using object-oriented features like classes, and documenting extensions. Key steps include setting up the build environment, adding basic scaffolding, writing tests, getting and returning data, and releasing extensions on PECL. Advanced topics covered are globals, memory management, custom objects, and thread safety. The document aims to explain the full process for writing reliable and well-integrated PHP extensions.
Pry is a powerful alternative to the standard IRB shell for Ruby that provides features like syntax highlighting, plugin support, and runtime invocation. It allows debugging Ruby code through its interactive read-eval-print loop (REPL) and magic commands. These magic commands include ls to list methods, show-source to view method source code, show-doc to view documentation, breakpoints, and more. Pry can help with test-driven development by allowing quick testing and fixing of code.
The document discusses the author's experience learning and using XS (eXternal Subroutines) to integrate C code with Perl. It provides an overview of key concepts like data types, memory management, and libraries in C and Perl. It also demonstrates how to create an XS module that defines and exports a C function to Perl using common macros like MODULE and PACKAGE.
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 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!
This document discusses modifying the parser for the VeriFast verifier to better support verifying C code. VeriFast currently uses a Camlp4 parser that is a subset of C99, which can cause issues when verifying real C code that uses aspects beyond this subset. The document proposes patching VeriFast's parser to add support for parsing semicolons without declarations, hard tabs in string literals, the inline keyword, and operators in macros. The goal is to use the modified parser to verify code from the NetBSD kernel as a test case.
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.
PHP 7 is on track, ready to hit the road later this year. What does it bring?
What other alternative do we have in the PHP World? Be from alternative implementations point of views, like hhvm or other, or do we have existing solutions to speed up PHP already? Using the existing versions?
The document describes the file format for saving spreadsheet data. It includes details on how cell values, formulas, formatting, and other metadata are encoded in a line-based text format. Key elements include cell coordinates, value types (numeric, text), formulas, formatting codes, borders, colors, and default styles at the sheet level. The format is designed to encode all information needed to reconstruct the spreadsheet for viewing or editing.
The document describes a presentation on writing a TableGen backend. It introduces TableGen as a domain-specific language originated from LLVM to describe instruction tables and other target-specific data in a declarative way. TableGen backends generate target code from TableGen input. The presentation discusses using TableGen records to represent data, differences between OOP and TableGen, TableGen data types, and provides an example of how TableGen is used in LLVM backends to generate code from the table description files for targets.
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.
Dealing with Legacy Perl Code - Peter ScottO'Reilly Media
The document discusses best practices for maintaining Perl code while avoiding burnout. It provides tips on dealing with legacy Perl code, avoiding common myths, testing code, improving code layout and readability, analyzing code for improvements, and handling inherited code. Key recommendations include adopting best practices, writing tests, using tools like perltidy and Devel modules, improving documentation, and refactoring code for clarity and maintainability.
Sven and I are going to classify Xtext compared to other concepts and frameworks and demonstrate its capabilities with a refined version of an example I presented in London the week before. After that we discuss the versatile possibilities for extending and customizing the framework and finish with an exciting outlook.
The document provides an introduction to Perl programming and regular expressions. It begins with simple Perl programs to print text and take user input. It then covers executing external commands, variables, operators, loops, and file operations. The document also introduces regular expressions, explaining patterns, anchors, character classes, alternation, grouping, and repetition quantifiers. It provides examples and discusses principles for matching strings with regular expressions.
This document provides an overview introduction to the Ruby programming language. It discusses what Ruby is, basic syntax, key features like being dynamically typed and object-oriented, implementations, applications, and the ecosystem. It also covers topics like variables, data types, control flow, methods, classes, and encapsulation. Code examples are provided to demonstrate various language constructs.
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.
These are slides from a lecture on Red Flags in Programming that took place at an Israeli Open Source Developers meeting.
Red flags in programming are signs that you likely made a mistake with your application design or code.
Noticing and avoiding these mistakes help us write better code, at any language.
The subject related to mostly dynamic (higher level) languages, even though the sample code is in Perl.
These are the slides I was using when delivering a short talk in Vienna PHP. The talk took place in Vienna on September 22th. More information about the PHP course I deliver can be found at php.course.lifemichael.com
This document discusses the history and features of recent Perl releases. It describes changes such as new features like smart matching, performance enhancements, deprecated functionality and removals, updated modules, documentation improvements, and bug fixes between Perl 5.8 through 5.20. Key details include added features like given/when blocks, improvements to regular expressions, addition of new modules, and transition from Perforce to Git for version control.
Create your own PHP extension, step by step - phpDay 2012 VeronaPatrick Allaert
Ever been interested by contributing to the PHP core team?
In this workshop you will not only learn how (easy it is) to create your own PHP extension from scratch but you will also strengthen your knowledge of PHP by disecting its internals.
After this workshop, you will be able to create an extension on your own, whether it is to optimize the most CPU intensive parts of your code, to create new bindings to C libraries or just to leverage your PHP knowledge.
And what if PHP was a web framework for the C developer?
This workshop requires a bit of C knowledge and preferably a *nix system.
PHP 7 is scheduled for release in November 2015 and will be a major new version that introduces many new features and changes. Some key points include: PHP 7 will provide improved performance through a new Zend Engine 3.0 and full support for 32-bit and 64-bit platforms. New features include scalar type declarations, return type declarations, new operators like the null coalesce operator and the spaceship operator, and anonymous classes. The release will also change some behaviors and remove deprecated features.
The document provides guidance on how to write PHP extensions in C. It discusses compiling extensions, writing tests, handling data types, using object-oriented features like classes, and documenting extensions. Key steps include setting up the build environment, adding basic scaffolding, writing tests, getting and returning data, and releasing extensions on PECL. Advanced topics covered are globals, memory management, custom objects, and thread safety. The document aims to explain the full process for writing reliable and well-integrated PHP extensions.
Pry is a powerful alternative to the standard IRB shell for Ruby that provides features like syntax highlighting, plugin support, and runtime invocation. It allows debugging Ruby code through its interactive read-eval-print loop (REPL) and magic commands. These magic commands include ls to list methods, show-source to view method source code, show-doc to view documentation, breakpoints, and more. Pry can help with test-driven development by allowing quick testing and fixing of code.
The document discusses the author's experience learning and using XS (eXternal Subroutines) to integrate C code with Perl. It provides an overview of key concepts like data types, memory management, and libraries in C and Perl. It also demonstrates how to create an XS module that defines and exports a C function to Perl using common macros like MODULE and PACKAGE.
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 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!
This document discusses modifying the parser for the VeriFast verifier to better support verifying C code. VeriFast currently uses a Camlp4 parser that is a subset of C99, which can cause issues when verifying real C code that uses aspects beyond this subset. The document proposes patching VeriFast's parser to add support for parsing semicolons without declarations, hard tabs in string literals, the inline keyword, and operators in macros. The goal is to use the modified parser to verify code from the NetBSD kernel as a test case.
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.
PHP 7 is on track, ready to hit the road later this year. What does it bring?
What other alternative do we have in the PHP World? Be from alternative implementations point of views, like hhvm or other, or do we have existing solutions to speed up PHP already? Using the existing versions?
The document describes the file format for saving spreadsheet data. It includes details on how cell values, formulas, formatting, and other metadata are encoded in a line-based text format. Key elements include cell coordinates, value types (numeric, text), formulas, formatting codes, borders, colors, and default styles at the sheet level. The format is designed to encode all information needed to reconstruct the spreadsheet for viewing or editing.
The document describes a presentation on writing a TableGen backend. It introduces TableGen as a domain-specific language originated from LLVM to describe instruction tables and other target-specific data in a declarative way. TableGen backends generate target code from TableGen input. The presentation discusses using TableGen records to represent data, differences between OOP and TableGen, TableGen data types, and provides an example of how TableGen is used in LLVM backends to generate code from the table description files for targets.
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.
Dealing with Legacy Perl Code - Peter ScottO'Reilly Media
The document discusses best practices for maintaining Perl code while avoiding burnout. It provides tips on dealing with legacy Perl code, avoiding common myths, testing code, improving code layout and readability, analyzing code for improvements, and handling inherited code. Key recommendations include adopting best practices, writing tests, using tools like perltidy and Devel modules, improving documentation, and refactoring code for clarity and maintainability.
Sven and I are going to classify Xtext compared to other concepts and frameworks and demonstrate its capabilities with a refined version of an example I presented in London the week before. After that we discuss the versatile possibilities for extending and customizing the framework and finish with an exciting outlook.
The document provides an introduction to Perl programming and regular expressions. It begins with simple Perl programs to print text and take user input. It then covers executing external commands, variables, operators, loops, and file operations. The document also introduces regular expressions, explaining patterns, anchors, character classes, alternation, grouping, and repetition quantifiers. It provides examples and discusses principles for matching strings with regular expressions.
This document summarizes a talk given at YAPC Tokyo 2010 about calling C code from Perl using various techniques. It discusses Ctypes, a module for directly calling C functions without XS; Libperl++, a C++ library for embedding and extending Perl; and XS++, which allows writing C++ classes that integrate seamlessly with Perl using a special syntax.
This document provides an overview and schedule for an introduction to Perl course. The key topics that will be covered include: what Perl is, creating and running Perl programs, Perl variables, operators and functions, conditional constructs, subroutines, regular expressions, finding and using modules. The schedule outlines breaks and lunch over the course of the day from 09:45 to 17:00. Resources for slides and further information are also listed.
The document discusses the author's experience optimizing code for a MUD (multi-user dungeon) game written in Perl. It describes rewriting the MUD several times using different languages and frameworks to improve performance. Key optimizations included rewriting color encoding functions in pure Perl, C using Inline::C, and applying techniques like unrolling loops. Benchmarking showed the C version using Inline::C provided the best 10x performance gain over the original pure Perl implementation.
The document discusses various ways to embed Perl in C and C in Perl. It provides an overview of embedding Perl in C using ExtUtils::Embed, B::C, and XS. It also covers embedding C code in Perl using Inline::C and XS. Finally, it demonstrates examples of calling Perl functions from C code and evaluating Perl code from embedded C programs.
The document provides an overview of an introduction to Perl programming course. It covers topics that will be discussed including creating and running Perl programs, variables, operators, functions, input/output, and conditional statements. The schedule lists times for beginning sessions, breaks, and ending each day. Resources for slides and mailing lists are also provided.
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.
Here is the corrected program:
#include <stdio.h>
int main( )
{
int i;
/* do some math */
i = 1 + 2 + 3;
/* do some more math */
i = i + i;
printf("i = %i \n", i);
}
/* desired output */
/*
i = 12
*/
This book contains C programming examples to teach C syntax and concepts. It is organized with simple programs first, building up concepts incrementally with each new example. The programs demonstrate individual language features rather than complete applications. The book assumes the reader already knows how to program and aims to show how to apply their existing skills to C.
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 受信箱を用意する
今日の話
The document discusses various techniques for extending and improving Perl, including both good and potentially evil techniques. It covers Perl modules that port Perl 6 features to Perl 5 like given/when switches and state variables. It also discusses techniques for runtime introspection and modification like PadWalker and source filters. The document advocates for continuing to extend Perl 5 with modern features to keep it relevant and powerful.
This document is the table of contents for a book on C programming. It lists 88 example C programs that are intended to teach C concepts in an evolutionary manner. The programs cover basics like input/output, variables, data types, operators, loops, conditional statements, arrays, functions, pointers, structures, file I/O and more. The programs are presented from simplest to more complex to help programmers learn each new element of the C language.
Crafting Quality PHP Applications (PHP Joburg Oct 2019)James Titcumb
This prototype works, but it’s not pretty, and now it’s in production. That legacy application really needs some TLC. Where do we start? When creating long lived applications, it’s imperative to focus on good practices. The solution is to improve the whole development life cycle; from planning, better coding and testing, to automation, peer review and more. In this talk, we’ll take a quick look into each of these areas, looking at how we can make positive, actionable change in our workflow.
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.
This document provides an overview and schedule for a one-day introduction to Perl programming course. It covers what will be taught including creating and running Perl programs, variables, operators, functions, input/output, and more. The schedule includes breaks and lunch and notes resources available online for the slides.
The document provides an overview of modern Perl features including:
- Using say() instead of print for output
- Defined-or operator //
- switch/given statement for conditionals
- Smart matching with ~~ operator
- state keyword for static variables
- New regex features like named capture buffers
- Object oriented programming with Moose
- Defining classes, attributes, types and inheritance with Moose
- Exception handling with TryCatch and autodie
- Best practices for coding style, layout, testing and more
You Can Do It! Start Using Perl to Handle Your Voyager NeedsRoy Zimmer
This document provides an introduction to the Perl programming language. It discusses Perl nomenclature, basic syntax like variables and data types, control structures, file input/output, regular expressions, and more. The goal is to get readers started using Perl for their needs.
This document provides an overview of the history and development of Perl web development, introducing the Common Gateway Interface (CGI) model and its limitations. It describes how mod_perl helped address these issues but lacked portability. The PSGI specification and Plack implementation are presented as a solution, providing a common interface between Perl web applications and web servers. Key aspects of building PSGI applications, such as templates, user input handling, and middleware, are demonstrated. Major frameworks and servers supporting PSGI are also noted.
This document discusses using symbolic computation in Perl to represent and manipulate mathematical objects like rational numbers, complex numbers, polynomials, and linear/quadratic equations. It presents examples of implementing rational numbers as ordered pairs of integers, complex numbers as ordered pairs of reals, and polynomials as ordered tuples. The key steps are to figure out the rules/properties of the mathematical objects, eliminate extraneous details, and find a representation to encode the objects as data structures that support defined arithmetic operations and algorithms. This allows performing symbolic rather than numeric computations natively in Perl.
This talk examines four real-world use cases for MongoDB document-based data modeling. We examine the implications of several possible solutions for each problem.
CPANci: Continuous Integration for CPANMike Friedman
The document provides a brief history of testing on CPAN from 1987 to the present. It discusses the development of the Test Anything Protocol (TAP) and CPAN Testers for testing Perl modules. It then proposes the idea of CPANci, a continuous integration system for all of CPAN that would test each distribution in isolation on virtualized environments to avoid issues with CPAN Testers. The document outlines an approach using perlbrew and cpanminus to test each distribution on fresh Perl installations of different versions.
MongoDB Schema Design: Four Real-World ExamplesMike Friedman
This document discusses different schema designs for common use cases in MongoDB. It presents four cases: (1) modeling a message inbox, (2) retaining historical data within limits, (3) storing variable attributes efficiently, and (4) looking up users by multiple identities. For each case, it analyzes different modeling approaches, considering factors like query performance, write performance, and whether indexes can be used. The goal is to help designers choose an optimal schema based on their application's access patterns and scale requirements.
This document provides an overview of building an app using Perl and MongoDB. It discusses what MongoDB is and its key features. It describes the modules needed from CPAN to interface with MongoDB from Perl. It outlines the structure of a sample "Library" app to demonstrate CRUD operations on books, authors, and other entities. The document walks through building this app and interacting with MongoDB documents and collections. It provides resources to learn more about MongoDB and the MongoDB Perl API.
This talk introduces the features of MongoDB by demonstrating how one can build a simple library application. The talk will cover the basics of MongoDB's document model, query language, and API.
Building Scalable, Distributed Job Queues with Redis and Redis::ClientMike Friedman
This document discusses using Redis and the Redis::Client Perl module to build scalable distributed job queues. It provides an overview of Redis, describing it as a key-value store that is simple, fast, and open-source. It then covers the various Redis data types like strings, lists, hashes, sets and sorted sets. Examples are given of how to work with these types using Redis::Client. The document discusses using Redis lists to implement job queues, with jobs added via RPUSH and popped via BLPOP. Benchmark results show the Redis-based job queue approach significantly outperforms using a MySQL jobs table with polling. Some caveats are provided about the benchmarks.
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.
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
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! 🚀
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfAbi john
Analyze the growth of meme coins from mere online jokes to potential assets in the digital economy. Explore the community, culture, and utility as they elevate themselves to a new era in cryptocurrency.
What is Model Context Protocol(MCP) - The new technology for communication bw...Vishnu Singh Chundawat
The MCP (Model Context Protocol) is a framework designed to manage context and interaction within complex systems. This SlideShare presentation will provide a detailed overview of the MCP Model, its applications, and how it plays a crucial role in improving communication and decision-making in distributed systems. We will explore the key concepts behind the protocol, including the importance of context, data management, and how this model enhances system adaptability and responsiveness. Ideal for software developers, system architects, and IT professionals, this presentation will offer valuable insights into how the MCP Model can streamline workflows, improve efficiency, and create more intuitive systems for a wide range of use cases.
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
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/.
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.
AI and Data Privacy in 2025: Global TrendsInData Labs
In this infographic, we explore how businesses can implement effective governance frameworks to address AI data privacy. Understanding it is crucial for developing effective strategies that ensure compliance, safeguard customer trust, and leverage AI responsibly. Equip yourself with insights that can drive informed decision-making and position your organization for success in the future of data privacy.
This infographic contains:
-AI and data privacy: Key findings
-Statistics on AI data privacy in the today’s world
-Tips on how to overcome data privacy challenges
-Benefits of AI data security investments.
Keep up-to-date on how AI is reshaping privacy standards and what this entails for both individuals and organizations.
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Impelsys Inc.
Impelsys provided a robust testing solution, leveraging a risk-based and requirement-mapped approach to validate ICU Connect and CritiXpert. A well-defined test suite was developed to assess data communication, clinical data collection, transformation, and visualization across integrated devices.
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
Generative Artificial Intelligence (GenAI) in BusinessDr. Tathagat Varma
My talk for the Indian School of Business (ISB) Emerging Leaders Program Cohort 9. In this talk, I discussed key issues around adoption of GenAI in business - benefits, opportunities and limitations. I also discussed how my research on Theory of Cognitive Chasms helps address some of these issues
Quantum Computing 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.
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxshyamraj55
We’re bringing the TDX energy to our community with 2 power-packed sessions:
🛠️ Workshop: MuleSoft for Agentforce
Explore the new version of our hands-on workshop featuring the latest Topic Center and API Catalog updates.
📄 Talk: Power Up Document Processing
Dive into smart automation with MuleSoft IDP, NLP, and Einstein AI for intelligent document workflows.
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.
43. C Crash Course
C
Perl
int i
= 42;
my $i
= 42;
int *i_ptr = &i;
my $i_ref = $i;
Read unary & as “address-of.”
44. C Crash Course
C
Perl
int i
= 42;
my $i
= 42;
int *i_ptr = &i;
my $i_ref = $i;
Read unary & as “address-of.”
int j;
my $j;
45. C Crash Course
C
Perl
int i
= 42;
my $i
= 42;
int *i_ptr = &i;
my $i_ref = $i;
Read unary & as “address-of.”
int j;
j = *i_ptr;
my $j;
$j = $$i_ref;
46. C Crash Course
C
Perl
int i
= 42;
my $i
= 42;
int *i_ptr = &i;
my $i_ref = $i;
Read unary & as “address-of.”
int j;
j = *i_ptr;
my $j;
$j = $$i_ref;
Read unary * as “dereference.”
58. C Crash Course
Using structs
struct person the_dude;
the_dude.age = 42;
the_dude.name = “jeffrey lebowski”;
the_dude.acct_balance = 1.79;
59. C Crash Course
Using structs
struct person the_dude;
the_dude.age = 42;
the_dude.name = “jeffrey lebowski”;
the_dude.acct_balance = 1.79;
00
2a
age
3f
39
d2
90
a4
70
3d
*name
0a
d7
a3
fc
acct_balance
j
e
f
f
r
e
y
...
3f
62. What is XS?
perldoc perlxs:
XS is an interface description file format used to create an
extension interface between Perl and C code (or a C library)
which one wishes to use with Perl. The XS interface is
combined with the library to create a new library which can
then be either dynamically loaded or statically linked into
perl. The XS interface description is written in the XS
language and is the core component of the Perl extension
interface.
64. XS is a specialized templating
language for C.
95. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
int add( int a, int b ) {
return a + b;
}
96. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
int add( int a, int b ) {
return a + b;
}
97. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
int add( int a, int b ) {
return a + b;
}
98. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
int add( int a, int b ) {
return a + b;
}
99. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
int add( int a, int b ) {
return a + b;
}
100. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
int add( int a, int b ) {
return a + b;
}
101. Run it!
bash-3.2$ perl cexp1.pl
Give me a number: 42
Give me another number: 11
The sum is: 53
102. Run it again!
bash-3.2$ perl cexp1.pl
Give me a number: 42
Give me another number: 31.337
The sum is: 73
103. Run it again!
bash-3.2$ perl cexp1.pl
Give me a number: 42
Give me another number: 31.337
The sum is: 73
What happened?
106. use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
$num_a += 0; $num_b += 0;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
SV *add( SV *a, SV *b ) {
if ( SvIOK( a ) && SvIOK( b ) ) {
return newSViv( SvIV( a ) + SvIV( b ) );
} else if ( SvNOK( a ) && SvNOK( b ) ) {
return newSVnv( SvNV( a ) + SvNV( b ) );
} else {
croak( "I don't know what to do!" );
}
}
107. use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
$num_a += 0; $num_b += 0;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
SV *add( SV *a, SV *b ) {
if ( SvIOK( a ) && SvIOK( b ) ) {
return newSViv( SvIV( a ) + SvIV( b ) );
} else if ( SvNOK( a ) && SvNOK( b ) ) {
return newSVnv( SvNV( a ) + SvNV( b ) );
} else {
croak( "I don't know what to do!" );
}
}
108. use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
$num_a += 0; $num_b += 0;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
SV *add( SV *a, SV *b ) {
if ( SvIOK( a ) && SvIOK( b ) ) {
return newSViv( SvIV( a ) + SvIV( b ) );
} else if ( SvNOK( a ) && SvNOK( b ) ) {
return newSVnv( SvNV( a ) + SvNV( b ) );
} else {
croak( "I don't know what to do!" );
}
}
109. use Inline 'C';
print 'Give me a number: ';
my $num_a = <STDIN>;
print 'Give me another number: ';
my $num_b = <STDIN>;
$num_a += 0; $num_b += 0;
printf "The sum is: %sn", add( $num_a, $num_b );
__END__
__C__
SV *add( SV *a, SV *b ) {
if ( SvIOK( a ) && SvIOK( b ) ) {
return newSViv( SvIV( a ) + SvIV( b ) );
} else if ( SvNOK( a ) && SvNOK( b ) ) {
return newSVnv( SvNV( a ) + SvNV( b ) );
} else {
croak( "I don't know what to do!" );
}
}
110. Run it!
bash-3.2$ perl cexp2.pl
Give me a number: 42
Give me another number: 11
The sum is: 53
bash-3.2$ perl cexp2.pl
111. Run it!
bash-3.2$ perl cexp2.pl
Give me a number: 42
Give me another number: 11
The sum is: 53
bash-3.2$ perl cexp2.pl
bash-3.2$ perl cexp2.pl
Give me a number: 53.4
Give me another number: 6.54
The sum is: 59.94
112. Run it!
bash-3.2$ perl cexp2.pl
Give me a number: 42
Give me another number: 11
The sum is: 53
bash-3.2$ perl cexp2.pl
bash-3.2$ perl cexp2.pl
Give me a number: 53.4
Give me another number: 6.54
The sum is: 59.94
Give me a number: 42
Give me another number: 6.54
I don't know what to do! at
cexp2.pl line 16, <STDIN>
line 2.
113. Once you get this far,
everything you need
is in perlapi.
129. What does an HV look like?
(Diagram missing
(So I stole this one))
130. What does an HV look like?
(Diagram missing
(So I stole this one))
131. #!/usr/bin/env perl
use strict;
use warnings;
use Inline 'C';
print "Give me some words: ";
my @words = split /,/, <STDIN>;
chomp @words;
my $result = uniques( @words );
printf "The uniques are: %sn",
join ", ", %$result;
__END__
132. __C__
SV *uniques( SV *words ) {
AV *array = (AV *)SvRV( words );
HV *result = newHV();
SV **tmp;
int len = AvFILL( array );
int i;
char *val;
for( i = 0; i <= len; i++ ) {
tmp = av_fetch( array, i, 1 );
if( !SvPOK( *tmp ) ) {
croak( "Can't handle this value!" );
}
val = SvPV_nolen( *tmp );
hv_store( result, val, strlen( val ), newSV(0), 0 );
}
return newRV_noinc( (SV *)result );
}
133. Run it!
bash-3.2$ perl cexp4.pl
Give me some words: foo,bar,baz,baz,foo,quux,narf,poit
The uniques are: bar, narf, baz, poit, quux, foo
137. Magic is a linked list of function pointers
attached to a *SV.
138. Magic is a linked list of function pointers
attached to a *SV.
The functions implement custom read/write
behavior.
139. Magic is a linked list of function pointers
attached to a *SV.
The functions implement custom read/write
behavior.
Special vars like %ENV are implemented via
Magic.