Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...Codemotion
In my journey through nodeland, I always wonder about the cost of my abstractions. Express, Hapi, Restify, or just plain Node.js core? require(‘http’) can reach 30k requests/sec, Express 22k, and Hapi 21k. I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 37k requests/sec, Fastify can halve your cloud server bill. How can Fastify be so.. fast? We will discover all the not-so-secret techniques that were used to optimize it. In Fastify we reach a point where even allocating a callback is too slow: Ludicrous
This document discusses using Zend Framework for building web applications. It describes how Zend_Application provides dependency injection and configuration without requiring objects. It also covers using Zend_Db for database access, Zend_Controller for routing, and Zend_Translate for internationalization. Validation is discussed, including using Zend_Validate with Zend_Translate to internationalize error messages.
The document discusses how to use RxJS (Reactive Extensions library for JavaScript) to treat events like arrays by leveraging Observable types and operators. It explains key differences between Observables and Promises/Arrays, how Observables are lazy and cancelable unlike Promises. Various RxJS operators like map, filter, interval and fromEvent are demonstrated for transforming and composing Observable streams. The document aims to illustrate how RxJS enables treating events as collections that can be processed asynchronously over time.
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash courseSages
Szybkie wprowadzenie do technologii Pig i Hive z ekosystemu Hadoop. Prezentacja wykonana w ramach warsztatów Codepot w dniu 29.08.2015. Prezentacja wykonana przez Radosława Stankiewicza oraz Bartłomieja Tartanusa.
Asynchronous programming done right - Node.jsPiotr Pelczar
This document discusses asynchronous programming and avoiding race conditions. It covers how asynchronous actions allow the main program flow to continue processing without blocking on I/O. It also discusses how asynchronous programming works with callbacks and promises rather than sequential execution. It provides examples of using libraries like Async to control asynchronous flows and common pitfalls to avoid like double callbacks and unexpected asynchronous behavior.
This document discusses testing Backbone applications with Jasmine. It provides examples of how to test models, views, user interactions, and more. Key points covered include:
- Using Behavior Driven Development (BDD) style tests with Jasmine's describe and it blocks to test app behaviors.
- Spying on and mocking functions like jQuery's ajax call to test view logic without external dependencies.
- Testing models by calling methods and checking property values change as expected.
- Testing views by triggering events and checking models and DOM update appropriately.
- The jasmine-jquery plugin allows testing user interactions like clicks directly.
This document provides an introduction and overview of Windows PowerShell. It discusses what PowerShell is, how it works, and how it can be used for administration tasks and extended to work with other products. The document covers PowerShell concepts like verbs, nouns, pipelines, and cmdlets. It also provides examples of using PowerShell for ad-hoc tasks and developing PowerShell scripts and cmdlets for production environments.
From ReactPHP to Facebook Hack's Async implementation and many more, asynchronous programming has been a 'hot' topic lately. But how well does async programming support work in PHP and what can you actually use it for in your projects ? Let's look at some real-world use cases and how they leverage the power of async to do things you didn't know PHP could do.
PHP generators allow functions to behave like iterators by yielding values one at a time rather than building and returning an array all at once. Generators are automatically created when the yield keyword is used in a function. They implement the Iterator interface and can be used in foreach loops. Data and control flow can be passed into generators using the send() method to influence their behavior.
Study of aloha protocol using ns2 network java proramMeenakshi Devi
This document summarizes a network simulation program written in NS2 that studies the Aloha protocol. The program creates 6 nodes connected in a network topology with duplex links of varying bandwidths and distances. It defines agents, applications and traffic to generate and receive packets. The simulation runs for 5 seconds of simulation time and traces are recorded to analyze the performance of the Aloha protocol under the different network conditions defined in the program.
This document defines options and sets up a simulation to test carrier sense in NS-2. It defines wireless channel, radio propagation, and MAC layer options. It creates 4 nodes with an 802.11 MAC and positions two nodes to have a conversation and the other two nodes some distance away to have another conversation. It generates CBR traffic between the node pairs and runs the simulation for 10 seconds.
- CTO and lecturer who created Metarhia, an application server for Node.js that focuses on scalability, reliability, and clean architecture principles.
- Metarhia includes packages for SQL, logging, configuration, schemas, and more that work together to provide an isolated and scalable backend.
- It emphasizes simplicity, avoiding middleware and global dependencies, with features like live reloading, graceful shutdown, and automatic dependency injection.
DTrace is a comprehensive dynamic tracing framework created by Sun Microsystems for troubleshooting kernel and application problems on production systems in real time. It provides probes in the operating system and applications to monitor events, collects and aggregates data, and provides tools to analyze the data. DTrace can be used on Unix-like systems like Solaris, Linux, macOS, and in Node.js applications through a DTrace provider. It allows gathering insights about the system and application behavior without restarting or slowing the system.
TDC2018SP | Trilha Go - Processando analise genetica em background com Gotdc-globalcode
The document discusses using Faktory, an open-source job queue written in Go, to process genetic analysis jobs in the background. It describes setting up Faktory, creating jobs that call the vsa dx command, registering a Go worker to process jobs, and integrating it with an API. This allows asynchronously processing many jobs efficiently using a single lightweight machine.
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRaimonds Simanovskis
The document discusses using CoffeeScript to write JavaScript code in a more Ruby-like style. It provides examples of CoffeeScript code for functions, objects, classes, and other concepts. CoffeeScript allows JavaScript code to be written in a cleaner syntax that resembles Ruby. This helps address problems with JavaScript code appearing "ugly" and unfamiliar to developers experienced in Ruby. CoffeeScript transpires to regular JavaScript, enabling the Ruby-like code to run in browsers.
The document discusses Bluespec, a hardware description language that combines features of Haskell and SystemVerilog assertions (SVA). Bluespec models all state explicitly using guarded atomic actions on state. Behavior is expressed as rules with guards and actions. Assertions in Bluespec are compiled into finite state machines and checked concurrently as rules. The document provides an example of using Bluespec to write functional and performance assertions for a cache controller design.
A story of a Ruby programmer having to understand that learning Erlang is more than just syntax. Learn differences in paradigms, pitfalls and applied use cases for this incredibly powerful language
The document discusses performance testing of an API server. It provides details on:
1) Preparing for performance testing by generating test data and configuring tools like Artillery to simulate user traffic.
2) Conducting the performance tests on different server configurations to identify bottlenecks, including testing with different Node.js versions.
3) Analyzing the results of the performance tests by profiling requests and examining response times to further optimize the server performance.
Building Your First Data Science Applicatino in MongoDBMongoDB
Speaker: Robyn Allen, Software Engineer, Central Inventions
Level: 100 (Beginner)
Track: Tutorials
To provide a hands-on opportunity to work with real data, this session will center around a web-hosted quiz application which helps students practice math and memorize vocabulary. After experimenting with a small demonstration dataset (generated by each individual during the workshop), attendees will be guided through working with an anonymized dataset in MongoDB. No prior MongoDB experience is required but attendees are expected to download and install MongoDB Community Edition (available for free from mongodb.com) and have a working Python 3 environment of their choice (e.g., IDLE, free from python.org) installed on a laptop they bring to the workshop.
Prerequisites:
Attendees are expected to bring a laptop with the following software installed:
MongoDB 3.4.x Community Edition
The text editor or IDE of their choice
A working Python 3 environment of their choice
No prior MongoDB experience is required.
What You Will Learn:
- How to load a CSV file into MongoDB using mongoimport and then write queries (using the Mongo shell) to ensure the data appears as expected. Attendees will use a demo version of an online quiz app to generate a small data file of raw session data (which can be accessed via http://strawnoodle.com/api/testdata after logging in to the demo app and answering one or more quiz questions about MongoDB). After studying how the demo app stores session data, attendees will practice using mongoimport to import anonymized session data (provided during the workshop) into MongoDB.
- How to use the aggregation pipeline (in PyMongo) to implement more complicated queries and gain insights from data. Because the sample dataset contains data from a variety of users of different skill levels, queries can be designed which reveal summary statistics for the anonymous user cohort or specific performance of individual users. Participants will receive instruction in using MongoDB aggregation pipelines in order to write powerful, efficient queries with very few lines of code.
- How to write queries to analyze sample data from an online quiz app. Once the sample data has been loaded into MongoDB, participants will be guided in writing basic queries to examine the sample data. Participants will have an opportunity to write queries in the Mongo shell and in Python in order to familiarize themselves with syntax variations and key ideas. Participants will learn how to implement CRUD operations in PyMongo.
This document summarizes Rails on Oracle and the Oracle enhanced ActiveRecord adapter. It discusses the main components, how the adapter maps data types between Ruby/Rails and Oracle, and how it handles legacy schemas, PL/SQL CRUD procedures, and full-text indexes. It also provides information on testing, contributing, reporting issues and related libraries.
This document summarizes asynchronous I/O in PHP using event loops and promises. It discusses how asynchronous I/O works differently than synchronous I/O by allowing multiple requests to be made simultaneously and callbacks to be defined for their responses. Event loops are used to listen for external processes and file events. Libraries like Carica Io and ReactPHP implement promises and deferred objects to handle asynchronous operations and chaining of callbacks. Examples are given for event emitters, callbacks, promises in jQuery, and using asynchronous MySQL queries with promises.
KSS, the new Ajax framework for Plone 3 comes with great components by default. But what if you need to integrate it with legacy Javascript? Or maybe you want to integrate that nice library/widget you found on the web. During this talk I will show you where you can extend KSS and how to do it. You can watch me create both the server side and client side code needed to integrate an existing piece of Javascript. After this talk KSS should have no limits for you.
This document discusses asynchronous PHP processing and libraries. It begins with an overview of synchronous vs asynchronous processing and blocking vs non-blocking I/O. It then reviews several approaches for asynchronous PHP including Pthreads, pcntl_fork, popen, curl_multi, and event loops with libraries like ReactPHP. ReactPHP is discussed in depth as an event-driven non-blocking I/O library that uses promises and streams for asynchronous operations. Examples are provided for asynchronous HTTP requests, DNS lookups, and a pub/sub application using ZeroMQ. Key points emphasized are that asynchronous code does not necessarily run faster and execution order is not guaranteed.
This document contains a summary of JavaScript features introduced in ES6 and later versions by Janghyun Han. It discusses features such as variables, arrow functions, template literals, classes, modules, promises, and generators. For each feature, it provides code examples to demonstrate usage and differences from earlier JavaScript versions. The document aims to help readers learn about modern JavaScript language improvements.
The road to continuous deployment (PHPCon Poland 2016)Michiel Rook
As presented at PHPCon Poland 2016
It's a situation many of us are familiar with: a large legacy application, limited or no tests, slow & manual release process, low velocity, no confidence.... Oh, and management wants new features, fast.
But how to proceed? Using examples and lessons learned from a real-world case, I'll show you how to strangle the legacy application with a modern service architecture and build a continuous deployment pipeline to deliver value from the first sprint. On the way, we take a look at testing strategies and various (possibly controversial!) tips and best practices.
The document contains code for unit testing a PHP MVC application using PHPUnit. It includes:
- Code for the Todo model and its tests using PHPUnit assertions.
- Configuration for PHPUnit to run tests for the application and library.
- Tests for the IndexController using a Test_ControllerTestCase class with helper methods.
- Code for Request, Response and View classes to mock the MVC framework.
- A test to interact with the application interface using Selenium.
The document shows the project structure for an MVC application and library with tests. It demonstrates how to test models, controllers and the user interface using test doubles, assertions and helper methods in PHPUnit.
The document discusses high performance websites, introducing xDebug profiling, Kcachegrind, and JMeter. It provides instructions for installing necessary software on a virtual machine, including Apache, xDebug, JMeter, and Kcachegrind. The document then demonstrates how to use these tools to optimize website performance, including profiling a sample extension in TYPO3, identifying optimization opportunities, and implementing caching. Finally, it shows how to test website performance using JMeter, including building test plans, recording tests, distributed testing on Amazon EC2, and analyzing results.
The document discusses various techniques for writing efficient JavaScript code, including:
1. Avoid premature optimization and focus on clean, correct code first. Optimization can then focus on specific bottlenecks.
2. Use language shortcuts like object and array literals instead of constructors to improve performance.
3. Cache frequently accessed values like DOM elements, styles, and function pointers to avoid repeated lookups.
4. Minimize DOM access and manipulation by batching changes and reducing the number of elements.
5. Use event delegation with event bubbling instead of attaching the same handler to many elements.
PHP generators allow functions to behave like iterators by yielding values one at a time rather than building and returning an array all at once. Generators are automatically created when the yield keyword is used in a function. They implement the Iterator interface and can be used in foreach loops. Data and control flow can be passed into generators using the send() method to influence their behavior.
Study of aloha protocol using ns2 network java proramMeenakshi Devi
This document summarizes a network simulation program written in NS2 that studies the Aloha protocol. The program creates 6 nodes connected in a network topology with duplex links of varying bandwidths and distances. It defines agents, applications and traffic to generate and receive packets. The simulation runs for 5 seconds of simulation time and traces are recorded to analyze the performance of the Aloha protocol under the different network conditions defined in the program.
This document defines options and sets up a simulation to test carrier sense in NS-2. It defines wireless channel, radio propagation, and MAC layer options. It creates 4 nodes with an 802.11 MAC and positions two nodes to have a conversation and the other two nodes some distance away to have another conversation. It generates CBR traffic between the node pairs and runs the simulation for 10 seconds.
- CTO and lecturer who created Metarhia, an application server for Node.js that focuses on scalability, reliability, and clean architecture principles.
- Metarhia includes packages for SQL, logging, configuration, schemas, and more that work together to provide an isolated and scalable backend.
- It emphasizes simplicity, avoiding middleware and global dependencies, with features like live reloading, graceful shutdown, and automatic dependency injection.
DTrace is a comprehensive dynamic tracing framework created by Sun Microsystems for troubleshooting kernel and application problems on production systems in real time. It provides probes in the operating system and applications to monitor events, collects and aggregates data, and provides tools to analyze the data. DTrace can be used on Unix-like systems like Solaris, Linux, macOS, and in Node.js applications through a DTrace provider. It allows gathering insights about the system and application behavior without restarting or slowing the system.
TDC2018SP | Trilha Go - Processando analise genetica em background com Gotdc-globalcode
The document discusses using Faktory, an open-source job queue written in Go, to process genetic analysis jobs in the background. It describes setting up Faktory, creating jobs that call the vsa dx command, registering a Go worker to process jobs, and integrating it with an API. This allows asynchronously processing many jobs efficiently using a single lightweight machine.
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRaimonds Simanovskis
The document discusses using CoffeeScript to write JavaScript code in a more Ruby-like style. It provides examples of CoffeeScript code for functions, objects, classes, and other concepts. CoffeeScript allows JavaScript code to be written in a cleaner syntax that resembles Ruby. This helps address problems with JavaScript code appearing "ugly" and unfamiliar to developers experienced in Ruby. CoffeeScript transpires to regular JavaScript, enabling the Ruby-like code to run in browsers.
The document discusses Bluespec, a hardware description language that combines features of Haskell and SystemVerilog assertions (SVA). Bluespec models all state explicitly using guarded atomic actions on state. Behavior is expressed as rules with guards and actions. Assertions in Bluespec are compiled into finite state machines and checked concurrently as rules. The document provides an example of using Bluespec to write functional and performance assertions for a cache controller design.
A story of a Ruby programmer having to understand that learning Erlang is more than just syntax. Learn differences in paradigms, pitfalls and applied use cases for this incredibly powerful language
The document discusses performance testing of an API server. It provides details on:
1) Preparing for performance testing by generating test data and configuring tools like Artillery to simulate user traffic.
2) Conducting the performance tests on different server configurations to identify bottlenecks, including testing with different Node.js versions.
3) Analyzing the results of the performance tests by profiling requests and examining response times to further optimize the server performance.
Building Your First Data Science Applicatino in MongoDBMongoDB
Speaker: Robyn Allen, Software Engineer, Central Inventions
Level: 100 (Beginner)
Track: Tutorials
To provide a hands-on opportunity to work with real data, this session will center around a web-hosted quiz application which helps students practice math and memorize vocabulary. After experimenting with a small demonstration dataset (generated by each individual during the workshop), attendees will be guided through working with an anonymized dataset in MongoDB. No prior MongoDB experience is required but attendees are expected to download and install MongoDB Community Edition (available for free from mongodb.com) and have a working Python 3 environment of their choice (e.g., IDLE, free from python.org) installed on a laptop they bring to the workshop.
Prerequisites:
Attendees are expected to bring a laptop with the following software installed:
MongoDB 3.4.x Community Edition
The text editor or IDE of their choice
A working Python 3 environment of their choice
No prior MongoDB experience is required.
What You Will Learn:
- How to load a CSV file into MongoDB using mongoimport and then write queries (using the Mongo shell) to ensure the data appears as expected. Attendees will use a demo version of an online quiz app to generate a small data file of raw session data (which can be accessed via http://strawnoodle.com/api/testdata after logging in to the demo app and answering one or more quiz questions about MongoDB). After studying how the demo app stores session data, attendees will practice using mongoimport to import anonymized session data (provided during the workshop) into MongoDB.
- How to use the aggregation pipeline (in PyMongo) to implement more complicated queries and gain insights from data. Because the sample dataset contains data from a variety of users of different skill levels, queries can be designed which reveal summary statistics for the anonymous user cohort or specific performance of individual users. Participants will receive instruction in using MongoDB aggregation pipelines in order to write powerful, efficient queries with very few lines of code.
- How to write queries to analyze sample data from an online quiz app. Once the sample data has been loaded into MongoDB, participants will be guided in writing basic queries to examine the sample data. Participants will have an opportunity to write queries in the Mongo shell and in Python in order to familiarize themselves with syntax variations and key ideas. Participants will learn how to implement CRUD operations in PyMongo.
This document summarizes Rails on Oracle and the Oracle enhanced ActiveRecord adapter. It discusses the main components, how the adapter maps data types between Ruby/Rails and Oracle, and how it handles legacy schemas, PL/SQL CRUD procedures, and full-text indexes. It also provides information on testing, contributing, reporting issues and related libraries.
This document summarizes asynchronous I/O in PHP using event loops and promises. It discusses how asynchronous I/O works differently than synchronous I/O by allowing multiple requests to be made simultaneously and callbacks to be defined for their responses. Event loops are used to listen for external processes and file events. Libraries like Carica Io and ReactPHP implement promises and deferred objects to handle asynchronous operations and chaining of callbacks. Examples are given for event emitters, callbacks, promises in jQuery, and using asynchronous MySQL queries with promises.
KSS, the new Ajax framework for Plone 3 comes with great components by default. But what if you need to integrate it with legacy Javascript? Or maybe you want to integrate that nice library/widget you found on the web. During this talk I will show you where you can extend KSS and how to do it. You can watch me create both the server side and client side code needed to integrate an existing piece of Javascript. After this talk KSS should have no limits for you.
This document discusses asynchronous PHP processing and libraries. It begins with an overview of synchronous vs asynchronous processing and blocking vs non-blocking I/O. It then reviews several approaches for asynchronous PHP including Pthreads, pcntl_fork, popen, curl_multi, and event loops with libraries like ReactPHP. ReactPHP is discussed in depth as an event-driven non-blocking I/O library that uses promises and streams for asynchronous operations. Examples are provided for asynchronous HTTP requests, DNS lookups, and a pub/sub application using ZeroMQ. Key points emphasized are that asynchronous code does not necessarily run faster and execution order is not guaranteed.
This document contains a summary of JavaScript features introduced in ES6 and later versions by Janghyun Han. It discusses features such as variables, arrow functions, template literals, classes, modules, promises, and generators. For each feature, it provides code examples to demonstrate usage and differences from earlier JavaScript versions. The document aims to help readers learn about modern JavaScript language improvements.
The road to continuous deployment (PHPCon Poland 2016)Michiel Rook
As presented at PHPCon Poland 2016
It's a situation many of us are familiar with: a large legacy application, limited or no tests, slow & manual release process, low velocity, no confidence.... Oh, and management wants new features, fast.
But how to proceed? Using examples and lessons learned from a real-world case, I'll show you how to strangle the legacy application with a modern service architecture and build a continuous deployment pipeline to deliver value from the first sprint. On the way, we take a look at testing strategies and various (possibly controversial!) tips and best practices.
The document contains code for unit testing a PHP MVC application using PHPUnit. It includes:
- Code for the Todo model and its tests using PHPUnit assertions.
- Configuration for PHPUnit to run tests for the application and library.
- Tests for the IndexController using a Test_ControllerTestCase class with helper methods.
- Code for Request, Response and View classes to mock the MVC framework.
- A test to interact with the application interface using Selenium.
The document shows the project structure for an MVC application and library with tests. It demonstrates how to test models, controllers and the user interface using test doubles, assertions and helper methods in PHPUnit.
The document discusses high performance websites, introducing xDebug profiling, Kcachegrind, and JMeter. It provides instructions for installing necessary software on a virtual machine, including Apache, xDebug, JMeter, and Kcachegrind. The document then demonstrates how to use these tools to optimize website performance, including profiling a sample extension in TYPO3, identifying optimization opportunities, and implementing caching. Finally, it shows how to test website performance using JMeter, including building test plans, recording tests, distributed testing on Amazon EC2, and analyzing results.
The document discusses various techniques for writing efficient JavaScript code, including:
1. Avoid premature optimization and focus on clean, correct code first. Optimization can then focus on specific bottlenecks.
2. Use language shortcuts like object and array literals instead of constructors to improve performance.
3. Cache frequently accessed values like DOM elements, styles, and function pointers to avoid repeated lookups.
4. Minimize DOM access and manipulation by batching changes and reducing the number of elements.
5. Use event delegation with event bubbling instead of attaching the same handler to many elements.
This talk represents the combined experience from several web development teams who have been using Symfony2 since months already to create high profile production applications. The aim is to give the audience real world advice on how to best leverage Symfony2, the current rough spots and how to work around them. Aside from covering how to implement functionality in Symfony2, this talk will also cover topics such as how to best integrate 3rd party bundles and where to find them as well as how to deploy the code and integrate into the entire server setup.
This document provides an overview of key concepts for developing applications with Symfony2 including: setting up the framework, code flow, dependency injection, configuration, controllers, applications, Doctrine integration, caching, performance tips, asset management, testing, deployment, third party bundles, and resources for contributing to Symfony2. It discusses service definitions, controller choices, application choices, Doctrine examples, caching strategies, performance optimization techniques, testing approaches, deployment options, and how to work with third party bundles.
This document provides an overview of using Perl web frameworks Catalyst and Mojolicious. It discusses MVC architecture and components like routers, controllers, models, and views. It also covers installing frameworks via CPAN, creating Catalyst applications, adding controllers, views using Template Toolkit, and models using DBIC. Authentication and authorization plugins for Catalyst are also mentioned.
The document discusses Perl web frameworks Catalyst and Mojolicious. It provides an overview of key MVC concepts like routers, controllers, models and views. It then demonstrates how to install and create a basic Catalyst application with a root controller and default action. It also covers additional Catalyst controller features like actions, routes, context object and chained actions.
Complex Made Simple: Sleep Better with TorqueBoxbobmcwhirter
The document discusses using TorqueBox, a Ruby application server based on JRuby and JBoss AS7, to deploy a Rails application in production. It compares various deployment options from rolling your own infrastructure to using a platform as a service like Heroku. TorqueBox provides a middle ground where it handles services like caching, background jobs, scheduling, and clustering but still allows customization. The document walks through migrating an existing Rails app's Delayed::Job and caching implementations to use TorqueBox equivalents to simplify the deployment.
Slides from a presentation that David Lopez (@lopezator) and me made for the students of the University of the Basque Country (UPV/EHU) where we talk about current technologies and methodologies used in professional web development.
CSS3, jQuery, Composer, MVC, Clean Code, Git, etc. are different items we talked about.
Some examples shown in the presentation available at:
http://ojoven.es/labs/ehu2014/
JUDCon London 2011 - Bin packing with drools planner by exampleGeoffrey De Smet
The document discusses using Drools Planner, an open source optimization tool, to solve planning problems like bin packing processes on cloud servers. It describes how Drools Planner models planning problems, defines score rules to evaluate solutions, and uses optimization algorithms like first fit, tabu search, and simulated annealing to improve solutions. It provides an example of using Drools Planner to optimize assigning processes to servers on a cloud to minimize costs while meeting constraints. The document advocates that organizations can benefit from using tools like Drools Planner to optimize their planning problems.
From framework coupled code to #microservices through #DDD /by @codelytvCodelyTV
From framework coupled code to microservices through DDD modules. The presentation discussed the evolution from monolithic frameworks to microservices architecture through various stages:
1) Old days of framework coupled code with low autonomy, maintainability and learning curve.
2) Use of MVC frameworks improved isolation but code was still highly coupled.
3) Focus on testing drove adoption of SOLID principles at a micro scale.
4) Domain-Driven Design introduced modules per domain concept improving decoupling, semantics and testability.
5) Further decomposition into bounded contexts and microservices provided more autonomy for teams but introduced new accidental complexities around infrastructure and coordination.
This document provides an overview and introduction to using the Sinatra web framework for building RESTful web applications in Ruby. It discusses Sinatra's philosophy of being simple and easy to use, introduces REST principles and how Sinatra supports them through HTTP verbs, routing, caching, authentication and more. Code examples are provided to demonstrate how a basic "Hello World" application is structured in Sinatra and how requests are routed and executed under the hood.
The document provides an overview of several C++ concepts including basic syntax, compiling programs, argument passing, dynamic memory allocation, and object-oriented programming. It demonstrates simple C++ programs and functions. It discusses best practices like separating interface and implementation using header files. It also introduces C++ standard library features like vectors and the importance of avoiding unnecessary copying.
4069180 Caching Performance Lessons From Facebookguoqing75
This document discusses techniques for improving caching performance at Facebook. It begins by explaining the benefits of caching for large sites and applications. It then describes the various caching layers Facebook uses, including globals caching, APC caching, memcached, and browser caching. It provides examples of how Facebook leverages these caches, such as caching parsed user agent strings, opcode caching with APC, and caching profile data in memcached. It also discusses challenges like cache invalidation between data centers and techniques for addressing them like caching proxies.
Presto is an open source distributed SQL query engine for running interactive analytic queries against data sources of all sizes ranging from gigabytes to petabytes. It is written in Java and uses a pluggable backend. Presto is fast due to code generation and runtime compilation techniques. It provides a library and framework for building distributed services and fast Java collections. Plugins allow Presto to connect to different data sources like Hive, Cassandra, MongoDB and more.
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.
Tatsumaki is a non-blocking web framework for Perl built on Plack and AnyEvent. It allows building asynchronous applications that can handle thousands of concurrent connections. Tatsumaki uses psgi.streaming to enable asynchronous responses. It includes a non-blocking HTTP client and pure Perl message queue for building real-time applications like chat and comet. The framework is in a beta stage but plans include services for XMPP/IRC bots and a standard comet interface.
This document provides an introduction to HTML enhanced for web apps using AngularJS. It discusses key AngularJS concepts like templates (directives), controllers, dependency injection, services, filters, models, configuration, routing, resources and testing. Directives allow HTML to be extended with new attributes and elements. Controllers contain business logic. Dependency injection provides dependencies to controllers and services. Filters transform displayed data. Models represent application data. Configuration sets up modules. Routing maps URLs to templates. Resources interact with RESTful APIs. Testing ensures code works as expected.
Facebook uses caching at multiple levels to improve performance and scalability. Caching is implemented globally, with APC, Memcached, and browser caches. Memcached is used to cache user profiles, photos, friends lists, and other frequently accessed data. Caching is optimized through techniques like caching serialization formats, priming APC, and caching parsed user agent strings. Dirty caching ensures cached data is invalidated when the source data changes.
Better Open Source Enterprise C++ Web ServicesWSO2
In this webinar/presentation presented on November 10, 2009, Nandika Jayawardana explores the capabilities of the WSO2 Web Services Framework for C++ (WSO2 WSF/C++) to develop and deploy Web services in C++.
Multithreaded XML Import (San Francisco Magento Meetup)AOE
This document discusses Aoe_Import, an open source PHP library for importing XML files into Magento in a multithreaded manner. It describes how Aoe_Import uses forking and the Threadi library to process imports across multiple processes to avoid memory issues. It also addresses some challenges with multithreading like database connections and thread safety. The presenter suggests other use cases for this approach like processing scheduler jobs, queues, and indexes in a batched, multithreaded way.
rock-solid TYPO3 development with continuous integration and deploymentAOE
Shows our best practices of TYPO3 deployment and how these should be integrated in your development workflow. Highlights some of the most recent technologies and how AOE GmbH integrates them towards a smooth and quick rollout of web applications.
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013AOE
Im Rahmen des Best Practice Days der Deutschen Bahn mit dem Schwerpunkt "Agile" spricht Joern Bock, Head of Project Management zum Thema "Was bedeutet agiles Managementfür ihre Projekte?". Schwerpunkt des Talks ist zum einen eine Einführung in agile Methoden bzw. agile Vorgehensweisen aber auch den dafür notwendigen Change in der Unternehmenskultur, dem Führungsmodell, Leadership etc.
Continuous Quality Assurance using Selenium WebDriverAOE
- Menta is a Selenium testing framework for PHP that provides components, page objects, and other features to help with test automation using Selenium WebDriver.
- It includes components for common tasks like assertions, waiting, taking screenshots. Page objects represent services offered by pages and allow interacting with pages.
- Menta manages Selenium sessions, provides configuration management, and supports features like events/observers, Sauce Labs integration, and perceptual diffs for test results. It aims to help with continuous testing.
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...AOE
1) The document discusses how the Angry Birds store was able to reach high performance levels through optimizations like using a CDN, caching, database tuning, splitting databases, and offloading processing to improve page load times and handle high traffic volumes.
2) Key optimizations included using Varnish caching, separating databases, running background processes, and profiling to reduce bottlenecks.
3) Maintaining high code quality, continuous testing and integration, and automating processes were also important lessons to support the store's growth.
Global Relaunch of Sony Entertainment Network with TYPO3 in only 6 weeks for 57 countries and 14 languages. Impressive figures for TYPO3 generating massive ROI for Sony. Talk was given first at T3CON12 in Stuttgart, Germany.
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
Continuous Delivery und Autoscaling von Enterprise Web-Applicationen in der Amazon Cloud
In diesem Vortrag zeigen wir am Beispiel des neuen Angrybird-Onlineshops, der zu Spitzenzeiten bis zu 10 Bestellungen pro Sekunde aufnehmen kann und dabei hochverfügbar ist, wie eine automatisch skalierende Cloud Infrastruktur sowie die nötigen Konzepte aussehen können.
Wir beschreiben die Herausforderungen und unsere Lösungen, um den Shop für ein Multi-Server-Setup vorzubereiten und zu betreiben. Spezielle Anforderungen an eine solche Architektur sowie die Integration von Reverse Proxies (Varnish), die Nutzung eines CDNs, verschiedene Cache-Strategien und weitere Optimierung sind ebenfalls Bestandteil dieses Vortrags. Außerdem stellen wir unsere automatisierte Cloud-Deployment-Strategien vor, angefangen von den Entwicklungsumgebungen, über den continuous Integration Server und unser Testing Framework bis hin zum A/B-Deployment in der Cloud.
This document discusses Selenium 2 and its WebDriver API for automating tests of web applications from PHP. It introduces Selenium, explains why Selenium 2 was created, and covers key Selenium 2 concepts like supported browsers, the Selenium Server, and REST API. It then presents Menta, an open source PHP testing framework that builds on Selenium 2 to provide a developer-friendly API for writing tests. Menta features include configuration management, page objects, session handling, implicit waits, screenshots in reports, and integration with continuous integration.
Deployment Pipeline for Magento Enterprise in the Cloud. The Talk covers the Amazon Cloud Infrastructure; Scaling and Autoscaling in the Cloud, the Deployment Pipeline used to do continuous deployments...
This document discusses using Varnish as a reverse proxy and caching solution for websites built with TYPO3. It provides an overview of Varnish, how to install and configure it, benchmarks showing significant speed improvements when using Varnish cache, and tips for tuning and purging the cache. The presentation encourages using Varnish to accelerate websites and discusses tools for monitoring and debugging Varnish performance.
Community is a TYPO3 extension for social networking functionality. It started in 2008 and was rewritten in 2010 using Extbase. It provides features like profiles, messaging, friend relationships, photo galleries, and notifications. The extension is actively maintained and has a roadmap to improve search, groups, and performance. It uses Extbase for its architecture with access control configured through TypoScript. Privacy and access control present ongoing challenges to implement flexible settings across actions, records, and properties.
The document discusses Domain Driven Design (DDD). It explains that DDD involves creating a domain model that offers a simplified view of the problem domain. The domain model can be represented through text, diagrams like UML class diagrams, or code. Common DDD building blocks include entities, values, services, and repositories. Entities have identities and life cycles, values represent characteristics without identities, services encapsulate specific tasks, and repositories provide global access to entities. The document also discusses layered architectures and using DDD to build a flexible design that matches the problem domain.
The document discusses best practices for debugging, monitoring, and profiling websites to ensure smooth performance during development and when live. It recommends automating error detection and reporting, using tools like assertions to catch bugs early, monitoring server logs and tools like Google Webmaster Tools, and profiling code to identify performance issues. The goal is to reduce time spent searching for and fixing bugs to increase productivity.
In 2010 Panasonic made the decision to replace their legacy enterprise search tool and switched the search for all their European websites to a Apache Solr based solution.
Now their customers benefit from an incredibly fast and feature rich solution that is much more than just a search and has become a valuable sales-driving tool for Panasonic. Features like relevancy manipulation, autosuggest, contextual filtering for properties like color or product category were implemented under not the most ideal circumstances mainly that there was no access to structured data. The search was rolled out in close to 30 countries so far also putting Solr multi-lingual handling to a test.
2. About Us
Axel Jung Timo Schmidt
Software Developer Software Developer
AOE media GmbH AOE media GmbH
3. Preparation
Install Virtualbox and import the t3dd2012 appliance (User &
Password: t3dd2012)
You will find:
• Apache with xdebug and apc
• Jmeter
• Kcachegrind
• PHPStorm
There are two vhost:
• typo3.t3dd2012 and playground.t3dd2012
17. Analyzing Cachegrinds
●High self / medium self and
many calls =>
High potential for optimization
● Early in call graph & not needed =>
High potential for optimization
18. Hands on
● There is an extension „slowstock“
in the VM.
● Open:
„http://typo3.t3dd2012/index.php?id=2“ and analyze it with kcachegrind.
24. Total Time Cost 10910560 ( ~ -15%)
11,99 % is still much time :(
25. Change 2 (SoapConversionRateProvider)
● Conversion rates can be cached in APC cache to reduce webservice
calls.
– Inject
„ConversionRateCache“ into
SoapConversionRateProvider.
– Use the cache in the convert method.