I was looking to find a solution to our product. We have a geo-location, on a web based dashboard that does not have internet connection.
I was looking for a product that allows you to have local maps and a script, I found OpenLayers which seems cool although weights 22gb.
Do you know if there are other solutions to generate map locally that takes less space?
If I assume correctly, you are basically looking for an alternative to Google Maps, i.e. an alternative mapping service where you can use your own local data, right?
Now, based on your question, its hard to tell whether you
Want to develop something for yourself or buy/adopt an already implemented software
Are looking for the serverside (i.e. tiling/caching engine, geospatial database, etc) or for the clientside or for both
I could give you an example of a possible configuration if you want to develop a clientside application yourself, but that might not be what you are exactly looking for.
For the serverside, you could use MapServer, backed by a PostGIS spatial database (PostGIS is an enhancement of PostgreSQL), and then use a client side Javascript framework BASED on OpenLayers to develop your client application (i.e., the map viewer), such as Fusion, which is also based on the MooTools Javascript Library. You could also natively develop with OpenLayers. There are a lot of possibilities in the Open Source world, it just depends on the skill and time you have.
Also, have a look at OSGEO, in the right sidebar you'll find a lot of projects that are hosted by them. It definetely is your first address for Open Source web mapping solutions.
Related
I've got a process tracking system built with PHP/MySQL and I'd like to provide a graphical representation of the entire process -- a map, more or less. Each step, tasks, assigned users, and dependencies are stored in MySQL tables and so I have no problem outputting the data in any number of ways, but I'm not sure how I could go about displaying that in a graphical manner. Processes can be edited by privileged users so I can't just create a process map once and save it -- it needs to be dynamic.
I thought about simply outputting tables or divs but my problem is how to make it responsive to mobile browsers, so I figure a JPG/PNG would be simpler and more platform-independent. I've seen plenty of LAMP based charting tools but nothing that will create workflows. The closest I found was yUML (http://yuml.me/) which looks like it would be easy to implement based on a quick review of the syntax, but I'm not running Rails and don't know anything about how to do so.
I also looked into screenshot services (Grabzit, Thumbshots, Websnapr, etc.) but the problem there is that this is a secure site so those services wouldn't be able to gain access.
I'm not looking for anything flashy which is why I thought UML might be a good fit -- I just need to be able to dynamically create process maps based on MySQL data.
Thanks to anyone who can point me in the right direction!
I don't know of a flow chart API, but there are any number of general purpose chart API's.
Google charts has examples for org chart (among many other chart types).
There are many threads on this kind of thing on SO already:
JavaScript Chart Library
Graph visualization library in JavaScript
etc
I bet one of the best solutions is D3.js.
D3.js is a JavaScript library for producing dynamic, interactive data
visualizations in web browsers. It makes use of Scalable Vector
Graphics, HTML5, and Cascading Style Sheets standards.
—Wikipedia
You can find many examples here to fit what you are looking for, especially its very well documented API reference. Also has an incredible wiki (in many languages), greatest tutorials and some plugins.
I want to try creating a canvas were multiple users can type and edit for brainstorming etc. I am thinking of php as backend. What are the technique used for it? For example, lets say its
pure text. How do we update the text like in the google wave(b4) and in google doc?
Is it just using websocket(or js pooling) and updating the text file? or are there any
better logical way to solve this issue?
Well, its not as easy as it is said in Brad's answer but he is partially right. You will definitely need WebSockets today to make it happen. But logically, it is not that simple to create a collaborative environment. There are issues like broadcasting changes of every user to every other user viewing the same document. Then you will have to make sure that every user gets to see exactly the same thing no matter who changes what and when. This gets difficult when multiple users are working on the same document collaboratively. There can be conflicts while merging changes of one another.
As far as PHP is concerned, language is not really a problem. Its how you handle the above stated problem.
Google released its research and engineering details on Google Wave (I guess after abandoning the project). This link might be some help to you: http://www.waveprotocol.org/whitepapers/
Websockets are the way to go for this. However, they are difficult to implement in PHP, and not supported by many browsers as of yet. You can do long-polling of AJAX requests pretty easily with PHP, but it can be quite a waste of resources.
This might not be what you are looking for, but I'd suggest changing your server-side technology. You can use Node.js with Socket.IO to easily use Websockets (or seemlessly emulate them for browsers that don't support them). This will provide the fastest method for pushing data to your users.
I've built a fairly complex web app (html, javascript, jQuery, php, mySQL) and use several mechanisms for navigating through the site (e.g. anchor/links, submit buttons, window.location, window.open). I'm looking for two things:
What are all the mechanisms possible for moving around a site or a source that will allow me to find such a list
What, if any, documentation standards are there for documenting such actions; something like the flow charts used to document procedural code.
I'm not sure either by what you mean in "thing 1". The best tool to map all the paths is the UML Sequence Diagram.
Services such as Omniture and Google Analytics let you visualize such paths of user navigation. You could explore that option. Basically they work by tracking a page's URL and its referrer URL (accessible via document.referrer) and then making the connection.
If I understand your comment on dj_segfault properly, I'm not even sure you understand the concept of server/client interaction.
I don't think there is an answer to this because the technology is changing all the time and it is different depending on what devices you are using.
You only have to look at Node.js (if you understand the technology) to see that the lines between server and client can be blurred, and that it's just not a simple answer.
The bottom line is in fact there are no navigation "things" unless you program them, and how you program them is your choice depending on requirement.
For example a vanilla link
Google
Can either be static HTML content or echo'ed from a php script which was used to select the data from a database to get the URL and print it. But it doesn't have to be either of these.
If you wanted to navigate to google you could use a button with an onClick javascript or an event listener with data collected by AJAX. It could be derived from other content values on-the-fly or be a string. I could probably imagine 20 different possibilities but that doesn't make them all suitable for the application.
Just keep incrementally improving your project, use this forum to answer specific questions and you'll learn a lot. I did.
if one wants to make a website that acts like a desktop software, isnt it better to just use one page and use ajax to retrieve all other php-files and update the content of current page with eg. jquery?
i mean, just ONE page, you get the idea of my question i think...
is this to recommend? what is the pros and cons?
i mean, its really smooth!
That's how Meebo, Gmail, etc. do it, so there are clearly legitimate use cases. Do note that they have versions that work without JavaScript, to avoid losing audience...
It can work well to an extent, butONE page is 1 (or several) steps to far, it depends on the application.The main drawbacks are page history (forward/back) and bookmarking, both can be sidetracked.
It depends on your application. If accessibility or SEO are considerations at all, you should rely on AJAX only for enhancing the user experience in capable browsers.
First of all you should not create web apps that act just like desktop software (use Flash or Silverlight if you really need to) but design you application in a way that is suitable for the web.
However when creating web applications using AJAX is a good practice as it makes better user experience. It can also simplify the development as you can clearly separate the user interface from the functionality. You can use something like this http://yensdesign.com/2008/11/creating-ajax-websites-based-on-anchor-navigation/ to overcome forward/backward and bookmarking issues. The one big CON is that users without JS (many mobile browsers, but not only) won't be able to use your application.
#fayer, sure, you can create such a "single-page application". IMHO there's nothing wrong in using standard web technologies to create browser-based apps that look and feel like native desktop apps. The browser merely becomes a runtime in this case, you may additionally also consider using browser-based runtimes like Adobe AIR or Titanium.
Starting from scratch or only with a low-level library like jQuery it is not trivial (if not impossible) to develop, deploy and maintain larger desktop-like web applications, but with a proper framework it can be straightforward and fun: have a look at qooxdoo, http://qooxdoo.org , a mature open source JS framework which addresses all those RIA requirements. To get the idea of a large-scale qooxdoo app, check out the free webmailer http://gmx.com (think of "Outlook in a browser").
So, I've been tossing this idea around in my head for a while now. At its core, it's mostly a project for me to learn programming. The idea is that, I have a large set of data, my music collection. There are quite a few datasets that my music has. Format, artist, title, album, genre, length, year of release, filename, directory, just to name a few. Ideally, I'd like to create a database that has all of this data stored in it, and in the future, create a web interface on top of it that I can manage my music collection with. So, my questions are as follows:
Does this sound like a good project to begin building databases from scratch with?
What language would you recommend I start with? I know tidbits of PHP, but I would imagine it would be awful to index data in a filesystem with. Python was the other language I was thinking of, considering it's the language most people consider as a beginner language.
If you were going to implement this kind of system (the web interface) in your home (if you had PCs connected to a couple of stereos in your home and this was the software connected), what kind of features would you want to see?
My idea for building up the indexing script would be as follows:
Get it to populate the database with only the filenames
From the extension of the filename, determine format
Get file size
Using the filenames in the database as a reference, pull ID3 or other applicable metadata (artist, track name, album, etc)
Check if all files still exist on disk, and if not, flag the file as unavailable
Another script would go in later and check if the files are back, if they are not, the will remove the row from the database.
I think this is a fine project to learn programming with. By using your own "product" you can really get after things that are missing and are much more motivated to learn and better your program - this is known as dogfooding. Curiously enough, the book Dive Into Python, although a little old, covers in some detail how to extract the ID3 information of music files using Python. Since that's the book most often recommended for beginners, I bet that'd be as good a place to start as any.
Working on something you care about is the best way to learn programming, so I think this is a great idea.
I also recommend Python as a place to start. Have fun!
If you use Python, you could build it with the Google App Engine. It gives you a very nice database interface, and the tutorial will take you from 'Hello world!' to a functioning web app.
You don't even need to upload the result to Google; you can just run it in the dev environment and it will be accessible within your home network.
I think python would be excellent choice as
easy to learn but have advanced features too
good web frameworks available e.g. django which you can run on your machine
Word class Free python hosting available i.e. google app engine
Libraries available for almost anything imaginable e.g. for reading your mp3 tags you can use http://id3-py.sourceforge.net/
for searching you can use pylucene http://lucene.apache.org/pylucene/
the best search engine available.