Markdown is one of the most popular markup languages on the Web. Unfortunately, with no standard specification, every implementation works differently, producing varying results across different platforms. The CommonMark specification fixes this by providing an unambiguous syntax specification and a comprehensive suite of tests. Attendees will learn about this standard and how to integrate the league/commonmark parser into their applications. We will also cover how to add new syntax and other features to the parser to fit your custom needs.
CommonMark: Markdown Done Right - ZendCon 2017Colin O'Dell
Markdown is one of the most popular markup languages on the web. Unfortunately, with no standard specification, every implementation works differently, producing varying results across different platforms. The CommonMark specification fixes this by providing an unambiguous syntax specification and a comprehensive suite of tests. In this session you'll learn about this standard and how to integrate the league/commonmark parser into their PHP applications. We'll also cover how to customize the library to implement new features like custom Markdown syntax or advanced renderers.
The document provides an introduction to PHP, covering its history and uses. It describes how PHP is a server-side scripting language that allows developers to quickly build dynamic web applications. PHP can interact with databases, perform calculations, handle files and images, and more. The document also discusses PHP variables, data types, strings, arrays, and basic syntax like comments and tags.
Real use cases of performance optimization in magento 2Max Pronko
Is performance in Magento 2 the same as or slower than Magento 1? There are lots of discussions and debates about Magento 2’s performance. All debates are around sample data and Vanilla platform comparison. In this topic Max will share optimisations techniques to have solid page load times for Magento 2.
Also visit my blog: www.maxpronko.com
Setting up the Red5 environment, building sample applications and integrating with flash. We will look at how Red5 works within the flash IDE and build a sample chat application, video streaming, and multi-user environment.
Here are the 4 main ways to define routes in Symfony:
1. Annotations: Put routing information directly in controllers as annotations.
2. YAML configuration: Define routes in the routing.yml configuration file.
3. XML configuration: Define routes in the routing.xml configuration file.
4. PHP configuration: Define routes by creating and returning RouteCollection instances from routing.php files.
The YAML configuration method is most commonly used. It keeps routing separated from code and allows defining multiple routes in one centralized configuration file for better organization. Annotations can also be useful for simple applications. XML is not used much. And PHP configuration is only needed if routes need to be dynamically generated.
Key Insights into Development Design Patterns for Magento 2 - Magento Live UKMax Pronko
I have had a chance to speak at Magento Live UK 2016 with topic "Key Insights into Development Design Patterns for Magento 2". Feel free to share, comment, provide feedback.
In the deck i highlight Development Design Patterns used in Magento 2. I also speak about Aspect Oriented Programming and how it affected Magento 2 implementation.
More about Magento 2 read at my blog: https://www.maxpronko.com/
This document summarizes a presentation on TAL (Template Attribute Language) given at the Plone Symposium East 2011. TAL allows adding dynamic content to HTML templates and includes tags for content, attributes, conditions, repetition and macros. It also describes common TAL syntax like tal:define, tal:content, tal:attributes and using Python expressions for conditions.
This document provides an overview of how to create and customize a Plone theme. It discusses using paster templates to create a theme, installing the theme, changing the logo, applying custom stylesheets, overriding viewlets and portlets, editing action providers, and common issues that can occur when customizing themes.
CommonMark: Markdown Done Right - ZendCon 2017Colin O'Dell
Markdown is one of the most popular markup languages on the web. Unfortunately, with no standard specification, every implementation works differently, producing varying results across different platforms. The CommonMark specification fixes this by providing an unambiguous syntax specification and a comprehensive suite of tests. In this session you'll learn about this standard and how to integrate the league/commonmark parser into their PHP applications. We'll also cover how to customize the library to implement new features like custom Markdown syntax or advanced renderers.
The document provides an introduction to PHP, covering its history and uses. It describes how PHP is a server-side scripting language that allows developers to quickly build dynamic web applications. PHP can interact with databases, perform calculations, handle files and images, and more. The document also discusses PHP variables, data types, strings, arrays, and basic syntax like comments and tags.
Real use cases of performance optimization in magento 2Max Pronko
Is performance in Magento 2 the same as or slower than Magento 1? There are lots of discussions and debates about Magento 2’s performance. All debates are around sample data and Vanilla platform comparison. In this topic Max will share optimisations techniques to have solid page load times for Magento 2.
Also visit my blog: www.maxpronko.com
Setting up the Red5 environment, building sample applications and integrating with flash. We will look at how Red5 works within the flash IDE and build a sample chat application, video streaming, and multi-user environment.
Here are the 4 main ways to define routes in Symfony:
1. Annotations: Put routing information directly in controllers as annotations.
2. YAML configuration: Define routes in the routing.yml configuration file.
3. XML configuration: Define routes in the routing.xml configuration file.
4. PHP configuration: Define routes by creating and returning RouteCollection instances from routing.php files.
The YAML configuration method is most commonly used. It keeps routing separated from code and allows defining multiple routes in one centralized configuration file for better organization. Annotations can also be useful for simple applications. XML is not used much. And PHP configuration is only needed if routes need to be dynamically generated.
Key Insights into Development Design Patterns for Magento 2 - Magento Live UKMax Pronko
I have had a chance to speak at Magento Live UK 2016 with topic "Key Insights into Development Design Patterns for Magento 2". Feel free to share, comment, provide feedback.
In the deck i highlight Development Design Patterns used in Magento 2. I also speak about Aspect Oriented Programming and how it affected Magento 2 implementation.
More about Magento 2 read at my blog: https://www.maxpronko.com/
This document summarizes a presentation on TAL (Template Attribute Language) given at the Plone Symposium East 2011. TAL allows adding dynamic content to HTML templates and includes tags for content, attributes, conditions, repetition and macros. It also describes common TAL syntax like tal:define, tal:content, tal:attributes and using Python expressions for conditions.
This document provides an overview of how to create and customize a Plone theme. It discusses using paster templates to create a theme, installing the theme, changing the logo, applying custom stylesheets, overriding viewlets and portlets, editing action providers, and common issues that can occur when customizing themes.
The document provides an agenda and instructions for learning to use MultiMarkdown to generate books from Markdown files. The exercises cover setting up the MultiMarkdown and LaTeX environment in Windows, generating a sample book PDF, adding new chapters, using Markdown syntax features, adding LaTeX elements like headers and footers, and inserting tables. References for further reading on Markdown, MultiMarkdown, LaTeX and related tools are also included.
Unit Testing einer Zend-Framework 2 AnwendungRalf Eggert
Qualitätssicherung mit Unit Tests ist aus modernen Webanwendungen nicht mehr wegzudenken. Erfahren Sie in dieser Session, wie Sie mithilfe von PHPUnit eine Testumgebung aufbauen und erste sinnvolle Tests für Ihre Zend-Framework-2-Anwendung erstellen und laufend aktuell halten. Lernen Sie das Testen von Controllern, Aktionen, Formularen, Models usw. Mit einem Einblick in die testgetriebene Entwicklung!
Markdown vs. WYSIWYG - Stop using the web like a word document Zensations GmbH
This document compares Markdown and WYSIWYG editors. Markdown uses simple plain text formatting for writing web content while WYSIWYG is better for printable documents. WYSIWYG editors often have issues with image positioning, breaks, and design control. Markdown provides consistent markup across devices and allows for semantic, accessible content creation even when multiple people are working together. The document encourages learning more about Markdown.
markedj: The best of markdown processor on JVMtakezoe
This document discusses selecting a markdown parser for a Scala-based GitHub clone called GitBucket. It evaluates several Java-based markdown parsers but finds them lacking support for features like GitHub Flavored Markdown tables and fences. It describes initially trying to port the JavaScript markdown parser marked.js to Scala but facing issues with its use of regular expressions and mutability. The document then explains the decision to port marked.js to Java instead, resulting in the new markdown parser markedj, which supports GFM and has a simple API. GitBucket plans to switch to using markedj starting in its next version.
A brief introductory tutorial on Markdown. Markdown is a plain text format for writing structured documents, based on conventions used for indicating formatting in email and usenet posts. It is a light weight and easy to use syntax for styling.
With the ever increasing size of data and complexity of methods required to analyze them, the reproducibility of results is necessary to ensure a high quality of scientific research. In this workshop, we will discuss the main concepts and motivations for reproducible research (RR). Mr. Bhatnagar will then introduce useful tools for RR, including RStudio, knitr, and Markdown. We will work through several examples to see how these tools can be used to perform efficiently common tasks such as writing reports, Beamer presentations, running simulations, repetitive function calls that require single or multiple inputs to be changed, and sharing results. Basic knowledge of R and LaTeX is assumed.
The document discusses using Markdown as a simple tool for writing documents and maintaining research projects. Markdown provides benefits over other document tools like Microsoft Word by being simpler, easier to collaborate on, and better for version control. It also helps with reproducible research by making data, code, and content easily shareable. While Markdown lacks some advanced formatting options, its flexibility allows it to cover most documentation needs with less complexity compared to other tools.
Cherryleaf’s Ellis Pratt will be speaking at Lavacon’s first European conference. This will be held on 5-8 June, at the Trinity College Conference Centre, Dublin. Ellis’ presentation will be on the 7th June 2016
How to make keynote like presentation with markdownHiroaki NAKADA
This document discusses using Markdown and Pandoc to create presentations like those made in Keynote. Markdown files can be converted to PDF presentations using Pandoc, avoiding issues with other presentation software. Code blocks can be customized using listings. The example shows how to install Pandoc, convert a Markdown file to a PDF presentation using a Keynote-like theme, and modify code block formatting.
In meinem Job als Werbetexter in einer Kommunikationsagentur kommt Markdown als universelle Syntax auf drei verschiedene Arten zum Einsatz. Diese Präsentation zeigt exemplarisch, auf welche Art und Weise das geschieht.
The document discusses various web application attacks like cross-site scripting, SQL injection, cross-site request forgery, sensitive data exposure, and cookie editing. For each attack, it provides information on threat agents, attack vectors, security weaknesses, impacts, prevalence, detectability, example exploits, and steps to prevent the attack. The overall document serves as an educational guide on common web hacking techniques and how to avoid falling victim to them.
MultiMarkdown is a derivative of Markdown that adds additional formatting features like footnotes, tables, citations, and math support. It allows a document written in Markdown syntax to be converted into multiple formats like HTML, LaTeX, and OpenDocument. This allows the content to be separated from formatting, so the same document can be used to create articles, books, or presentations without needing to know specific formatting commands. MultiMarkdown aims to make formatting plain text into different final document formats as easy as possible.
Markdown is a lightweight markup language with plain text formatting syntax, designed to be converted to HTML and many other formats using a tool by the same name.
I made this conference for my teammates at [Optimyzet](http://www.optimyzet.com/) –most of them designers– to help them write quick notes in a different way.
Just watch my slides if you want to become a Markdown wizard in 10 minutes.
Reveal.js is an HTML presentation framework that allows users to create beautiful presentations using HTML. It has features like vertical slides, nested slides, Markdown support, different transition styles, themes, slide backgrounds, images, video, tables, quotes, and linking between slides. Presentations can be exported to PDF and custom states and events can be triggered on each slide. The framework is touch optimized and works on devices like mobile phones and tablets.
26 Disruptive & Technology Trends 2016 - 2018Brian Solis
Introducing the “26 Disruptive Technology Trends for 2016 – 2018.” In this report, we’ll explore some of the disruptive trends that are affecting pretty much everything over the next few years at least those that I’m following. It’s not just tech, though. The report is organized by socioeconomic and technological impact.
Obviously, this is not an exhaustive list of every technology and societal trend bringing about disruption on planet Earth. What follows thought definitely affects the evolution of digital Darwinism, the evolution of society and technology and its impact on behavior, expectations and customs.
Markdown is one of the most popular markup languages on the Web. Unfortunately, with no standard specification, every implementation works differently, producing varying results across different platforms. The CommonMark specification fixes this by providing an unambiguous syntax specification and a comprehensive suite of tests. Attendees will learn about this standard and how to integrate the league/commonmark parser into their applications. We will also cover how to add new custom features.
league/commonmark is a well-written, super-configurable Markdown parser for PHP based on the CommonMark spec. In this lightning talk, we'll introduce the CommonMark spec, discuss why it's important, and demonstrate how the league/commonmark project can be used and extended for your own PHP projects
- Mojolicious is a web development framework for Perl that aims to rethink web development
- It provides a powerful routing system, full HTTP implementation, simple templating, built-in JSON support, elegant plugin system, and class reloader
- Installation is simple using CPAN and has no dependencies beyond Perl 5.8.1
- It includes classes for requests, responses, templates, JSON encoding/decoding, and more
- Plugins can hook into various stages of the request lifecycle
- Supports generating applications, running commands, and provides a simple but powerful way to build web applications and services in Perl
The document provides an agenda and instructions for learning to use MultiMarkdown to generate books from Markdown files. The exercises cover setting up the MultiMarkdown and LaTeX environment in Windows, generating a sample book PDF, adding new chapters, using Markdown syntax features, adding LaTeX elements like headers and footers, and inserting tables. References for further reading on Markdown, MultiMarkdown, LaTeX and related tools are also included.
Unit Testing einer Zend-Framework 2 AnwendungRalf Eggert
Qualitätssicherung mit Unit Tests ist aus modernen Webanwendungen nicht mehr wegzudenken. Erfahren Sie in dieser Session, wie Sie mithilfe von PHPUnit eine Testumgebung aufbauen und erste sinnvolle Tests für Ihre Zend-Framework-2-Anwendung erstellen und laufend aktuell halten. Lernen Sie das Testen von Controllern, Aktionen, Formularen, Models usw. Mit einem Einblick in die testgetriebene Entwicklung!
Markdown vs. WYSIWYG - Stop using the web like a word document Zensations GmbH
This document compares Markdown and WYSIWYG editors. Markdown uses simple plain text formatting for writing web content while WYSIWYG is better for printable documents. WYSIWYG editors often have issues with image positioning, breaks, and design control. Markdown provides consistent markup across devices and allows for semantic, accessible content creation even when multiple people are working together. The document encourages learning more about Markdown.
markedj: The best of markdown processor on JVMtakezoe
This document discusses selecting a markdown parser for a Scala-based GitHub clone called GitBucket. It evaluates several Java-based markdown parsers but finds them lacking support for features like GitHub Flavored Markdown tables and fences. It describes initially trying to port the JavaScript markdown parser marked.js to Scala but facing issues with its use of regular expressions and mutability. The document then explains the decision to port marked.js to Java instead, resulting in the new markdown parser markedj, which supports GFM and has a simple API. GitBucket plans to switch to using markedj starting in its next version.
A brief introductory tutorial on Markdown. Markdown is a plain text format for writing structured documents, based on conventions used for indicating formatting in email and usenet posts. It is a light weight and easy to use syntax for styling.
With the ever increasing size of data and complexity of methods required to analyze them, the reproducibility of results is necessary to ensure a high quality of scientific research. In this workshop, we will discuss the main concepts and motivations for reproducible research (RR). Mr. Bhatnagar will then introduce useful tools for RR, including RStudio, knitr, and Markdown. We will work through several examples to see how these tools can be used to perform efficiently common tasks such as writing reports, Beamer presentations, running simulations, repetitive function calls that require single or multiple inputs to be changed, and sharing results. Basic knowledge of R and LaTeX is assumed.
The document discusses using Markdown as a simple tool for writing documents and maintaining research projects. Markdown provides benefits over other document tools like Microsoft Word by being simpler, easier to collaborate on, and better for version control. It also helps with reproducible research by making data, code, and content easily shareable. While Markdown lacks some advanced formatting options, its flexibility allows it to cover most documentation needs with less complexity compared to other tools.
Cherryleaf’s Ellis Pratt will be speaking at Lavacon’s first European conference. This will be held on 5-8 June, at the Trinity College Conference Centre, Dublin. Ellis’ presentation will be on the 7th June 2016
How to make keynote like presentation with markdownHiroaki NAKADA
This document discusses using Markdown and Pandoc to create presentations like those made in Keynote. Markdown files can be converted to PDF presentations using Pandoc, avoiding issues with other presentation software. Code blocks can be customized using listings. The example shows how to install Pandoc, convert a Markdown file to a PDF presentation using a Keynote-like theme, and modify code block formatting.
In meinem Job als Werbetexter in einer Kommunikationsagentur kommt Markdown als universelle Syntax auf drei verschiedene Arten zum Einsatz. Diese Präsentation zeigt exemplarisch, auf welche Art und Weise das geschieht.
The document discusses various web application attacks like cross-site scripting, SQL injection, cross-site request forgery, sensitive data exposure, and cookie editing. For each attack, it provides information on threat agents, attack vectors, security weaknesses, impacts, prevalence, detectability, example exploits, and steps to prevent the attack. The overall document serves as an educational guide on common web hacking techniques and how to avoid falling victim to them.
MultiMarkdown is a derivative of Markdown that adds additional formatting features like footnotes, tables, citations, and math support. It allows a document written in Markdown syntax to be converted into multiple formats like HTML, LaTeX, and OpenDocument. This allows the content to be separated from formatting, so the same document can be used to create articles, books, or presentations without needing to know specific formatting commands. MultiMarkdown aims to make formatting plain text into different final document formats as easy as possible.
Markdown is a lightweight markup language with plain text formatting syntax, designed to be converted to HTML and many other formats using a tool by the same name.
I made this conference for my teammates at [Optimyzet](http://www.optimyzet.com/) –most of them designers– to help them write quick notes in a different way.
Just watch my slides if you want to become a Markdown wizard in 10 minutes.
Reveal.js is an HTML presentation framework that allows users to create beautiful presentations using HTML. It has features like vertical slides, nested slides, Markdown support, different transition styles, themes, slide backgrounds, images, video, tables, quotes, and linking between slides. Presentations can be exported to PDF and custom states and events can be triggered on each slide. The framework is touch optimized and works on devices like mobile phones and tablets.
26 Disruptive & Technology Trends 2016 - 2018Brian Solis
Introducing the “26 Disruptive Technology Trends for 2016 – 2018.” In this report, we’ll explore some of the disruptive trends that are affecting pretty much everything over the next few years at least those that I’m following. It’s not just tech, though. The report is organized by socioeconomic and technological impact.
Obviously, this is not an exhaustive list of every technology and societal trend bringing about disruption on planet Earth. What follows thought definitely affects the evolution of digital Darwinism, the evolution of society and technology and its impact on behavior, expectations and customs.
Markdown is one of the most popular markup languages on the Web. Unfortunately, with no standard specification, every implementation works differently, producing varying results across different platforms. The CommonMark specification fixes this by providing an unambiguous syntax specification and a comprehensive suite of tests. Attendees will learn about this standard and how to integrate the league/commonmark parser into their applications. We will also cover how to add new custom features.
league/commonmark is a well-written, super-configurable Markdown parser for PHP based on the CommonMark spec. In this lightning talk, we'll introduce the CommonMark spec, discuss why it's important, and demonstrate how the league/commonmark project can be used and extended for your own PHP projects
- Mojolicious is a web development framework for Perl that aims to rethink web development
- It provides a powerful routing system, full HTTP implementation, simple templating, built-in JSON support, elegant plugin system, and class reloader
- Installation is simple using CPAN and has no dependencies beyond Perl 5.8.1
- It includes classes for requests, responses, templates, JSON encoding/decoding, and more
- Plugins can hook into various stages of the request lifecycle
- Supports generating applications, running commands, and provides a simple but powerful way to build web applications and services in Perl
This talk is about how my company took a broken e-commerce and LMS site written in an older style MVC framework and re-wrote a significant portion of it in Symfony and related tools (Doctrine, FOS Bundles, Sonata) over 6 months and created a stable, well-tested application.
This document provides an overview of different frameworks for adding custom fields or metadata to posts in WordPress, including Advanced Custom Fields (ACF), MetaBox.io, Custom Metaboxes 2 (CMB2), and Fieldmanager. It compares the pros and cons of each framework and how to extend their functionality, helping readers choose the best solution for their needs and coding level.
There are a number of ways to add custom meta boxes to WordPress admin, from coding against core functions through code API frameworks to GUI interfaces. All of these have a place, but which is the right one for your project, code style and coding level? In this talk I will provide code examples and illustrations of the code techniques for each of the methods.
Time permitting, I will also show you how to extend the frameworks.
Aimed at all levels of developer because of the range of options covered.
Speed up your developments with Symfony2Hugo Hamon
Symfony2 is a PHP full-stack framework that provides tools and components to speed up web development. It emphasizes separation of concerns, standards compliance, and best practices. Symfony2 allows developers to create Request-Response applications using its routing, templating, validation, forms, database abstraction, and other features in a decoupled and reusable way. It also provides debugging tools, code generators, and other utilities to improve developer productivity.
This document discusses using Symfony2 as a web framework for developers familiar with Midgard. It notes that Symfony2 is becoming the standard PHP framework and can integrate Midgard components. It provides instructions for setting up a Symfony2 project, integrating Midgard databases and queries, and using MidCOM components with some compatibility work. Examples are given for routing, controllers, templates, and interacting with Midgard.
Marcus works at Nordaaker Consulting but they are moving south in January. He demonstrates how to use Mojolicious to make HTTP requests and parse the response using Mojo::DOM. Mojolicious is a full-stack web framework for Perl 5 that provides a modular architecture and aims to have minimal dependencies.
In late december 2008 the Eclipse Foundation and the PDT developer team released the Eclipse PHP Development Platform version 2.0. This release comes with a number of enhancements and improvements to the prior version of PDT.
This talk is about these changes. It also gives you an introduction how to prepare your Eclipse PDT workspace to be an accessible and provding companion for your daily work by integrating xDebug, subversive and phpDocumentor using the external tools platform.
Everyone talks about raising the bar on quality of code, but it's always hard to start implementing it when you have no clue where to start. With this talk I'm showing that there are many levels developers can improve themselves by using the right tools.
* Syntax checking with PHPLint (php -l)
* Validating code with PHP_CodeSniffer
* Testing code with PHPUnit
* Debugging code with XDebug
* Documenting code with PHPDocumentator
* Building with Phing
* Packaging with Phar
Jamie Winsor and a team of engineers created Berkshelf to help take the sting out of Chef’s learning curve. After encountering numerous challenges while developing Chef cookbooks, Jamie was inspired to create a tool based on criteria that’d be important for a developer’s productivity. Berkshelf, like Rebar, Go, or Mix, is a source code management tool.
Building Single Page Application (SPA) with Symfony2 and AngularJSAntonio Peric-Mazar
Forget about classic website where UX is not so important. We are living in time where usability is one of the important thing if you are building some business client oriented web service. How to connect Symfony2 as backend and AngularJS as frontend solution? What are best practices? What are disadvantageous? How to take best from both worlds? These are topics I will cover in my talk with real examples.
This document discusses using the Eclipse IDE with PHP development. It covers installing Eclipse PDT, configuring views and perspectives, managing PHP projects, using code templates and completion, integrating xDebug for debugging, and several useful plugins like Subclipse for SVN integration. The presentation provides an overview of key PHP development features in Eclipse.
This is a talk I gave at IPC 2014 in Munich.
It's about how to build durable web apis based on the experience gained at Namshi while we were developing our SOA architecture
The document discusses what a Makefile is and why it is useful to use one. A Makefile defines dependencies between source files and specifies the build process or commands that are executed to build targets. It allows automating compiling and building projects by running make commands. Key benefits mentioned are that it saves time and makes the build process easier by handling dependencies and only rebuilding what is necessary.
TokuDB, Spider, and CONNECT are storage engines that provide additional functionality beyond InnoDB in MariaDB. TokuDB offers improved performance through fractal tree indexing and compression. Spider provides horizontal partitioning and sharding across multiple database servers. CONNECT enables querying of external data sources like files, ODBC, XML, and JSON without needing to import the data.
The document discusses various PHP power tools that can be used to improve code quality, including syntax checkers (PHPLint), documentation generators (PHPDocumentor), coding standard checkers (PHP_CodeSniffer), copy/paste detectors (PHPCPD), and dependency/complexity analyzers (PDepend, PHPMD). It also presents Phing, an automation tool that can integrate these tools into a single automated build process, and demonstrates running Phing targets to generate reports from tools like PHP_CodeSniffer, PDepend, and PHPMD. The presentation emphasizes that using these tools can help produce cleaner, more consistent code and improve knowledge of a codebase.
The document discusses the author's experience migrating from PHP 4 to PHP 5. It describes several issues encountered with DOM, MySQL and other aspects not working correctly in PHP 5. However, it notes that PHP 5 has many improvements such as object oriented programming support and new extensions that enhance functionality. The conclusion is that while some aspects of PHP 5 did not work as expected initially, it has many advantages over PHP 4 and is beneficial to use.
Similar to CommonMark: Markdown done right - Nomad PHP September 2016 (20)
ASCII is so 1963. Nowadays, computers must support a broad range of different characters beyond the 128 we had in the early days of computing - not just accents and emojis but also completely different writing systems used around the globe. The Unicode standard packs a whopping 143,859 characters into an elegant system used by over 95% of the Internet, but PHP's string functions don't play nicely with Unicode by default, making it difficult for developers to properly handle such a wide array of possible user inputs.
In this talk, we'll explore why Unicode is important, how the various encodings like UTF-8 work under-the-hood, how to handle them within PHP, and some nifty tricks and shortcuts to preserve performance.
Releasing High Quality Packages - Longhorn PHP 2021Colin O'Dell
The document provides guidance on creating and maintaining high-quality PHP packages. It discusses defining quality standards, project structure, testing, documentation, releasing packages, and ongoing maintenance. Key aspects include using semantic versioning, writing automated tests, generating documentation, following best practices for code quality, and being responsive to issues and pull requests. The goal is to create packages that are easily installed, well-maintained, and meet community standards.
Releasing High Quality PHP Packages - ConFoo Montreal 2019Colin O'Dell
Releasing open-source libraries is more than sharing your Github URL with the world. There are many considerations and steps involved especially for successful and long-lived projects.
In this talk we’ll cover the principles behind creating, releasing and maintaining high-quality libraries. Topics will include structuring the repository, implementing modern PHP standards, maintaining changelogs, using CI tests, releasing new versions and more.
Debugging Effectively - ConFoo Montreal 2019Colin O'Dell
Software bugs are inevitable; some are especially difficult to track down causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! Fatigue and wasted time can be avoided with strategies and techniques to break through those mental barriers. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively
Automating Deployments with Deployer - php[world] 2018Colin O'Dell
Have you ever botched a deployment and taken a site offline? I have - more times then I'd like to admit. What if we could completely automate the deployment process, make it lightning fast, remove most of the risk, and do it all without custom bash scripts? Better yet, what if we could use the same exact deployment process locally or trigger it via CI? All of this is possible with Deployer - a PHP-based deployment tool which supports virtually every CMS and framework! Attendees will learn the basics of Deployer, how to customize deployments to fit their needs, and how to handle situations if things go wrong.
Releasing open-source libraries involves much more than sharing your Github URL with the world. There are many considerations and steps involved, especially if you want your project to be successful and long-lived. In this talk, we'll cover the principles behind creating, releasing, and maintaining high-quality libraries. Topics will include structuring the repository, implementing modern PHP standards, maintaining changelogs, using CI tests, releasing new versions, and other best practices. Attendees will walk away with enough knowledge to publish their own quality PHP packages on Packagist for others to use.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests.
Rise of the Machines: PHP and IoT - ZendCon 2017Colin O'Dell
The Internet of Things (IoT) is fundamentally changing how we interact with the digital world. In this session we’ll explore the implementation of real examples which bridge the gap between the physical and digital world using PHP: asking Alexa for information within a PHP application; displaying API data on an Arduino-powered display; using PHP to control LEDs on a Raspberry Pi to monitor application uptime; and connecting IR sensors to Slack to see whether a conference room is in use.
Debugging Effectively - All Things Open 2017Colin O'Dell
The document discusses debugging effectively. It begins with an overview of the importance of debugging and the debugging process. It then covers specific debugging tools and techniques, including using an integrated development environment (IDE) and interactive debugger. It outlines a systematic debugging approach and provides tips for junior developers. Specific techniques like tracing code backwards and forwards are presented. The importance of gathering information, replicating issues, and ruling out assumptions is emphasized.
Hacking Your Way To Better Security - DrupalCon Baltimore 2017Colin O'Dell
This talk educates junior and mid-level developers on common security vulnerabilities, how they are exploited, and how to protect against them. We'll explore several of the OWASP Top 10 attack vectors like SQL injection, XSS, CSRF, and others. Each topic will be approached from the perspective of an attacker to see how these vulnerabilities are detected and exploited using several realistic examples. We'll then apply this knowledge to see how web applications can be secured against such vulnerabilities.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Automating Your Workflow with Gulp.js - php[world] 2016Colin O'Dell
Gulp is a powerful utility for automating development workflows. Tasks are written using code, not configuration, enabling the easy creation of highly-custom and flexible automations. This talk introduces developers to the core concepts of gulp.js, and how to leverage it for new & existing projects. We’ll cover several examples of common tasks for managing CSS, JS and PHP, including: compiling Sass, minifying files, running PHP tests, checking code styles, ensuring legacy browser support & more.
Rise of the Machines: PHP and IoT - php[world] 2016Colin O'Dell
The Internet of Things (IoT) is fundamentally changing how we interact with the digital world. In this talk, we’ll explore the implementation of live examples which bridge the gap between the physical and digital world using PHP: asking Alexa for information on php[world] conference sessions; displaying API data on an Arduino-powered display; using PHP to control LEDs on a Raspberry Pi to monitor application uptime; and connecting IR sensors to Slack to see whether a conference room is in use.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most appropriate tool, taking a logical and objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Hacking Your Way to Better Security - ZendCon 2016Colin O'Dell
This document discusses various web application security vulnerabilities like SQL injection and cross-site scripting (XSS) from the perspective of an attacker. It begins by introducing SQL injection and demonstrates how it can be used to extract hidden data like usernames and credit card numbers. It then covers XSS and how malicious scripts can be injected onto a page to hijack user sessions. Finally, it discusses ways to protect against these vulnerabilities like input filtering, output encoding, and prepared statements. The overall goal is to help understand common attacks and how to build more secure applications.
Hacking Your Way to Better Security - PHP South Africa 2016Colin O'Dell
This talk educates developers on common security vulnerabilities, how they are exploited, and how to protect against them. We'll explore several of the OWASP Top 10 attack vectors like SQL injection, XSS, CSRF, and more. Each topic will be approached from the perspective of an attacker to see how these vulnerabilities are detected and exploited using several realistic examples. We'll then apply this knowledge to see how web applications can be secured against such vulnerabilities.
Debugging Effectively - DrupalCon Europe 2016Colin O'Dell
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Debugging Effectively - Frederick Web Tech 9/6/16Colin O'Dell
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Software bugs are inevitable; some are especially difficult to track down, causing you to waste countless hours before throwing your hands up in defeat. It doesn't have to be this way! The mental fatigue and wasted time can be avoided by using strategies like identifying the most-appropriate tool, taking a logical & objective approach, challenging assumptions, listening to variables, isolating the code path, and reinforcing code with automated tests. Attendees will learn how to combine these techniques with the right mindset and attitude in order to debug their code quickly and effectively.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
2. COLIN O’DELL
Creator & Maintainer of league/commonmark
Lead Web Developer at Unleashed Technologies
Author of PHP 7 Migration Guide e-book
@colinodell
4. ORIGINS OF MARKDOWN
Created in March 2004 by John Gruber
Informal plain-text formatting language
Converts readable text to valid (X)HTML
Primary goal - readability
5. HISTORY OF MARKDOWN
Hello Nomad PHP!
----------------
Markdown is **awesome**!
1. Foo
2. Bar
3. Baz
Wikipedia entry:
<https://en.wikipedia.org/wiki/Markdown>
6. WHY IS IT SUCCESSFUL?
1. Syntax is visually-similar to the resulting
markup
2. Non-strict, forgiving parsing
3. Easily adaptable for different uses
9. COMMONMARK IS…
A strongly defined, highly compatible specification of Markdown.
Written by John MacFarlane
(in collaboration with people from Github, StackOverflow, Reddit, and others)
Spec includes:
Strict rules (precedence, parsing order, handling edge cases)
Specific definitions (ex: “whitespace”, “punctuation”)
616 examples
10.
11.
12.
13.
14. WHY IS IT NEEDED?
*I love Markdown*
<p><em>I love Markdown</em></p>
24. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
25. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
28. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
29. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
36. class TwitterUsernameAutolinkParser extends AbstractInlineParser {
public function getCharacters() {
return ['<'];
}
public function parse(InlineParserContext $inlineContext) {
$cursor = $inlineContext->getCursor();
}
}
50. EXAMPLE 3: CUSTOM RENDERER
class ImageHorizontalRuleRenderer implements BlockRendererInterface {
public function render(...) {
return new HtmlElement('img', ['src' => 'hr.png']);
}
}
52. BUNDLING INTO AN EXTENSION
class MyCustomExtension extends Extension {
public function getInlineParsers() {
return [new TwitterUsernameAutolinkParser()];
}
public function getDocumentProcessors() {
return [new ShortenLinkProcessor()];
}
public function getBlockRenderers() {
return [new ImageHorizontalRuleRenderer()];
}
}
53. BUNDLING INTO AN EXTENSION
$environment = Environment::createCommonMarkEnvironment();
$environment->addExtension(new MyCustomExtension());
$converter = new CommonMarkConverter($environment);
$html = $converter->convertToHtml("...");
54. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
55. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
56. WELL-TESTED
94% code coverage
Functional tests
All 616 spec examples
Library of regression tests
Unit tests
Cursor
Environment
Utility classes
57. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
58. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
59. PERFORMANCE
0 20 40 60 80 100
Parsedown
PHP Markdown Extra
Time (ms)
league/commonmark is ~35-40ms
slower
PHP 5.6 PHP 7.0
Tips:
• Use PHP 7 (50-80% boost)
• Choose library based on your
needs
• Cache rendered HTML (100%
boost)
• Optimize custom functionality
60. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
61. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
62. STABILITY
Current version: 0.15.0
Conforms to CommonMark spec 0.26
1.0.0 will be released once CommonMark spec is 1.0
No major stability issues
Backwards Compatibility Promise:
No BC breaks to CommonMarkConverter class in 0.x
Other BC breaks will be documented
63. FEATURES
100% compliance with the CommonMark spec
Easy to implement
Easy to customize
Well-tested
Decent performance
(Relatively) stable
2. Informal; not like XML and XHTML which reject data simply because it fails to adhere to strict, unforgiving standards
3:
LaTeX – academia for scientific and mathematic papers
DocBook – technical documentation
We’re all familiar with the usual markdown syntax
This specification dictates exactly how compliant parsers should handle Markdown input
It includes
That’s cool, but do we really NEED a spec? Is Markdown really that complicated?
Well, let’s look at an example
Straight-forward example of emphasizing text
What happens if we add two asterisks?
Babelmark2
John MacFarlane, CommonMark spec maintainer
Like 3V4L, but for Markdown
Whole string emphasized with nested inner emphasis, as you’d expect
Another approach some parsers take is two separate emphasis elements
Kinda makes sense
What’s really strange and unexpected
3 other ways of parsing this (22%)
1/5
Actually 15 different ways that parsers interpret this
2/5
Actually 15 different ways that parsers interpret this
3/5
4/5
5/5
Actually 15 different ways that parsers interpret this
OUTRO:
The CommonMark standard is designed to eliminate this ambiguity
so that your Markdown is handled in a logical, predictable fashion
The league/commonmark library
It basically takes Markdown in and spits HTML out.
And it does so in a way that’s compliant with the CommonMark spec.
Several integrations for this library built by the community
We have a URL we want to link to using the standard autolinking syntax
Wrapped with a less-than and greater-than sign
“A” tag with href and text label of the URL
Show how our engine does this behind-the-scenes
Start off with Markdown input
Run it through the various sub-parsers which results in an Abstract Syntax Tree
Also known as an AST
Tree structure of PHP objects, each representing a certain type of element
For easier visualization I’m showing what these PHP objects MIGHT look like if we showed their data as XML
Once we’ve got the final AST, we pass that along to the renderers…
…which convert the AST into HTML
Now what’s really cool is that…
You can hook into any of these three aspects, adding “your own custom…”
THREE EXAMPLES
Now let’s go back to our autolink example
What if we wanted to add similar autolinking functionality, but for Twitter handles?
For example, say we want to enclose the Twitter handle in a similar fashion… which results in a link to that profile page
Let me show you how simple it is to add this feature
Simply create a sub-parser
Tell the main parser to stop whenever a less-than sign is encountered
When encountered, control is transferred to parse()
Cursor
Cursor is a simple yet powerful wrapper around the current line
Stores current line’s text and current position being parsed
Because we’ve told the engine we’re interested in less-than characters…
When control is passed into parse() method, we can use these specially-design methods to
Parse the string at that location
Cursor provides several high-optimized UTF-8 aware methods for Markdown parsing
That’s it!Now the APIs and methods might be unfamiliar, but hopefully you can see how features can be added seemlesly with only a few lines of code
Match this regular expression
Extract just the username from the matched text
That’s it!Now the APIs and methods might be unfamiliar, but hopefully you can see how features can be added seemlesly with only a few lines of code
What if we wanted to automatically shorten URLs with a service like bitly?
Guaranteed to be compatible with all other CommonMark parsers in other languages
CONTEXT: Blinking your eye is 100ms
You can find the library on Packagist under league/commonmark
Installation instructions & documentation can be found
Hopefully you find this library useful and can try it out in your next project.
Thank you so much!