Lua is a very fast and powerful scripting language that can be easily embeddable. It has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language and can be used to develop robust applications. Its use in web developments, however, despite its great potential and incredible benchmarks, needs to be more widespread. This talk will mention the current state of Lua in web development, show some benchmarks, compare existing tools and teach how to get started with Sailor, an MVC web framework written in Lua.
Sailor - A web MVC framework in Lua by Etiene Dalcol (Lua Workshop 2014)Etiene Dalcol
Lua's use in web tools, despite its great potential, is not yet widespread. Having had experience as a web programmer, and aiming to learn more about this language, I started a marathon that produced an MVC framework completely written in Lua, called Sailor. This talk presents the beginnings of Sailor, a comparison with other existing tools, the current stage of Sailor's development today and intends to start a debate on what we can do to spread the idea of using Lua more in web development. See sailorproject.org and sailor at github.com.
Web development with Lua and Sailor @ GeeCon 2015Etiene Dalcol
Lua is a very fast and powerful scripting language that can be easily embeddable. It can be used to develop robust applications and has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language. However, it's use in web development, despite its great potential and incredible benchmarks, needs to be more widespread. Having had experience as a web programmer, and aiming to learn more about this language, I started a marathon that produced Sailor 0.1, a web MVC framework completely written in Lua after only ten days. Once the quest was completed, the feedback was so interesting that I continued the development. Sailor keeps growing each day, also with the help of contributors. This talk presents the beginnings of Sailor framework, a comparison with other existing tools in Lua, the current stage of Sailor's development today, the official announcement of version 0.3 (Jupiter). This presentation also intends to start a debate on what we can do to spread the idea of using more Lua in web development.
- The document provides an introduction to Lua programming including what Lua is, why use Lua, key concepts like tables, modules, metatables, and ways to get started with Lua programming through embedding, general purpose scripting, or common libraries and tools.
Etiene Dalcol - Web development with Lua Programming Language - code.talks 2015AboutYouGmbH
The document is a presentation about Sailor, an MVC web framework written in Lua. It introduces Sailor and discusses its features like routing, templates, ORM, and generators. Examples are provided of controllers, models, and templates. Sailor aims to make Lua a viable web development language by providing necessary libraries and documentation for web apps. While still early, Sailor shows potential as a full-featured but lightweight alternative to other web frameworks.
Lua web development and Sailor @conc_at 2015Etiene Dalcol
Lua is a very fast and powerful scripting language that can be easily embeddable. It can be used to develop robust applications and has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language. However, it's use in web developments, despite its great potential and incredible benchmarks, needs to be more widespread. I'd like to show you Sailor, a web MVC framework completely written in Lua.
The document introduces Sailor, an MVC web framework written completely in Lua that allows for web development in Lua. Sailor is compatible with various web servers and databases, and provides features like routing, sessions, templates and form generation out of the box. It has a simple structure for models, controllers and views, and includes validation, ORM and code generation capabilities. While still early in development, Sailor aims to be a full-featured framework for building web applications in Lua.
This document summarizes a presentation about building web applications in Perl using PSGI and Plack. It discusses:
- The history of CGI and its problems with performance
- How mod_perl and other environments addressed these issues but reduced portability
- How PSGI separates web application processing from deployment, allowing applications to run on different servers and frameworks
- A PSGI application is defined as a code reference that returns a response as an array reference
- Plack provides helpers like Plack::Request and Plack::Response to simplify building PSGI applications
- Template Toolkit can be used to separate HTML templates from application code
- User input can be accessed from the environment hash or Plack::Request object
This document provides an overview of developing a web application framework using decoupled libraries with OpenResty. It begins with introductions and background on the speaker and what to expect. It then discusses concepts like routing, templating, validation and filtering, sessions, and styling that are part of the framework. Specific libraries are demonstrated for each concept. The document concludes with discussing additional common libraries and a demo of how the libraries work together.
Sailor - A web MVC framework in Lua by Etiene Dalcol (Lua Workshop 2014)Etiene Dalcol
Lua's use in web tools, despite its great potential, is not yet widespread. Having had experience as a web programmer, and aiming to learn more about this language, I started a marathon that produced an MVC framework completely written in Lua, called Sailor. This talk presents the beginnings of Sailor, a comparison with other existing tools, the current stage of Sailor's development today and intends to start a debate on what we can do to spread the idea of using Lua more in web development. See sailorproject.org and sailor at github.com.
Web development with Lua and Sailor @ GeeCon 2015Etiene Dalcol
Lua is a very fast and powerful scripting language that can be easily embeddable. It can be used to develop robust applications and has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language. However, it's use in web development, despite its great potential and incredible benchmarks, needs to be more widespread. Having had experience as a web programmer, and aiming to learn more about this language, I started a marathon that produced Sailor 0.1, a web MVC framework completely written in Lua after only ten days. Once the quest was completed, the feedback was so interesting that I continued the development. Sailor keeps growing each day, also with the help of contributors. This talk presents the beginnings of Sailor framework, a comparison with other existing tools in Lua, the current stage of Sailor's development today, the official announcement of version 0.3 (Jupiter). This presentation also intends to start a debate on what we can do to spread the idea of using more Lua in web development.
- The document provides an introduction to Lua programming including what Lua is, why use Lua, key concepts like tables, modules, metatables, and ways to get started with Lua programming through embedding, general purpose scripting, or common libraries and tools.
Etiene Dalcol - Web development with Lua Programming Language - code.talks 2015AboutYouGmbH
The document is a presentation about Sailor, an MVC web framework written in Lua. It introduces Sailor and discusses its features like routing, templates, ORM, and generators. Examples are provided of controllers, models, and templates. Sailor aims to make Lua a viable web development language by providing necessary libraries and documentation for web apps. While still early, Sailor shows potential as a full-featured but lightweight alternative to other web frameworks.
Lua web development and Sailor @conc_at 2015Etiene Dalcol
Lua is a very fast and powerful scripting language that can be easily embeddable. It can be used to develop robust applications and has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language. However, it's use in web developments, despite its great potential and incredible benchmarks, needs to be more widespread. I'd like to show you Sailor, a web MVC framework completely written in Lua.
The document introduces Sailor, an MVC web framework written completely in Lua that allows for web development in Lua. Sailor is compatible with various web servers and databases, and provides features like routing, sessions, templates and form generation out of the box. It has a simple structure for models, controllers and views, and includes validation, ORM and code generation capabilities. While still early in development, Sailor aims to be a full-featured framework for building web applications in Lua.
This document summarizes a presentation about building web applications in Perl using PSGI and Plack. It discusses:
- The history of CGI and its problems with performance
- How mod_perl and other environments addressed these issues but reduced portability
- How PSGI separates web application processing from deployment, allowing applications to run on different servers and frameworks
- A PSGI application is defined as a code reference that returns a response as an array reference
- Plack provides helpers like Plack::Request and Plack::Response to simplify building PSGI applications
- Template Toolkit can be used to separate HTML templates from application code
- User input can be accessed from the environment hash or Plack::Request object
This document provides an overview of developing a web application framework using decoupled libraries with OpenResty. It begins with introductions and background on the speaker and what to expect. It then discusses concepts like routing, templating, validation and filtering, sessions, and styling that are part of the framework. Specific libraries are demonstrated for each concept. The document concludes with discussing additional common libraries and a demo of how the libraries work together.
The document discusses rewriting some of Matt's original Perl scripts to use modern best practices like PSGI, CPAN modules, and web frameworks. It provides examples of simple programs - like displaying a random text phrase or image - that were rewritten using techniques like Dancer and Mojolicious. The goal is to provide updated, easy to understand examples of web programming in Perl for beginners to learn from.
- The document discusses using Apache Mesos to deploy and scale microservices. Mesos acts as the "kernel" that microservices run on top of, similar to how processes run on an operating system. Marathon is used as the "OS" to deploy and manage microservices on Mesos. An API gateway acts as the "traffic controller", routing requests to microservices and providing features like authentication, analytics, and rate limiting.
Using PHP Functions! (Not those functions, Google Cloud Functions)Chris Tankersley
Serverless computing has taken web development by storm, and Google has recently updated their Google Cloud Functions to support PHP 7.4! We'll walk through setting up a function and how it all works.
Building Apis in Scala with Playframework2Manish Pandit
My talk at Silicon Valley Code Camp 2013.
Two years ago I gave a talk on PlayFramework with Java at SVCC. As with everything, PlayFramework has evolved into a far mature ecosystem with native Scala support, and Typesafe backing. PlayFramework 2 is a simple, MVC-based, convention over configuration web application framework for Java and Scala. It is rapidly gaining popularity as more and more companies are adopting it for building scalable, performant, share-nothing architectures. In this talk I'll cover the fundamentals of Play! Framework2, a brief overview of Scala, and demonstrate building a simple, RESTful API. This will be a very interactive, and hands-on session. It'd be awesome if you have played around with Scala, but if you have not, the scope of this talk does not require you to be a Scala expert. It will however be very useful if you've worked with other Web Application Frameworks like Jersey, CXF, etc. so you can cross-relate the concepts.
Plack provides a common interface called PSGI (Perl Server Gateway Interface) that allows Perl web applications to run on different web servers. It includes tools like Plackup for running PSGI applications from the command line and middleware for adding functionality. Plack has adapters that allow many existing Perl web frameworks to run under PSGI. It also provides high performance PSGI servers and utilities for building and testing PSGI applications.
OWIN was created in 2010 as a collaboration between developers of various .NET web frameworks to define a common interface between .NET web servers and applications. It aimed to provide a standard for building lightweight web servers and frameworks independently of Microsoft ASP.NET. The specification developed over time to support asynchronous operations and middleware composition. It was later adopted by Microsoft and others and helped unify the .NET ecosystem around a common abstraction. OWIN continues to evolve its specifications and governance to support new frameworks and ideas.
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
Hello, unfrozen Paleolithic Perl programmers! Welcome to 2015!
First, let’s start with the good news: yes, we’re still programming in Perl5 in 2015 (and yes, we think that’s good news). Indeed, most of the code you wrote in the past, before that unfortunate "Big Giant Hole in Ice" incident, will likely still work just fine on the current release of Perl5 -- even if you originally wrote it against Perl 4 or even Perl 3.
Here’s the bad news: there’s been an incredible amount of innovation in not only Perl5-the-language, but also in Perl5-the-community and what the community considers to be accepted best practices and the right way to do things. It can be very frightening and confusing!
But wait, there’s more good news: if you come to this talk, you’ll get a guided tour of my (reasonably opinionated) views on what the consensus best practices are around issues such as which version of Perl5 to use, system Perl versus non-system Perl, Perl5 installation management packages, new language features and libraries to use, old language features and libraries to avoid, modern tooling, and even more!
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)daylerees
This document is an introduction to the Laravel PHP framework presented by Dayle Rees. It discusses Laravel's history and growth from 2011 to present, how Rees became involved as an early user and contributor, and key features of Laravel like its dependency injection container, Eloquent ORM, queues, authentication, caching and more. It also promotes resources like Laravel Forge and Homestead for getting started with Laravel development.
Refactoring @ Mindvalley: Smells, Techniques and PatternsTristan Gomez
Every week my team commits really good, clean code. I decided to get the best of the commits and showcase what makes them good, what smells they address, and what techniques they used.
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
Hello, unfrozen Paleolithic Perl programmers! Welcome to 2016!
First, let’s start with the good news: yes, we’re still programming in Perl5 in 2016 (and yes, we think that’s good news). Indeed, most of the code you wrote in the past, before that unfortunate “Big Giant Hole in Ice” incident, will likely still work just fine on the current release of Perl5 — even if you originally wrote it against Perl 4 or even Perl 3.
Here’s the bad news: there’s been an incredible amount of innovation in not only Perl5-the-language, but also in Perl5-the-community and what the community considers to be accepted best practices and the right way to do things. It can be very frightening and confusing!
But wait, there’s more good news: if you come to this talk, you’ll get a guided tour of my (reasonably opinionated) views on what the consensus best practices are around issues such as which version of Perl5 to use, system Perl versus non-system Perl, Perl5 installation management packages, new language features and libraries to use, old language features and libraries to avoid, modern tooling, and even more!
Delivered at OpenWest 2016, 14 July 2016
Life Beyond Rails: Creating Cross Platform Ruby AppsTristan Gomez
This document discusses building cross-platform applications. It argues that cross-platform support allows reuse of significant portions of code across multiple platforms. Common tools can operate on different things through techniques like encapsulation and polymorphism. While object-oriented programming is about organizing a program with objects, cross-platform development focuses on connecting elements in a modular way to manage complexity.
Developing high-performance network servers in LispVladimir Sedach
Overview of current high-performance Common Lisp web servers and implementation techniques, and description of a new hybrid approach to asynchronous I/O based on separate racing accept() and epoll() thread pools.
The OpenNTF Domino API is a community-developed Java API that provides an alternative to using the native Notes objects in Domino. It was created to bridge the gap between LotusScript and Java developers, remove the need for try/catch blocks and recycling, and take advantage of Java collections and helper methods. The API is deployed via an update site and its packages include core interfaces, extension interfaces, and implementation classes. It provides features like logging, transaction processing, and database event listeners. Developers can convert code by changing imports, removing unnecessary code, and using the API's helper methods.
The document introduces Ruby on Rails and provides an overview of its features and benefits. It summarizes the speaker's experience with web development over time, introduces MVC and ORM concepts, and demonstrates Rails through a live coding example. Key advantages of Rails highlighted include its convention over configuration approach, use of Ruby as a dynamic scripting language, and ability to rapidly develop database-backed web applications.
Developer-friendly taskqueues: What you should ask yourself before choosing oneSylvain Zimmer
This document summarizes key considerations for choosing a task queue system. It discusses task properties like idempotency and reentrancy. It covers performance factors like latency and throughput as well as consistency models. Common task queue systems like Celery, RQ, and MRQ are evaluated based on factors like performance, complexity, community support, and future plans. The document emphasizes thinking carefully about specific needs before choosing a system and being grateful for open source software.
Plack is a superglue for Perl web frameworks that provides a common interface called PSGI (Perl Web Server Gateway Interface) inspired by WSGI and Rack. PSGI allows any web application or framework to run on any web server by providing a standard way for applications to communicate with servers. Plack also includes tools like Plackup for running PSGI applications from the command line and middleware for common functionality that can be shared across frameworks. Many existing Perl web frameworks have been adapted to run under PSGI through Plack.
This document provides an overview and introduction to XNA game development. It discusses the XNA framework and content pipeline for loading textures, audio, and other game assets. It also explains the typical lifecycle methods like Initialize, LoadContent, UnloadContent, Update, and Draw that are used in the main Game1 class. References are provided for books, tutorials, and the author's own game projects and publications related to XNA.
PSGI is a Perl port of Python's WSGI and Ruby's Rack that defines a common interface between web servers and frameworks. Plack provides reference implementations of PSGI servers as well as middleware and utilities. This allows frameworks to run on many servers like standalone, FastCGI, and Apache using a common PSGI application interface. Plack is fast, supports many frameworks through adapters, and provides tools like Plackup and middleware to help build and test PSGI applications.
Over the past few years, web-applications have started to play an increasingly important role in our lives. We expect them to be always available and the data to be always fresh. This shift into the realm of real-time data processing is now transitioning to physical devices, and Gartner predicts that the Internet of Things will grow to an installed base of 26 billion units by 2020.
Reactive web-applications are an answer to the new requirements of high-availability and resource efficiency brought by this rapid evolution. On the JVM, a set of new languages and tools has emerged that enable the development of entirely asynchronous request and data handling pipelines. At the same time, container-less application frameworks are gaining increasing popularity over traditional deployment mechanisms.
This talk is going to give you an introduction into one of the most trending reactive web-application stack on the JVM, involving the Scala programming language, the concurrency toolkit Akka and the web-application framework Play. It will show you how functional programming techniques enable asynchronous programming, and how those technologies help to build robust and resilient web-applications.
Web development with Lua @ Bulgaria Web Summit 2016Etiene Dalcol
February 20, 2016
Lua is a very fast and powerful scripting language that can be easily embeddable. It has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language and can be used to develop robust applications. Its use in web developments, however, despite its great potential and incredible benchmarks, needs to be more widespread. This talk will mention the current state of Lua in web development, show some benchmarks, compare existing tools and teach developers how to get started with Sailor, an MVC web framework written in Lua.
My presentation from RedDotRubyConf 2013 in Singapore. Turned out to be a reflection on whether I'd still be a Rubyist in another 5 years, and what are the external trends that might change that. Short story: Yes! Of course. I'll always think like a Rubyist even though things will probably get more polyglot. The arena of web development is perhaps the most unpredictable though.
The document discusses rewriting some of Matt's original Perl scripts to use modern best practices like PSGI, CPAN modules, and web frameworks. It provides examples of simple programs - like displaying a random text phrase or image - that were rewritten using techniques like Dancer and Mojolicious. The goal is to provide updated, easy to understand examples of web programming in Perl for beginners to learn from.
- The document discusses using Apache Mesos to deploy and scale microservices. Mesos acts as the "kernel" that microservices run on top of, similar to how processes run on an operating system. Marathon is used as the "OS" to deploy and manage microservices on Mesos. An API gateway acts as the "traffic controller", routing requests to microservices and providing features like authentication, analytics, and rate limiting.
Using PHP Functions! (Not those functions, Google Cloud Functions)Chris Tankersley
Serverless computing has taken web development by storm, and Google has recently updated their Google Cloud Functions to support PHP 7.4! We'll walk through setting up a function and how it all works.
Building Apis in Scala with Playframework2Manish Pandit
My talk at Silicon Valley Code Camp 2013.
Two years ago I gave a talk on PlayFramework with Java at SVCC. As with everything, PlayFramework has evolved into a far mature ecosystem with native Scala support, and Typesafe backing. PlayFramework 2 is a simple, MVC-based, convention over configuration web application framework for Java and Scala. It is rapidly gaining popularity as more and more companies are adopting it for building scalable, performant, share-nothing architectures. In this talk I'll cover the fundamentals of Play! Framework2, a brief overview of Scala, and demonstrate building a simple, RESTful API. This will be a very interactive, and hands-on session. It'd be awesome if you have played around with Scala, but if you have not, the scope of this talk does not require you to be a Scala expert. It will however be very useful if you've worked with other Web Application Frameworks like Jersey, CXF, etc. so you can cross-relate the concepts.
Plack provides a common interface called PSGI (Perl Server Gateway Interface) that allows Perl web applications to run on different web servers. It includes tools like Plackup for running PSGI applications from the command line and middleware for adding functionality. Plack has adapters that allow many existing Perl web frameworks to run under PSGI. It also provides high performance PSGI servers and utilities for building and testing PSGI applications.
OWIN was created in 2010 as a collaboration between developers of various .NET web frameworks to define a common interface between .NET web servers and applications. It aimed to provide a standard for building lightweight web servers and frameworks independently of Microsoft ASP.NET. The specification developed over time to support asynchronous operations and middleware composition. It was later adopted by Microsoft and others and helped unify the .NET ecosystem around a common abstraction. OWIN continues to evolve its specifications and governance to support new frameworks and ideas.
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
Hello, unfrozen Paleolithic Perl programmers! Welcome to 2015!
First, let’s start with the good news: yes, we’re still programming in Perl5 in 2015 (and yes, we think that’s good news). Indeed, most of the code you wrote in the past, before that unfortunate "Big Giant Hole in Ice" incident, will likely still work just fine on the current release of Perl5 -- even if you originally wrote it against Perl 4 or even Perl 3.
Here’s the bad news: there’s been an incredible amount of innovation in not only Perl5-the-language, but also in Perl5-the-community and what the community considers to be accepted best practices and the right way to do things. It can be very frightening and confusing!
But wait, there’s more good news: if you come to this talk, you’ll get a guided tour of my (reasonably opinionated) views on what the consensus best practices are around issues such as which version of Perl5 to use, system Perl versus non-system Perl, Perl5 installation management packages, new language features and libraries to use, old language features and libraries to avoid, modern tooling, and even more!
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)daylerees
This document is an introduction to the Laravel PHP framework presented by Dayle Rees. It discusses Laravel's history and growth from 2011 to present, how Rees became involved as an early user and contributor, and key features of Laravel like its dependency injection container, Eloquent ORM, queues, authentication, caching and more. It also promotes resources like Laravel Forge and Homestead for getting started with Laravel development.
Refactoring @ Mindvalley: Smells, Techniques and PatternsTristan Gomez
Every week my team commits really good, clean code. I decided to get the best of the commits and showcase what makes them good, what smells they address, and what techniques they used.
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
Hello, unfrozen Paleolithic Perl programmers! Welcome to 2016!
First, let’s start with the good news: yes, we’re still programming in Perl5 in 2016 (and yes, we think that’s good news). Indeed, most of the code you wrote in the past, before that unfortunate “Big Giant Hole in Ice” incident, will likely still work just fine on the current release of Perl5 — even if you originally wrote it against Perl 4 or even Perl 3.
Here’s the bad news: there’s been an incredible amount of innovation in not only Perl5-the-language, but also in Perl5-the-community and what the community considers to be accepted best practices and the right way to do things. It can be very frightening and confusing!
But wait, there’s more good news: if you come to this talk, you’ll get a guided tour of my (reasonably opinionated) views on what the consensus best practices are around issues such as which version of Perl5 to use, system Perl versus non-system Perl, Perl5 installation management packages, new language features and libraries to use, old language features and libraries to avoid, modern tooling, and even more!
Delivered at OpenWest 2016, 14 July 2016
Life Beyond Rails: Creating Cross Platform Ruby AppsTristan Gomez
This document discusses building cross-platform applications. It argues that cross-platform support allows reuse of significant portions of code across multiple platforms. Common tools can operate on different things through techniques like encapsulation and polymorphism. While object-oriented programming is about organizing a program with objects, cross-platform development focuses on connecting elements in a modular way to manage complexity.
Developing high-performance network servers in LispVladimir Sedach
Overview of current high-performance Common Lisp web servers and implementation techniques, and description of a new hybrid approach to asynchronous I/O based on separate racing accept() and epoll() thread pools.
The OpenNTF Domino API is a community-developed Java API that provides an alternative to using the native Notes objects in Domino. It was created to bridge the gap between LotusScript and Java developers, remove the need for try/catch blocks and recycling, and take advantage of Java collections and helper methods. The API is deployed via an update site and its packages include core interfaces, extension interfaces, and implementation classes. It provides features like logging, transaction processing, and database event listeners. Developers can convert code by changing imports, removing unnecessary code, and using the API's helper methods.
The document introduces Ruby on Rails and provides an overview of its features and benefits. It summarizes the speaker's experience with web development over time, introduces MVC and ORM concepts, and demonstrates Rails through a live coding example. Key advantages of Rails highlighted include its convention over configuration approach, use of Ruby as a dynamic scripting language, and ability to rapidly develop database-backed web applications.
Developer-friendly taskqueues: What you should ask yourself before choosing oneSylvain Zimmer
This document summarizes key considerations for choosing a task queue system. It discusses task properties like idempotency and reentrancy. It covers performance factors like latency and throughput as well as consistency models. Common task queue systems like Celery, RQ, and MRQ are evaluated based on factors like performance, complexity, community support, and future plans. The document emphasizes thinking carefully about specific needs before choosing a system and being grateful for open source software.
Plack is a superglue for Perl web frameworks that provides a common interface called PSGI (Perl Web Server Gateway Interface) inspired by WSGI and Rack. PSGI allows any web application or framework to run on any web server by providing a standard way for applications to communicate with servers. Plack also includes tools like Plackup for running PSGI applications from the command line and middleware for common functionality that can be shared across frameworks. Many existing Perl web frameworks have been adapted to run under PSGI through Plack.
This document provides an overview and introduction to XNA game development. It discusses the XNA framework and content pipeline for loading textures, audio, and other game assets. It also explains the typical lifecycle methods like Initialize, LoadContent, UnloadContent, Update, and Draw that are used in the main Game1 class. References are provided for books, tutorials, and the author's own game projects and publications related to XNA.
PSGI is a Perl port of Python's WSGI and Ruby's Rack that defines a common interface between web servers and frameworks. Plack provides reference implementations of PSGI servers as well as middleware and utilities. This allows frameworks to run on many servers like standalone, FastCGI, and Apache using a common PSGI application interface. Plack is fast, supports many frameworks through adapters, and provides tools like Plackup and middleware to help build and test PSGI applications.
Over the past few years, web-applications have started to play an increasingly important role in our lives. We expect them to be always available and the data to be always fresh. This shift into the realm of real-time data processing is now transitioning to physical devices, and Gartner predicts that the Internet of Things will grow to an installed base of 26 billion units by 2020.
Reactive web-applications are an answer to the new requirements of high-availability and resource efficiency brought by this rapid evolution. On the JVM, a set of new languages and tools has emerged that enable the development of entirely asynchronous request and data handling pipelines. At the same time, container-less application frameworks are gaining increasing popularity over traditional deployment mechanisms.
This talk is going to give you an introduction into one of the most trending reactive web-application stack on the JVM, involving the Scala programming language, the concurrency toolkit Akka and the web-application framework Play. It will show you how functional programming techniques enable asynchronous programming, and how those technologies help to build robust and resilient web-applications.
Web development with Lua @ Bulgaria Web Summit 2016Etiene Dalcol
February 20, 2016
Lua is a very fast and powerful scripting language that can be easily embeddable. It has been shining in industries like game development, for example. Lua is also an excellent tool as a general purpose language and can be used to develop robust applications. Its use in web developments, however, despite its great potential and incredible benchmarks, needs to be more widespread. This talk will mention the current state of Lua in web development, show some benchmarks, compare existing tools and teach developers how to get started with Sailor, an MVC web framework written in Lua.
My presentation from RedDotRubyConf 2013 in Singapore. Turned out to be a reflection on whether I'd still be a Rubyist in another 5 years, and what are the external trends that might change that. Short story: Yes! Of course. I'll always think like a Rubyist even though things will probably get more polyglot. The arena of web development is perhaps the most unpredictable though.
An overview of Ruby, jRuby, Rails, Torquebox, and PostgreSQL that was presented as a 3 hour class to other programmers at The Ironyard (http://theironyard.com) in Greenville, SC in July of 2013. The Rails specific sections are mostly code samples that were explained during the session so the real focus of the slides is Ruby, "the rails way" / workflow / differentiators and PostgreSQL.
The document compares PHP and Ruby, and the web frameworks CakePHP and Ruby on Rails. It discusses the key features and differences between PHP and Ruby, and demonstrates how a simple blog application can be created from scratch in under a minute using Ruby on Rails with no coding required, compared to the additional coding needed in CakePHP. The document argues that Ruby on Rails is more productive and fully-featured compared to CakePHP.
This document provides an introduction to web applications and their components. It discusses what a web application is, how it is made up of front-end and back-end parts, and how Ruby on Rails is a framework that helps develop web applications. It then demonstrates Ruby programming concepts through interactive examples in IRB, covering basic operations, variables, methods, classes and objects. The document aims to give a high-level overview of web applications and introduce Ruby programming.
As modern, agile architects and developers we need to master several different languages and technologies all at once to build state-of-the-art solutions and yet be 100% productive. We define our development environments using Gradle. We implement our software in Java, Kotlin or another JVM based language. We use Groovy or Scala to test our code at different layers. We construct the build pipelines for our software using a Groovy DSL or JSON. We use YAML and Python to describe the infrastructure and the deployment for our applications. We document our architectures using AsciiDoc and JRuby. Welcome to Babel!
Making the right choices in the multitude of available languages and technologies is not easy. Randomly combining every hip technology out there will surely lead into chaos. What we need is a customized, streamlined tool chain and technology stack that fits the project, your team and the customer’s ecosystem all at once. This code intense, polyglot session is an opinionated journey into the modern era of software industrialization.
Everything-as-code - A polyglot adventureQAware GmbH
Devoxx 2017, Poland: Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware).
Abstract: As modern, agile architects and developers we need to master several different languages and technologies all at once to build state-of-the-art solutions and yet be 100% productive. We define our development environments using Gradle. We implement our software in Java, Kotlin or another JVM based language. We use Groovy or Scala to test our code at different layers. We construct the build pipelines for our software using a Groovy DSL or JSON. We use YAML and Python to describe the infrastructure and the deployment for our applications. We document our architectures using AsciiDoc and JRuby. Welcome to Babel!
Making the right choices in the multitude of available languages and technologies is not easy. Randomly combining every hip technology out there will surely lead into chaos. What we need is a customized, streamlined tool chain and technology stack that fits the project, your team and the customer’s ecosystem all at once. This code intense, polyglot session is an opinionated journey into the modern era of software industrialization.
This is a presentation for International Lisp Conference 2012 which was held in Kyoto, Japan.
Clack is a web application environment for Common Lisp to make your web applications be portable and reusable by abstracting HTTP into a simple API.
In this paper, I describe what are problems in web development and how Clack solves them.
(java2days) Is the Future of Java Cloudy?Steve Poole
This document discusses how Java can remain relevant in the future by evolving to meet new demands and competing technologies. It provides the results of several microbenchmarks comparing Java to other languages like Node, Swift, Go, Python and Ruby. The benchmarks show Java performing competitively in most cases. The document argues that Java's strengths like being type safe, garbage collected, and able to run on all platforms position it well for cloud, data analytics and machine learning workloads. It outlines IBM's plans to invest in Java and related open source projects to accelerate innovation and ensure Java remains the platform of choice.
Patrick Chanezon and Guillaume Laforge are presenting Google App Engine Java and Gaelyk, the lightweight groovy toolkit on top of the GAE SDK, at the Devoxx conference
This document discusses ways to create lightweight Ruby solutions by simplifying frameworks and components. It suggests replacing ActiveRecord with the simpler and faster Sequel ORM. It also recommends using Zepto.js instead of jQuery for mobile apps, and Rack and Sinatra to build lightweight web apps instead of full Rails applications. Benchmarks show these lightweight approaches can significantly improve performance compared to default Rails. Tools mentioned that aid lightweight development include Pow for local web serving and rbenv for Ruby version management. The document concludes by reminding developers not to see Ruby as the only solution and to consider other languages like Erlang, Scala and C++ for certain problems.
Road to sbt 1.0: Paved with server (2015 Amsterdam)Eugene Yokota
The document provides a history of build tools and a roadmap for sbt 1.0. It discusses modularizing sbt into components to improve stability and introduce an sbt server for centralized build execution. The sbt server design allows clients to connect as events, handle input, and run background jobs. Existing plugins can try the sbt server APIs without breaking functionality. The roadmap includes improving interaction, meta-projects, and killing bad states to complete the sbt server.
The document discusses the history of build tools and outlines a roadmap for sbt 1.0 focused on stability and modularization. It introduces sbt-server as a way to centralize build tasks and allow multiple clients to interact with the build. Key points of the sbt-server design include running tasks in a centralized queue, handling reconnects, using a versioned protocol for communication, and supporting background jobs and input. The document also discusses bringing existing sbt plugins onto sbt-server without breaking functionality.
Web application intro + a bit of ruby (revised)Tobias Pfeiffer
The document is an introduction to web applications and Ruby on Rails. It defines what a web application is, its key components like front-end and back-end, and demonstrates Ruby code examples in an interactive session. It also introduces Ruby on Rails as a web application framework written in Ruby that makes building web applications easier with features like connecting to databases and generating HTML. The document encourages learning more about Ruby and provides additional learning resources.
The document discusses software as a service (SAAS) and why the company Viridian chose to use the Ruby on Rails web application framework. It notes that Rails allows for lower entry costs than other options due to reduced server maintenance needs and flexibility. It also summarizes some key advantages of Rails like its convention over configuration approach and support for modern technologies. The document provides resources for learning Rails including dev environments, tutorials, and open source projects to review.
Big Data Beyond the JVM - Strata San Jose 2018Holden Karau
The document discusses accelerating big data processing beyond just the Java Virtual Machine (JVM). It introduces Rachel Warren and Holden Karau, the presenters. It then covers the current state of PySpark and its performance limitations due to serialization between Python and the JVM. Future improvements discussed include using Apache Arrow to accelerate UDFs, Dask for pure Python processing, and Apache Beam for additional languages. The presenters promote their new book on high performance Spark and take questions at the end.
Scala.js is a way to build robust front-end web applications using Scala that compiles to JavaScript. It provides correctness through type safety, performance comparable to native JavaScript, and easy interoperability. The presenter's company Wiringbits uses Scala.js with libraries like Slinky and ScalablyTyped for React applications. Their Scala.js onboarding process involves assigning trainees simple tasks under a mentor to become productive with Scala and Scala.js quickly, having successfully onboarded about 10 developers through this approach.
Free The Enterprise With Ruby & Master Your Own DomainKen Collins
On the heals of Luis Lavena's RailsConf talk "Infiltrating Ruby Onto The Enterprise Death Star Using Guerilla Tactics" comes a local and frank talk about the current state of Open Source Software (OSS) participation from Windows developers. Learn what OSS is, what motivates its contributors, and how OSS can make you a stronger developer. Be prepared to fall in love with writing software again!
We will start off with a 101 introduction to both the Ruby programming language and the Ruby on Rails web application framework. You will learn about ActiveRecord, a powerful ORM that maps rich objects to your databases, and the latest components to use it with SQL Server. As a Rails core contributor and author of the SQL Server stack, I will give you a modern insight into both that will allow you to leverage your legacy data with Ruby.
Lastly, I will review the bleeding edge tools being actively created for Windows developers to ease the transition to Ruby, Rails and OSS from a POSIX driven world. Many things have changed. It is time to learn and perform some occupational maintenance.
The document discusses Ruby on Rails, an open-source web application framework. It is optimized for programmer happiness and productivity by favoring convention over configuration, allowing developers to write code more quickly. Ruby on Rails uses a model-view-controller (MVC) architecture and is widely adopted by companies like Twitter.
Similar to Web development with Lua: Introducing Sailor an MVC web framework @ CodingSerbia 2015 (20)
Making wearables with NodeMCU - FOSDEM 2017Etiene Dalcol
NodeMCU is an open hardware IoT platform based on eLua for the ESP8266 microcontroller. It allows creating low-cost projects using Wi-Fi and easy scripting in Lua, which makes it great for making wearables, for example. In this talk I'll give an introduction to the platform, show how I built an audio reactive graduation dress and share the materials to get you started on your own wearable project. This talk is ideal for beginners to hardware hacking or Lua enthusiasts looking for project inspiration.
Get started with Lua - Hackference 2016Etiene Dalcol
Lua is a very fast, elegant and powerful dynamic language. It’s an excellent tool for robust applications or slim embedded systems. It found a niche in game development with big names such as “Grim Fandango”, “World of Warcraft” and “Angry Birds”. This talk will present what makes Lua different from other interpreted languages, the evolution of the Lua ecosystem, some key concepts of the language, and show you why Lua is the next language to add to your skill set.
O documento apresenta uma palestra sobre a carreira de Etiene Dalcol no desenvolvimento com Lua. Ela descreve como começou a programar mais tarde na vida através de comunidades de software livre e como isso a levou a trabalhar com Lua e fundar projetos como o Sailor. Ela encoraja o uso de tecnologias locais e a construção de comunidades para apoiar o crescimento de desenvolvedores.
What I learned teaching programming to 150 beginnersEtiene Dalcol
The document discusses the author's experience teaching 150 beginners programming over 2 hours. They covered basic programming concepts like variables, arrays, loops and functions using JavaScript. The author emphasizes coming prepared with a skeleton code, easy to follow URL, and being ready to answer questions. They also note the importance of inspiring students and finding teaching rewarding, especially when sharing something you're passionate about.
What I learned teaching programming to ~150 young womenEtiene Dalcol
This talk will go through my experience of giving a workshop at Women's International Leadership Conference on introduction to programming using Javascript.
Some of the topics I'll cover are
* Why using JavaScript as the programming language
* The feasibility of teaching something useful in a short workshop
* Why inspiring people is important
* My personal and professional growth with this experience
The document describes The Humble Lotto, a lottery that donates its proceeds to charity. It uses technologies like Git, GitHub, Lua, Sailor, HTML, CSS, JavaScript, AngularJS, Sass, Bourbon, Neat, Bitcoin, and the BitcoinPay API. The technologies are new to the individuals tagged in the document. It provides a link to the GitHub repository containing the project's code and results.
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.
Photoshop Tutorial for Beginners (2024 Edition)alowpalsadig
Photoshop Tutorial for Beginners (2024 Edition)
Explore the evolution of programming and software development and design in 2024. Discover emerging trends shaping the future of coding in our insightful analysis."
Here's an overview:Introduction: The Evolution of Programming and Software DevelopmentThe Rise of Artificial Intelligence and Machine Learning in CodingAdopting Low-Code and No-Code PlatformsQuantum Computing: Entering the Software Development MainstreamIntegration of DevOps with Machine Learning: MLOpsAdvancements in Cybersecurity PracticesThe Growth of Edge ComputingEmerging Programming Languages and FrameworksSoftware Development Ethics and AI RegulationSustainability in Software EngineeringThe Future Workforce: Remote and Distributed TeamsConclusion: Adapting to the Changing Software Development LandscapeIntroduction: The Evolution of Programming and Software Development
Photoshop Tutorial for Beginners (2024 Edition)Explore the evolution of programming and software development and design in 2024. Discover emerging trends shaping the future of coding in our insightful analysis."Here's an overview:Introduction: The Evolution of Programming and Software DevelopmentThe Rise of Artificial Intelligence and Machine Learning in CodingAdopting Low-Code and No-Code PlatformsQuantum Computing: Entering the Software Development MainstreamIntegration of DevOps with Machine Learning: MLOpsAdvancements in Cybersecurity PracticesThe Growth of Edge ComputingEmerging Programming Languages and FrameworksSoftware Development Ethics and AI RegulationSustainability in Software EngineeringThe Future Workforce: Remote and Distributed TeamsConclusion: Adapting to the Changing Software Development LandscapeIntroduction: The Evolution of Programming and Software Development
The importance of developing and designing programming in 2024
Programming design and development represents a vital step in keeping pace with technological advancements and meeting ever-changing market needs. This course is intended for anyone who wants to understand the fundamental importance of software development and design, whether you are a beginner or a professional seeking to update your knowledge.
Course objectives:
1. **Learn about the basics of software development:
- Understanding software development processes and tools.
- Identify the role of programmers and designers in software projects.
2. Understanding the software design process:
- Learn about the principles of good software design.
- Discussing common design patterns such as Object-Oriented Design.
3. The importance of user experience (UX) in modern software:
- Explore how user experience can improve software acceptance and usability.
- Tools and techniques to analyze and improve user experience.
4. Increase efficiency and productivity through modern development tools:
- Access to the latest programming tools and languages used in the industry.
- Study live examples of applications
WWDC 2024 Keynote Review: For CocoaCoders AustinPatrick Weigel
Overview of WWDC 2024 Keynote Address.
Covers: Apple Intelligence, iOS18, macOS Sequoia, iPadOS, watchOS, visionOS, and Apple TV+.
Understandable dialogue on Apple TV+
On-device app controlling AI.
Access to ChatGPT with a guest appearance by Chief Data Thief Sam Altman!
App Locking! iPhone Mirroring! And a Calculator!!
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
Transforming Product Development using OnePlan To Boost Efficiency and Innova...OnePlan Solutions
Ready to overcome challenges and drive innovation in your organization? Join us in our upcoming webinar where we discuss how to combat resource limitations, scope creep, and the difficulties of aligning your projects with strategic goals. Discover how OnePlan can revolutionize your product development processes, helping your team to innovate faster, manage resources more effectively, and deliver exceptional results.
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
Nashik's top web development company, Upturn India Technologies, crafts innovative digital solutions for your success. Partner with us and achieve your goals
Liberarsi dai framework con i Web Component.pptxMassimo Artizzu
In Italian
Presentazione sulle feature e l'utilizzo dei Web Component nell sviluppo di pagine e applicazioni web. Racconto delle ragioni storiche dell'avvento dei Web Component. Evidenziazione dei vantaggi e delle sfide poste, indicazione delle best practices, con particolare accento sulla possibilità di usare web component per facilitare la migrazione delle proprie applicazioni verso nuovi stack tecnologici.
Boost Your Savings with These Money Management AppsJhone kinadey
A money management app can transform your financial life by tracking expenses, creating budgets, and setting financial goals. These apps offer features like real-time expense tracking, bill reminders, and personalized insights to help you save and manage money effectively. With a user-friendly interface, they simplify financial planning, making it easier to stay on top of your finances and achieve long-term financial stability.
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
15. @etiene_dCoding Serbia 2015
Better Reasons
• It looks cool
(I heard you could make games with it)
• It’s made in my home country
(In my university to be more precise)
16. @etiene_dCoding Serbia 2015
• It looks cool
(I heard you could make games with it)
• It’s made in my home country
(In my university to be more precise)
• It’s easy to learn
Better Reasons
17. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
18. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
19. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
20. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
21. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
22. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
23. @etiene_dCoding Serbia 2015
-- Cipher module
--[[ Based on algorithms/caesar_cipher.lua
by Roland Yonaba ]]
local cipher = {}
local function ascii_base(s)
return s:lower() == s and ('a'):byte() or ('A'):byte()
end
function cipher.caesar( str, key )
return str:gsub('%a', function(s)
local base = ascii_base(s)
return string.char(((s:byte() - base + key) % 26) + base)
end)
end
return cipher
One slide crash course: cipher module
26. @etiene_dCoding Serbia 2015
“ I have myself developed Web sites with pure C++, Java, C#, PHP, and Python.
The easiest way to go was definitely Python. If the libraries existed, Lua would be
not quite as easy to use as Python, but probably quite a bit more efficient; I think it
would become my first choice... if the libraries existed.” Michael Gogins
“ Recently there was some discussion about mod_lua on the Apache developers
mailing list. I mentioned there that I feel Lua could replace PHP as the number one
web scripting language if mod_lua were stable (i.e. not still in beta) and it were
implemented well (not making some of PHP's mistakes such as putting everything
in the global scope with no consistent naming or parameter schemes). I've wanted
to use Lua for all the things I currently use PHP for ever since I discovered it.” Rena
42. @etiene_dCoding Serbia 2015
Frameworks
Orbit (2007)
Least known
No significant updates since 2010
MVC
Luvit (2011)
Most popular
Intense development
node.js port 2-4x faster
Needs a better documentation
44. @etiene_dCoding Serbia 2015
Frameworks
Lapis (2012)
Intense development
Moonscript and Lua
Very well documented
Templater
OpenResty only
Not MVC
Others
Complicated, abandoned, poorly documented, license
issues or I never heard about it...
49. @etiene_dCoding Serbia 2015
What exactly is
Sailor?
• It’s an MVC web framework
• Completely written in Lua
• Compatible with Apache (mod_lua), Nginx (OpenResty),
Xavante, Mongoose, Lighttpd and Lwan
• Compatible with Linux, Windows and Mac
• Compatible with different databases
• MIT License
• Pre alpha v0.4 (Chibi)
• 0.5 (Pluto) will be released soon!
51. @etiene_dCoding Serbia 2015
What (else) is cool about
Sailor?
• Routing and friendly URLs
• Session, cookies, include, redirect…
• Lua Pages parsing
• Mail sending
• Simple Object Relational-Mapping
• Validation (valua)
• Basic login and authentication modules
• Form generation
• Themes (Bootstrap integration out of the box)
• App generator (Linux and Mac only)
• Model and CRUD generator
• Automated tests
52. @etiene_dCoding Serbia 2015
• Routing and friendly URLs
• Session, cookies, include, redirect…
• Lua Pages parsing
• Mail sending
• Simple Object Relational-Mapping
• Validation (valua)
• Basic login and authentication modules
• Form generation
• Themes (Bootstrap integration out of the box)
• App generator (Linux and Mac only)
• Model and CRUD generator
• Automated tests
• Lua at client
What (else) is cool about
Sailor?
53. @etiene_dCoding Serbia 2015
Not so great things
• It’s still in early development
• Things are changing fast
• It lacks features
• Documentation
54. @etiene_dCoding Serbia 2015
How to get Sailor!
$ luarocks install sailor
$ sailor create ‘My App’ /var/www
$ cd /var/www/my_app
$ lua start-server.lua
59. @etiene_dCoding Serbia 2015
Example!
-- /controllers/site.lua
local site = {}
function site.index(page)
local msg = “Hello World”
page:render(‘index’, { msg = msg } )
end
function site.notindex(page)
page.theme = nil
page:write(“I’m different!”)
end
return site
60. @etiene_dCoding Serbia 2015
<!-- /views/site/index.lp —>
<p>
A message from the server:
<?lua page:print(msg) ?>
<br/>
The message again:
<%= msg %> <!-- syntactic sugar: same thing as above —>
</p>
Example!
62. @etiene_dCoding Serbia 2015
<?lua@server -- Code here runs on the server ?>
<?lua -- Same as above ?>
<?lua@client -- Runs at the client ?>
<?lua@both -- Runs at the server and the client ?>
<?lua@both
another_msg = “Another message”
?>
<?lua page:print(another_msg) ?>
<?lua@client
js.window.alert(another_msg)-- Sailor v0.4
-- window:alert(another_msg)
-- ^ Sailor v0.5
?>
Example!
64. @etiene_dCoding Serbia 2015
local user = {}
local v = require “valua” -- validation module
user.attributes = {
{ id = “safe” },
{ name = v:new().not_empty().len(6,50) }
}
user.db = {
key = ‘id’,
table = ‘users’
}
user.relations = {
posts = { -- u.posts
relation = “HAS_MANY”, model = “post”, attribute = “author_id”
}
}
return user
Example!
65. @etiene_dCoding Serbia 2015
local user = {}
local v = require “valua” -- validation module
user.attributes = {
{ id = “safe” },
{ name = v:new().not_empty().len(6,50) }
}
user.db = {
key = ‘id’,
table = ‘users’
}
user.relations = {
posts = { -- u.posts
relation = “HAS_MANY”, model = “post”, attribute = “author_id”
}
}
return user
Example!
66. @etiene_dCoding Serbia 2015
-- /controllers/site.lua
local site = {}
function site.index(page)
local User = sailor.model(‘user’)
local u = User:new()
u.name = ‘Arnold’
local msg
if u:save() then
msg = ‘Success’
else
msg = table.unpack(u.errors)
end
local users = User:find_all()
page:render(‘index’, { msg = msg, users = users } )
end
return site
Example!