-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add brief introduction and advanced configuration documentation
- Loading branch information
Showing
5 changed files
with
132 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Progressor - Advanced Executor Configuration Options | ||
|
||
## Command-Line Arguments | ||
|
||
The **Executor** accepts a number of command-line arguments: | ||
|
||
* `-p port` or `-port port` will override the default port (9001). | ||
* `-c [false|no]` or `-cleanup [false|no]` will prevent temporary files (e.g. generated code files, compiled executables or *Docker* containers) from being deleted. | ||
* `-d [true|yes]` or `-docker [true|yes]` has no effect because because cleanup is enabled by default. | ||
* `-d [false|no]` or `-docker [false|no]` will disable *Docker* support on Linux. | ||
* `-d [true|yes]` or `-docker [true|yes]` has no effect because because *Docker* is enabled by default on Linux. | ||
If invoked on Windows, the application will abort because this feature is not yet supported. | ||
* `-t [true|yes]` or `-test [true|yes]` will run a test client instead of the server (request handler). | ||
* `-t [false|no]` or `-test [false|no]` has no effect because server is the standard mode. | ||
* `-h hostname` or `-host hostname` can be used to test an instance different from the local one. | ||
|
||
## Extensibility | ||
|
||
The **Executor** uses a [ServiceLoader](http://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html) to load the different code executors at runtime. | ||
|
||
New languages can be supported by simply implementing the service *ch.bfh.progressor.executor.api.CodeExecutor* and making it discoverable by the **Executor**. | ||
Additional information can be found in the [Java SE API Specification](http://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# Progressor - Executor Dependencies | ||
|
||
This project has five *Maven* dependencies: | ||
|
||
1. [org.apache.thrift:libthrift:0.9.3](http://mvnrepository.com/artifact/org.apache.thrift/libthrift/0.9.3) | ||
for *Apache Thrift* | ||
1. [org.json:json:20151123](http://mvnrepository.com/artifact/org.json/json/20151123) | ||
for *JSON* decoding | ||
1. [org.slf4j:slf4j-simple:1.7.13](http://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.13) | ||
for logging | ||
1. [org.testng:testng:RELEASE](http://mvnrepository.com/artifact/org.testng/testng) | ||
for unit tests | ||
1. [commons-io:commons-io:2.5](http://mvnrepository.com/artifact/commons-io/commons-io/2.5) | ||
for proper *UTF-8* support on streams | ||
|
||
## Docker | ||
|
||
[*Docker*](https://www.docker.com/) support is activated by default on Linux distributions. On any other platform, *Docker* is not yet supported. | ||
The created *Docker* image is tagged `progressor/executor`. | ||
If you decide not to use *Docker*, use the following `-docker false`. | ||
|
||
Be aware that not using *Docker* requires you to install all the compilers of the languages you want to support on your server. | ||
If you use *Docker* you need to install the compilers in your *Docker* image. To do that, you need to adjust the *Dockerfile* and rebuild your image. | ||
|
||
## Programming Languages | ||
|
||
The **Executor** currently supports five programming languages. | ||
|
||
To use the languages, the following compilers (and other tools) need to be installed and available in the **PATH**. | ||
|
||
1. *Java*: `javac` and `java` | ||
1. *C/C++*: `g++` | ||
1. *C#*: `csc` (Windows) or `msc` and `mono` (Linux) | ||
1. *Python*: `python` (Windows) | ||
1. *JavaScript* ([Node.js](https://nodejs.org/)): `node` | ||
1. *PHP*: `php` | ||
1. *Kotlin*: `kotlinc` and `kotlin` (these scripts are actually simulated until a security issue can be solved with *Java 9*) | ||
1. *VB.NET*: `vbc` (Windows) or `vbnc` and `mono` (Linux) | ||
|
||
As already mentioned, if you are using *Docker* these compilers need to be installed inside the *Docker* image via the *Dockerfile*. | ||
Java is the only exception, since it is needed inside the *Docker* image as well as on the server to run the **Executor**. | ||
|
||
### Java | ||
|
||
Support for *Java 8* is required. | ||
|
||
The *Java Developer Toolkit* (JDK) can be downloaded from the [official *Oracle* downloads page](http://www.oracle.com/technetwork/java/javase/downloads/). | ||
|
||
### C/C++ | ||
|
||
This projects targets the [*GNU Compiler Collection* (GCC)](https://gcc.gnu.org/). | ||
Support for *C++11* is required. | ||
|
||
* For Linux, install *g++* using `apt-get install g++` | ||
* For Windows, the following packages are available: | ||
* [*MinGW*](http://www.mingw.org/), which can be downloaded from [*sourceforge*](https://sourceforge.net/projects/mingw/files/). | ||
* A [x64 version](http://mingw-w64.org/) is available on a [dedicated site](http://mingw-w64.org/doku.php/download/win-builds). | ||
* [*Cygwin*](http://sourceware.org/cygwin/), which can be downloaded from their home page. | ||
|
||
### C# # | ||
|
||
* On Windows, the C# compiler is already included in most recent Windows operating systems. Make sure that the *PATH* environment variable is set to `C:\WINDOWS\Microsoft.NET\Framework\v[your version number]\csc.exe.` | ||
* If this directory does not exist, you can download the [*.NET Core*](https://www.microsoft.com/net/download). | ||
* On Linux, [*Mono*](http://www.mono-project.com/) can be downloaded on their [download page](http://www.mono-project.com/download/). | ||
|
||
### Python | ||
|
||
* On Linux, Python 3 install using *apt-get install python3* | ||
* On Windows, download [*Python 3*](https://www.python.org/downloads/release/python-351/) and install it. | ||
|
||
### JavaScript | ||
|
||
Install [Node.js](https://nodejs.org/) version *6.x.x* as any version below will not fully comply with *ES6*. | ||
|
||
### PHP | ||
|
||
Install [PHP](http://php.net/downloads.php) ([Windows](http://windows.php.net/download#php-7.0)) version 7.x.x. | ||
|
||
### Kotlin | ||
|
||
For [*Kotlin*](http://kotlinlang.org/), a [stand-alone compiler](http://kotlinlang.org/docs/tutorials/command-line.html) can be downloaded from [*GitHub*](https://github.com/JetBrains/kotlin/releases/latest). | ||
|
||
### VB.NET | ||
|
||
* On Windows, the VB.NET compiler is already included in most recent Windows operating systems. Make sure that the *PATH* environment variable is set to `C:\WINDOWS\Microsoft.NET\Framework\v[your version number]\vbc.exe.` | ||
* If this directory does not exist, you can download the [*.NET Core*](https://www.microsoft.com/net/download). | ||
* On Linux, [*Mono*](http://www.mono-project.com/) can be downloaded on their [download page](http://www.mono-project.com/download/). |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.