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.
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.
Les slides du Tools in Action que j'ai donné à Devoxx France 2019.
Le JDK est open source et son développement aussi. L'ensemble des nouveautés vit sur des branches Mercurial qui peuvent être téléchargées et compilées à la demande. Cela permet de jouer avec des fonctionnalités encore en chantier, de regarder comment les nouvelles syntaxes fonctionneront, bref, de jouer avec un JDK du futur, qui n'existera peut-être jamais. L'objet de ce tools in action est simple : montrer comment tout ceci fonctionne, de l'installation d'une machine Ubuntu à l'exécution d'un JDK recompilé maison.
The document provides an overview of Git, including version control concepts like distributed revision control and repositories. It discusses key Git commands for adding, committing, tracking changes to code, working with branches, pushing/pulling to remote repositories, tagging versions, and using submodules. The document also covers ranges and identifiers for commits, and other commands like revert, reset, stash, bisect, rebase, and gc.
Slides of the talk we gave with David Delabassee at Oracle Code One 2018.
The FnProject was released about a year ago, proposing new ways to design asynchronous systems in a very flexible way. This tutorial shows you how to set up a Fn Server on a local development machine running Windows with a first simple function. Then we cover the design of multi-functions systems, connected together in an asynchronous way, leveraging the Fn Flow API. This API is first presented, including how it compares to the the Java 8 CompletableFuture API. We then set up a real example made of several functions, producing multiple results and see how we can leverage their asynchronous nature to make a non-blocking system, handling errors in a simple and intuitive way. Most of the examples are shown both on slides and live coding parts.
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.
"Da sempre fare il deploy di applicazioni multi-istanza rappresenta una sfida per lo sviluppatore e per il sistemista. Oggi grazie a strumenti gratuiti e un pò di esperienza in materia è possibile eseguire tale operazione lavorando su pipeline che prevedono testing automatico, validazione del code style e molto altro, in modo da ottenere una Continuous Integration consistente, efficace ed in tempi brevissimi. Scopriamo insieme come con un progetto Laravel e le pipeline di Bitbucket."
Composer has triggered a renaissance in the PHP community, it has changed the way we deal with other people’s code and it has changed the way we share our code. We are all slowly moving to using Composer, from Wordpress to Joomla and Drupal and frameworks in between. But many of us mistreat composer, follow outdated practices or simply lack a few tricks. In this session i’ll get you the low down on how to use composer the right way.
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.
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.
Les slides du Tools in Action que j'ai donné à Devoxx France 2019.
Le JDK est open source et son développement aussi. L'ensemble des nouveautés vit sur des branches Mercurial qui peuvent être téléchargées et compilées à la demande. Cela permet de jouer avec des fonctionnalités encore en chantier, de regarder comment les nouvelles syntaxes fonctionneront, bref, de jouer avec un JDK du futur, qui n'existera peut-être jamais. L'objet de ce tools in action est simple : montrer comment tout ceci fonctionne, de l'installation d'une machine Ubuntu à l'exécution d'un JDK recompilé maison.
The document provides an overview of Git, including version control concepts like distributed revision control and repositories. It discusses key Git commands for adding, committing, tracking changes to code, working with branches, pushing/pulling to remote repositories, tagging versions, and using submodules. The document also covers ranges and identifiers for commits, and other commands like revert, reset, stash, bisect, rebase, and gc.
Slides of the talk we gave with David Delabassee at Oracle Code One 2018.
The FnProject was released about a year ago, proposing new ways to design asynchronous systems in a very flexible way. This tutorial shows you how to set up a Fn Server on a local development machine running Windows with a first simple function. Then we cover the design of multi-functions systems, connected together in an asynchronous way, leveraging the Fn Flow API. This API is first presented, including how it compares to the the Java 8 CompletableFuture API. We then set up a real example made of several functions, producing multiple results and see how we can leverage their asynchronous nature to make a non-blocking system, handling errors in a simple and intuitive way. Most of the examples are shown both on slides and live coding parts.
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.
"Da sempre fare il deploy di applicazioni multi-istanza rappresenta una sfida per lo sviluppatore e per il sistemista. Oggi grazie a strumenti gratuiti e un pò di esperienza in materia è possibile eseguire tale operazione lavorando su pipeline che prevedono testing automatico, validazione del code style e molto altro, in modo da ottenere una Continuous Integration consistente, efficace ed in tempi brevissimi. Scopriamo insieme come con un progetto Laravel e le pipeline di Bitbucket."
Composer has triggered a renaissance in the PHP community, it has changed the way we deal with other people’s code and it has changed the way we share our code. We are all slowly moving to using Composer, from Wordpress to Joomla and Drupal and frameworks in between. But many of us mistreat composer, follow outdated practices or simply lack a few tricks. In this session i’ll get you the low down on how to use composer the right way.
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.
UnQLite is an embedded key-value and document-oriented database with a simple API similar to SQLite. It uses a BSD license and supports cross-platform usage. Benchmarks show it has comparable or better performance than SQLite, Berkeley DB and other databases for common operations like storing, fetching, and iterating over large amounts of data. The developer is working on adding new storage engines to UnQLite.
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...Zyxware Technologies
A workshop on "An introduction to BASH shell scripting". Conducted at CSI Students Convention at TKM College of Engineering, Kollam, Kerala on 15th September, 2012
http://www.zyxware.com/articles/3080/zyxware-conducts-workshop-on-bash-scripting-at-tkm-college-of-engineering-kollam
This document provides productivity tips for developers, including customizing dotfiles for Bash, Vim, and Git configurations. It also discusses using text expanders, customizing the MacBook touch bar, and invites readers to share their own productivity tricks. The document recommends dotfiles like .bashrc, .vimrc and .gitconfig to store customizations and aliases. It provides examples of aliases and settings for Bash, Vim and Git configurations.
plackdo, plack-like web interface on perl6Nobuo Danjou
This document discusses Plackdo, which is a port of the Plack web development toolkit to the Rakudo implementation of Perl 6. It provides an overview of Plack, PSGI, and Rakudo. It then demonstrates how to create an echo server and HTTP server in Perl 6 using Plackdo and discusses features like middleware, testing, distribution, and database integration. The document encourages people to try building applications on Rakudo as a way to learn more about programming languages and help contribute to the Perl 6 and Parrot ecosystems.
Introducing Command Line Applications with RubyNikhil Mungel
This document discusses building command line applications in Ruby. It covers using OptionParser and Mixlib::CLI for parsing arguments, Thor for building commands, testing CLI apps, interacting with the system via libraries like Mixlib::ShellOut, and logging to standard output and error. The target audience is developers looking to get started with Ruby command line programs.
The document discusses common mistakes made in file input/output (I/O) that can lead to data loss. It notes that asynchronous I/O is faster than synchronous I/O but introduces consistency issues. File systems provide weaker consistency guarantees than databases, and operations like close() and rename() do not guarantee data is flushed to disk. The document recommends using transactions and writing to a temporary file followed by renaming to improve data durability.
This document discusses using Perl 6 as a procedural language for PostgreSQL databases. It begins by introducing PL/Perl6, which allows using Perl 6 functions and objects in SQL queries. Examples are provided of using Perl 6 features like smart matching and junctions in PostgreSQL functions. Challenges with the immature Rakudo Perl 6 compiler are also noted. The document explores mapping, reducing, and accessing web APIs from PostgreSQL using PL/Perl6.
The document provides an overview of the Unix shell and its basic concepts:
- The shell allows users to interact with the operating system by entering commands
- Common Unix shells include bash, csh, and ksh
- The shell prompt displays information about the user and current directory
- Commands can be run internally by the shell or externally by spawning new processes
- Processes have attributes like the command line, exit status, and environment variables
This presentation is made for beginners who wish to write a simple script and also help those who already working in the sys-admin, support roles to increase their scope for more experiments in different areas where a developer, sys-admin, app-admin, web-admin can use it.
2012 coscup - Build your PHP application on Herokuronnywang_tw
The document discusses deploying PHP applications on Heroku. It provides an overview of Heroku, including that it is a Platform-as-a-Service, was launched in 2007, uses Amazon Web Services, offers many add-ons, allows easy scaling, supports PostgreSQL, and offers some free usage. It then walks through deploying a basic "Hello World" PHP app on Heroku, including creating an app, adding code, committing and pushing to Heroku, and viewing the deployed app.
The document provides an introduction to shell scripting basics in UNIX/Linux systems. It discusses what a shell and shell script are, introduces common shells like bash, and covers basic shell scripting concepts like running commands, variables, conditionals, loops, and calling external programs. Examples are provided for many common shell scripting tasks like file manipulation, text processing, scheduling jobs, and more.
Crafting Beautiful CLI Applications in RubyNikhil Mungel
The document describes a presentation on crafting beautiful command line applications using Ruby. The presentation discusses why the command line is useful, what makes a good CLI app, and some key principles for CLI apps like least astonishment, reversibility, config files, graceful failure, and honoring piping. It also covers input/output in CLI apps and libraries like OptionParser, Mixlib::CLI, and Thor that can help build CLI apps in Ruby.
The document discusses how to publish a Perl 6 module. It covers creating modules, writing tests, documenting metadata, installing modules locally or via package managers like panda, and releasing modules to the ecosystem. Key steps include writing Perl 6 code and tests, adding metadata, testing the metadata, pushing to GitHub, and publishing releases to the ecosystem.
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.
Short introduction to the basics of Perl testing and some resources for further reading. Includes basics of Test::Simple, Test::More, using Inline for multi-language testing, testing coverage, testing tests.
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.
This document provides an introduction and overview of pl/php, which allows users to write functions and procedures in PHP and store them in a PostgreSQL database. It discusses how pl/php works, provides an example of creating a simple pl/php function, and covers installing and configuring pl/php, including compiling the pl/php library and installing the language into a database. It also presents some basic and more advanced uses of pl/php to integrate PHP logic and programming directly into PostgreSQL databases.
Managing dependencies and third-party code in PHP applications is a daily challenge, keeping everyone on the same versions during development and at deploy time a struggle. Meet Composer a tool designed to help you maintain a consistent set of dependencies as well as share and discover new libraries. Let's see how you can use this tool in your Applications and Libraries to wrangle your dependencies with a simple json configuration file and a command line interface.
This document discusses webhooks and how to implement them in a PHP application. It begins by defining webhooks as custom callbacks that can alter a web page or application behavior. It then provides examples of webhooks from Google Calendar and GitHub. The document outlines best practices for implementing webhooks, including using events, a webhook subscriber, RabbitMQ for scalability, and testing tools. It recommends leveraging webhooks to integrate an application with other services.
Mikko Koivunalho presents on Iron.io services IronMQ, IronWorker, and IronCache. He discusses how they enable building loosely coupled, asynchronous cloud applications that can better handle uncertainty. IronMQ is a message queue that allows separation and asynchronous messaging. IronWorker is a serverless computing platform that allows running code in a scalable way. IronCache provides key-value storage. Together these services provide solutions for problems like processing GitHub notifications asynchronously and sending automated messages like reminders.
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.
UnQLite is an embedded key-value and document-oriented database with a simple API similar to SQLite. It uses a BSD license and supports cross-platform usage. Benchmarks show it has comparable or better performance than SQLite, Berkeley DB and other databases for common operations like storing, fetching, and iterating over large amounts of data. The developer is working on adding new storage engines to UnQLite.
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...Zyxware Technologies
A workshop on "An introduction to BASH shell scripting". Conducted at CSI Students Convention at TKM College of Engineering, Kollam, Kerala on 15th September, 2012
http://www.zyxware.com/articles/3080/zyxware-conducts-workshop-on-bash-scripting-at-tkm-college-of-engineering-kollam
This document provides productivity tips for developers, including customizing dotfiles for Bash, Vim, and Git configurations. It also discusses using text expanders, customizing the MacBook touch bar, and invites readers to share their own productivity tricks. The document recommends dotfiles like .bashrc, .vimrc and .gitconfig to store customizations and aliases. It provides examples of aliases and settings for Bash, Vim and Git configurations.
plackdo, plack-like web interface on perl6Nobuo Danjou
This document discusses Plackdo, which is a port of the Plack web development toolkit to the Rakudo implementation of Perl 6. It provides an overview of Plack, PSGI, and Rakudo. It then demonstrates how to create an echo server and HTTP server in Perl 6 using Plackdo and discusses features like middleware, testing, distribution, and database integration. The document encourages people to try building applications on Rakudo as a way to learn more about programming languages and help contribute to the Perl 6 and Parrot ecosystems.
Introducing Command Line Applications with RubyNikhil Mungel
This document discusses building command line applications in Ruby. It covers using OptionParser and Mixlib::CLI for parsing arguments, Thor for building commands, testing CLI apps, interacting with the system via libraries like Mixlib::ShellOut, and logging to standard output and error. The target audience is developers looking to get started with Ruby command line programs.
The document discusses common mistakes made in file input/output (I/O) that can lead to data loss. It notes that asynchronous I/O is faster than synchronous I/O but introduces consistency issues. File systems provide weaker consistency guarantees than databases, and operations like close() and rename() do not guarantee data is flushed to disk. The document recommends using transactions and writing to a temporary file followed by renaming to improve data durability.
This document discusses using Perl 6 as a procedural language for PostgreSQL databases. It begins by introducing PL/Perl6, which allows using Perl 6 functions and objects in SQL queries. Examples are provided of using Perl 6 features like smart matching and junctions in PostgreSQL functions. Challenges with the immature Rakudo Perl 6 compiler are also noted. The document explores mapping, reducing, and accessing web APIs from PostgreSQL using PL/Perl6.
The document provides an overview of the Unix shell and its basic concepts:
- The shell allows users to interact with the operating system by entering commands
- Common Unix shells include bash, csh, and ksh
- The shell prompt displays information about the user and current directory
- Commands can be run internally by the shell or externally by spawning new processes
- Processes have attributes like the command line, exit status, and environment variables
This presentation is made for beginners who wish to write a simple script and also help those who already working in the sys-admin, support roles to increase their scope for more experiments in different areas where a developer, sys-admin, app-admin, web-admin can use it.
2012 coscup - Build your PHP application on Herokuronnywang_tw
The document discusses deploying PHP applications on Heroku. It provides an overview of Heroku, including that it is a Platform-as-a-Service, was launched in 2007, uses Amazon Web Services, offers many add-ons, allows easy scaling, supports PostgreSQL, and offers some free usage. It then walks through deploying a basic "Hello World" PHP app on Heroku, including creating an app, adding code, committing and pushing to Heroku, and viewing the deployed app.
The document provides an introduction to shell scripting basics in UNIX/Linux systems. It discusses what a shell and shell script are, introduces common shells like bash, and covers basic shell scripting concepts like running commands, variables, conditionals, loops, and calling external programs. Examples are provided for many common shell scripting tasks like file manipulation, text processing, scheduling jobs, and more.
Crafting Beautiful CLI Applications in RubyNikhil Mungel
The document describes a presentation on crafting beautiful command line applications using Ruby. The presentation discusses why the command line is useful, what makes a good CLI app, and some key principles for CLI apps like least astonishment, reversibility, config files, graceful failure, and honoring piping. It also covers input/output in CLI apps and libraries like OptionParser, Mixlib::CLI, and Thor that can help build CLI apps in Ruby.
The document discusses how to publish a Perl 6 module. It covers creating modules, writing tests, documenting metadata, installing modules locally or via package managers like panda, and releasing modules to the ecosystem. Key steps include writing Perl 6 code and tests, adding metadata, testing the metadata, pushing to GitHub, and publishing releases to the ecosystem.
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.
Short introduction to the basics of Perl testing and some resources for further reading. Includes basics of Test::Simple, Test::More, using Inline for multi-language testing, testing coverage, testing tests.
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.
This document provides an introduction and overview of pl/php, which allows users to write functions and procedures in PHP and store them in a PostgreSQL database. It discusses how pl/php works, provides an example of creating a simple pl/php function, and covers installing and configuring pl/php, including compiling the pl/php library and installing the language into a database. It also presents some basic and more advanced uses of pl/php to integrate PHP logic and programming directly into PostgreSQL databases.
Managing dependencies and third-party code in PHP applications is a daily challenge, keeping everyone on the same versions during development and at deploy time a struggle. Meet Composer a tool designed to help you maintain a consistent set of dependencies as well as share and discover new libraries. Let's see how you can use this tool in your Applications and Libraries to wrangle your dependencies with a simple json configuration file and a command line interface.
This document discusses webhooks and how to implement them in a PHP application. It begins by defining webhooks as custom callbacks that can alter a web page or application behavior. It then provides examples of webhooks from Google Calendar and GitHub. The document outlines best practices for implementing webhooks, including using events, a webhook subscriber, RabbitMQ for scalability, and testing tools. It recommends leveraging webhooks to integrate an application with other services.
Mikko Koivunalho presents on Iron.io services IronMQ, IronWorker, and IronCache. He discusses how they enable building loosely coupled, asynchronous cloud applications that can better handle uncertainty. IronMQ is a message queue that allows separation and asynchronous messaging. IronWorker is a serverless computing platform that allows running code in a scalable way. IronCache provides key-value storage. Together these services provide solutions for problems like processing GitHub notifications asynchronously and sending automated messages like reminders.
Iron.io is a platform for running asynchronous background tasks at scale. It provides a message queue called IronMQ that connects systems, and a worker platform called IronWorker that runs parallel tasks across many servers. IronWorker allows tasks to be run immediately or on a schedule, and provides tools to monitor tasks, integrate with other services, and customize runtime environments. It offers a serverless model and scales to massive processing loads through its cloud infrastructure.
Building Event Driven API Services Using WebhooksCloud Elements
Presented at 'All Things API' in Denver, CO by Travis McChesney, Director of Engineering at Cloud Elements.
How do you build and use user defined callback URLs (known as Webhooks) to notify your users of events that occurred on your system? Or use those URLs to get remote notification from API connected systems you use?
Using Webhooks is becoming more common as APIs become essential to all programming models. We will cover four common usage models: API capture, TCP Tunneling, Dynamic DNS and Remote Development.
This document discusses webhooks and the concept of an "evented web". Webhooks allow a server to notify a client application when something occurs, such as new data being available or an event happening. The document argues that webhooks could enable an "evented web" where applications can trigger actions in other systems in response to events. Examples are provided of how webhooks could be used to integrate Twitter and Facebook or build real-time feeds. Infrastructure like Scriptlets and Notify.io is presented as helping support the development of webhook handler scripts and notifications. The vision is that an evented web enabled by ubiquitous webhooks could make programming and customizing web applications much more common.
This is a quick introduction to webhooks I gave at GlueCon 2010. It was also a bit of an ad for a last minute 40 minute talk I was giving immediately after.
The document discusses the Gauntlt tool for facilitating communication between information security, development, and operations teams. It promotes adopting a culture of security driven by cooperation rather than compliance. Gauntlt helps automate running security tools like nmap and Arachni in a repeatable way and integrating them into continuous integration/deployment pipelines. The tool follows a philosophy of favoring speed, utility, and being part of the development process over complexity.
Composer for Busy Developers - php|tek13Rafael Dohms
Composer is a dependency manager for PHP that allows you to declare and install dependencies and their versions for a project. It generates an autoload file so dependencies can be loaded without needing to include files manually. Composer resolves dependencies by installing packages and their transitive dependencies. It also generates a lock file to ensure consistent dependencies between environments.
Fine-tuning your development environment means more than just getting your editor set up just so -- it means finding and setting up a variety of tools to take care of the mundane housekeeping chores that you have to do -- so you have more time to program, of course! I'll share the benefits of a number of yak shaving expeditions, including using App::GitGot to batch manage _all_ your git repos, App::MiseEnPlace to automate getting things _just_ so in your working environment, and a few others as time allows.
Delivered at OpenWest 2016, 13 July 2016
The document discusses automating software deployment using Ansible. It provides an overview of Ansible's basic concepts like inventory files to define hosts, playbooks to execute tasks on hosts, and roles to bundle related tasks. It then discusses using Ansible roles to automate deployments, including the ansistrano roles which can deploy applications by copying files, managing releases, and supporting deployment hooks. Overall the document presents Ansible as a way to easily automate and standardize software deployment processes.
Sprockets is an easy solution to managing large JavaScript codebases by letting you structure it, bundle it with related assets, and consolidate it as one single file, with pre-baked command-line tooling, CGI front and Rails plugin. It's a framework-agnostic open-source solution that makes for great serving performance while helping you structure and manage your codebase better.
John presents several tools and techniques he uses to automate tasks and maintain consistency across systems in order to maximize his productivity while developing software. Some of the key tools and strategies he discusses include: App::MiseEnPlace for managing directory structures and symlinks; smartcd for running scripts when entering or leaving directories; building critical tools like Perl, Node.js, and Git from source instead of relying on system versions; and keeping his entire $HOME directory under revision control with GitGot. He emphasizes automating repetitive tasks, maintaining consistency across systems, and not having to think about tools or environments.
Practical tips for dealing with projects involving legacy code. Covers investigating past projects, static analysis of existing code, and methods for changing legacy code.
Presented at PHP Benelux '10
The document discusses node.js basics including setting up a development environment, using npm commands, executing JavaScript files, using external files, function scopes, and closures. It provides code examples and explanations of key concepts like requiring modules, exports vs module.exports, and how variable scoping works differently inside and outside of functions in JavaScript.
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf Conference
Capistrano для деплоймента PHP приложений
Capistrano is a tool for deploying PHP applications. It allows deployments to be done with a single command. Capistrano handles tasks like updating files and databases, creating files/folders/symlinks, file permissions, cache clearing, and rolling back if errors occur. Common methods for deployment include FTP clients, version control hooks, Phing, shell scripts, and Rsync. Capistrano uses SSH and works with version control systems like Git, SVN, and Mercurial. It manages releases by creating dated directories and symlinking the current release. Custom tasks can be added to handle additional deployment steps.
The document discusses the tools and practices used by a Ruby development team, including using RVM for managing Ruby versions and gemsets, Postgres.app for the database, Pow for local development, Git for version control, GitHub pull requests for code reviews, CircleCI for continuous integration and deployment to Heroku, Capistrano or Mina for deployment automation, and services like Rollbar and HipChat for error tracking and communication. Consistent coding styles, Sublime Text settings, and code quality practices like testing and reviews are also recommended.
Instrumentación de entrega continua con GitlabSoftware Guru
Mostraremos el caso real de cómo tenemos implementado en nuestra empresa el flujo de desarrollo para integración y entrega continua, instrumentado con GitLab.
Sesión presentada por David Padilla en SG Next 2017
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session we’d like to share our experience, including but not limited to:advanced vagrantfile configurationvm configuration tips for dev environment: performance,
debug, tuning,
our wtf moments
puphet/phansilbe: hot or not?
packaging a box
The document discusses deploying a Rails application to Amazon EC2. It explains that the goals are to launch an EC2 instance, connect to it, set up the environment, deploy the application, and profit. It then outlines the plan to launch an instance, connect to it, install necessary packages like Ruby, Rails, and Nginx, configure Nginx and Unicorn, deploy the application using Capistrano, and start the Unicorn process.
Composer: putting dependencies on the scoreRafael Dohms
As PHP projects grow and mature so does their list of dependencies and third party code. Managing all these external packages during development and especially deploy is not an easy task and can be very error prone. Enter Composer, a tool that allows you to keep a consistent list of dependencies and versions across your whole team and all your environments, managing and making discovery of new libraries a breeze. Let's see how Composer can solve all your problems with a simple command line interface and a json configuration file.
Abstract: Composer is a tool for managing dependencies in PHP projects. This talk will introduce Composer and its associated package repository Packagist. The key features and benefits of using Composer will be explored and through practical demonstrations you will gain a working knowledge of using Composer for dependency management.
This document discusses Docker and provides an introduction and overview. It introduces Docker concepts like Dockerfiles, commands, linking containers, volumes, port mapping and registries. It also discusses tools that can be used with Docker like Fig, Baseimage, Boot2Docker and Flynn. The document provides examples of Dockerfiles, commands and how to build, run, link and manage containers.
GitGot: The Swiss Army Chainsaw of Git Repo ManagementJohn Anderson
GitGot is a Perl-based tool for batch management of collections of git repos. It has a number of interesting features and acts as a force multiplier when dealing with a large varied collection of repositories. My talk will cover why you would want to use GitGot as well as how to use it effectively.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfUndress Baby
The quest for the best AI face swap solution is marked by an amalgamation of technological prowess and artistic finesse, where cutting-edge algorithms seamlessly replace faces in images or videos with striking realism. Leveraging advanced deep learning techniques, the best AI face swap tools meticulously analyze facial features, lighting conditions, and expressions to execute flawless transformations, ensuring natural-looking results that blur the line between reality and illusion, captivating users with their ingenuity and sophistication.
Web:- https://undressbaby.com/
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...kalichargn70th171
A dynamic process unfolds in the intricate realm of software development, dedicated to crafting and sustaining products that effortlessly address user needs. Amidst vital stages like market analysis and requirement assessments, the heart of software development lies in the meticulous creation and upkeep of source code. Code alterations are inherent, challenging code quality, particularly under stringent deadlines.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
3. Git and Perl
Git and Perl go hand-in-hand.
I some parts of Git are made with Perl.
4. Git Hooks
I Common to many Version Control Systems, also Git has a way to
5. re o custom scripts when certain important actions occur. These
are called hooks.
I There are two groups of these hooks: client-side and server-side.
Client-side hooks are triggered by operations such as committing
and merging, while server-side hooks run on network operations such
as receiving pushed commits.
I We want to use the hooks mechanism to some actions!
I De
6. ne our needs:
1. Only client side hooks.
2. Must be expandable.
3. Must not touch the client's system (speci
8. Solution?
I We need a solution which is:
expandable Easy to develop further and easy to deploy improments to it.
friendly Easy for user to take into use.
maintainable Automatically install new versions into client's system.
invisible Cover our tracks, i.e. hide Perl away.
10. Git::Hooks
Framework for Git Hooks
I CPAN: Git::Hooks
I Framework for implementing Git (and Gerrit) hooks
I Author: Gustavo L. de M. Chaves gnustavo@cpan.org
I https://metacpan.org/release/Git-Hooks
I Git::Hooks provides several hooks out-of-the-package. We just need
to get Git::Hooks running.
11. Plenv
I Plenv
I Perl binary manager. (Create virtual Perl environments: Installs any
Perl version and keeps the Perls and their corresponding CPAN
installations from getting mixed.)
I Author: Tokuhiro Matsuno
I https://github.com/tokuhirom/plenv/
I Installation: Clone the Git repository and set global path.
I Alternative installation: Use anyenv from
https://github.com/riywo/anyenv.git. Get Ruby, Python,
Java, Lua, Go environments in the bargain.
12. Carton
I Carton
I Perl module dependency manager. Download and install CPAN
modules locally in directory 'local'. Isolate the installation so you
always run the same versions.
I Author: Tatsuhiko Miyagawa
I https://metacpan.org/pod/Carton
I Installation: Install via plenv.
I Alternative installation: Use anyenv from
https://github.com/riywo/anyenv.git. Get Ruby, Python,
Java, Lua, Go environments in the bargain.
16. le):
# At l e a s t t h i s Pe r l v e r s i o n ( can be h i g h e r ) :
r e q u i r e s ' p e r l ' , ' 5 . 1 8 . 4 ' ;
# The o n l y package we r e a l l y need .
r e q u i r e s ' Gi t : : Hooks ' , ' 1 . 3 . 0 ' ;
# P e r l C r i t i c f o r c h e c k i n g the Pe r l code (most r e l a t e d to Gi t
hooks ) .
r e q u i r e s ' Pe r l : : C r i t i c ' , ' 1.122 ' ;
Install:
cd . . # Step out o f the . p e r l v e r s i o n c o n t r o l l e d ' space '
p l e n v i n s t a l l 5 . 1 8 . 4 as=5.18.4 g i thooks
p l e n v i n s t a l l cpanm ; p l e n v r e h a s h
cpanm Car ton ; c a r t o n i n s t a l l
29. les '.perl-version'
(plenv) and directory 'local' (carton).
I Uses only plenv installed modules.
I You can even limit yourself to Carton installed modules:
I Run
carton exec perl-program.pl
I Carton has already installed Git::Hooks. Now let's set it up.
30. Hooking into Git
I The actual Git hooks are located in the '.git/hooks' subdirectory in
the repo root. Create a symbolic link from every hook you want to
activate to the '.git-repo-admin' directory. E.g.
ln -s .git-repo-admin/git-hooks.sh .git/hooks/commit-msg
I Link the Git con
52. git-hooks.sh: Bash Part
#! / u s r / b i n / env bash
REPO DIR=$ (pwd)
HOOK NAME=$fBASH SOURCEg # Ac t u a l l y hooks/hook name
SOURCE=$fBASH SOURCE[ 0 ] g
wh i l e [ h $SOURCE ] ; do # r e s o l v e $SOURCE u n t i l the f i l e
i s no l o n g e r a s yml i n k
DIR=$ ( cd P $ ( di rname $SOURCE ) pwd )
SOURCE=$ ( r e a d l i n k $SOURCE )
[ [ $SOURCE != / ] ] SOURCE=$DIR/$SOURCE # i f $SOURCE
was a r e l a t i v e s yml ink , we need to r e s o l v e i t r e l a t i v e
to the path where the s yml i n k f i l e was l o c a t e d
done
THIS SCRIPT=$fSOURCEg
DIR=$ ( cd P $ ( di rname $SOURCE ) pwd )
cd $fDIRg
i f [ e g i thookshook . sh ] ; then s o u r c e . / g i thookshook .
sh ; f i
CMD= e x e c c a r t o n e x e c p e r l x $fTHIS SCRIPTg $fREPO DIRg $f
HOOK NAMEg $@
i f [ $VERBOSE = 1 ] ; then echo CMD=$fCMDg ; f i
$fCMDg
# End o f Bash s c r i p t
53. git-hooks.sh: Perl Part
# S t a r t o f Pe r l s c r i p t
#! / u s r / b i n / env p e r l
us e s t r i c t ; us e wa rning s ;
my $ v e r b o s e = 0 ;
$ v e r b o s e = $ENVf 'VERBOSE ' g i f d e f i n e d $ENVf 'VERBOSE ' g ;
my $ r e p o d i r = s h i f t @ARGV;
my $hook name = s h i f t @ARGV;
c h d i r $ r e p o d i r ;
p r i n t g i thooks . sh ( p l ) now i n d i r ' $ r e p o d i r ' . n n i f (
$ v e r b o s e ) ;
my $ s u b g i t c h a n g e = $hook name =~ s /n/( us e r ) ( [ ^ n / ]+) /n/ $2/
msx ;
i f ( $ s u b g i t c h a n g e ) f p r i n t Thi s i s SubGi t repo , removed '
us e r ' f rom hooks name . n n i f $ v e r b o s e ; g
us e Gi t : : Hooks ;
p r i n t Ex e c u t i n g : run hook ( $hook name , @ARGV) nn i f (
$ v e r b o s e ) ;
run hook ( $hook name , @ARGV) ;
54. Small Things left
I If you think it is not good to have the directory
'.git-repo-admin/local'
oating freely in the repository, turn it into a
symbolic link and move the directory itself under '.git' directory.
I Set up additional hooks into directory
'.git-repo-admin/hooks.d.local'.
60. Download All the Code for .git-repo-admin
I .git-repo-admin
I
I Author: Mikko Koivunalho
I https://github.com/mikkoi/.git-repo-admin
I Installation: Clone the Git repository and copy the '.git-repo-admin'
directory to your own repositories.
62. SubGit
For People Who Need to Hide Their Liking of Git. . .
SubGit
http://www.subgit.com
I SubGit is a tool for a smooth, stress-free Svn to Git migration.
I Create a writable Git mirror of a local or remote Subversion
repository and use both Subversion and Git.
I Bidirectional Subversion to Git replication!
I When using remote synchronization Subversion is not even aware of
it being synchronized with a Git repository.