KML and OpenLayers - openlayers-3

This is an example for OpenLayers 3: http://openlayers.org/en/v3.15.1/examples/kml-earthquakes.html
I copy the code and paste in my project of Visual Studio 2012, but it doesn't work.
After I download the examples directly from this page: http://openlayers.org/download/
I open any of the HTML examples but it doesn't work. Why would it work online and not locally from my PC. Do I need to import any additional library?

If you had opened your browser's JS console you'd see something like this:
ol.js:278 XMLHttpRequest cannot load file:///Users/(...snip...)/v3.15.1/examples/data/kml/2012_Earthquakes_Mag5.kml. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
The explanation can be easily found on Stack Overflow, the simplest solution would be to run a local web server that would expose your local the examples folder over HTTP. Arguably the easiest solution is to use python's in-built HTTP server. From inside of your OpenLayers/v3.15.1/ folder execute:
python -m SimpleHTTPServer 8000
or, if you're using Python 3:
python -m http.server 8000
Then, once you navigate to http://localhost:8000/examples/kml-earthquakes.html you'll see the example correctly loading exactly like the version deployed on openlayers.org.

Related

How to serve a Bolero (F#) web app to the internet?

I'm new to using web servers, and I'm trying to learn the Bolero (F#) web framework. As a learning exercise, I'm trying to put the example app "into production", i.e. serve it to the internet and not just localhost.
I would like to use a basic (linux) web server to serve the website (specifically DigitalOcean)..i.e. not a specialized dotnet/microsoft/azure etc platform.
I don't believe that launching an app is covered in the documentation on the Bolero website (aside from a development setup using localhost).
I created the app with:
dotnet new bolero-app -o HelloWorld
Then after some web-searching I did:
cd HelloWorld
dotnet publish -c Release
Then if I do:
cd ./src/HelloWorld.Server/bin/Release/net6.0/publish
./HelloWorld.Server
I get the message:
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.
I'm not sure if those steps are the way I should be going about this...I would like to be serving on port 80, but I've not been able to change that or find where this is set in the example project. I grepped the project for "5000" but couldn't find where that setting is. I tried setting an environment variable with: "sudo export ASPNETCORE_URLS=http://localhost:80/". That hasn't changed where the app tries to serve the site. (Presumably I should be trying to write the server's ip address there instead of localhost?)
Any help is appreciated! Thanks!
EDIT: I've been able to serve the app to the internet!
From the main app directory (HelloWorld) I did:
cd /src/HelloWorld.Server
sudo dotnet run --urls "http://xxx.xxx.xxx.xxx:80/
...where the x's were replaced with my server's IP address.
)

Visual Studio 2017 - Giving remote users access to website in IIS Express

Been looking through and trying all guides i found on this topic but no luck. I am running and MVC project with HTTPS and want to access the debug site with some remote mobile devices to test out the website. I followed a guide that almost work and i think I am pretty close to getting it to work. Here are the steps I have done:
Turn off Firewall
Open projectfolder of website go to \vs\config\ and open applicationhost.config
Find your site and line that contains your mapped port like this:
-edit it to get this result:
Tried to run Visual Studio as Admin at this point, Got regular error 400: Bad Request - Invalid Hostname when trying to access site from other computer
Opened CMD as Admin and ran the following command:
netsh http add urlacl url=http://*:44363/ user=everyone
- URL reservation successfully added
-Tried to start Visual studio as admin and non admin. Gets the following error message
"Unable to launch the IIS Express Web Server.
Failed to reister URL "https://localhost:44363" for site "x" Application. Error description: Cannot create file when that file already exists"
-I then have to run cmd again and remove the url with the command:
netsh http delete urlacl url=http://*:44363/
How do i get this to work with Visual Studio 2017 ? I cant be many steps from getting it to work. I have read many guides but none of them works
Amazing how such a simple common need can be so painful to fulfill out of the box in 2017!
Anyway https://github.com/icflorescu/iisexpress-proxy worked nicely for me.
Install it with node:
npm install -g iisexpress-proxy
Then its just something like:
iisexpress-proxy 51123 to 3000
Under 2 mins to get running.
Let me share my experience with Visual Studio and IIS Express that should help you. I am not using HTTPS and my project type is Web site with WCF but you should be able to accomplish your goal.
Here are prerequisites:
IIS Express installed
Visual Studio installed
Added url reservation for public port (netsh http add url=http://*:50001/ User=Everyone) from elevated command prompt.
Added firewall inbound rule for 50001 TCP port (Control Panel-->Windows Firewall-->Advances Settings-->Inbound Rules-->New Rule...)
Now let us setup a project in VS. I am using one of predefined templates with C#. Compile it and try to run it from VS. At that moment VS is starting developer instance of IISExpress that helps your site to run.
You should be able to see IIS Express icon in Notification area. With right click you will see that your site is running and a port (we will call it VSPORT) that is assigned by VS. This port must be different than reserved port (50001).
If you managed to accomplish this without problems then you have almost everything ready for running your site without VS.
Go to your project folder
Go to .vs folder
Go to config folder
Open applicationhost.config
Locate sites/your_site section
Copy everything between your_site and /your_site
Now we need to add this info in "global" IIS Express config.
Go to IIS Express folder (something like c:\Users\USERNAME\Documents\IISExpress)
Go to config folder
Open applicationhost.config
Locate sites section.
Paste information about your site.
Change binding from
binding protocol="http" bindingInformation="*:VSPORT:localhost"
to
binding protocol="http" bindingInformation=":50001:"
Save changes
With this change you may start IISExpress.exe directly and you can continue to use VS to work on you project at the same time.
If you want to access it from other computers do it as http://YOURIP:50001/.
Do have in mind that you need to ensure that your javascript code is NOT using address and port number directly.
You can solve the problem by downloading the 'conveyor' library from extensions and update in Visual Studio.
You can access it from other devices.
Open Visual Studio
Tools > Extensions and Updates
Online > Visual Studio Marketplace
Search 'Conveyor'
Download and install this extension
When you launch the API, you can access it from other devices. This plugin creates a link from your own ip address.
Example:
https://youripadress:5000/api/values

How to start dart web app on server on default port

I just install dart on my server Ubuntu 12.04. I started on mydomain.com:8080/ and "hello word" displayed. But for real web app I need to run on address mydomain.com (without :8080). When I try to set port 80 on dart script it failed because apache already run on port 80. Here is my current dart script: https://www.dartlang.org/dart-by-example/#http-server So how can I do it?
If you want your Dart app to bind to port 80 you have to stop Apache or bind Apache to another port.
Another solution is to make Dart run by Apache http://news.dartlang.org/2012/05/run-dart-in-apache-web-server.html (didn't read or try myself)
You could use Apache as a proxy (via mod_proxy) to your Dart based webserver. It allows you to have both the power of Apache and Dart on the same device. I haven't used this approach in combination with Dart yet, but I use it with Java applications on Tomcat. Here is a simple Tomcat related example (scroll down to "Configure mod_proxy"). It should be easy to apply that to a Dart based server.
But that might not work with Websockets. The good thing about Websockets is that they aren't limited by the same origin policy, so you can run your Websocket applications on another port.

Python Flask server add another port to domain

Initial Condition:
I have a Python Flask server running on a remote machine that I am accessing via Linux(OpenSuse) command line. The server works perfect. It renders the html for xyz.com:5000.
Problem:
I am a new user added. I want the server to read my .py files.
What do I do? Do I need a new port number?
Or will it be xyz.myusername.com:5000?
What configurations do I have to change?
Does the superuser need to intervene?
Thanks!
Flask's built-in server is not intended for production use - or at least, the documentation refers to it as a "local development server".
For production, something like Tornado, gunicorn, or even Apache is what you'll need to be using.
See also: Flask documentation covering the Flask.run() method.
That said - it's just a Python program. There's no reason you couldn't run your own on a different port via app.run(port=5001).
Can you be a bit more specific about your issue? What do you mean by 'you are a new user added' - what user, where added? What do you mean by 'the server to read your .py files' - server as the remote machine you're referring to, or server as Flask http dev server, or something else? Without precise description of your environment (OS type for example), what you want to achieve (instead asking should you do X or Y) and what problem you're ecountering (not knowing how your software, like Flask works is not actual problem) we wont be able to help you.

How to use Tika in server mode

On Tika's website it says (concerning tika-app-1.2.jar) it can be used in server mode. Does anyone know how to send documents and receive parsed text from this server once it is running?
Tika supports two "server" modes. The simpler and original is the --server flag of Tika-App. The more functional, but also more recent is the JAX-RS JSR-311 server component, which is an additional jar.
The Tika-App Network Server is very simple to use. Simply start Tika-App with the --server flag, and a --port ### flag telling it what port to listen on. Then, connect to that port and send it a single file. You'll get back the html version. NetCat works well for this, something like java -jar tika-app.jar --server --port 12345 followed by nc 127.0.0.1 12345 < MyFileToExtract will get you back the html
The JAX-RS JSR-311 server component supports a few different urls, for things like metadata, plain text etc. You start the server with java -jar tika-server.jar, then do HTTP put calls to the appropriate url with your input document and you'll get the resource back. There are loads of details and examples (including using curl for testing) on the wiki page
The Tika App Network Server is fairly simple, only supports one mode (extract to HTML), and is generally used for testing / demos / prototyping / etc. The Tika JAXRS Server is a fully RESTful service which talks HTTP, and exposes a wide range of Tika's modes. It's the generally recommended way these days to interface with Tika over the network, and/or from non-Java stacks.
Just adding to #Gagravarr's great answer.
When talking about Tika in server mode, it is important to differentiate between two versions which can otherwise cause confusion:
tika-app.jar has the --server --port 9998 options to start a simple server
tika-server.jar is a separate component using JAX-RS
The first option only provides text extraction and returns the content as HTML. Most likely, what you really want is the second option, which is a RESTful service exposing many more of Tika's features.
You can simply download the tika-server.jar from the Tika project site. Start the server using
java -jar tika-server-x.x.jar -h 0.0.0.0
The -h 0.0.0.0 (host) option makes the server listen for any incoming requests, otherwise without it it would only listen for requests from localhost. You can also add the -p option to change the port, otherwise it defaults to 9998.
Then, once the server has started you can simply access it using your browser. It will list all available endpoints.
Finally to extract meta data from a file you can use cURL like this:
curl -T testWORD.doc http://example.com:9998/meta
Returns the meta data as key/value pairs one per line. You can also have Tika return the results as JSON by adding the proper accept header:
curl -H "Accept: application/json" -T testWORD.doc http://example.com:9998/meta
[Update 2015-01-19] Previously the comment said that tika-server.jar is not available as download. Fixed that since it actually does exist as a binary download.
To enhance Gagravarr perfect answer:
If your document is got from a WEB server => curl -u
"http://myserver-domain/*path-to-doc*/doc-name.extension" | nc
127.0.0.1 12345
And it is even better if the document is protected by password => curl -u
login:*password*
"http://myserver-domain/*path-to-doc*/doc-name.extension" | nc
127.0.0.1 12345

Resources