Web app roll out - facebook

I've been developing web apps some years now, actually as a hobby. When I write something, unsing Laravel, Sails.js, or Meteor and I add a feature, I upload it and it's there, for everyone.
However, I've always been wondering how bigger sites like facebook manage to roll out features to just some users. Do they push their changes to just some servers? But in that case - how do they manage the make the selected users access just these servers?
Or some db entry to see if the user has access to the feature/ version?
So how does it work?
Really interested in this :)

Large sites like Facebook use a technique called Feature toggles to control the functionality that is active at run-time. The following blog article describes Facebook's approach:
https://abhishek-tiwari.com/post/decoupling-deployment-and-release-feature-toggles

Related

Online app backend with client-friendly online CMS

There are a ton of online CMS services out there. And a ton of (new) backend-as-a-service products too. But I can't seem to find what I am looking for.
I am building an app for a client. The app contains data about shops, products, and more. The client must be able to update this data (and not just one person: each shop manager needs to be able to log in and edit the data for their own shop). And of course the app must be able to access this data.
Client edits data online
This has to be extremely user-friendly and completely online. I don't want to sell my client something where they need to install stuff on their server. I don't want to sell them something that's accessible online but looks like phpMyAdmin.
I want a shop owner to be able to go to a webpage, log in, and then see a pretty UI where they can edit the data for their shop. The back-end needs to have a pretty front-end that's auto-generated for whatever data this particular shop owner is allowed to edit.
So there are two bits: storing data in the cloud in such a way that it can be accessed by the app (which I am building with Titanium), and allowing the client to log into the backend and edit the data in a non-tech, user-friendly way.
Here's a list of things I tried...
Backend-as-a-service
Services with a great back-end, but without easy auto-generated data editing website:
Appcelerator (Titanium) Cloud Service
Amazon EC2
Stackmob
BackBeam
WebVanta
Parse
API o Mat
ShepHertz Cloud42
Kii
Online CMS
Services that provide a nice way for clients to edit data, but no easy way for apps to connect:
CloudCMS
(and many others I'm sure)
It's insane that no-one seems to be providing the cross-breed of BaaS and online CMS. So many people are building apps for clients, and so many clients are not tech-savvy and are reluctant to get a special server and host database software they don't understand. Why does this not exist? What am I missing?
With apiOmat it's easy to create your own data-editing app for e.g. with JavaScript SDK and HTML. Or you send a feature request so that they build a module for your preferred CMS.
As you mentioned, Cloud CMS is a really good option (disclaimer: I'm one of the founders). The product provides an enterprise content management backend and an API that lets you plug in some really powerful features right into your mobile apps.
This month, we released a brand new user interface which provides much of what you're asking about. Instant forms, document libraries, search and workflow all in one place.
You can check out Cloud CMS here: http://www.cloudcms.com
I completely agree with your assessment particularly with respect to the last mile (getting the final app built). It's kind of the wild west out there and the strong technologies are still proving out.
You mentioned Titanium - that's a good choice. I also quite like the Ionic Framework (http://www.drifty.com/). It's a step in the right direction.

How to scrape Facebook friends' info INCLUDING their real e-mail the way Facebook App does?

I recently found that Facebook App (for Android & iOS, but i'm using Android anyway) downloads almost all friends' information (including FB ID and real e-mail account) to a SQLite database called fb.db. I am trying to do the same thing programmaticaly (using python, perl, bash etc) but with no luck so far. I need a way that will do similar requests with FB APP, and will download all of my friends' info upon login, just like the way FB APP work.
I tried so far to:
Decompile com.facebook.katana and see how it's done - No luck (or just missed it).
Sniff the facebook app with burp - No luck (due to SSL and app's protection when certs have been changed)
I am sure you went through this: http://developer.android.com/guide/topics/data/data-storage.html#db
There it is stated:
Android provides full support for SQLite databases. Any databases you create will be accessible by name to any class in the application, but not outside the application.
It was not the answer, it was just a text, which states that you can create a database for your web app. But unfortunately they are not providing any kind of helping material about writing and removing the data from that Database. So lets move to another source!
Related posts:
Please read this:
How to insert data into SQLite database in android?
There is a sweet example of how to add the content to a database in Android.
There is another example on this question too, Downloading data/content into Sqlite database
Why they didn't work:
Decompiling won't work! As they might have editted the app to be only fb-developer-readable on the first place. So you will never have success this way.
And the second thing is same.
All you can do, is to guess the algorithm or ask for it here: http://programmers.stackexchange.com and give it a try from scratch! :)
Suggestions:
I would try to recommend you to first learn how to:
Access Data connection on the phone.
Access the server from where to download the data.
Create a string or what ever data type to be inserted in database.
Create the connection, and save the data there!
I would now assume that you are a beginner, and want a tutorial! Then the first guess could be to visit their own project sites (SQLite, Android). Visit the developer network. And look for what you get!
Good luck buddy! Cheers.

Connect existing Drupal page with PhoneGap iOS App

Case:
I have an existing page based on Drupal and going to develop a phoneGap iOS App. That means I just need the information of the existing page and want to fill these data in the new app.
My Question is now, do somebody know weather there is a work around or work flow to do so resp. how can I connect the existing page with another page or in my case phoneGap to get just the data? I'm new with Drupal and phoneGap so maybe you have some pages with information, tutorials or some help how to do this.
Thanks in advance yves
Drupal offers a module called "Services" which will allow you to get data or services from your website. You may need to create your own methods on that module to get the information you want to retrieve.
As for the iOS side, you can retrieve the data via XML-RPC, Rest or whatever communication protocol you choose at the server side, or go all the way with drupal-ios.
https://github.com/workhabitinc/drupal-ios-sdk/
You should start looking for the Services module and play with it. You will have an embedded console on that module to test the methods.
Once you're finish with that, take a look at drupal-ios or go deep with your own implementation via XML-RPC or whatever.

How to integrate a comment system in an ios app?

Lets say my web server app is in drupal or wordpress, or even code igniter, how would one get about integrating a comment system? TSpecifically what I am trying to find out is if anyone was able to find a successful approach that would save some time as opposed to me going down the road of tying myself to a specific CMS content system.
Just throwing in some considerations here (by no means complete):
Are users also accessing your content (and its comment system) via the website?
If so, you'll want to have a comment interface that is available on the website too, and the easiest choice may be to use the comment system natively supplied by your CMS / through plugins.
If on the other hand your users will only be using the iOS app(s) for commenting (via a native interface) or you'll be heavily customizing the website anyway, using a comment system independent from your CMS might be an option.
How will the content be accessed from the app?
Via a simple web view? Or will the app download via an API provided by your CMS and display it in a native UI? If you are using an API provided by your CMS, you will have the same issue with your content as with your comments when moving CMSes.
You could add an intermediate layer that abstracts from the specific CMS API.
Or if you don't really plan on moving CMSes but want to prepare for that event nevertheless, you could simply implement a no-frills "version check" to ask the server for the CMS kind / version it is using, and if it doesn't match what your app expects, ask the users to update. This isn't the prettiest user experience, but it might be sufficient depending on what you're actually planning.

How to setup a CMS as a backend for iPhone app

I would like my iPhone app to get dynamic content off the net. This content should be managed using a CMS. I would like to know in particular if I can setup Drupal or Joomla or other CMS as a backend for my iphone app to get the content.
Any advice on how this can be achieved would be helpful.
I am completely new to setting up/using CMS.
You can also take a look at StorageRoom, which is a CMS for Mobile Applications.
Disclaimer: I created this myself to scratch my own itch.
Wordpress with the JSON-API plugin is a great solution, especially if you need a web site as well.
You can find a good example here that uses Wordpress and Phonegap to get a basic app going.
If you can access the content in any serialized format (e.g. XML or JSON), it should be no problem to use any CMS as a "backend" for your application.
I'm checking out storageroom, and I'm searching for a similar answer, but I also found osmek to be a bit promising. I might use that one because of the menu templates .Osmek can provide responses in json and xml (and other formats that aren't useful in iphone dev like php, html, and templates)
Feed.Us is another option. I have a series of travel guides iphone apps and use Feed.Us to manage the businesses listed within the apps.
It creates a URL with XML that gets imported into the app.
This seems to be a very promising solution!
Apache Usergrid
I have briefly tried DreamFactory for some trial project but never got around to using it in production. Usergrid seems to be in the right direction in providing a full fledged solution (which can also work for modern web apps)
I'm very curious about Helios (helios.io) and will be trying it out shortly.
At least from the write-up on their site it looks very promising. Its open source, and in beta currently. They also have very easy heroku hosting support.
Helios is an open-source framework that provides essential backend
services for iOS apps, from data synchronization and push
notifications to in-app purchases and passbook integration.
I will update the answer again once I use this for some test project.
you can use any cms or framework to implement this. you need to make a jsonm api to communicate between app and backend server.
For php cms joomla, drupal and wordpress are best.
in frameworks you can use yii, cakephp, laravel or zend
hope this helps..
Also worth taking a look at Cloud CMS:
http://www.cloudcms.com
It's a cloud content management system for mobile and web applications, entirely oriented around JSON and having a fast, fully featured API. Your iOS application could easily grab things, render them, capture data, store it back into the CMS and more. Plus, it gives you a user interface you can drop in front of your business users so that they can create, edit and review things.
Note: I'm one of the developers. That said, worth checking out if for no other reason than for inspiration.
Depending on the data-complexity, perhaps willing a CMS into being a data-store or simple API is overkill when you can leverage file storage services like Google Drive/Apps to GET/POST spreadsheets or other documents in JSON, among other formats.
Is it possible to use Dropbox, Google Drive, Skydrive, etc. as a server space?