Have you found yourself wondering how to take advantage of what you have developed in the past for current or future projects? Are you tired of copying/pasting then adapting from your previous projects to the new ones? Start developing for the future and contribute to others by developing libraries and sharing them for use. Where do you start? You’ll be guided through this tutorial step by step to include security, tests and all the factors you need to consider when building a library.
PHP owes its appeal and popularity to its low barriers to entry. Anyone with access to a basic LAMP stack can get started in just a few hours, but if you want to write a production-level application, you need the right tools. The PHP community today relies heavily on Composer and PHPUnit as tools and PSRs as the common dialect. npm is the unavoidable front-end counterpart to Composer. Git, though not specific to PHP, is critical to developing a maintainable project. This talk will guide you through these topics so you have a basic understanding of the modern PHP developer’s toolbox.
Browser Serving Your We Application Security - ZendCon 2017Philippe Gamache
One important concept in web application security is defense in depth. You protect your server, your network, your database, and your application, but what about the user browser? Can it be done?
Yes! Several new technologies and protocols to assist security has been added to the browsers. Several should be added, activated, and configured from your web server or webpage. In this session we'll explore these technologies and learn how to use them. You’ll learn about the Robots meta tags (for crawlers indexing), browsing compatibility, XSS and clickjacking protection, SSL/TLS Control, and content security policy.
Document your rest api using swagger - Devoxx 2015johannes_fiala
This session will show you how you can easily document your REST API's using Spring & Swagger.
It will show you how to use the Swagger-Spring integration in a Spring Boot application:
Setup a basic REST API using Spring-Boot together with Swagger-Springfox
Access and test the REST-API using the Swagger-UI client
Generate client code stubs for your language (e.g. Java, PHP, Python, ...) using Swagger-Codegen
Graphically display your REST-API using the Chrome plugin Swagger.ed
Devoxx Belgium Nov. 2015
a step by step tutorial to integrate swagger ui with your Spring service.
swagger ui is a web interface to view , test APIs either rest or soap . you can view an api services see descriptive documentation see example of input like request body and headers
and output like result
Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services. The overarching goal of Swagger is to enable client and documentation systems to update at the same pace as the server. The documentation of methods, parameters, and models are tightly integrated into the server code, allowing APIs to always stay in sync. With Swagger, deploying managing, and using powerful APIs has never been easier.
Advanced Git: A talk on the finer parts of Git.
Covering basic to somewhat advanced Git usage for development tasks. Goes into some detail on some parts of Git that may confuse many
PHP owes its appeal and popularity to its low barriers to entry. Anyone with access to a basic LAMP stack can get started in just a few hours, but if you want to write a production-level application, you need the right tools. The PHP community today relies heavily on Composer and PHPUnit as tools and PSRs as the common dialect. npm is the unavoidable front-end counterpart to Composer. Git, though not specific to PHP, is critical to developing a maintainable project. This talk will guide you through these topics so you have a basic understanding of the modern PHP developer’s toolbox.
Browser Serving Your We Application Security - ZendCon 2017Philippe Gamache
One important concept in web application security is defense in depth. You protect your server, your network, your database, and your application, but what about the user browser? Can it be done?
Yes! Several new technologies and protocols to assist security has been added to the browsers. Several should be added, activated, and configured from your web server or webpage. In this session we'll explore these technologies and learn how to use them. You’ll learn about the Robots meta tags (for crawlers indexing), browsing compatibility, XSS and clickjacking protection, SSL/TLS Control, and content security policy.
Document your rest api using swagger - Devoxx 2015johannes_fiala
This session will show you how you can easily document your REST API's using Spring & Swagger.
It will show you how to use the Swagger-Spring integration in a Spring Boot application:
Setup a basic REST API using Spring-Boot together with Swagger-Springfox
Access and test the REST-API using the Swagger-UI client
Generate client code stubs for your language (e.g. Java, PHP, Python, ...) using Swagger-Codegen
Graphically display your REST-API using the Chrome plugin Swagger.ed
Devoxx Belgium Nov. 2015
a step by step tutorial to integrate swagger ui with your Spring service.
swagger ui is a web interface to view , test APIs either rest or soap . you can view an api services see descriptive documentation see example of input like request body and headers
and output like result
Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services. The overarching goal of Swagger is to enable client and documentation systems to update at the same pace as the server. The documentation of methods, parameters, and models are tightly integrated into the server code, allowing APIs to always stay in sync. With Swagger, deploying managing, and using powerful APIs has never been easier.
Advanced Git: A talk on the finer parts of Git.
Covering basic to somewhat advanced Git usage for development tasks. Goes into some detail on some parts of Git that may confuse many
Maven is a build automation tool used primarily for Java projects. This presentation will cover the basics of Maven and its usage while developing Java application.This is for anyone interested to learn Maven especially the Java developers.
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
To introduce and motivate some best practice around version control and Git.
Resources:
https://en.wikipedia.org/wiki/Version_control
https://git-scm.com/
https://try.github.io
http://rogerdudler.github.io/git-guide/
http://ohshitgit.com/
https://www.atlassian.com/git/tutorials
https://www.datacamp.com/courses/introduction-to-git-for-data-science
Easy Java Integration Testing with TestcontainersPayara
Having problems creating a maintainable set of integration tests for your enterprise Java application? This talk will help you understand how to use Test containers to implement easy integration tests for your next project!
Simplifying Integration Tests for Enterprise Java
Integration testing is always a difficult area. You need to make sure that all system dependencies are prepared, data is correctly initialised for each run and test runs do not interfere with each other. Even with tools like the Arquillian Framework, writing integration tests can be a complicated task and the act of maintaining large sets of tests can become a nightmare if there's not enough knowledge of all dependencies involved.
With the Testcontainers project, convoluted and complicated integration tests can be a thing of the past. A test container allows you to create reliable integration tests covering a wide range of scenarios like using databases, microservices interactions and even GUI and user experience testing. One of the important factors for the success of this framework is the usage of Docker containers to create a reliable reproducible environment for each test, which separates the dependencies and the application code in a way that it is easy to maintain for developers.
One of the biggest advantages of Git is its branching capabilities. Unlike centralized version control systems, Git branches are cheap and easy to merge. This facilitates the feature branch workflow popular with many Git users.
Inheritance in PHP can be achieved in multiple ways. We'll cover both vertical and horizontal inheritance, including abstracts, interfaces, and traits, and when each should and shouldn't be used. Pros, cons, and common things to watch out for will be discussed so you can take your application to the next level.
Maven is a build automation tool used primarily for Java projects. This presentation will cover the basics of Maven and its usage while developing Java application.This is for anyone interested to learn Maven especially the Java developers.
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
To introduce and motivate some best practice around version control and Git.
Resources:
https://en.wikipedia.org/wiki/Version_control
https://git-scm.com/
https://try.github.io
http://rogerdudler.github.io/git-guide/
http://ohshitgit.com/
https://www.atlassian.com/git/tutorials
https://www.datacamp.com/courses/introduction-to-git-for-data-science
Easy Java Integration Testing with TestcontainersPayara
Having problems creating a maintainable set of integration tests for your enterprise Java application? This talk will help you understand how to use Test containers to implement easy integration tests for your next project!
Simplifying Integration Tests for Enterprise Java
Integration testing is always a difficult area. You need to make sure that all system dependencies are prepared, data is correctly initialised for each run and test runs do not interfere with each other. Even with tools like the Arquillian Framework, writing integration tests can be a complicated task and the act of maintaining large sets of tests can become a nightmare if there's not enough knowledge of all dependencies involved.
With the Testcontainers project, convoluted and complicated integration tests can be a thing of the past. A test container allows you to create reliable integration tests covering a wide range of scenarios like using databases, microservices interactions and even GUI and user experience testing. One of the important factors for the success of this framework is the usage of Docker containers to create a reliable reproducible environment for each test, which separates the dependencies and the application code in a way that it is easy to maintain for developers.
One of the biggest advantages of Git is its branching capabilities. Unlike centralized version control systems, Git branches are cheap and easy to merge. This facilitates the feature branch workflow popular with many Git users.
Inheritance in PHP can be achieved in multiple ways. We'll cover both vertical and horizontal inheritance, including abstracts, interfaces, and traits, and when each should and shouldn't be used. Pros, cons, and common things to watch out for will be discussed so you can take your application to the next level.
Scalability != performance. In fact, having to scale your architecture significantly with growth may be a symptom of a poor application performance. Yet, with the rise of cloud and the abundance of automation and container tools that simplify scalability aspect of your system, performance considerations are often pushed to the back row. Building systems for high performance is not easy. It requires a lot of considerations - from technology selection to design decisions. And "the cloud" does not magically solve those problems for you. In this talk I'll discuss common performance pitfalls across the stack and talk about useful techniques and examples that every application could benefit from.
The days of a "simple" LAMP stack are behind us. We now rely on different types of technologies, applications and services to run our web based applications. With "the cloud" we have learned how to distribute our operations, but are we resilient when these cloud services are not available?
We have all heard about the major outages of Amazon and Azure in the past and many online services were impacted by those outages. So how can you protect yourself against being "offline" for hours or days and what are the tools you can use to protect yourself against it?
Learn how we protect our customers with distributed systems (cloud and on-prem) to mitigate outages and stay online even when the lights go out.
Webpack Encore Symfony Live 2017 San FranciscoRyan Weaver
Ready to write an amazing front-end for your app? There are *so* many great tools, like React, Vue.js, module loaders, Sass, LESS, PostCSS and more. But, they all have one thing in common: you need to configure a *build* system before you write a single line of code! Thankfully, there's Webpack: the leading tool for processing & bundling your JavaScript and CSS. There's just one problem: configuring Webpack is tough and requires a lot of Webpack-specific knowledge. Say hello to Webpack Encore: a library built by Symfony to quickly bootstrap a sophisticated asset setup, complete with minification, SASS processing, automatic versioning, Babel support and *everything* you need to start writing great JavaScript quickly. In this talk, we'll also learn about using JavaScript modules, how to bootstrap a framework (like React) and other important modern practices. Give your assets a huge boost with Webpack Encore!
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017Carlos Buenosvinos
Event-based architectures such as Event Sourcing provide multiple benefits: scalability, complexity management, auditing, etc. However, let’s face it, getting there is quite hard. We lack skills, expertise and courage.
In this talk, I’m going to show you some tips and tricks to painless evolve your current architecture towards Event Sourcing, one small step at a time. We’ll start from an Hexagonal Architecture application and we’ll end up in the Event Sourcing doors. The path that we’ll follow is:
Hexagonal Architecture
Hexagonal Architecture with Domain Events
Stepping Stone Architecture (CQRS without Event Sourcing)
Event Sourcing
Talk level: Intermediate to Expert
Requirements: Basic concepts of Hexagonal Architecture (Entities, Repositories, Application Services, etc.)
This presentation is an INTRODUCTION to intermediate MySQL query optimization for the Audience of PHP World 2017. It covers some of the more intricate features in a cursory overview.
Yes, you read it correctly, we are jumping from 5.7 to 8.0 (that sounds familiar, doesn't it?). The new version doesn't only change the number but also changes how you write SQL. Recursive queries will allow you to generate series and work with hierarchical data. New JSON functions and performance improvements were also added to 8.0 to help you work on non-relational data. Expect to see what is new and improved in this talk to power up your application even more.
A soup to nuts presentation on using Composer and repository servers to manage and leverage shared code libraries for personal projects to the largest enterprise.
This is a series in DevOps where we can go through the DevOps practices(Version Control-CI-CD-Agile-IaaC-monitoring-microservices-...etc) with Microsoft technologies and the edge technologies
Welcome to the wonderful world of composer,
We will see what is composer, how we can use it.
Namespacing (What, How & Why)
& Autoloading your own code using composer
Php Dependency Management with Composer ZendCon 2016Clark Everetts
A deep-dive for beginners into Composer, the dependency manager for PHP. Learn how Composer helps you obtain the components your applications depend upon, installs them into your project, and controls their update to newer versions.
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...sparkfabrik
This talk "What is the secure software supply chain and the current state of the PHP ecosystem" discusses the current state of the software supply chain, the big global recent events (SolarWinds, log4shell, codecov, packagist) and the state of the PHP and Drupal ecosystem, the threats and the mitigations that can be applied using tools like Sigstore, Syft, and Grype for digital signatures, SBOM generation, and automatic vulnerability scanning and how to use them for real-world projects to gain unprecedented levels of knowledge of your digital artifacts.
Digital Fabrication Studio.02 _Information @ Aalto Media FactoryMassimo Menichinelli
DIGITAL FABRICATION STUDIO (25438)
The course provides a general understanding on how to design and manufacture products and prototypes in a Fab Lab, using digital fabrication technologies and understanding their features and limits.
Students will learn how information shapes design, manufacturing and collaboration processes and artifacts in a Fab Lab. They will learn how to digitally fabricate a project or how to digitally modify an existing project; students will also learn how to manage, embed and retrieve information about a project. Projects and prototypes developed and manufactured in this course will not be interactive.
The course consists of lectures and a group project to be digitally fabricated, be it a project already designed but not yet realized or be it the modification of an existing project. Every lecture (3 hours) includes time for testing the technologies covered (1 hour) and for developing part of the group project and for receiving feedback about it (1 hour).
http://mlab.taik.fi/studies/courses/course?id=1963
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
Strategies for Successful Data Migration Tools.pptxvarshanayak241
Data migration is a complex but essential task for organizations aiming to modernize their IT infrastructure and leverage new technologies. By understanding common challenges and implementing these strategies, businesses can achieve a successful migration with minimal disruption. Data Migration Tool like Ask On Data play a pivotal role in this journey, offering features that streamline the process, ensure data integrity, and maintain security. With the right approach and tools, organizations can turn the challenge of data migration into an opportunity for growth and innovation.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Your Digital Assistant.
Making complex approach simple. Straightforward process saves time. No more waiting to connect with people that matter to you. Safety first is not a cliché - Securely protect information in cloud storage to prevent any third party from accessing data.
Would you rather make your visitors feel burdened by making them wait? Or choose VizMan for a stress-free experience? VizMan is an automated visitor management system that works for any industries not limited to factories, societies, government institutes, and warehouses. A new age contactless way of logging information of visitors, employees, packages, and vehicles. VizMan is a digital logbook so it deters unnecessary use of paper or space since there is no requirement of bundles of registers that is left to collect dust in a corner of a room. Visitor’s essential details, helps in scheduling meetings for visitors and employees, and assists in supervising the attendance of the employees. With VizMan, visitors don’t need to wait for hours in long queues. VizMan handles visitors with the value they deserve because we know time is important to you.
Feasible Features
One Subscription, Four Modules – Admin, Employee, Receptionist, and Gatekeeper ensures confidentiality and prevents data from being manipulated
User Friendly – can be easily used on Android, iOS, and Web Interface
Multiple Accessibility – Log in through any device from any place at any time
One app for all industries – a Visitor Management System that works for any organisation.
Stress-free Sign-up
Visitor is registered and checked-in by the Receptionist
Host gets a notification, where they opt to Approve the meeting
Host notifies the Receptionist of the end of the meeting
Visitor is checked-out by the Receptionist
Host enters notes and remarks of the meeting
Customizable Components
Scheduling Meetings – Host can invite visitors for meetings and also approve, reject and reschedule meetings
Single/Bulk invites – Invitations can be sent individually to a visitor or collectively to many visitors
VIP Visitors – Additional security of data for VIP visitors to avoid misuse of information
Courier Management – Keeps a check on deliveries like commodities being delivered in and out of establishments
Alerts & Notifications – Get notified on SMS, email, and application
Parking Management – Manage availability of parking space
Individual log-in – Every user has their own log-in id
Visitor/Meeting Analytics – Evaluate notes and remarks of the meeting stored in the system
Visitor Management System is a secure and user friendly database manager that records, filters, tracks the visitors to your organization.
"Secure Your Premises with VizMan (VMS) – Get It Now"
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
4. Christian Varela
➤ I have a wife and 3 daughters
➤ I am from Mexico
➤ Master Degree in Computer Science
➤ 13 years programming with PHP
➤ I live in Miami
➤ I created Conqueror Soft Inc
➤ I play guitar and piano
4
6. Conqueror Soft will take your business to the next Level!
6
www.conquerorsoft.com
info@conquerorsoft.com
facebook.com/conquerorsoft
7. What is this session about?
Have you found yourself wondering how to take advantage of
what you have developed in the past for current or future
projects? Are you tired of copying/pasting then adapting from
your previous projects to the new ones? Start developing for
the future and contribute to others by developing libraries and
sharing them for use. Where do you start? You’ll be guided
through this tutorial step by step to include security, tests and
all the factors you need to consider when building a library.
7
8. Library / Package
A Software Library is a collection of methods, functions, classes,
etc, that provides a particular functionality to be used or reused
partially or in whole as part of a more complex system.
It is independent enough to be integrated as a functional block or
module along with other libraries to achieve a common goal.
It can be used by multiple systems that have no connections or
relations between them.
8
10. Why should I create libraries?
1. They provide reusability
2. They can help open source
3. They are modular in functionality context
4. They are easier to maintain
10
11. Web application
A web application is an application running in the web and
that provides a solution to a particular problem.
The application can have modules, programs, configuration
files, etc, all connected and related in a way that each piece
provides a specific purpose and that all together accomplish a
common goal.
11
12. Web application
1. Served by a server
2. Requested by a user (through a browser)
3. Can interact with DBs
4. Use third party libraries
5. Use private libraries
6. Has configuration files
12
19. Composer
1. Composer is a tool for dependency management in PHP. It
allows you to declare the libraries your project depends on
and it will manage (install/update) them for you.
2. Enables you to declare the libraries you depend on.
3. Finds out which versions of which packages can and need to
be installed, and installs them
19
20. composer.json
1. This is all you need to specify dependencies
2. This file is used when creating libraries and / or projects
3. "require" key specifies which packages your project needs
4. "repositories" key specifies where to find those packages
20
21. composer.json keys (most popular)
1. name
2. description
3. type
4. keywords
5. homepage
6. authors
7. support
8. require
9. require-dev
10.suggest
11.autoload
12.autoload-dev
13.repositories
14.scripts
21
25. packagist.org
Packagist is the main Composer repository. A Composer
repository is basically a package source: a place where you can
get packages from. Packagist aims to be the central repository
that everybody uses. This means that you can
automatically require any package that is available there, without
further specifying where Composer should look for the package.
25
27. packagist.com
Private Packagist is a commercial package hosting product
offering professional support and web based management of
private and public packages, and granular access permissions.
Private Packagist provides mirroring for packages' zip files which
makes installs faster and independent from third party systems -
e.g. you can deploy even if GitHub is down because your zip files
are mirrored.
27
29. Custom repositories
The following repository types are supported:
1. composer: A Composer repository is simply a packages.json file served via the
network (HTTP, FTP, SSH), that contains a list of composer.json objects with
additional dist and/or sourceinformation. The packages.json file is loaded using a
PHP stream. You can set extra options on that stream using the options parameter.
2. vcs: The version control system repository can fetch packages from git, svn, fossil
and hg repositories.
3. pear: With this you can import any pear repository into your Composer project.
4. package: If you depend on a project that does not have any support for composer
whatsoever you can define the package inline using a package repository. You
basically just inline the composer.json object.
29
30. Platform packages
1. Required system packages
2. Not installed by composer
3. Examples:
1. php
2. php extensions (ext-gd)
3. php libraries (lib-curl)
30
31. Autoloading
1. Uses "autoload" key and PRS-4
2. vendor/autoload.php is generated by Composer
3. autoload.php is regenerated with composer dump-autoload
31
32. PSR-4
1. PHP Standard Recommendation 4
2. describes a specification for autoloading classes from file
paths. It is fully interoperable, and can be used in addition to
any other autoloading specification, including PSR-0. This
PSR also describes where to place files that will be autoloaded
according to the specification.
32
34. Versioning (when developing)
1. They can be handled manually in composer.json
2. They can be handled using a Version Control System (VCS,
this is recommended)
1. By using branches
2. By using tags (this is recommended)
3. Use a consistent versioning standard, like SemVer.org (this is
recommended)
34
35. Versioning (when installing dependencies)
1. Use constraints
1. Exact version (1.2.3)
2. Version range (>=2.0 <3.0)
3. with hyphen (1.1.0 - 1.2.0, equals to >=1.1.0 <= 1.2.0)
4. with wildcard (1.1.*, equals to >=1.1 <1.2)
5. with tilde (~1.3.1, equals to >=1.3.1 <1.4.0)
6. with caret (^0.3, equals to >=0.3 <0.4.0)
35
36. SemVer
Given a version number MAJOR.MINOR.PATCH, increment the:
1. MAJOR version when you make incompatible API changes,
2. MINOR version when you add functionality in a backwards-
compatible manner, and
3. PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as
extensions to the MAJOR.MINOR.PATCH format.
http://semver.org/
36
41. PSR-2
1. This guide extends and expands on PSR-1, the basic coding
standard.
2. The intent of this guide is to reduce cognitive friction when
scanning code from different authors. It does so by enumerating a
shared set of rules and expectations about how to format PHP code.
3. it helps to have one set of guidelines to be used among all those
projects.
4. There are tools to help to comply with this (php code sniffer is
recommended)
41http://www.php-fig.org/psr/psr-2/
42. PHP Code Sniffer
PHP_CodeSniffer is a set of two PHP scripts; the
main phpcs script that tokenizes PHP, JavaScript and CSS files to
detect violations of a defined coding standard, and a
second phpcbf script to automatically correct coding standard
violations. PHP_CodeSniffer is an essential development tool
that ensures your code remains clean and consistent.
42
44. Changelog
1. it is a file which contains a curated, chronologically ordered
list of notable changes for each version of a project.
2. it makes it easier for users and contributors to see precisely
what notable changes have been made between each release
(or version) of the project.
44
45. Changelog rules
1. There should be an entry for every single version.
2. Same types of changes should be grouped
3. Versions and sections should be linkable
4. The latest version comes first
5. The release date of each versions is displayed
6. SemVer as versioning (recommended)
45
46. Changelog changes
1. Added for new features.
2. Changed for changes in existing functionality.
3. Deprecated for soon-to-be removed features.
4. Removed for now removed features.
5. Fixed for any bug fixes.
6. Security in case of vulnerabilities.
46
48. Travis CI prerequisites
1. GitHub login
2. Project hosted as a repository on GitHub
3. Working code in your project
4. Working build or test script
5. Travis CI .org for public repositories
6. Travis CI .com for private repositories
48
49. Travis CI
1. Sign in to Travis using GitHub account
2. Activate GitHub repositories
3. Add a .travis.yml file
4. Add the .travis.yml file to git, commit and push, to trigger a
Travis CI build
5. Check the build status page to see if your build passes or fails
6. Github will have the service in the web hooks settings.
49
50. Scrutinizer CI
1. Sign in to Scrutinizer using GitHub account
2. Activate GitHub repositories
3. Add a .scrutinizer.yml file
4. Add the .scrutinizer.yml file to git, commit and push, to
trigger a Scrutinizer CI build
5. Check the build status page to see code quality and coverage
6. Github will have the service in the web hooks settings.
50
90. Exercise 3
28.commit to git
git add .
git commit -m "Travis CI integration"
git tag -a v0.1.6 -m "version 0.1.6"
git push -u origin master
git push origin v0.1.6
29. make sure version for phpunit is ^5.7 in composer.json to
support php 5.6
90
91. Exercise 3
30.commit to git
git add .
git commit -m "Phpunit version changed to support php version
5.6"
git tag -a v0.1.7 -m "version 0.1.7"
git push -u origin master
git push origin v0.1.7
91
108. Exercise 3
37.commit to git
git add .
git commit -m "Scrutinizer CI and badges in README"
git tag -a v0.1.9 -m "version 0.1.9"
git push -u origin master
git push origin v0.1.9
38.Make sure there are no type hinting for PHP 7.0 only
108
114. Exercise 3
44.commit to git
git add .
git commit -m "Improvements to README"
git tag -a v0.1.12 -m "version 0.1.12"
git push -u origin master
git push origin v0.1.12
45.Add .gitattributes file to ignore some files or folders when --
prefer-dist is used
114
116. Exercise 3
47.create an account in packagist.org and submit your library using your github
repository
48.Make your package in packagist to be autoupdated on push
49.Add last version in packagist badge to README.md file
[![Latest Version on Packagist][ico-version]][link-packagist]
[ico-version]: https://img.shields.io/packagist/v/conquerorsoft/
my_first_library.svg?style=flat
[link-packagist]: https://packagist.org/packages/conquerorsoft/my_first_library
116
133. Exercise 4
1. cd ~ && mkdir -p phplibrary/my_first_project && cd
phplibrary/my_first_project
2. create a README.md file
133
134. README.md
1 # My First Project #
2
3 This is my very first project I created at php[world].
134
135. Exercise 4
3. git init
4. commit to git
git add .
git commit -m "First commit of my project"
5. Assign a version to your project
git tag -a v0.1.0 -m "version 0.1.0"
6. Create a repository in GitHub
135
136. Exercise 4
7. connect your repository
git remote add origin https://github.com/ConquerorSoft/
my_first_project.git
git push -u origin master
git push origin v0.1.0
8. composer init
9. Provide the next values
136
137. Exercise 4 values for composer.json
1. name: php_library_right_way/my_first_project
2. description: "Project created with composer init"
3. require: php ^5.6 || ^7.0
4. require-dev:
1. phpunit/phpunit latest ^5.7
2. squizlabs/php_codesniffer 3.*
5. type: project
6. License: MIT
7. Author: your name and email
8. Others: leave default
137
147. Exercise 4
21.Add a LICENSE.md file (for this example we chose MIT click
link)
22.Create tests/FirstProjectClassTest.php
23.Create src/FirstProjectClass.php
24.Add the next sections to composer.json
147
154. Exercise 4
28.commit to git
git add .
git commit -m "Travis CI integration"
git tag -a v0.1.5 -m "version 0.1.5"
git push -u origin master
git push origin v0.1.5
29.Change composer.json to use github repository instead of file
system local folder
154
160. Exercise 4
36.commit to git
git add .
git commit -m "Scrutinizer support added"
git tag -a v0.1.8 -m "version 0.1.8"
git push -u origin master
git push origin v0.1.8
37.change composer.json to require version ^1.0.0 for my_first_library
38.composer update
160
161. Exercise 4
39.commit to git
git add .
git commit -m "Using version ^1.0 from my_first_library"
git tag -a v0.1.9 -m "version 0.1.9"
git push -u origin master
git push origin v0.1.9
40.Create contributing files: CONTRIBUTING.md and
CODE_OF_CONDUCT.md
161
162. Exercise 4
41.Add more sections to README
1. Install
2. Change log
3. Testing
42.commit to git
git add .
git commit -m "Improvements to README"
git tag -a v0.1.10 -m "version 0.1.10"
git push -u origin master
git push origin v0.1.10
162
163. Exercise 4
43.submit the package to packagist.org using the github repository
44.Make the package to be autoupdated in packagist on push
1. Go to your GitHub repository
2. Click the "Settings" button
3. Click "Integrations & services"
4. Add a "Packagist" service, and configure it with your API
token, plus your Packagist username
5. Check the "Active" box and submit the form
163
169. Exercise 4
45.Add last version in packagist badge to README.md file
[![Latest Version on Packagist][ico-version]][link-packagist]
[ico-version]: https://img.shields.io/packagist/v/conquerorsoft/
my_first_project.svg?style=flat
[link-packagist]: https://packagist.org/packages/conquerorsoft/
my_first_project
169
170. Exercise 4
46.commit to git
git add .
git commit -m "Instructions to use packagist.org in README"
git tag -a v0.1.11 -m "version 0.1.11"
git push -u origin master
git push origin v0.1.11
170
171. Exercise 4
47.create a gh-pages branch
git checkout -b gh-pages
git push -u origin gh-pages
git checkout master
48.Go to github settings for your repository
49.Choose a theme in GitHub Pages section
50.Your project page is ready now: https://
conquerorsoft.github.io/my_first_project/
171