oday mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
Implementing data sync apis for mibile apps @cloudconfMichele Orselli
Today mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
Implementing Server Side Data Synchronization for Mobile AppsMichele Orselli
The document describes an architecture and implementation for server-side data synchronization for mobile apps. It discusses syncing scenarios, challenges with the existing solution, and the new architecture and implementation. The key aspects covered are using GUIDs for unique identifiers, suggesting a "from" timestamp for incremental syncing, transferring record states instead of operations, and algorithms for resolving conflicts including for hierarchical data using a sort by hierarchy and updating ids.
Firebase and ng2
This document discusses Firebase and AngularFire/AngularFire2. It summarizes that Firebase is a backend as a service that provides realtime database functionality. AngularFire/AngularFire2 are wrappers that make the Firebase API accessible to Angular applications. Key features covered include authentication, authorization, data validation, and working with data through observable references and promises. Best practices like shallow data structures and avoiding deep nesting are also highlighted.
AngularJS training provides an overview of key AngularJS concepts and best practices for building Angular applications. The document introduces the trainer, Lauri Svan, and discusses AngularJS fundamentals like two-way data binding, dependency injection, templates, controllers and directives. It also outlines the typical structure of an Angular app, including modules, services and routing. Form validation, custom directives and asynchronous validation with ngModelOptions are also covered to demonstrate common Angular patterns and techniques.
In this talk I demonstrate and explain how I tackled the problem of importing a huge data set with many repetitive contents. The dataset was provided in JSON format.
Android Wear is a software platform for wearable devices like smartwatches. It allows devices to be context aware, suggest information to users based on location and time, and features simple interactions like cards and lists. Notifications, voice replies, and media controls can be integrated. Activities have optimized layouts and UI for small screens. Sensors, data syncing between devices, and messaging APIs allow communication. Custom watch faces can be built with ambient mode support and settings screens.
Powering Heap With PostgreSQL And CitusDB (PGConf Silicon Valley 2015)Dan Robinson
At Heap, we lean on PostgreSQL for all our backend heavy lifting. We support an expressive set of queries — conversion funnels with filtering and grouping, retention analysis, and behavioral cohorting to name a few — across billions of users and tens of billions of events. Results need to come back in a matter of seconds and reflect up-to-the-minute data.
This talk will discuss these challenges, with a particular focus on:
- Using CitusDB for interactive analysis across 50 terabytes of data and counting.
- PostgreSQL and Kafka: two great tastes that taste great together.
- UDFs in C and PL/pgSQL, partial indexes for pre-aggregation, and other tricks up our sleeves.
Implementing data sync apis for mibile apps @cloudconfMichele Orselli
Today mobile apps are everywhere. These apps cannot count on a reliable and constant internet connection: working in offline mode is becoming a common pattern. This is quite easy for read-only apps but it becomes rapidly tricky for apps that create data in offline mode. This talk is a case study about a possible architecture for enabling data synchronization in these situations. Some of the topics touched will be:
- id generation
- hierarchical data
- managing differente data types
- sync algorithm
Implementing Server Side Data Synchronization for Mobile AppsMichele Orselli
The document describes an architecture and implementation for server-side data synchronization for mobile apps. It discusses syncing scenarios, challenges with the existing solution, and the new architecture and implementation. The key aspects covered are using GUIDs for unique identifiers, suggesting a "from" timestamp for incremental syncing, transferring record states instead of operations, and algorithms for resolving conflicts including for hierarchical data using a sort by hierarchy and updating ids.
Firebase and ng2
This document discusses Firebase and AngularFire/AngularFire2. It summarizes that Firebase is a backend as a service that provides realtime database functionality. AngularFire/AngularFire2 are wrappers that make the Firebase API accessible to Angular applications. Key features covered include authentication, authorization, data validation, and working with data through observable references and promises. Best practices like shallow data structures and avoiding deep nesting are also highlighted.
AngularJS training provides an overview of key AngularJS concepts and best practices for building Angular applications. The document introduces the trainer, Lauri Svan, and discusses AngularJS fundamentals like two-way data binding, dependency injection, templates, controllers and directives. It also outlines the typical structure of an Angular app, including modules, services and routing. Form validation, custom directives and asynchronous validation with ngModelOptions are also covered to demonstrate common Angular patterns and techniques.
In this talk I demonstrate and explain how I tackled the problem of importing a huge data set with many repetitive contents. The dataset was provided in JSON format.
Android Wear is a software platform for wearable devices like smartwatches. It allows devices to be context aware, suggest information to users based on location and time, and features simple interactions like cards and lists. Notifications, voice replies, and media controls can be integrated. Activities have optimized layouts and UI for small screens. Sensors, data syncing between devices, and messaging APIs allow communication. Custom watch faces can be built with ambient mode support and settings screens.
Powering Heap With PostgreSQL And CitusDB (PGConf Silicon Valley 2015)Dan Robinson
At Heap, we lean on PostgreSQL for all our backend heavy lifting. We support an expressive set of queries — conversion funnels with filtering and grouping, retention analysis, and behavioral cohorting to name a few — across billions of users and tens of billions of events. Results need to come back in a matter of seconds and reflect up-to-the-minute data.
This talk will discuss these challenges, with a particular focus on:
- Using CitusDB for interactive analysis across 50 terabytes of data and counting.
- PostgreSQL and Kafka: two great tastes that taste great together.
- UDFs in C and PL/pgSQL, partial indexes for pre-aggregation, and other tricks up our sleeves.
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Roel Hartman
This document summarizes the development of a real-world logistic application using Oracle Application Express (APEX) for a client. It describes enhancing the existing application by replacing forms with APEX, including adding direct validation, replacing the calendar with jQuery, showing descriptions for codes, and improving the list of values functionality. The presentation provides examples of implementing these enhancements in APEX.
Bringing Transactional Guarantees to MongoDBPaul Robinson
MongoDB and similar document-based NoSQL datastores tend to offer limited transaction support. And with good reason, as using an ACID (Atomicity, Consistency, Isolation, Durability) transaction to make updates to multiple documents (potentially over multiple resources) can limit scalability.
But there are alternative transaction models that can be used in favor of removing transactions altogether. In this presentation, you’ll see:
How to use a compensating-transaction approach to provide many of the ACID guarantees without the scalability limitations that an ACID approach could bring.
Cases in which ACID transactions might not be appropriate—in particular, why ACID transaction support for multiple document updates is rarely offered in a NoSQL datastore.
How to use a compensating transaction as an alternative.
How to develop applications that make transactional updates to multiple documents in a MongoDB datastore.
How reliability can be built upon the primitives provided by MongoDB and how the middleware can abstract this from the developer.
The majority of this talk will include a code example that uses the Narayana compensating-transactions API, which greatly simplifies the development of applications that need this transaction model.
This document provides an overview of React and Redux concepts including:
- React basics like components, props, state, and lifecycle methods
- Flux architecture and how data flows through actions, dispatcher, and stores
- Redux as an alternative to Flux that uses a single store updated by reducers in response to actions
- Additional React topics like JSX, propTypes, and using React with ES6 classes are also covered.
The document discusses moving a Slack commands application from a single Express app hosting all commands to individual serverless functions (Lambda) per command. It provides examples of the code structure for a sample "user stats" command function, how it is executed by AWS Lambda, and how CloudFormation templates are used to define and deploy the Lambda function and its resources to AWS.
Oracle Application Express (APEX) is shipped with several JavaScript libraries, jQuery being the best known one of them. And on top of these libraries the APEX Development Team created their own. You probably used a couple of these API's already, like $s, $v etc.
But there are way more and some of them are extremely useful. But first you have to be aware they exists. And secondly you have to know how to use the properly.
This session will cover the most valuable JavaScript API's with some real world examples.
Most developers stick to the standard $s and $v functions - even without knowing there is also a $v2 and $s can have more parameters.
The focus will be on the namespaced apex API's, like apex.server.process and apex.event.trigger.
Creating sub zero dashboard plugin for apex with googleRoel Hartman
Presentation about how to create a Google Visualization PlugIn for Oracle Application Express. Presentation given at ODTUG 2010, APEXPosed 2010 and UKOUG 2010.
Use Kotlin scripts and Clova SDK to build your Clova extensionLINE Corporation
The document discusses using Kotlin scripts to create a Clova client. It shows how to evaluate Kotlin code from a script using a ScriptEngine to define a Clova client configuration with launch, intent, and session ended handlers. The Clova client created in the script can then be used to handle Clova requests and responses.
The document provides an overview of Akka, an open-source toolkit for building highly concurrent, distributed, and fault-tolerant event-driven applications on the JVM. It discusses key Akka concepts like actors, which encapsulate business logic and state as lightweight processes, and how actors communicate asynchronously through message passing. It also covers how Akka enables building resilient systems that can self-heal from failures through its implementation of the reactive manifesto principles.
Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...Codemotion
We are entering an era where interactions with computers will drastically change. Standard I/O will be replaced by solutions that interact with natural language either spoken or written. The signs of this change are the numerous bots that appear everywhere. The most popular are chatbots. This session focusses on bots, to access them with any client and to create meaningful dialogs respecting the language and emotion of the user.
This document provides an overview of Rxjs (Reactive Extensions for JavaScript). It begins by explaining why Rxjs is useful for dealing with asynchronous code in a synchronous way and provides one paradigm for asynchronous operations. It then discusses the history of callbacks and promises for asynchronous code. The bulk of the document explains key concepts in Rxjs including Observables, Operators, error handling, testing with Schedulers, and compares Promises to Rxjs. It provides examples of many common Rxjs operators and patterns.
Rxjs provides a paradigm for dealing with asynchronous operations in a way that resembles synchronous code. It uses Observables to represent asynchronous data streams over time that can be composed using operators. This allows handling of events, asynchronous code, and other reactive sources in a declarative way. Key points are:
- Observables represent asynchronous data streams that can be subscribed to.
- Operators allow manipulating and transforming streams through methods like map, filter, switchMap.
- Schedulers allow controlling virtual time for testing asynchronous behavior.
- Promises represent single values while Observables represent continuous streams, making Observables more powerful for reactive programming.
- Cascading asynchronous calls can be modeled elegantly using switch
This document discusses dependency injection and inversion of control patterns. It explains that dependency injection frameworks like Angular and Ember use an inversion of control container to manage dependencies and instantiate classes with their dependencies already satisfied. The container owns and manages all class registrations and dependencies. When a class is looked up from the container, it is instantiated with all its dependencies injected. This decouples classes from their concrete dependencies and makes applications more modular and testable.
Designing The Right Schema To Power Heap (PGConf Silicon Valley 2016)Dan Robinson
Heap's analytics infrastructure is built around PostgreSQL. The most important choice to make when building a system this way is the schema you'll use to represent your data. This foundation will determine your write throughput, what sorts of read queries will be fast, what indexing strategies will be available to you, and what data inconsistencies will be possible. With the wrong choice, you won't be able to leverage PostgreSQL's most powerful features.
This talk walks through the different schemas we've used to power Heap over the last three years, their relative strengths and weaknesses, and the mistakes we've made.
s React.js a library or a framework? In any case, it is a new way of working that represents a revolution in the way of building web projects. It has very particular characteristics that allow us, for instance, to render React code from the server side, or to include React components from Twig tags. During this talk we will present React.js, we will explore how to take advantage of it from PHP projects and we will give answers to practical problems such as universal (isomorphical) rendering and the generation of React.js forms from Symfony forms without duplication of efforts.
The document provides an overview of controller testing in RSpec for Ruby on Rails applications. It discusses why to test controllers, common RSpec tools like RSpec and FactoryGirl, tips for writing controller specs, and examples of fully-tested controller actions like GET, POST, PATCH, and DELETE following RESTful conventions. Specific examples shown include testing unauthorized access, valid and invalid parameter handling, object assignments, redirects, and database changes. The overall structure and organization of controller specs is also demonstrated.
The document provides examples for managing context information using the Orion Context Broker, including creating entities and attributes, updating attribute values, and querying for context data. Key operations demonstrated include updateContext to create and update entities, and queryContext to retrieve entity attributes. Examples show creating Car and Room entities with speed/temperature attributes and updating their values.
Using Change Streams to Keep Up with Your DataMongoDB
Speaker: Aly Cabral
Real-time feedback is an essential part of modern application development where developers want to sync across platforms, systems, and users to provide better end-user experiences. In MongoDB 3.6, change streams will empower developers to easily leverage the power of MongoDB's internal real-time functionality to react to relevant data changes immediately. This session introduces change streams and walks you through developing against them. We will dive into use cases and explore how to make good architectural decisions around this new functionality.
The document describes Johannes Brodwall's philosophy of "bare-knuckle web development" which advocates for lightweight frameworks, test-driven development, and avoiding unnecessary complexity. It then demonstrates this approach through building a simple phonebook web application in Java using only the bare essentials like servlets and XML parsing. Finally, it discusses further directions this approach could be taken, such as building applications for the Norwegian agricultural authority and power grid operator.
The Interactive Grid is introduced in APEX 5.1 as a best of both worlds of Tabular Forms and Interactive Reports. Although a lot of settings are declaratively avaible within the APEX builder, there are a ton of features built in that are only accessible by JavaScript.
In this session you will learn how to use the most interesting "hidden" features with just a few lines of JavaScript.
Some examples:
- Adding and removing buttons from the Interactive Grid toolbar.
- Adding and removing actions from the toolbar menu.
- Adding and removing functionality from the row level pop up menu.
- Removing complexity on the column level.
- Adding tooltips to a column.
- Changing the layout of columns and headings.
- Refreshing (only) changed records within the grid.
- Removing only deleted records from the grid - without a full refresh.
Goal Based Data Production with Sim SimeonovDatabricks
Since the invention of SQL and relational databases, data production has been about specifying how data should be transformed through queries. While Apache Spark can certainly be used as a general distributed SQL-like query engine, the power and granularity of Spark’s APIs allows for a fundamentally different, and far more productive, approach. This session will introduce the principles of goal-based data production with examples ranging from ETL, to exploratory data analysis, to feature engineering for machine learning.
Goal-based data production concerns itself with specifying WHAT the desired result is, leaving the details of HOW the result is achieved to the smart data warehouse running on top of Spark. That not only substantially increases productivity, but also significantly expands the audience that can work directly with Spark: from developers and data scientists to technical business users. With specific data and architecture patterns and live demos, this session will demonstrate how easy it is for any company to create its own smart data warehouse with Spark 2.x and gain the benefits of goal-based data production.
PHP Experience 2016 - [Palestra] Scaling with MicroserviceiMasters
Pablo Moretti, Product Development Manager no Mercado Libre Argentina, fez a palestra "Scaling with Microservice", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
Last year I presented a speech on how we were trying to solve some of Ideato’s organizational problems. This year I’ll talk about what we achieved and how, and in which direction we are going on.
This speech will focus on how we are trying to create a self-sufficient and self-organized team.
I’ll talk about what ideato is doing to get the most applying eXtreme Programming principles and values. This speech will focus on clients involvement and sustainable pace.
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Roel Hartman
This document summarizes the development of a real-world logistic application using Oracle Application Express (APEX) for a client. It describes enhancing the existing application by replacing forms with APEX, including adding direct validation, replacing the calendar with jQuery, showing descriptions for codes, and improving the list of values functionality. The presentation provides examples of implementing these enhancements in APEX.
Bringing Transactional Guarantees to MongoDBPaul Robinson
MongoDB and similar document-based NoSQL datastores tend to offer limited transaction support. And with good reason, as using an ACID (Atomicity, Consistency, Isolation, Durability) transaction to make updates to multiple documents (potentially over multiple resources) can limit scalability.
But there are alternative transaction models that can be used in favor of removing transactions altogether. In this presentation, you’ll see:
How to use a compensating-transaction approach to provide many of the ACID guarantees without the scalability limitations that an ACID approach could bring.
Cases in which ACID transactions might not be appropriate—in particular, why ACID transaction support for multiple document updates is rarely offered in a NoSQL datastore.
How to use a compensating transaction as an alternative.
How to develop applications that make transactional updates to multiple documents in a MongoDB datastore.
How reliability can be built upon the primitives provided by MongoDB and how the middleware can abstract this from the developer.
The majority of this talk will include a code example that uses the Narayana compensating-transactions API, which greatly simplifies the development of applications that need this transaction model.
This document provides an overview of React and Redux concepts including:
- React basics like components, props, state, and lifecycle methods
- Flux architecture and how data flows through actions, dispatcher, and stores
- Redux as an alternative to Flux that uses a single store updated by reducers in response to actions
- Additional React topics like JSX, propTypes, and using React with ES6 classes are also covered.
The document discusses moving a Slack commands application from a single Express app hosting all commands to individual serverless functions (Lambda) per command. It provides examples of the code structure for a sample "user stats" command function, how it is executed by AWS Lambda, and how CloudFormation templates are used to define and deploy the Lambda function and its resources to AWS.
Oracle Application Express (APEX) is shipped with several JavaScript libraries, jQuery being the best known one of them. And on top of these libraries the APEX Development Team created their own. You probably used a couple of these API's already, like $s, $v etc.
But there are way more and some of them are extremely useful. But first you have to be aware they exists. And secondly you have to know how to use the properly.
This session will cover the most valuable JavaScript API's with some real world examples.
Most developers stick to the standard $s and $v functions - even without knowing there is also a $v2 and $s can have more parameters.
The focus will be on the namespaced apex API's, like apex.server.process and apex.event.trigger.
Creating sub zero dashboard plugin for apex with googleRoel Hartman
Presentation about how to create a Google Visualization PlugIn for Oracle Application Express. Presentation given at ODTUG 2010, APEXPosed 2010 and UKOUG 2010.
Use Kotlin scripts and Clova SDK to build your Clova extensionLINE Corporation
The document discusses using Kotlin scripts to create a Clova client. It shows how to evaluate Kotlin code from a script using a ScriptEngine to define a Clova client configuration with launch, intent, and session ended handlers. The Clova client created in the script can then be used to handle Clova requests and responses.
The document provides an overview of Akka, an open-source toolkit for building highly concurrent, distributed, and fault-tolerant event-driven applications on the JVM. It discusses key Akka concepts like actors, which encapsulate business logic and state as lightweight processes, and how actors communicate asynchronously through message passing. It also covers how Akka enables building resilient systems that can self-heal from failures through its implementation of the reactive manifesto principles.
Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...Codemotion
We are entering an era where interactions with computers will drastically change. Standard I/O will be replaced by solutions that interact with natural language either spoken or written. The signs of this change are the numerous bots that appear everywhere. The most popular are chatbots. This session focusses on bots, to access them with any client and to create meaningful dialogs respecting the language and emotion of the user.
This document provides an overview of Rxjs (Reactive Extensions for JavaScript). It begins by explaining why Rxjs is useful for dealing with asynchronous code in a synchronous way and provides one paradigm for asynchronous operations. It then discusses the history of callbacks and promises for asynchronous code. The bulk of the document explains key concepts in Rxjs including Observables, Operators, error handling, testing with Schedulers, and compares Promises to Rxjs. It provides examples of many common Rxjs operators and patterns.
Rxjs provides a paradigm for dealing with asynchronous operations in a way that resembles synchronous code. It uses Observables to represent asynchronous data streams over time that can be composed using operators. This allows handling of events, asynchronous code, and other reactive sources in a declarative way. Key points are:
- Observables represent asynchronous data streams that can be subscribed to.
- Operators allow manipulating and transforming streams through methods like map, filter, switchMap.
- Schedulers allow controlling virtual time for testing asynchronous behavior.
- Promises represent single values while Observables represent continuous streams, making Observables more powerful for reactive programming.
- Cascading asynchronous calls can be modeled elegantly using switch
This document discusses dependency injection and inversion of control patterns. It explains that dependency injection frameworks like Angular and Ember use an inversion of control container to manage dependencies and instantiate classes with their dependencies already satisfied. The container owns and manages all class registrations and dependencies. When a class is looked up from the container, it is instantiated with all its dependencies injected. This decouples classes from their concrete dependencies and makes applications more modular and testable.
Designing The Right Schema To Power Heap (PGConf Silicon Valley 2016)Dan Robinson
Heap's analytics infrastructure is built around PostgreSQL. The most important choice to make when building a system this way is the schema you'll use to represent your data. This foundation will determine your write throughput, what sorts of read queries will be fast, what indexing strategies will be available to you, and what data inconsistencies will be possible. With the wrong choice, you won't be able to leverage PostgreSQL's most powerful features.
This talk walks through the different schemas we've used to power Heap over the last three years, their relative strengths and weaknesses, and the mistakes we've made.
s React.js a library or a framework? In any case, it is a new way of working that represents a revolution in the way of building web projects. It has very particular characteristics that allow us, for instance, to render React code from the server side, or to include React components from Twig tags. During this talk we will present React.js, we will explore how to take advantage of it from PHP projects and we will give answers to practical problems such as universal (isomorphical) rendering and the generation of React.js forms from Symfony forms without duplication of efforts.
The document provides an overview of controller testing in RSpec for Ruby on Rails applications. It discusses why to test controllers, common RSpec tools like RSpec and FactoryGirl, tips for writing controller specs, and examples of fully-tested controller actions like GET, POST, PATCH, and DELETE following RESTful conventions. Specific examples shown include testing unauthorized access, valid and invalid parameter handling, object assignments, redirects, and database changes. The overall structure and organization of controller specs is also demonstrated.
The document provides examples for managing context information using the Orion Context Broker, including creating entities and attributes, updating attribute values, and querying for context data. Key operations demonstrated include updateContext to create and update entities, and queryContext to retrieve entity attributes. Examples show creating Car and Room entities with speed/temperature attributes and updating their values.
Using Change Streams to Keep Up with Your DataMongoDB
Speaker: Aly Cabral
Real-time feedback is an essential part of modern application development where developers want to sync across platforms, systems, and users to provide better end-user experiences. In MongoDB 3.6, change streams will empower developers to easily leverage the power of MongoDB's internal real-time functionality to react to relevant data changes immediately. This session introduces change streams and walks you through developing against them. We will dive into use cases and explore how to make good architectural decisions around this new functionality.
The document describes Johannes Brodwall's philosophy of "bare-knuckle web development" which advocates for lightweight frameworks, test-driven development, and avoiding unnecessary complexity. It then demonstrates this approach through building a simple phonebook web application in Java using only the bare essentials like servlets and XML parsing. Finally, it discusses further directions this approach could be taken, such as building applications for the Norwegian agricultural authority and power grid operator.
The Interactive Grid is introduced in APEX 5.1 as a best of both worlds of Tabular Forms and Interactive Reports. Although a lot of settings are declaratively avaible within the APEX builder, there are a ton of features built in that are only accessible by JavaScript.
In this session you will learn how to use the most interesting "hidden" features with just a few lines of JavaScript.
Some examples:
- Adding and removing buttons from the Interactive Grid toolbar.
- Adding and removing actions from the toolbar menu.
- Adding and removing functionality from the row level pop up menu.
- Removing complexity on the column level.
- Adding tooltips to a column.
- Changing the layout of columns and headings.
- Refreshing (only) changed records within the grid.
- Removing only deleted records from the grid - without a full refresh.
Goal Based Data Production with Sim SimeonovDatabricks
Since the invention of SQL and relational databases, data production has been about specifying how data should be transformed through queries. While Apache Spark can certainly be used as a general distributed SQL-like query engine, the power and granularity of Spark’s APIs allows for a fundamentally different, and far more productive, approach. This session will introduce the principles of goal-based data production with examples ranging from ETL, to exploratory data analysis, to feature engineering for machine learning.
Goal-based data production concerns itself with specifying WHAT the desired result is, leaving the details of HOW the result is achieved to the smart data warehouse running on top of Spark. That not only substantially increases productivity, but also significantly expands the audience that can work directly with Spark: from developers and data scientists to technical business users. With specific data and architecture patterns and live demos, this session will demonstrate how easy it is for any company to create its own smart data warehouse with Spark 2.x and gain the benefits of goal-based data production.
PHP Experience 2016 - [Palestra] Scaling with MicroserviceiMasters
Pablo Moretti, Product Development Manager no Mercado Libre Argentina, fez a palestra "Scaling with Microservice", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
Last year I presented a speech on how we were trying to solve some of Ideato’s organizational problems. This year I’ll talk about what we achieved and how, and in which direction we are going on.
This speech will focus on how we are trying to create a self-sufficient and self-organized team.
I’ll talk about what ideato is doing to get the most applying eXtreme Programming principles and values. This speech will focus on clients involvement and sustainable pace.
The document discusses microservices and splitting a web application into smaller independent services. It provides examples of how a web application could be split into services for the main web, mobile, community, ads, images, and comments. It describes advantages of smaller services including being easier to maintain, deploy, and test in isolation. Challenges of microservices like service interaction, failures, and maintaining backwards compatibility are also covered.
In the ”Internet of Things” (IoT) vision the physical world blends with virtual one, while machine-to-machine interaction improve our daily life. Clearly, how these virtual objects are exposed to us is critical, so that their user interface must be designed to support the easiness of usage that is driven by the users’ needs, which is different from what machines requires. These two requirements must be solved, and an integrated solution should emerge, if we want to bring the IoT to the 50 billions network that is predicted to became in the next years.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Versão com GIFs:
https://docs.google.com/presentation/d/17M-jHlkAP5KPfQ4_Alck_wIsN2gK3dZNGfJR9Bi1L50/present
Códigos para instalação das dependências:
https://github.com/fdaciuk/talks/tree/master/2015/wordcamp-sao-paulo
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)Amazon Web Services
Chalice is a new Python serverless microframework for AWS. In this session, we'll show how to use it to create serverless REST APIs that use Amazon API Gateway and AWS Lambda. We'll deploy our first REST API in less than 30 seconds. Several live demos will show how to build on this example to leverage other Chalice capabilities, including advanced URL routing, automatic policy generation, and Swagger exports.
This document provides an overview and introduction to Redux. It discusses key Redux concepts like the single store, state, actions, and reducers. It also covers tools and libraries that work with Redux like middleware, thunks, and immutable data structures. Implementation examples are provided, including a mini counter app and using Redux with React components. Asynchronous actions and API integration with middleware are explained.
This document provides an overview of using Redux middleware for asynchronous actions, logging, analytics, and authentication. It demonstrates how to structure asynchronous action creators to work with Redux Thunk middleware and make API calls. It also shows how to build custom middleware to handle API requests, add authentication headers, and process responses. The document recommends middleware as a way to separate logic from components and encourages further reading on middleware patterns and the Redux ecosystem.
The document discusses different types of tests for Node.js applications from unit tests to integration tests. It provides examples of setting up unit tests using Mocha, Chai and Sinon. Integration tests examples are also given using Mocha, Chai and Chai HTTP to test routes and make requests to the application. Noch is also introduced for mocking external API responses in integration tests. The document emphasizes the importance of both unit and integration tests during development.
Using the SharePoint Framework as a surface to express yourself through client side solutions is great but at some point in time, you will require that this beauty you built interacts with APIs holding data that lives within the Office 365 environment. In this session, you will learn how to utilize and optimize your calls to SharePoint via its REST APIs, to the Microsoft Graph and to external services that you might find useful to deliver a rich experience in your solution. You will also learn about how to simplify those calls using the Community-Driven library PnP JS Core that aims to save your time (and sanity) by simplifying the access to the SharePoint REST APIs and to the Microsoft Graph. Goodbye URLs, hello intellisense!
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
Building a desktop app using HTTP::Engine as a micro web server, SQLite for data storage, and jQuery for the user interface. Comet and asynchronous workers are used to enable real-time features. JSON-RPC and routing are implemented to support AJAX actions. The combination provides a lightweight "desktop app" architecture that is cross-platform.
This document discusses building REST APIs with Laravel 5. It covers topics like using REST instead of SOAP, authentication with basic authentication and middleware, response formats, controller hierarchy, repositories, data transformers, error handling, and an internal dispatcher for making internal API requests. The goal is to provide best practices and patterns for building robust and well-structured REST APIs with Laravel.
Come to this talk prepared to learn about the Doctrine PHP open source project. The Doctrine project has been around for over a decade and has evolved from database abstraction software that dates back to the PEAR days. The packages provided by the Doctrine project have been downloaded almost 500 million times from packagist. In this talk we will take you through how to get started with Doctrine and how to take advantage of some of the more advanced features.
Vadym Khondar is a senior software engineer with 8 years of experience, including 2.5 years at EPAM. He leads a development team that works on web and JavaScript projects. The document discusses reactive programming, including its benefits of responsiveness, resilience, and other qualities. Examples demonstrate using streams, behaviors, and other reactive concepts to write more declarative and asynchronous code.
Burn down the silos! Helping dev and ops gel on high availability websitesLindsay Holmwood
HA websites are where the rubber meets the road - at 200km/h. Traditional separation of dev and ops just doesn't cut it.
Everything is related to everything. Code relies on performant and resilient infrastructure, but highly performant infrastructure will only get a poorly written application so far. Worse still, root cause analysis in HA sites will more often than not identify problems that don't clearly belong to either devs or ops.
The two options are collaborate or die.
This talk will introduce 3 core principles for improving collaboration between operations and development teams: consistency, repeatability, and visibility. These principles will be investigated with real world case studies and associated technologies audience members can start using now. In particular, there will be a focus on:
- fast provisioning of test environments with configuration management
- reliable and repeatable automated deployments
- application and infrastructure visibility with statistics collection, logging, and visualisation
Everyone knows that Silex is a great microframework for APIs and small sites, but what do you do when you want to build a large site, or your little tiny site has grown up? Silex has many different ways to let you build larger, complex websites that might still be too small for Symfony, but have outgrown the single page app it once was. We’ll look at what Silex offers us, and different ways we can structure our site.
The document provides an overview of Node.js and common tools used in Node.js development such as Connect, Express, Mongoose, and Passport. It discusses Node.js features like non-blocking I/O and how frameworks like Connect and Express make building web applications easier. It also covers data storage with Mongoose and authentication with Passport. Conventions for RESTful API design are proposed, including using nouns for resources and verbs for actions, and handling associations and embedded resources.
Silex is a brand new PHP 5.3 micro framework built on top of the Symfony2 de decoupled components. In this session, we will discover how to build and deploy powerful REST web services with such a micro framework and its embedded tools.
The first part of this talk will introduce the basics of the REST architecture. We fill focus on the main concepts of REST like HTTP methods, URIs and open formats like XML and JSON.
Then, we will discover how to deploy REST services using most of interesting Silex tools like database abstraction layer, template engine and input validation. We will also look at unit and functional testing frameworks with PHPUnit and HTTP caching with Edge Side Includes and Varnish support to improve performances.
Using the SharePoint Framework as a surface to express yourself through client side solutions is great but at some point in time, you will require that this beauty you built interacts with APIs holding data that lives within the Office 365 environment. In this session, you will learn how to utilize and optimize your calls to SharePoint via its REST APIs, to the Microsoft Graph and to external services that you might find useful to deliver a rich experience in your solution. You will also learn about how to simplify those calls using the Community-Driven library PnP JS Core that aims to save your time (and sanity) by simplifying the access to the SharePoint REST APIs and to the Microsoft Graph. Goodbye URLs, hello intellisense!
This document discusses various approaches for connecting to and interacting with SharePoint data from a SharePoint Framework web part, including using the SharePoint REST APIs, SharePoint Search, Microsoft Graph, custom APIs, and the PnP JS Core library. It provides code samples for retrieving, creating, updating, and deleting list item data from a SharePoint list using these different approaches. It also covers topics like authentication, permissions, and limitations of each approach.
Express is a web framework for Node.js that allows routing, middleware, templating and more. It is inspired by Sinatra and uses Connect as its middleware framework. Key features include routing, middleware support, template rendering with engines like Jade, and session handling with storage options. Errors can be handled via the app.error() method. Express provides a full-featured and easy to use web development framework for Node.js.
Talk I did at WordCamp Birmingham, Exploring ways to make Wordpress work without page refreshes, using the Admin Ajax API and Node.JS with Socket.IO and Express.js
Similar to Server side data sync for mobile apps with silex (20)
We all have to deal with the scarcest resource in development teams: time. This often leads to compromises and shortcuts when writing code. The result is what is called technical debt: the difference between how the code should have been and how it is.
Strategies for managing technical debt are many but all require an investment of time and energy, proportional to the amount of debt to be repaid.
Is this really the only way?
Rector is a tool capable of automating a wide range of refactorings, allowing us to speed up the most tedious manual operations. In this talk we will see how, exploring
- rector's basic principles
- predefined rules, configurable rules, sets of rules
- how to write custom rules
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...Michele Orselli
Nella vita quotidiana di un team di sviluppo ci si trova a dover prendere decisioni sull'architettura: implementiamo un sistema basato su CQRS? Quali principi del Domain Driven Design vogliamo applicare e come? Un approccio CRUD è sufficiente in questo contesto?
Sia che questa decisione sia presa in modo partecipativo o meno ed indipendentemente dalla risposta, come ci assicuriamo che tutti rispettino la scelta fatta? In questo talk vedremo quali approcci e strumenti abbiamo a disposizione per comunicare, condividere e controllare le decisioni architetturali.
Symfony 4 introduced several major changes including a new directory structure without bundles, use of environment variables instead of parameters.yaml, and Symfony Flex for defining application dependencies and configuration. It also improved the developer experience with features like automatic wiring and a bundle for generating common application code.
A recommendation engine for your applications codemotion amsMichele Orselli
Nowadays a lot of websites try to guess what we could like: ”Recommendation for you in books” or ”People you may like”. Sounds familiar, isn’t it? Wouldn’t be cool if you could do the same in your application? Well, this session is for you! In the first part of this talk, recommendation systems will be introduced, focusing on collaborative filtering algorithms (CR). After that we’ll dive in Prediction.io, an open source machine learning server for software developers to create predictive features, such as personalization, recommendation, and content discovery.
A recommendation engine for your applications phpdayMichele Orselli
This document discusses building a recommendation engine for a PHP application using PredictionIO. It covers installing PredictionIO, modeling event data, creating recommendation engines, and implementing functions for recording user actions and getting recommendations. Key aspects include modeling view, like, and purchase events, handling cold starts for users and items, and retraining engines daily with new data to provide personalized book and ebook recommendations.
Today there are a lot of cloud providers, with a wide range of offers. Web projects usually have continuously changing needs: what worked well yesterday may not be enough today. These two facts became quite obvious for us while migrating a large PHP application from Rackspace to Amazon. In this session I’d like to share this experience highlighting infrastructure and code evolution, migration steps, cost analisys, issues.
A recommendation engine for your php applicationMichele Orselli
This document provides an overview of building a recommendation engine for an online book shop using PredictionIO. It discusses recommendation systems and different types of algorithms like content-based filtering, collaborative filtering using user-user and item-item similarities, and model-based approaches. It also covers installing and using PredictionIO, modeling event data, building recommendation engines, and implementing the engine to provide book and ebook recommendations to users based on actions like views, likes and purchases.
Hopping in clouds: a tale of migration from one cloud provider to anotherMichele Orselli
Nowadays there are a lot of cloud providers, with a wide range of offers. Web projects usually have continuously changing needs: what worked well yesterday may not be enough today. These two facts became quite obvious for us in the last year while migrating a PHP application from Rackspace to Amazon. In this session I’d like to share this experience highlighting infrastructure and code evolution, migration steps, cost analisys, issues.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
This document discusses Symfony 3 migration and changes from previous versions. Key points include:
- Symfony 3 will focus on fixing architectural mistakes and removing deprecated code rather than major changes.
- The release process follows semantic versioning and backward compatibility breaks are allowed for major releases.
- To migrate, applications using versions before 2.3 should upgrade to 2.3 first, and those between 2.3-2.6 should upgrade to 2.7/2.8.
- Third party bundles may also need to be upgraded to support Symfony 3.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session we’d like to share our experience, including but not limited to:advanced vagrantfile configurationvm configuration tips for dev environment: performance,
debug, tuning,
our wtf moments
puphet/phansilbe: hot or not?
packaging a box
PHP was added to the languages offered by Google App Engine about a year ago. This session will focus on porting an existing app on gae.
We’ll start talking about the main characteristics of the app engine platform, which kind of services are available (persistence, storage, queue and so on) and how to use it. Then the PHP installation of app engine will be discussed, highlighting implementation choices and limitations. The second part of the talk will go into implementation details, in particular about tweaks needed to run an existing app on gae e.g: how a session is managed, logging is performed and how to interact with the file system not forgetting about deploy.
PHP was added to the languages offered by Google App Engine about a year ago. This session will focus on porting an existing app on gae.
We’ll start talking about the main characteristics of the app engine platform, which kind of services are available (persistence, storage, queue and so on) and how to use it. Then the PHP installation of app engine will be discussed, highlighting implementation choices and limitations.
The second part of the talk will go into implementation details in particular about what tweaks are needed to run an existing app on gae e.g: how session is managed, logging is performed and how to interact with the file system not forgetting about deploy
Symfony2 è sicuramente uno dei framework migliori in circolazione, ma non sono tutte rose e fiori, soprattutto per chi inizia a sviluppare ed è alle prime armi. In questa presentazione vorrei condividere la mie esperienza di apprendimento ed utilizzo del framework, cercando di mettere in evidenza i miei momenti wtf e alcune linee guida per sviluppare applicazioni manutenibili
This document discusses managing project portfolios through people, processes, and tools. It describes managing multiple iterative software projects using agile principles like Scrum and Kanban. Projects are planned on a weekly and long term basis, with tasks assigned to iterations and tracked on a Kanban board to optimize flow and minimize context switching between projects. Data and processes continue to be improved over time through experimentation.
The document discusses developing sustainable web projects with PHP. It emphasizes using light weight processes like automating tasks, communicating effectively with stakeholders, and focusing on delivering value through short iterative cycles. The document recommends using tools like Behat for testing, Trello for task management, and continuous integration to regularly deploy updates. It stresses having no assumptions about client needs and designing based on user stories to develop projects in a sustainable way.
Michele Orselli discusses techniques for extreme automation in software development. Some key points include:
- Using tools like Puppet, Vagrant, and local DNS servers to automate project setup and server configuration across multiple machines and projects.
- Implementing techniques like build automation, configuration management, and data migrations to reduce deployment times and ensure consistency.
- Employing practices like test-driven development, continuous integration/delivery, and infrastructure as code to improve efficiency and allow developers to focus on delivering business value.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
What is Master Data Management by PiLog Groupaymanquadri279
PiLog Group's Master Data Record Manager (MDRM) is a sophisticated enterprise solution designed to ensure data accuracy, consistency, and governance across various business functions. MDRM integrates advanced data management technologies to cleanse, classify, and standardize master data, thereby enhancing data quality and operational efficiency.
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
9. Brownfield project
Scenario
several mobile apps for tracking user generated
data (calendar, notes, bio data)
iOS & Android
~10 K users steadily growing at 1.2 K/month
10. MongoDB
Scenario
Legacy App based on Codeigniter
Existing RPC-wannabe-REST API for data sync
11. For every resource
get updates:
Scenario
POST /m/:app/get/:user_id/:res/:updated_from
send updates:
POST /m/:app/update/:user_id/:res_id/:dev_id/:res
17. Not Invented Here?
Don't Reinvent The Wheel,
Unless You Plan on Learning More About Wheels
J. Atwood
18. Architecture
2 different mobile platforms
Several teams with different skill level
Changing storage wasn’t an option
Forcing a particular technology client side wasn’t
an option
47. what to transfer
we choose to transfer states
{id: ‘1’, ’type’: ‘measure’, ‘_deleted’: true}
{id: 2’, ‘type’: ‘note’}
{id: ‘3’, ‘type’: ‘note’}
ps: soft delete all the things!
49. unique identifiers
How do we generate an unique id in a distributed
system?
UUID (RFC 4122): several implementations in PHP
(https://github.com/ramsey/uuid)
50. unique identifiers
How do we generate an unique id in a distributed
system?
Local/Global Id: only the server generates GUIDs
clients use local ids to manage their records
77. enforcing domain constraints
e.g. “only one temperature can be registered in a
given day”
how to we enforce domain constraints on data?
78. enforcing domain constraints
e.g. “only one temperature can be registered in a
given day”
how to we enforce domain constraints on data?
1) relax constraints
79. enforcing domain constraints
e.g. “only one temperature can be registered in a
given day”
how to we enforce domain constraints on data?
1) relax constraints
2) integrate constraints in sync algorithm
80. enforcing domain constraints
from findByGuid to findSimilar
first lookup by GUID then by domain rules
“two measures are similar if are referred to the
same date”
93. CRDT
Conflict-free Replicated Data Types (CRDTs)
Constraining the types of operations in order to:
- ensure convergence of changes to shared data by
uncoordinated, concurrent actors
- eliminate network failure modes as a source of
error
94. Couchbase Mobile
Gateways handles sync
Data flows through channels
- partition data set
- authorization
- limit the data
Use revision trees
95. Riak
Distributed DB
Eventually/Strong Consistency
Data Types
Configurable conflict resolution
- db level for built-in data types
- application level for custom
data
96. That’s all folks!
Questions?
Please leave feedback! https://joind.in/12959