This document discusses post-relational databases and how they have evolved over time from mainframes to the modern web. It focuses on NoSQL databases like CouchDB and Riak that use JSON and are well-suited for web applications. CouchDB allows for asynchronous processes through triggers and offline applications through replication. AngularJS is highlighted as a way to build applications with CouchDB that avoid complexity through the use of JSON, HTML templates, and JavaScript controllers.
Post-relational databases: What's wrong with web development? v3Dobrica Pavlinušić
Pogledat ćemo kako se razvoj aplikacija mijenjao kroz vrijeme i koji je najjednostavniji način da napravimo web aplikaciju korištenjem JavaScript-a i JSON-a koji nam omogućavaju brz i jednostavan razvoj aplikacija uz pomoć Angulara i CouchDB-a. Cilj je napraviti aplikaciju za jedno popodne!
It's lean, it's crazily fast and it's packed with features: Gatsby is a game changing static PWA generator. This talk starts with a short intro into the consolidated GraphQL content interface and how Gatsby builds pages. We’re then digging into custom content plugins that allow you to connect nearly any data source, explain Gatsby's page generation process and how editors can use MDX to embed dynamic components into their content. We conclude with a build time performance demo that renders and updates a huge amount of pages at once.
Briefly about Drupal and communication. How can we produce data (other than HTML) and receive data. What layers we can use. We mention a lot of things such as XML-RPC
This talk guides you through building modern web applications using ASP.NET MVC and MongoDB, one of the most popular NoSQL databases.
You will learn some best practices for getting started with MVC. We’ll cover building rich-forms to accept user input. And if time permits, we might even add some client-side techniques using jQuery and MVC.
All of this will be built upon the powerful non-relational database MongoDB. We will discuss the origins of the so-called NoSQL movement and why you might choose a non-relational database over SQL Server. You’ll also see our data access layer will be built using LINQ to MongoDB.
Of course, you won’t be in for a night of PowerPoint. This talk is a series of interactive demos using Visual Studio 11, Windows 8, and C#.
Post-relational databases: What's wrong with web development? v3Dobrica Pavlinušić
Pogledat ćemo kako se razvoj aplikacija mijenjao kroz vrijeme i koji je najjednostavniji način da napravimo web aplikaciju korištenjem JavaScript-a i JSON-a koji nam omogućavaju brz i jednostavan razvoj aplikacija uz pomoć Angulara i CouchDB-a. Cilj je napraviti aplikaciju za jedno popodne!
It's lean, it's crazily fast and it's packed with features: Gatsby is a game changing static PWA generator. This talk starts with a short intro into the consolidated GraphQL content interface and how Gatsby builds pages. We’re then digging into custom content plugins that allow you to connect nearly any data source, explain Gatsby's page generation process and how editors can use MDX to embed dynamic components into their content. We conclude with a build time performance demo that renders and updates a huge amount of pages at once.
Briefly about Drupal and communication. How can we produce data (other than HTML) and receive data. What layers we can use. We mention a lot of things such as XML-RPC
This talk guides you through building modern web applications using ASP.NET MVC and MongoDB, one of the most popular NoSQL databases.
You will learn some best practices for getting started with MVC. We’ll cover building rich-forms to accept user input. And if time permits, we might even add some client-side techniques using jQuery and MVC.
All of this will be built upon the powerful non-relational database MongoDB. We will discuss the origins of the so-called NoSQL movement and why you might choose a non-relational database over SQL Server. You’ll also see our data access layer will be built using LINQ to MongoDB.
Of course, you won’t be in for a night of PowerPoint. This talk is a series of interactive demos using Visual Studio 11, Windows 8, and C#.
Building OpenStreetMap.org, SOTM US 2015Tom Hughes
This talk is an introduction to how the OpenStreetMap web site is developed and tested.
We will start with a brief overview of the site architecture of OpenStreetMap.org and the components involved in answering user requests before moving on to an overview of the Ruby on Rails code behind the web site and how people can get involved in contributing to it.
We’ll walk through how to best to write a high quality patch to the website, and what we look for when evaluating changes: consistent visual styling for the site, consistent style in the site code base and good test coverage among others.
Presentation from OpenCms Days 2014.
The rapid growth of internet access from mobile devices, together with the introduction of HTML5 and CSS3, has led to a number of complications in the development and maintenance of websites: responsive web design, delivering images for high pixel density displays, and compatibility of the new standards with older browsers still in use.
Fortunately, there are tons of frameworks, libraries, JavaScript, CSS preprocessors and polyfill techniques that help the web developer, but their proliferation in a project can be confusing; it is then essential to create a structured workflow to integrate and automate all processes and controls, particularly in a teamwork scenario.
In this workshop, Marco and Alessandro showcase an OpenCms based development environment that leverages Sass, Grunt, and the OpenCms Samba interface to streamline the workflow of designers and programmers alike.
Sass is a powerful stylesheet language that provides syntactic sugar for CSS; Grunt is a task runner that allows the automation of mundane development work.
An overview of the motivation behind progressive web apps, how to implement them, and other useful tools and discussion. For full presentation with usable links: https://goo.gl/VRKE6L
Every non-trivial GWT application requires integration with the server side. While GWT itself ships with the integration capabilities (i.e GWT RPC) it doesn't go beyond that. Developers have to decide how to build the backend to their GWT applications. While freedom of choice is a good thing, it doesn’t always lead to a good decision. In this session we’ll look at two options, JSR-299 [1] and JSR-311 [2], both part of the EE6 specification and see how they interplay with GWT. We'll discuss the use cases and justifications for each technology see how they are applied in practice by looking at some code examples.
[1] JSR-299: Java Contexts and Dependency Injection for the Java EE platform (CDI) is the new Java standard for dependency injection and contextual lifecycle management.
[2] JSR-311: A that specification defines a set of Java APIs for the development of Web services built according to the Representational State Transfer[1] (REST) architectural style.
Quick introduction on managing RESTful services with Drupal.
1) Drupal is the RESTful server
2) Drupal is the RESTful client managing data in MEAN stack
Code for the demo is at https://github.com/kalinchernev/Drupal-7/tree/master/restful_lecture
Why would a developer whose framework of preference is Symfony2 pay attention to Drupal 8?
A general overview of Drupal, including pros and cons of using it.
Prepared and presented by Yaroslav Doroshchuk, CTO, Grossum. The presentation took place at DrupalCamp Kyiv 2014.
Use of No-SQL databases in web applications is becoming increasingly common. In part this is because they work well with rapid application development due to their schema-less nature. And partly because they scale well in a cloud-based environment without too much effort.
MongoDB is one of the many No-SQL database technologies available today. It's schema-less nature works very well with rapid application development nature of ColdFusion. Unlike other No-SQL databases, it offers the ability run arbitrary queries against databases without having to first write map-reduce functions. It also has some other interesting features like capped collections with asynchronous write ability.
In this session, Indy takes you through some common use-cases for considering MongoDB with ColdFusion applications, contrasting it with other No-SQL databases like CouchDB. And he shares his experiences of using it with cloud-based ColdFusion applications. The aim of the session is to provide an overview of using MongoDB with ColdFusion so that you have another tool to consider when working on your next web application.
This was presented at CFObjective, Melbourne, November 17-18, 2011.
Building OpenStreetMap.org, SOTM US 2015Tom Hughes
This talk is an introduction to how the OpenStreetMap web site is developed and tested.
We will start with a brief overview of the site architecture of OpenStreetMap.org and the components involved in answering user requests before moving on to an overview of the Ruby on Rails code behind the web site and how people can get involved in contributing to it.
We’ll walk through how to best to write a high quality patch to the website, and what we look for when evaluating changes: consistent visual styling for the site, consistent style in the site code base and good test coverage among others.
Presentation from OpenCms Days 2014.
The rapid growth of internet access from mobile devices, together with the introduction of HTML5 and CSS3, has led to a number of complications in the development and maintenance of websites: responsive web design, delivering images for high pixel density displays, and compatibility of the new standards with older browsers still in use.
Fortunately, there are tons of frameworks, libraries, JavaScript, CSS preprocessors and polyfill techniques that help the web developer, but their proliferation in a project can be confusing; it is then essential to create a structured workflow to integrate and automate all processes and controls, particularly in a teamwork scenario.
In this workshop, Marco and Alessandro showcase an OpenCms based development environment that leverages Sass, Grunt, and the OpenCms Samba interface to streamline the workflow of designers and programmers alike.
Sass is a powerful stylesheet language that provides syntactic sugar for CSS; Grunt is a task runner that allows the automation of mundane development work.
An overview of the motivation behind progressive web apps, how to implement them, and other useful tools and discussion. For full presentation with usable links: https://goo.gl/VRKE6L
Every non-trivial GWT application requires integration with the server side. While GWT itself ships with the integration capabilities (i.e GWT RPC) it doesn't go beyond that. Developers have to decide how to build the backend to their GWT applications. While freedom of choice is a good thing, it doesn’t always lead to a good decision. In this session we’ll look at two options, JSR-299 [1] and JSR-311 [2], both part of the EE6 specification and see how they interplay with GWT. We'll discuss the use cases and justifications for each technology see how they are applied in practice by looking at some code examples.
[1] JSR-299: Java Contexts and Dependency Injection for the Java EE platform (CDI) is the new Java standard for dependency injection and contextual lifecycle management.
[2] JSR-311: A that specification defines a set of Java APIs for the development of Web services built according to the Representational State Transfer[1] (REST) architectural style.
Quick introduction on managing RESTful services with Drupal.
1) Drupal is the RESTful server
2) Drupal is the RESTful client managing data in MEAN stack
Code for the demo is at https://github.com/kalinchernev/Drupal-7/tree/master/restful_lecture
Why would a developer whose framework of preference is Symfony2 pay attention to Drupal 8?
A general overview of Drupal, including pros and cons of using it.
Prepared and presented by Yaroslav Doroshchuk, CTO, Grossum. The presentation took place at DrupalCamp Kyiv 2014.
Use of No-SQL databases in web applications is becoming increasingly common. In part this is because they work well with rapid application development due to their schema-less nature. And partly because they scale well in a cloud-based environment without too much effort.
MongoDB is one of the many No-SQL database technologies available today. It's schema-less nature works very well with rapid application development nature of ColdFusion. Unlike other No-SQL databases, it offers the ability run arbitrary queries against databases without having to first write map-reduce functions. It also has some other interesting features like capped collections with asynchronous write ability.
In this session, Indy takes you through some common use-cases for considering MongoDB with ColdFusion applications, contrasting it with other No-SQL databases like CouchDB. And he shares his experiences of using it with cloud-based ColdFusion applications. The aim of the session is to provide an overview of using MongoDB with ColdFusion so that you have another tool to consider when working on your next web application.
This was presented at CFObjective, Melbourne, November 17-18, 2011.
Pogledat ćemo neke od metoda koje su korisne kod pisanja podrške za razne hardverske uređaje, sa posebnim osvrtom na RFID (Radio-frequency identification) sustav (i zašto bi bilo bolje da je slobodan).
Slobodni festival 3
(Čakovec, 3. - 5. srpnja 2009.)
http://2009.slobodnifestival.info/
Playful Blended Digital Storytelling in 3D Immersive eLearning Environments f...Dr Stylianos Mystakidis
Presentation at IDEE Workshop 2014 (June 9th, 2014 Albacete, Spain) about the pedagogical design, the technical development and initial findings of the educational program “From the Ancient to the Modern Tablets” involving digital storytelling, gamification, playful design and 3d virtual worlds to motivate K-12 students and promote literacy and extracurricular reading.
Website development, Collaborative web 2.0 services & Social Media Marketing offered by the Hellenic Choir Association to its members.
Διαδικτυακές Υπηρεσίες της Στέγης Ελληνικών Χορωδιών προς τα μέλη της:
- Μουσική Βιβλιοθήκη
- Καλεντάρι Εκδηλώσεων
- Δημιουργία Ιστοτόπου
- Προβολή Εκδηλώσεων
- Ψηφιοποίηση οπτικοακουστικού υλικού
- Στρατηγική Κοινωνικών Δικτύων
Για περισσότερες πληροφορίες:
http://www.stegi-chorus.gr/
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAPDobrica Pavlinušić
If you have application with LDAP support and existing LDAP server which you don't want to modify you have a problem.
Virtual LDAP will give you ability to rewrite LDAP requests and responses on the fly (using ldap-rewrite.pl) or provide LDAP server on top of your existing RDBMS if you need to export data as LDAP server (using virtual-ldap.pl)
https://www.ohloh.net/p/virtual-ldap
Virtual Reality Applications in Career Consulting - Potential & RestictionsDr Stylianos Mystakidis
Εφαρμογές Εικονικής Πραγματικότητας Στη Συμβουλευτική Σταδιοδρομίας -Δυνατότητες και Περιορισμοί
Παρουσίαση (εκτεταμένα αποσπάσματα) στο διεθνές συνέδριο ΕΛΕΣΥΠ 2012
--
Presentation in ELESYP 2012 International Conference on Career Consulting (short version)
6 weeks 6 months live project summer industrial training in cmc limited 2012CMC Limited
CMC Limited (A TCS Subsidiary) is India’s leading Information Technology company, which has been under the Ministry of Information Technology, Department of Electronics, Government of India, since 1976. Today, it offers high quality IT solutions & services to users worldwide, Hardware Maintenance, Education & Training & Turnkey Project Implementation through a group of highly qualified professionals operating from 14 major cities in India & abroad, including the Middle East, European Union and the United States of America. CMC America (formerly BRI Inc.) is CMC’s subsidiary in USA.
Post merger of CMC with TATA Sons in October 2001, CMC-TCS are now working jointly on important offshore and national projects globally and constitute one of the biggest IT consortium in the World.
CMC has been in the forefront of developing some of the largest IT projects in India and abroad due to which the practical exposure of its IT personnel is unmatched. CMC is a pioneer in the field of Education and Training also. We have tie-ups with a number of reputed academic institutes like JNTU, Hyderabad, Netaji Subhash Open University, , Narsee Monjee Institute of Management Studies, and University of Calcutta etc. to jointly conduct courses.
Meeting your Industrial Training requirement, CMC has conceptualized and designed live projects, and provides necessary infrastructure, guidance, software and hardware for project development. Trainees can develop these projects in a team as per their interests in the latest technology areas. Trainees can go back with a well-documented project report and an Industrial Project Training certificate from CMC Limited (A Tata Enterprise). Details of the training programs are attached herewith for your reference (Kindly download all attachments).
Posons-nous et profitons de ce talk pour prendre un peu de hauteur sur l’état de l’industrie tech autour de la création d’API de persistence (CRUD).
D’où venons-nous, ou allons-nous ? Pourquoi le choix entre RPC, SOAP, REST et GraphQL n’est peut-être qu’un sujet de surface qui cache un problème bien plus profond…
Youtube: https://www.youtube.com/watch?v=IskE3m3VjRY
PHP is the King, nodejs is the Prince and Lua is the fool.
An overview about how the IT architecture changed at Namshi, a fashion e-commerce based in Dubai
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...MskDotNet Community
Поговорим об эволюции в мире вэб-приложений, современных технологиях и фреймворках, которые используют в вэб-разработке сегодня.
Обсудим основные архитектурные принципы при создании вэб-решений для разных клиентов. Обсудим, как сделать и запустить бэк-энд на Asp.NET.Core в Visual Studio 2017. Далее поговорим, как написать и запустить фронт-энд с использованием React.JS, Redux, Routing, Bootstrap в IntelliJ IDEA 2017.
В конце доклада немного заглянем в будущее, что нас ждет в вэб-разработке завтра?
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Joonas Lehtinen
The Vaadin provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java - without the need for HTML, XML, plug-ins or JavaScript.
Session explains the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework.
You'll learn:
* How to create a desktop like web application in Java
* Difference between page oriented, client-side RIA and server-side RIA architectures
* How Vaadin can be extended with Google Web Toolkit
More information and materials about the presentation:
http://vaadin.com/web/joonas/wiki/-/wiki/Main/Server-side%20RIA
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachPROIDEA
JAVA EVERYWHERE AGAIN—WITH DUKESCRIPT
For a long time, Java was perfect for creating cross-platform applications, but the advent of iPhone, iPad, and Android devices changed everything, resulting in a totally fragmented world. Catering to all these platform is troublesome and expensive. That’s why DukeScript was created: to make it easy to create cross-platform Java applications again. The goal of this hands-on lab is to create a cross-platform application from scratch that will run on iOS, Android, desktop, browser, and embedded devices such as the Raspberry Pi. You’ll learn about the Model-View-ViewModel (MVVM) architecture, which enables you to write and test business code totally independently of the view, and, finally, you’ll see it combined with a view to complete a working application.
IMPORTANT
Before conference, please follow the steps to prepare for the session:
- perform the Maven repository initialization by creating the archetype and building it as
described at DukeScript website
- also download NetBeans IDE (either latest beta or at least 8.0.2)
- Installing Android SDK rev. 19 or bringing own Mac Book with XCode installed can be also found beneficial
Next.js is one of the top choices when you need performant and robust React.js server side rendering with smart code splitting on your front end. Things like smart code-splitting, routing, lazy loading, isomorphic state between server and client side (browser) or Webpack optimised configurations can be a hassle, but Next.js framework make your developing process go forward.
After almost two years building from an e-commerce to a publishing site using Next.js with Drupal + GraphQL on production, we learned valuable lessons which motivated us to build the next-on-drupal boilerplate, a collection of examples and tools in order to integrate Drupal best features with Next.js.
I'll share with you our most valuable lessons, showing to you how we integrate: Drupal’s dynamic routing, translations, layouts with contextual blocks, metatags, cache-tags and more.
Evolution of a cloud start up: From C# to Node.jsSteve Jamieson
ComputeNext started 3 years ago to develop the first open marketplace for cloud computing services.
We started by using the technologies we were most familiar with - C# and SQL Server, and our initial architecture and implementation was based on these technologies.
Over time, we have progressively introduced more open source elements, including MongoDB, RabbitMQ and Node.js.
Now we are at the point where most of our back-end services rely on Node.js. The talk will talk about why we did this, how we did this, and discuss our experiences - both good and bad.
You have one of those fruity *Pi arm boards and cheep sensor from China? Some buttons and LEDs? Do I really need to learn whole new scripting language and few web technologies to read my temperature, blink a led or toggle a relay? No, because your Linux kernel already has drivers for them and all you need is device tree and cat.
You got a network to take care of. How would you know what is on it? For years, people in the know used bro network monitoring to answer those questions. Now it's time to take a look what you can find out about your network if you wanted to be local big brother.
I hope to see more hacks of STM8 based devices since we have sdcc compiler with support for stm8, cheap SWIM programmer in form of ST-Link v2 (Chinese clones, which are also useful as ARM SWD programmers) and STM8 has comparable features to 8-bit AVR micro-controllers but cheaper.
Raspberry Pi is well known little Linux machine which almost everybody has. But, did you know that it can replace multiple programmers and enrich your hacking toolbox?
In this talk, we will take a look how to use Raspberry Pi (any model) to program any 3.3V target device from AVR micro-controllers, CPLD and FPGA devices and even CC110x which is available in IM-ME, nice little gadget useful for sub-1GHz radio spectrum analysis.
We will cover openocd, urjtag, avrdude and other projects which are useful if you want to run your own code on more of less any device.
This presentation gives overview or our Ganeti deployment
There is related YouTube playlist (in Croatian) with presentations https://www.youtube.com/playlist?list=PLDMnMa3XBHD_K6Rl2FBe2CC-MS6mdTOrJ
This presentation describes my experience with nRF24L01, Arduino, Bus Pirate and various other hardware toys when somebody who does software gets into contact with "real stuff".
Linux container (LXC) seems to be preferred technology for deployment of Platform as a service (PaaS) in cloud. Partly because it's easy to install on top of existing visualization platforms (KVM, VMware, VirtualBox), partly because it is lightweight solution to provide separation and process allocations between separate containers running under single kernel.
In this talk we will take a look at LXC and try to explain how to combine it with mandatory access control (MAC) mechanisms within Linux kernel to provide secure separation between different users of applications.
Lightning talk about http://sysadmin-cookbook.rot13.org/
A convention to write files and scripts with notes which allows you to create nice html documentation with zero effort
Back in 2008, we moved our libraries in new building equipped with 3M RFID hardware.
Since then I examined hardware a little and wrote Open Source driver for it which provide simple HTTP/JSONP interface for it. This allows adding RFID support to Koha's intranet using nothing more than JavaScript include file using jquery.
Peer-to-peer networks are right solution for distributing mostly static content to multiple clients while exploiting bandwidth of all clients to share file chunks and available bandwidth.
Torrent is currently most used P2P network protocol, but in this day and age it suffers from lack of official specification and has stigma attached to it. However, if you want to distribute software updates or create multiple disaster recovery sites it makes sense to create private torrent network which will to it's job.
In this presentation I will try to explain what it takes to create your own peer-to-peer cloud based on torrent protocol.
This presentation provides quick overview of current features of my perl server-side faceted data browser available at: http://github.com/dpavlin/MojoFacets
Ako radite u većoj organizaciji, ona vjerojatno ima nekoliko desetaka računala koja nisu potpuno iskorištena. U mom primjeru, to su bila računala koja su obavljala funkciju web kioska.
Što možemo učiniti s njima? Pretpostavimo da možemo podijeliti podatke u dijelove (shards), staviti svaki dio u memoriju jednog računala i pokrenuti komadić koda preko njih... Zvuči pomalo kao Google map/reduce , ali kako to implementirati?
Za taj zadatak implementirao sam Sack - http://blog.rot13.org/sack/ koji podatke iz različitih izbora sprema u memoriju i izvršava paralelne upite preko njih. Pogledati ćemo kako ga napuniti podacima i iskoristiti za obrade koje su prevelike ili prespore za jedno računalo.
Upravljanje računalima koja su dio našeg clustera je poseban izazov. Za rješenje tog problema odlučio sam implementirati PXElator - http://blog.rot13.org/pxelator/ koji nam omogućava jednostavno podizanje računala preko mreže, nadzor i administraciju.
Temu ćemo zaokružiti još jednim zanimljivim projektom koji nam omogućava distribuirani fork: Gearman - http://gearman.org/. Tako naše obrade podataka možemo podjeliti na manje dijelove pisane u različitim jezicima (perl, php, python, C, shell, Java) i sve to skupa integrirati s relacijskom bazom podataka u pretraživač web stranica Narada - https://launchpad.net/narada
Korištenjem ovih dijelova dobili smo distribuiranu memoriju, distribuirano pokretanje obrada podataka i jednostavnu administraciju: naš vlastiti Google :-)
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...Dobrica Pavlinušić
Ako imate samo čekić, svaki problem izgleda kao čavao. Ako vaša predznanja uključuju razvoj web aplikacija, vjerojatno nećete ići pisati podršku za RFID. Ili...
Naravno da hoćete! Jer, što je drugo browser nego korisničko sučelje?
Nekoliko linija koda, malo Comet trikova i imate svoj sustav. Ali nemate dobar osjećaj o tome. Možda je web ipak krivi čekić za ovaj čavao.
Naravno da ne! Pogledajte dijelove svojeg sustava, izdvojite dijelove koji nemaju stanje (tako da dobro pašu na HTTP request/response ciklus), dizajnirajte lijepi REST API, natjerajte browser da dovlači podatke sa različitih izvora podataka koristeći JSONP i... napisali ste HTTP server sa RFID driverom!
održano: IT Showoff, 2010-02-12, Zagreb
http://www.itshowoff.com/
http://www.slideshare.net/itshowoff/dobrica-pavlinui-rest-it-showoff
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
Post-relational databases: What's wrong with web development?
1. Post-relational databases
What's wrong with web
development?
Dobrica Pavlinušić
http://blog.rot13.org
FOI, Razmjena Vještina, Varaždin, 2010-12-10
2. Who am I?
● Web programming since 1995 using FLOSS
● Languages: php, perl, JavaScript
● Databases: PostgreSQL, MySQL, CouchDB
● 5+ years of expirience as system architect on
large intranet content portal
● http://blog.rot13.org
● Big question: are we solving same
problems over and over again?
● Model-View-Controller pattern
3. Back in mainframe days...
View serial Controller Model
text text COBOL files
Terminal Server
● All logic in COBOL application
● Similar to Clipper in DOS
● Payroll-type applications
1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
4. GUI Client/Server RDBMS
View Controller SQL
GUI API Model
4GL ODBC RDBMS
Client Server
● tabular normalized data (3NF)
● SQL to query and modify data (static schema)
● logic in controller and RDBMS (validation)
1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
5. Internet! Web 1.0
View Controller
HTTP Model
HTML HTML PHP
SQL
RDBMS
Browser Web server
● "network is computer" – browser thin client
● Logic in controller, RDBMS & view (JavaScript)
● Trees (XML)? Self-referencing data?
1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
6. AJAX JSON REST Web2.0
View Controller Model
HTTP
HTML JSON
JavaScript JSON JSON
Browser 2.0 NoSQL server
● JSON without schema (or verification!)
● Logic in JavaScript on client and server
● Turtles all the way down reduces complexity
1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
7. Perfect web stack
● HTTP REST API with JSON
– GET, PUT/POST, DELETE
● JavaScript queries using map/reduce
– Real-world dirty data from views
● Serve application from HTTP database
(content-type support)
● Two-way data binding forms <-> JSON
– HTML is only template we need!
● Single language: JavaScript (+jquery)
● "simple app in single afternoon" benchmark
8. CouchDB
● Designed for replication over HTTP
– applications replicatied with data (off-line)
● Custom views, requests and _changes feed
9. <angular/>
● What if web browsers where written for web
applications today?
– html compiler inside browser
– ng:repeat and friends to template objects
– Objects persisted using REST to server
● http://docs.angularjs.org/
● Demo
– printer overview
– conference submission app
10. angular-mojolicious
● Mojolicious – web in the box (perl)
– http://mojolicious.org/
● Mojo::Client – chunked HTTP client
– Perfrect for CouchDB integration
● https://github.com/dpavlin/angular-mojolicious
● REST API for Angular's $resource
– CouchDB proxy or static JSON files
● Replication with getangular.com service
– not API compliant, uses newer version
● Helpers to quickly prototype with angular
11. CouchDB triggers
● Finite-state machine inside document
● Multiple workers - FSM for lock and status
● filter, trigger, commit on _changes feed
● Perfect for async tasks
– executing shell
– sending e-mail
12. CouchDB full-text search
● Implemented as filter-only trigger
● KinoSearch – full-text search, base for
Apache lucy (Lucene in C)
● trigger which delete/add documents
– Unroll structures into.flat.schema
● CouchDB external server to perform queries
13. CouchDB related projects
● BigCouch
– https://github.com/cloudant/bigcouch
– Consistant hashing, sharding
● ElasticSearch
– http://www.elasticsearch.com/
– CouchDB river
● GeoCouch
– https://github.com/vmx/couchdb
– Spartial index
14. Riak (search)
● cluster of machines!
● Amazon's dynamo model
– r,w – eventual consistency
● Multiple map/reduce phases in single query
– Ad-hoc, not cached, in parallel over cluster
● post-commit hooks (search)
● Links (REST traversal)
● HTTP and ProcolBuffers interfaces
● http://www.basho.com/riaksearch.html