A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud imposed silly restrictions - how dare you take away my shell account! Whaddya mean I can't save files locally? Since then, I've had some interesting experiences. I've worked on big cloud-deployed systems, and certain large traditionally-deployed systems, and I've seen how a lot of the decisions that you're ... encouraged to make when designing an app to run in the cloud. Most interestingly, I've discovered how those same decisions can make for a much better app regardless of where it'll end up. In this talk, I'll share those architectural patterns with you, and show why they work. Hopefully, I'll convince all of you to build cloud castles -- even if you've got your foundation firmly on the ground.
There are more smart people building software now than there have been at any point in the past, which means that it's more important than ever to stay on top of new developments, libraries, frameworks, and everything else. To really take advantage of this wealth of innovation, however, you've got to look beyond your normal community -- what's going on in Python? And how can we use that to make our Ruby lives easier? In this session, we'll explore that question. We'll look at actual examples of code and concepts borrowed and reimplemented to form a better idea of when it's appropriate and when it'll fall flat.
Latest version of Building Cloud Castles, given at LRUG in April 2011.
A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud imposed silly restrictions - how dare you take away my shell account! Whaddya mean I can't save files locally?
Since then, I've had some interesting experiences. I've worked on big cloud-deployed systems, and certain large traditionally-deployed systems, and I've seen how a lot of the decisions that you're ... encouraged to make when designing an app to run in the cloud. Most interestingly, I've discovered how those same decisions can make for a much better app regardless of where it'll end up. In this talk, I'll share those architectural patterns with you, and show why they work. Hopefully, I'll convince all of you to build cloud castles -- even if you've got your foundation firmly on the ground.
How to develop modern web application frameworktechmemo
The document discusses how to develop the plugin architecture of a modern web application framework (WAF). It describes what the plugin architecture of a WAF should be, including making the core elements small and extensible. It then covers developing plugin types that can hook into the WAF lifecycle or add methods to classes. As an example, it outlines how the Angelos WAF implements a plugin system using Mouse roles and method modifiers to hook into component hook points. It concludes by stressing that WAF developers should provide default plugin sets for common needs.
This document describes the architecture of the Angelos web application framework. It discusses how Angelos uses a PSGI engine to handle requests and responses through a pluggable dispatcher and controller system. It also describes how Angelos implements hooks to add functionality before and after controller actions are executed.
Keeping it Small: Getting to know the Slim Micro FrameworkJeremy Kendall
This document provides an overview of the Slim micro web framework. It discusses that Slim aims for concise and clear code, addresses common use cases well, and is inspired by Sinatra. It provides examples of basic routing and middleware usage in Slim. Key aspects covered include routing, configuration, logging, views, and hooks/middleware.
Keeping it small: Getting to know the Slim micro frameworkJeremy Kendall
This document provides an overview of the Slim micro framework. It discusses that Slim aims for a concise codebase that addresses common use cases well. It then covers installing Slim, creating a basic "Hello World" application, and reviewing the structure of a sample Slim photo application including routing, configuration, views, and middleware.
Keeping it small - Getting to know the Slim PHP micro frameworkJeremy Kendall
The document discusses the Slim micro PHP framework. It provides an overview of installing Slim via Composer, basic routing examples including GET and POST requests, and configuration options. Key topics covered include routing, templates, middleware, configuration via a config array, and logging/flash messaging. Examples demonstrate basic routing for homepage, single images, adding photos, and handling POST data and redirects.
A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud imposed silly restrictions - how dare you take away my shell account! Whaddya mean I can't save files locally? Since then, I've had some interesting experiences. I've worked on big cloud-deployed systems, and certain large traditionally-deployed systems, and I've seen how a lot of the decisions that you're ... encouraged to make when designing an app to run in the cloud. Most interestingly, I've discovered how those same decisions can make for a much better app regardless of where it'll end up. In this talk, I'll share those architectural patterns with you, and show why they work. Hopefully, I'll convince all of you to build cloud castles -- even if you've got your foundation firmly on the ground.
There are more smart people building software now than there have been at any point in the past, which means that it's more important than ever to stay on top of new developments, libraries, frameworks, and everything else. To really take advantage of this wealth of innovation, however, you've got to look beyond your normal community -- what's going on in Python? And how can we use that to make our Ruby lives easier? In this session, we'll explore that question. We'll look at actual examples of code and concepts borrowed and reimplemented to form a better idea of when it's appropriate and when it'll fall flat.
Latest version of Building Cloud Castles, given at LRUG in April 2011.
A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud imposed silly restrictions - how dare you take away my shell account! Whaddya mean I can't save files locally?
Since then, I've had some interesting experiences. I've worked on big cloud-deployed systems, and certain large traditionally-deployed systems, and I've seen how a lot of the decisions that you're ... encouraged to make when designing an app to run in the cloud. Most interestingly, I've discovered how those same decisions can make for a much better app regardless of where it'll end up. In this talk, I'll share those architectural patterns with you, and show why they work. Hopefully, I'll convince all of you to build cloud castles -- even if you've got your foundation firmly on the ground.
How to develop modern web application frameworktechmemo
The document discusses how to develop the plugin architecture of a modern web application framework (WAF). It describes what the plugin architecture of a WAF should be, including making the core elements small and extensible. It then covers developing plugin types that can hook into the WAF lifecycle or add methods to classes. As an example, it outlines how the Angelos WAF implements a plugin system using Mouse roles and method modifiers to hook into component hook points. It concludes by stressing that WAF developers should provide default plugin sets for common needs.
This document describes the architecture of the Angelos web application framework. It discusses how Angelos uses a PSGI engine to handle requests and responses through a pluggable dispatcher and controller system. It also describes how Angelos implements hooks to add functionality before and after controller actions are executed.
Keeping it Small: Getting to know the Slim Micro FrameworkJeremy Kendall
This document provides an overview of the Slim micro web framework. It discusses that Slim aims for concise and clear code, addresses common use cases well, and is inspired by Sinatra. It provides examples of basic routing and middleware usage in Slim. Key aspects covered include routing, configuration, logging, views, and hooks/middleware.
Keeping it small: Getting to know the Slim micro frameworkJeremy Kendall
This document provides an overview of the Slim micro framework. It discusses that Slim aims for a concise codebase that addresses common use cases well. It then covers installing Slim, creating a basic "Hello World" application, and reviewing the structure of a sample Slim photo application including routing, configuration, views, and middleware.
Keeping it small - Getting to know the Slim PHP micro frameworkJeremy Kendall
The document discusses the Slim micro PHP framework. It provides an overview of installing Slim via Composer, basic routing examples including GET and POST requests, and configuration options. Key topics covered include routing, templates, middleware, configuration via a config array, and logging/flash messaging. Examples demonstrate basic routing for homepage, single images, adding photos, and handling POST data and redirects.
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Arc & Codementor
The document discusses modern PHP features such as exceptions, namespaces, closures, statics, short array syntax, PDO, security improvements, and popular PHP tools. It provides examples of how to use exceptions, closures, namespaces, statics, short array syntax, PDO, and security features. It also introduces the built-in PHP web server, Composer package manager, and PHPUnit testing framework as useful modern PHP tools.
Anatoly Sharifulin presents on developing apps using Perl. He discusses creating an app called DLTTR that allows users to delete tweets in bulk using asynchronous queues and APIs. The app was built with Mojolicious, uses a server API, and stores data in MySQL. It has been successful with over 1 million tweets deleted and thousands of users. The talk highlights how Perl helped enable the creation of this cross-platform app that deletes tweets quickly and appropriately.
Bullet: The Functional PHP Micro-FrameworkVance Lucas
The document discusses Bullet, a PHP micro-framework created by Vance Lucas. It begins with an introduction to Lucas and his philosophy of creating lightweight frameworks that minimize complexity. It describes how Bullet is built around HTTP requests and responses, uses declarative routing via closures, and aims to require only PHP knowledge to use. The document provides examples of Bullet's routing, parameter handling, error handling and other features. It concludes by recommending resources for getting started with Bullet.
Best Practices in Plugin Development (WordCamp Seattle)andrewnacin
My talk -- officially named "Y U NO CODE WELL" -- at WordCamp Seattle 2011 on best practices during plugin development. Find the video, as it provides some good context and conversation.
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017Ryan Weaver
What is Symfony *really*? It's a collection of *35* independent libraries, and
Drupal uses less than *half* of them! That means that there's a *ton* of other
good stuff that you can bring into your project to solve common problems... as
long as you know how, and what those components do!
In this talk, we'll have some fun: taking a tour of the Symfony components, how
to install them (into Drupal, or anywhere) and how to use some of my *favorite*,
lesser-known components. By the end, you'll have a better appreciation of what
Symfony *really* is, and some new tools to use immediately.
Inside Bokete: Web Application with Mojolicious and othersYusuke Wada
Yusuke Wada introduced his work developing the Bokete website. Bokete is a Japanese entertainment website similar to 9gag that allows users to post and view "boke" which are photos with short texts. It has a website, mobile apps, and receives 300 million page views per month. Wada developed the backend system for Bokete using Perl and Mojolicious along with several other CPAN modules, particularly some written by Japanese authors. He discussed the system architecture and modules used to build Bokete.
Slides from the talk at http://www.meetup.com/GTA-PHP-User-Group-Toronto/events/151672182/
Source code for the demo at https://github.com/zymsys/Slim-RedBeanPHP-KnockoutJS
Rails 3 provides a concise overview of changes in Rails 3 including maintaining MVC structure and RESTful routing while improving areas like file structure, block helpers, routing and constraints, ActiveRecord querying, resources routing, and ActionMailer delivery. Key changes include a more Rack-like implementation, chainable ActiveRecord scopes, and pagination and layout support in ActionMailer.
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.
Lightweight Webservices with Sinatra and RestClientAdam Wiggins
This document summarizes a talk about using Sinatra and RestClient for building lightweight web services and clients. Sinatra provides a simple and lightweight way to build web applications compared to full-featured frameworks like Rails. RestClient provides a simple way to make HTTP requests from client applications, offering more functionality than Net::HTTP but with less complexity than ActiveResource. Examples of Sinatra and RestClient use include a Git wiki application built in 355 lines of Ruby code and a Heroku client library.
The document discusses different techniques for making APIs more elegant, including variable arguments, method_missing, blocks, and instance_eval. It provides examples of each technique using a CSS parser and AWS API client. Variable arguments allow flexible method definitions. Method_missing and respond_to? allow dynamically handling missing methods. Blocks and instance_eval allow evaluating code in the context of an object.
This document provides an overview of RESTful web services using Mojolicious and DBIx::Class. It describes a sample expense tracker application with five database tables in a many-to-many relationship. It then introduces REST concepts and describes how Mojolicious routes requests, DBIx::Class models the database, and generic controllers can provide CRUD operations. Finally, it outlines the steps to generate RESTful routes for a database table, including creating a model and controller that inherits standard CRUD methods.
Starting from Constructor Function and Object.create() as methods for creating objects in Javascript, we analize a couple of way to bootstrap a jQuery Plugin.
Mojolicious is a real-time web framework for Perl that provides a simplified single file mode through Mojolicious::Lite. It has a clean, portable, object oriented API without hidden magic. It supports HTTP, WebSockets, TLS, IPv6 and more. Templates can use embedded Perl and are automatically rendered. Helpers, sessions, routing and testing utilities are built in. The generator can create new app structures and components.
The document describes different frameworks used for ISUCON including Sinatra, Kossy, and Express for Ruby, Perl, and Node.js respectively. It then shows an example Python application built with Flask that defines routes for index and post endpoints, renders templates, and is deployed on Apache with mod_wsgi. The Flask app code is available on GitHub from the user memememomo.
This document provides an overview of routing changes in Rails 3, including:
- Matching routes using "match" instead of "map.connect" and optional segments.
- Namespaces, scopes, and constraints for organizing and restricting routes.
- Default RESTful routes and generating resources.
- Redirects can now be specified as Rack apps or Procs.
- Mounting other Rack endpoints at specific paths.
This document introduces Assetic, an asset management library for PHP. It allows developers to work with assets like CSS, JavaScript, images and more. Key features include:
- Asset collections to merge multiple assets into one file for fewer HTTP requests
- Filters to minify, compress, compile or otherwise process asset contents
- Caching of processed assets for improved performance
- Integration with Symfony and other frameworks
- Tools to deploy optimized static assets to servers or content delivery networks
The document summarizes tips and tricks discussed at a meetup for PHP developers in Poznan, Poland. It covers accessing request parameters in Symfony controllers, naming strategies in Doctrine, using the app.user variable and Twig, configuring Swiftmailer for email delivery, automatically testing services, ParamConverters, DI/IoC bundles like JMSDiExtraBundle, JavaScript translation bundles, and AngularJS integration.
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.
The document presents a choose your own adventure scenario where the reader can choose between mediocrity, adequacy, or mastery. It suggests that mastery is achievable everywhere and prompts the reader to consider which path they will choose to become better at understanding and achieving mastery.
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Arc & Codementor
The document discusses modern PHP features such as exceptions, namespaces, closures, statics, short array syntax, PDO, security improvements, and popular PHP tools. It provides examples of how to use exceptions, closures, namespaces, statics, short array syntax, PDO, and security features. It also introduces the built-in PHP web server, Composer package manager, and PHPUnit testing framework as useful modern PHP tools.
Anatoly Sharifulin presents on developing apps using Perl. He discusses creating an app called DLTTR that allows users to delete tweets in bulk using asynchronous queues and APIs. The app was built with Mojolicious, uses a server API, and stores data in MySQL. It has been successful with over 1 million tweets deleted and thousands of users. The talk highlights how Perl helped enable the creation of this cross-platform app that deletes tweets quickly and appropriately.
Bullet: The Functional PHP Micro-FrameworkVance Lucas
The document discusses Bullet, a PHP micro-framework created by Vance Lucas. It begins with an introduction to Lucas and his philosophy of creating lightweight frameworks that minimize complexity. It describes how Bullet is built around HTTP requests and responses, uses declarative routing via closures, and aims to require only PHP knowledge to use. The document provides examples of Bullet's routing, parameter handling, error handling and other features. It concludes by recommending resources for getting started with Bullet.
Best Practices in Plugin Development (WordCamp Seattle)andrewnacin
My talk -- officially named "Y U NO CODE WELL" -- at WordCamp Seattle 2011 on best practices during plugin development. Find the video, as it provides some good context and conversation.
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017Ryan Weaver
What is Symfony *really*? It's a collection of *35* independent libraries, and
Drupal uses less than *half* of them! That means that there's a *ton* of other
good stuff that you can bring into your project to solve common problems... as
long as you know how, and what those components do!
In this talk, we'll have some fun: taking a tour of the Symfony components, how
to install them (into Drupal, or anywhere) and how to use some of my *favorite*,
lesser-known components. By the end, you'll have a better appreciation of what
Symfony *really* is, and some new tools to use immediately.
Inside Bokete: Web Application with Mojolicious and othersYusuke Wada
Yusuke Wada introduced his work developing the Bokete website. Bokete is a Japanese entertainment website similar to 9gag that allows users to post and view "boke" which are photos with short texts. It has a website, mobile apps, and receives 300 million page views per month. Wada developed the backend system for Bokete using Perl and Mojolicious along with several other CPAN modules, particularly some written by Japanese authors. He discussed the system architecture and modules used to build Bokete.
Slides from the talk at http://www.meetup.com/GTA-PHP-User-Group-Toronto/events/151672182/
Source code for the demo at https://github.com/zymsys/Slim-RedBeanPHP-KnockoutJS
Rails 3 provides a concise overview of changes in Rails 3 including maintaining MVC structure and RESTful routing while improving areas like file structure, block helpers, routing and constraints, ActiveRecord querying, resources routing, and ActionMailer delivery. Key changes include a more Rack-like implementation, chainable ActiveRecord scopes, and pagination and layout support in ActionMailer.
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.
Lightweight Webservices with Sinatra and RestClientAdam Wiggins
This document summarizes a talk about using Sinatra and RestClient for building lightweight web services and clients. Sinatra provides a simple and lightweight way to build web applications compared to full-featured frameworks like Rails. RestClient provides a simple way to make HTTP requests from client applications, offering more functionality than Net::HTTP but with less complexity than ActiveResource. Examples of Sinatra and RestClient use include a Git wiki application built in 355 lines of Ruby code and a Heroku client library.
The document discusses different techniques for making APIs more elegant, including variable arguments, method_missing, blocks, and instance_eval. It provides examples of each technique using a CSS parser and AWS API client. Variable arguments allow flexible method definitions. Method_missing and respond_to? allow dynamically handling missing methods. Blocks and instance_eval allow evaluating code in the context of an object.
This document provides an overview of RESTful web services using Mojolicious and DBIx::Class. It describes a sample expense tracker application with five database tables in a many-to-many relationship. It then introduces REST concepts and describes how Mojolicious routes requests, DBIx::Class models the database, and generic controllers can provide CRUD operations. Finally, it outlines the steps to generate RESTful routes for a database table, including creating a model and controller that inherits standard CRUD methods.
Starting from Constructor Function and Object.create() as methods for creating objects in Javascript, we analize a couple of way to bootstrap a jQuery Plugin.
Mojolicious is a real-time web framework for Perl that provides a simplified single file mode through Mojolicious::Lite. It has a clean, portable, object oriented API without hidden magic. It supports HTTP, WebSockets, TLS, IPv6 and more. Templates can use embedded Perl and are automatically rendered. Helpers, sessions, routing and testing utilities are built in. The generator can create new app structures and components.
The document describes different frameworks used for ISUCON including Sinatra, Kossy, and Express for Ruby, Perl, and Node.js respectively. It then shows an example Python application built with Flask that defines routes for index and post endpoints, renders templates, and is deployed on Apache with mod_wsgi. The Flask app code is available on GitHub from the user memememomo.
This document provides an overview of routing changes in Rails 3, including:
- Matching routes using "match" instead of "map.connect" and optional segments.
- Namespaces, scopes, and constraints for organizing and restricting routes.
- Default RESTful routes and generating resources.
- Redirects can now be specified as Rack apps or Procs.
- Mounting other Rack endpoints at specific paths.
This document introduces Assetic, an asset management library for PHP. It allows developers to work with assets like CSS, JavaScript, images and more. Key features include:
- Asset collections to merge multiple assets into one file for fewer HTTP requests
- Filters to minify, compress, compile or otherwise process asset contents
- Caching of processed assets for improved performance
- Integration with Symfony and other frameworks
- Tools to deploy optimized static assets to servers or content delivery networks
The document summarizes tips and tricks discussed at a meetup for PHP developers in Poznan, Poland. It covers accessing request parameters in Symfony controllers, naming strategies in Doctrine, using the app.user variable and Twig, configuring Swiftmailer for email delivery, automatically testing services, ParamConverters, DI/IoC bundles like JMSDiExtraBundle, JavaScript translation bundles, and AngularJS integration.
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.
The document presents a choose your own adventure scenario where the reader can choose between mediocrity, adequacy, or mastery. It suggests that mastery is achievable everywhere and prompts the reader to consider which path they will choose to become better at understanding and achieving mastery.
The document provides an overview of developmental psychology and learning in three areas:
1. It discusses various aspects of human development including physical, personal, social, and cognitive development. It outlines some general principles of development and theories by Piaget and Vygotsky.
2. It covers the brain and cognitive development, discussing different areas of the brain and their functions. It also summarizes Piaget's stages of cognitive development.
3. It discusses theories of personal, social, and emotional development including Erikson's stages of psychosocial development and Freud's structure of personality.
The document discusses different data modeling approaches for complex domains like biology and comics. It notes that relational databases struggle with hierarchical data, while graph databases are well-suited for modeling relationships and connectivity. Document databases allow embedding related data and working with semi-structured documents. The document recommends using the database approach that best matches each domain's data structure and access patterns.
Open source software is winning the war, especially in the web world. The war is far from done, however, and the movement needs you to continue to succeed. Whether you're a developer, a designer, or an entrepreneur, find out how to help win tomorrow's battles.
The document discusses the difference between achieving mastery or mediocrity. It states that achieving mastery requires being obsessed with deliberate practice, setting goals, failing, asking for feedback, and repeating the process. Mediocrity results from not practicing or having bad practice habits. Achieving excellence requires some deliberate practice and being willing to make tradeoffs to improve.
- Big systems can be difficult to design, build, test, debug, scale and replace, while smaller systems are easier to work with along each step of development.
- The document advocates dividing large monolithic systems into smaller, more specialized and independent components or microservices to gain benefits like improved modularity, reusability, and flexibility.
- Some ways to divide a system discussed include separating components by domain like payments, search, caching etc. and ensuring clear APIs between components.
The second most important thing you can do is ship something good. The most important thing you can do? Ship something. I love testing and performance optimization and pixel tweaking as much as the next person, but if you never ship then you might as well have never started.
The document outlines a 2.5 step process for being awesome: 1) start projects or tasks, 2) finish what you start by working consistently and shipping projects early and often, and 2.5) know when to quit projects gracefully. The overall message is to focus on completing initiatives in order to become truly awesome.
This document discusses the importance of intentionality, choice, mastery and focus. It suggests that one should deliberately practice skills through goal setting, failing, getting feedback and repeating until mastery is achieved. While mastery may not always be required, mediocrity and adequacy should be embraced. The document also focuses on choosing to specialize in certain skills like software, platforms and frameworks rather than spreading resources too thin.
The document discusses plugins, generators, and gems in Ruby on Rails. Plugins are used to extend Rails functionality and are installed into a Rails application. Generators are Rails commands that generate code or files within an application. Gems are packages for distributing and sharing libraries, and the document provides instructions for creating a gem using Bundler that includes a generator.
JRuby, Ruby, Rails and You on the Cloud is a presentation about using Ruby on Rails with JRuby on cloud platforms. It introduces JRuby and how to set up a development environment. It demonstrates generating a Rails scaffold and accessing Java libraries from Rails. Deployment options on platforms like Engine Yard AppCloud are discussed. The presentation provides an overview of testing and recommends resources for learning more about Ruby, Rails, JRuby and deployment strategies.
This document discusses using Maven to build and manage Java projects. It describes Maven's property processing and build process design, including how projects can inherit properties and goals from parent projects. It provides examples of configuring Maven to generate documentation, EJBs, web services, and packaging the various modules into a final EAR. The last section discusses customizing Maven and putting the pieces together using a Maven reactor build.
This document discusses using Maven to build and manage Java projects. It describes Maven's property processing, build process design for multi-module projects, and how to use Maven plugins like XDoclet and the Maven EJB plugin to generate artifacts like EJBs, WAR files, and EAR files. The last section discusses putting the pieces together using Maven's reactor capability to build the entire project from the top-level.
Building and managing java projects with maven part-IIIprinceirfancivil
This document discusses using Maven to build and manage Java projects. It describes Maven's property processing, build process design for a sample service project with common, EJB and web application components, and how to configure subprojects for the data, EJB and web modules. It also covers tasks like XDoclet processing, web services generation, EJB jar packaging, and finally assembling the entire application as an EAR file using the Maven reactor plugin.
This document discusses using Maven to build and manage Java projects. It describes Maven's property processing and build process design, including how projects can inherit properties and goals from parent projects. It provides examples of configuring Maven to generate documentation, EJBs, web services, and packaging the various modules into a final EAR. The last section discusses customizing Maven and putting the pieces together using a Maven reactor build.
The document discusses testing legacy Rails applications. It provides steps to get testing set up on a legacy Rails app, including creating a test database, running migrations, and getting Rake tasks to run tests. It emphasizes starting with one test at a time, finding and fixing bugs, and refactoring code. Examples are given of writing a model test based on application logs and fixing a failure by updating code. The document stresses treating methods as isolated boxes and only testing one thing at a time to incrementally add tests to a legacy codebase.
role_id
Role
Active Record Associations
14 Rails - Innovation and Security
class
Role
<
ActiveRecord::Base
attr_accessor
:name
has_and_belongs_to_many
:clients
end
class
Client
<
ActiveRecord::Base
has_and_belongs_to_many
:roles
end
client_roles
1 0..* client_id 0..* 1
Client
The document discusses developing plugins for Redmine. It outlines a three step process to create a plugin: 1) Generate the plugin files and structure, 2) Create any models, and 3) Create controllers. It also notes there were significant changes between the 1.x and 2.x branches of Redmine and provides resources for plugin development tutorials.
This document summarizes the new features in Django 1.2. Key features include support for multiple databases, raw SQL queries, model validation, improved CSRF protection, user messaging, faster tests, and many other improvements and new features. The release timeline includes a beta on January 26, release candidate on March 2, and final release on March 9. Questions can be directed to Jacob Kaplan-Moss by email or Twitter.
Crafting Beautiful CLI Applications in RubyNikhil Mungel
The document describes a presentation on crafting beautiful command line applications using Ruby. The presentation discusses why the command line is useful, what makes a good CLI app, and some key principles for CLI apps like least astonishment, reversibility, config files, graceful failure, and honoring piping. It also covers input/output in CLI apps and libraries like OptionParser, Mixlib::CLI, and Thor that can help build CLI apps in Ruby.
The document discusses best practices for building web applications using the Ruby on Rails framework. It covers topics like asset pipeline for concatenating and minifying assets, CoffeeScript and SASS for high-level languages, content negotiation for different formats, partials for view components, AJAX, caching, and solving the N+1 query problem through includes and batch loading.
Rails 4.0 introduced the following changes:
1. Thread safety is enabled by default.
2. Strong Parameters were added for mass assignment protection.
3. Turbolinks was added to speed up page loads by preventing full page reloads.
4. Russian Doll Caching was introduced to maximize cache hits by nesting fragment caches.
Some features were extracted to gems including Action and Page Caching, Active Resource, and AR Observer. The deprecation policy removes deprecated features in future versions. Strong Parameters replace attr_accessible. Turbolinks improves performance. Russian Doll Caching optimizes caching.
The document discusses using YSlow to measure website performance. It provides information on using YSlow from the command line and integrating it with continuous integration workflows. Key points include:
- YSlow can analyze HAR files from the command line to generate performance metrics and scores. It has options to customize the output format, information displayed, and ruleset used.
- YSlow results can be logged to a URL for monitoring. Integrating YSlow with PhantomJS allows running performance tests from scripts.
- Continuous integration of YSlow analyses allows catching performance regressions early. Combining it with real user monitoring and WebPageTest gives a comprehensive performance testing suite.
Jenkins User Conference 2012
Only by the third plugin do you get the hang of writing a plugin. I thought as a developer coming to the build side of things it'd be easy to jump in and write some plugins. I was wrong. Don't be fooled by the extremely friendly Jenkins community, writing a plugin from scratch is harder than they let on. This talk will explain the hurdles that I had to cross to make writing plugins easy.
The document provides an overview of Kubernetes including its introduction, configuration file creation using direct editing, templates with Helm and Kustomize, usage patterns, web service practices, and deployment pipelines. Key sections include explaining Kubernetes architecture and mechanisms, setting up access to a Kubernetes cluster, generating Helm templates to render Kubernetes objects, customizing templates for different environments in Kustomize, and using ArgoCD for deployment automation.
This is the short talk I delivered at the Ruby Underground Meetup in Tel Aviv for the local Ruby user group about some of the changes and new features in R
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Conference
What's the first thing you should do when starting a new project...? Setup a good CI system! With Github Actions you can do it in a couple of seconds. You can easily setup a workflow to build your project, test it on different machines, and deploy the results. In this talk we're going to see how you can setup a simple Github Action for your repository and start enjoying it right after.
Presentation given at SXSWi 2010 - an overview of some research in social psychology and behavioral economics, and on making people do what you want them to online.
The document discusses NoSQL databases and provides examples of different types. It describes key-value stores like Redis and Tokyo Cabinet, column-oriented databases like Cassandra, document databases like CouchDB and MongoDB, graph databases like Neo4J, and provides code examples for interacting with each. It also discusses hybrid approaches and suggests exploring different databases and considering alternatives to relational databases by default for new projects.
This document discusses NoSQL databases and provides examples of different types. It begins by discussing motivations for NoSQL like performance, scalability, and flexibility over traditional relational databases. It then categorizes NoSQL databases as key-value stores like Redis and Tokyo Cabinet, column-oriented stores like BigTable and Cassandra, document-oriented stores like CouchDB and MongoDB, and graph databases like Neo4J. For each category it provides comparisons on attributes and examples using different languages.
NoSQL: Death to Relational Databases(?)Ben Scofield
This document discusses NoSQL databases and alternatives to relational databases. It begins by covering motivations for using NoSQL databases like performance, scalability, and flexibility. It then provides a taxonomy of different types of NoSQL databases, including key-value stores, column-oriented stores, document-oriented stores, and graph databases. Examples are given using specific NoSQL databases like Redis, Tokyo Cabinet, Cassandra, CouchDB, MongoDB, and Neo4j. The document concludes by discussing next steps like exploring the NoSQL ecosystem further and considering logical data modeling rather than focusing on the database.
The document discusses different approaches for modeling complex domains and databases, including key-value stores, document databases, and graph databases. It notes that modeling domains like biology and comics can be challenging due to their complexity, inconsistent definitions, and changing nature over time. Different database types each have advantages and disadvantages for representing different types of domains and queries.
"Comics" Is Hard: Alternative DatabasesBen Scofield
The document discusses alternatives to traditional databases for modeling complex domains like biology and comics. It examines issues with existing modeling approaches like Linnaean taxonomy and cladistics. It then explores alternative database types that could handle these domains better, such as key-value stores, document databases, and graph databases. Code examples are provided for Tokyo Cabinet, Redis, MongoDB and Neo4j to illustrate how different types of data could be modeled in each. The document argues that a hybrid approach, combining multiple database types, may be needed to fully address the challenges of these domains.
The document shows a line graph of the S&P 500 index over time from December 1978 to December 2008. The index value fluctuated over this period, rising from just under $150 million in 1978 to over $1.4 billion in late 2007/early 2008 before falling sharply to under $800 million in late 2008.
And the Greatest of These Is ... SpaceBen Scofield
The document discusses Rack, the modular web server interface for Ruby. It provides an overview of Rack and how it works, describing how it acts as an interface between web applications and web servers. It also discusses how Rack is used in Rails applications and some common Rack middleware components that can be used to modify request/response behavior. Finally, it talks about building custom Rack middleware and integrating exceptions and error handling.
"Comics" Is Hard: Domain Modeling ChallengesBen Scofield
This document discusses the challenges of domain modeling, including how to model complex domains like biology, comics, and crowdsourcing data. It explores different modeling approaches like using taxonomies, cladistics, or graph databases. It also discusses the limitations of different approaches and how the domain itself may be unclear or changing. The goal is to choose flexible modeling techniques and hybrid solutions that can accommodate an evolving understanding of the domain.
And the Greatest of These Is ... Rack SupportBen Scofield
The document discusses Rack, a Ruby web server interface. It begins by explaining Rack's basic request/response cycle and common middleware components like Rack::Cache. It then covers integrating Rack into Rails applications and building custom middleware for tasks like exception handling and progressive caching. The document concludes by discussing some advanced Rack techniques and tools.
Page Caching Resurrected: A Fairy TaleBen Scofield
The document discusses using caching techniques like page caching, action caching, and fragment caching to improve performance of dynamic web applications built with Ruby on Rails. It describes how caching saved pages, fragments of pages, and controller actions can significantly increase the number of requests a server can handle per second by avoiding unnecessary database queries and template rendering. The document also discusses using JavaScript, Ajax, and direct responses from Rack middleware for additional performance gains in Rails applications.
All I Need to Know I Learned by Writing My Own Web FrameworkBen Scofield
Ben Scofield gave a talk at Rubyconf about building his own web framework called Athena from scratch. He discussed how starting small with a "Hello World" program and building up from there helped him learn about aspects of web development like RESTful design, routing, ORM/database integration, and exception handling in Ruby. He concluded by noting that there is always more to learn, and shared his GitHub page where the framework code can be found.
This document outlines an agenda for a presentation on resourceful plugins in Rails. The presentation will define resourceful plugins, discuss alternatives, and demonstrate the process through live coding examples. It will be divided into two parts, with the first part covering definitions, philosophy, examples and a tour. The second part will focus on the process and include hands-on activities.
This document discusses various approaches to designing RESTful routes and controllers in a Rails application. It provides examples of routing configurations and controller code for resources like users, records, and search functions. It also covers more advanced patterns involving related resources, namespaces, and default routing.
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.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
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.
Building RAG with self-deployed Milvus vector database and Snowpark Container...Zilliz
This talk will give hands-on advice on building RAG applications with an open-source Milvus database deployed as a docker container. We will also introduce the integration of Milvus with Snowpark Container Services.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
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.
20 Comprehensive Checklist of Designing and Developing a WebsitePixlogix Infotech
Dive into the world of Website Designing and Developing with Pixlogix! Looking to create a stunning online presence? Look no further! Our comprehensive checklist covers everything you need to know to craft a website that stands out. From user-friendly design to seamless functionality, we've got you covered. Don't miss out on this invaluable resource! Check out our checklist now at Pixlogix and start your journey towards a captivating online presence today.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
26. [rails3] > rails g model Ninja name:string -o mongo_mapper
[rails3] > rails g model Ninja name:string -t shoulda
[rails3] > rails g model Ninja name:string -r factory_girl
27. [rails3] > rails g model Ninja name:string -o mongo_mapper
error mongo_mapper [not found]
[rails3] > rails g model Ninja name:string -t shoulda
invoke active_record
create db/migrate/20100505102902_create_ninjas.rb
create app/models/ninja.rb
error shoulda [not found]
[rails3] > rails g model Ninja name:string -r factory_girl
invoke active_record
create db/migrate/20100505102902_create_ninjas.rb
create app/models/ninja.rb
invoke test_unit
create test/unit/ninja_test.rb
error factory_girl [not found]
28. [rails3] > rails g generator FactoryGirl
create lib/generators/factory_girl
create lib/generators/factory_girl/factory_girl_generator.rb
create lib/generators/factory_girl/USAGE
O
create lib/generators/factory_girl/templates
N
29.
30. module FactoryGirl
class ModelGenerator < Rails::Generators::NamedBase
argument :attributes, :type => :array, :default => [],
:banner => "field:type field:type"
def create_fixture_file
template 'factory.rb',
File.join('test', 'factories', "#{singular_name}.rb")
end
def self.source_root
@source_root ||= File.expand_path('../templates', __FILE__)
end
end
end
31. Factory.define :<%= singular_name %> do |f|
<% attributes.each do |attribute| -%>
<% if attribute.type == :references -%>
f.association :<%= attribute.name %>
<% else -%>
f.<%= attribute.name %> <%= attribute.default.inspect %>
<% end -%>
<% end -%>
end
35. module TestApp
class Application < Rails::Application
config.generators do |g|
g.test_framework :test_unit,
:fixture_replacement => :factory_girl
end
end
end
42. module Typus
class ResourceGenerator < Rails::Generators::NamedBase
def initialize(args, *options) #:nodoc:
args[0] = args[0].dup if args[0].is_a?(String) &&
args[0].frozen?
args[0] = "Admin::#{args[0]}"
super
end
def create_controller
template 'typus_controller.rb',
File.join('app', 'controllers', class_path,
"#{file_name}_controller.rb")
end
hook_for :template_engine, :as => :controller
hook_for :test_framework, :as => :controller
# continued ...
43. # continued ...
hook_for(:controller,
:as => :controller,
:in => :rails) do |instance, controller|
instance.instance_eval do
@_invocations.delete(Erb::Generators::ControllerGener...)
@_invocations.delete(TestUnit::Generators::Controller...)
end
instance.invoke controller, [instance.name.demodulize]
end
def self.source_root
@source_root ||= File.expand_path('../templates', __FILE__)
end
end
end
44. module TestApp
class Application < Rails::Application
config.generators do |g|
g.resource_controller :typus, :controller => :controller
end
end
end