How does Dropbox work? [closed] - dropbox

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
How does Dropbox work? Is it just an FTP client with an easy-to-use web interface and support for many plarforms?
What makes it so useful to programmers, even for those who are working on web-based applications and who have FTP access to a server by default?
Does Dropbox come with an improved algorithm to facilitate file transfer for a better speed? What is the difference between an FTP client and Dropbox from a programmer's point of view?

FTP is just a way of copying files. And copying is not the same as synchronizing, which I believe is Dropbox's biggest strength.
Dropbox is a multiway synchronization system. This means if you are using your Dropbox account on many machines and editing different files on each machine, they will all be synchronised appropriately. With FTP you would have to delicately pick and choose which files need to be removed or added from each client to the server.
Another main difference is that synchronisation happens automatically whenever a file changes, which FTP does not do.
In terms of algorithms, I would guess that Dropbox uses file deltas for file transfer, which makes it much more efficient than FTP. This means only the parts of the file that changed are transferred instead of transferring the entire file every time it changes (see rsync).
I believe you are only asking about Dropbox's core functionality. Beyond that, Dropbox has lots of cool features that FTP does not like some revision control, photo gallery sharing, etc.

Dropbox files are not accessible by FTP. The API uses a REST-style architecture over the HTTP protocol. See Build the power of Dropbox into your app.

Related

Configuring environment variables for static web site on AWS S3 [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 3 years ago.
Improve this question
I am trying to setup a simple static Angular website on S3 per the info:
http://docs.aws.amazon.com/gettingstarted/latest/swh/website-hosting-intro.html
I want to send email via a form that needs to send sendgrid api keys. Obviously, I want to use environment variables for this to avoid having keys in code. How do you setup environment variables in S3?
I looked into aws-cli tool but it only shows examples of what appear to be AWS specific enviroment variables. Is there somewhere in AWS/S3 console were these can be set?
BTW- I would like to use this Angular service which demonstrates the sendgrid service:
https://github.com/onaclovtech/sendgrid/blob/master/sendgrid.js
You can't set environment variables in S3. S3 is just a static object store, not a dynamic content server. To evaluate variable values would be the very definition of dynamic content, and S3 only serves static content.
Note that AngularJS code runs in the browser, not on a server, so those keys you want to keep out of your code are going to be viewable in the browser by anyone that knows how to look. There's no way for you to hide those values if you want to call SendGrid from a client-side framework.
Most of the reputed email marketing companies won't even allow calling their services from a front-end where the keys could be exposed such as MailChimp. You can read the below:
Note: MailChimp does not support the client-side implementation of our API using CORS requests due to the potential security risk of exposing account API keys.
Now, it may happen that many a time, you would want to still use environment variables to separate environments and such (non-sensitive information). In such scenarios, you should use the environment variables on your machine and generate builds with the help of webpack or some other build tool.

Offline Amazon S3 [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
So I would like to try using Heroku to be my server, however heroku does not allow writing to its file system. Instead I need to use the database and something like Amazon S3 for storage of things like uploaded images.
The problem is that I often don't have internet access when developing. Or very poor internet access. So developing for Amazon S3 is kind of impractical. Is there an offline version to use so that my local machine can act as the S3 cloud, and when in testing/production environments I can use the real S3?
Old question but wanted to post this, there is a "Fake S3" tool that appears to be designed to do exactly this. Just about to give it a whirl.
https://github.com/jubos/fake-s3
My recommendation is to try s3fs with rsync. Here's how it would work:
Mount your s3 drive to /mnt/sdaX/ on your production machine and /mnt/sdaY/ on your local machine.
Create a file system at /mnt/sdaX/ on your local machine.
Make the changes on your local machine as needed. When appropriate, rync /mnt/sdaX/ to /mnt/sdaY/ on your local box.
I realize that this is complicated, but I'm not sure that there's really any other way to do it while maintaining the same configuration in both places. Normally I'd say you should just write to the s3fs drive locally with local caching enabled, but I'm not sure what happens when you return online (I'm pretty sure it doesn't sync, but I've gone ahead and asked s3fs developers).
Best,
Zach
Developer, LongTail Video
Have a look at:
Eucalyptus Walrus
Park Place
It might be some work to get them running, however. I finally wanted to write my own clone using node.js, but it has moved far away from the original S3 API, so it won't really help you anymore.

web tracking tool [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
can any one sugest me which is the best but free web tracking tool ?
I want to know the statics, traffics, hits and area of hits etc...
Google Analytics is an obvious suggestion. However, if you prefer to host your own solution (because you don't want to send private data to Google for example), then have a look at Open Web Analytics, a very impressive alternative (see the features list).
Open Web Analytics (OWA) is an open source web analytics framework written in PHP. OWA was born out of the need for an open source framework that could be used to easily add web analytics features to web sites and applications. The OWA framework also comes with built-in support for popular web applications such as Wordpress and MediaWiki. As a generic web analytics framework, OWA can be extended to track and analyze any web application.
(source: openwebanalytics.com)
Another very decent alternative is Piwik:
Piwik is a downloadable, open source
(GPL licensed) web analytics software
program. It provides you with detailed
real time reports on your website
visitors: the search engines and
keywords they used, the language they
speak, your popular pages… and so much
more.
Piwik aims to be an open source
alternative to Google Analytics.
Piwik is a PHP MySQL software program
that you download and install on your
own webserver. At the end of the five
minute installation process you will
be given a JavaScript tag. Simply copy
and paste this tag on websites you
wish to track (or use an existing
plugin to do it automatically for
you).
(source: piwik.org)
Personally, I prefer OWA over Piwik and don't have anything negative to say about it.
Google Analytics has got all the features you specify.
You need a Google account but you don't have to sign up for their advertising programme. If you are already enrolled, Analytics is hooked into other Google products so you can get reports on Ad Sense hits, etc.

Is there any way of delivering server-based Help without a Web server? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
We want to provide Help for a client/server system. In the current version of the system this is done client side with traditional HTML Help (i.e. lots of .chm files sitting on each client machine). For a variety of reasons (e.g. to allow quick/easy updates to the Help) we want to move the Help content (i.e. the actual topic files) onto a server.
The client-side desktop app that the Help relates to already connects to a server, so it seems like we should be able to have a client-side help viewer doing a similar thing - i.e. pulling it's topic files off a server.
However, we don't want to reinvent the wheel and code something if there's already something out there that does this.
The obvious solution would be to use WebHelp, but there's some resistance to requiring our customers to run a Web server. And hosting ourselves, or via a 3rd party, is not an option.
So does anyone know of a way of providing Help where the content resides on the server?
What sort of server are you running? Is there any reason you couldn't host a web server within your server product, potentially on a "normally unused" port? You don't need to ask the customer to install and manage a web server if you bundle it yourself.
What platform is this on, btw?
EDIT: As suggested by David in the comments, there's a related question about a embedding lightweight web server.
You should be able to do this without too much trouble.
I built a CHM-to-Web converter that slurps in a CHM and spits out a web site.
This is an example website produced from the converter tool.
The CHM creation takes a loooooong time, through Sandcastle Helpfile Builder, but the transformation from CHM to web happens in about 6 seconds. It is totally automated.
You could take this magic and tweak it to fit your rich client app. The client could query the server for an index or topic list, and then retrieve the help content as desired by the user, from the server, on demand.
Maybe I've got the wrong end of the stick, but if this all resides on an intranet then maybe you can use a mapped network drive which is shared between all your client machines, e.g. H:/ (you could make it part of their login script). You can then use a file link to get to the HTML pages, e.g. file:///H:/help_folder/index.html
If the rest of your app is delivered across the web, then you'll have to use a web server. There is very cheap and easy web hosting available.

Looking for a wiki-style, standalone, version-control-"safe" documentation package [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
My team and I have found that documenting our project (a development platform w/ API) with a wiki is both useful to us and useful to the users. Due to some organizational issues, we're forced to do multi-site development without network connectivity. We've switched to a DVCS (Mercurial) and had great success with this. The wiki documentation proves to be a problem as the central site is setup with MediaWiki. The offsite people have no way to access or edit the wiki.
Is there any sort of wiki-style package which doesn't not require a server/database and will be useable in a DVCS environment?
Update: Should be open-source and cross-platform
I can recommend TiddlyWiki. It does not need any web servers, only a browser, stores the entire Wiki documentation in a single HTML page. This can easily be shared through Mercurial.
Edit: Check this page, it discusses how to use TiddlyWiki with DVCS. It involves using an extension dubbed SynchroTiddly.
DokuWiki stores all data in plain text files. You could install local web servers for every developer and use your VC system to sync between developers.
ikiwiki: http://ikiwiki.info/ stores the info directly in the VCS (it supports mercurial as backend).
http://zim-wiki.org/
It's a desktop wiki (WYSIWYG editing, though not very sophisticated formatting) which stores everything in plain-text files. That means you can hold the files in version control, and have a friendly editing experience.
It even has builtin Bazaar support UPDATE: also Git, Mercurial, and Fossil.
[I know, late to the party - writing for benefit of others reading this question...]
Perhaps you should look at auto-generation of documentation from source. This way, the documentation will automatically be version controlled.
A lot of generators support adding additional documentation via plain-text files which can be added to the repository.
Look into Fossil it is a DVCS that contains a built in wiki and bug tracking system. This may be just what your looking for. Read the site, there is a built in webserver. You can use a CGI script to open up the connection to people (the fossil website is the fossil DVCS). After using it you may decide to move your code over to it as well. It is open source, and does have cross platform builds.
Ended up writing my own system using python,cherrpy, and mercurial. Perhaps one day it will end up open-source. Thanks for all the suggestions.
http://hatta-wiki.org/ is a wiki running on a Mercurial repository.
It's interesting to note how it handles conflicts: simultaneous edits are silently merged on commit, even if conflicting and committed with the conflict markers! That's OK because:
it's text, not software
you see the result of your edit immediately after commiting
it treats conflict markers as valid wiki syntax (resulting in diff -u like highlighting of the conflict)!
This arrangement motivates you to edit again to resolve the conflict immediately - but doesn't force you to.
Github's gollum is open-source, git based, eats many popular syntaxes.
But the most important selling point of course is that it's built into github.
Bitbucket similarly has a mercurial based wiki. Not sure if the code is open source though (i.e. you can edit the text offline, but not sure that you can see it rendered).
MoinMoin supports storing your pages in a Mercurial repository: http://moinmo.in/Storage2009/HelpOnStorageConfiguration#Mercurial_Backend_.28hg.29
This is quite interesting because MoinMoin has been around for a while, is rather well supported, and a rich set of features (but that's just my opinion; don't take my word for it and see for yourself ;-)).