#minecraft meets #discord

Hallo liebe Leserinnen und Leser,

Diesen Abend hab ich damit verbracht dem Minecraft Social Projekt eine neue Anbindung zu verpassen. Ab Heute können Spieler auf dem Minecraft Server mit Leuten im Discord chatten und umgekehrt, beide Text Chats sind synchron mit einander vernetzt.

Ihr könnt das ganze auf dem Minecraft Server von mir ausprobieren
Server: crank.zone
IP: 78.46.48.180
Port: 25565

oder Ihr könnt dem Discord Channel beitreten https://discord.gg/vFp33Rk und seht was auf dem Minecraft Server geschrieben wird und könnt ebenso mit chatten.

Wie das ganze funktioniert?

In Discord gammelt mein Bot der aktuell auf Trello und Bitbucket Aktivitäten wartet. Diese kommen direkt über einen Webhook bei dem Bot an und wird in verschiedene Channel verteilt.  Mittlerweile nutzten sogar schon andere diesen Bot. 🙂

Jetzt kann er auch noch über Webhooks vom Minecraft Plugin zwischen Discord und Server Chat vermitteln.

Macht schon Spaß 🙂

 

Jetzt auch auf Discord: http://discord.gg/E2ar23V

Railo & Amazon EC2 Instanzen

Vor einiger Zeit habe ich mich mit der „on the Fly installation“ von Railo auf einer Amazon EC2 instanze beschäftigt. Dabei habe ich viele Ansätze für ein einfaches Setup gefunden, leider entsprach nichts davon meinen Vorstellungen.

Bei meinen Recherchen bemerkte ich, dass man einfach ein shell Script als UserData übergeben kann… endlose Möglichkeiten tun sich da auf.

Dabei bin ich auch über das railo_ec2 shell Script von @Amaroom gestolpert. Da die Version ein etwas altes Railo Paket installiert habe ich das Script kurzerhand geforkt und aktualisiert. Zu finden ist das ganze auf Github.com

Auch wenn sich das Script von selbst erklärt vielleicht ein paar Kommentare:

Der erste Befehl führt ein upgrade aus, so das die aws Linux Version auf dem neusten Stand gebracht wird.

Anschließend wird tomcat7 und git installiert und tomcat in den „autostart“ gepackt.

Nun wird das aktuelle Railo mit Curl gezogen und in den vorbereiteten Ordner verschoben und mit den Tomcat user und der Tomcat Gruppe versehen.

ab Zeile 43 wird ein wenig die Tomcat catalina config geändert. Hier werden der Pfad zu Railo gesetzt sowie mapping und welcome file definiert.

Zum Abschluss wird noch, zu demozwecken, eine index.cfm angelegt und tomcat gestartet.

Ab hier hat man nun frei Hand. Anstelle der index.cfm kann nun mit git clone ein Repositorie gezogen werden und in den webapps/ROOT ordner gelegt werden.
Ein Beispiel wäre:

git clone https://github.com/TiagoReis-Webdevit/demoCMS.git  /usr/share/tomcat7/webapps/ROOT

chown -R tomcat.tomcat /usr/share/tomcat7/webapps/ROOT/

um das TiagoReis demoCMS zu installieren.

Um sich den Ärger mit nicht gesetzten Passwörtern im Web-Admin zu ersparen kann eine entsprechend vorkonfigurierte railo-web.xml.cfm in den Ordner /usr/share/tomcat7/webapps/ROOT/WEB-INF/railo/ geladen werden.

Alternative und von mir bevorzugt kann auch eine server.xml, in der Serverpasswort und defaul web admin Passwort bereits gesetzt sind, in das Verzeichnis /usr/share/tomcat7/railo4/railo-server/context/ kopiert werden.
Vor dem ersten Aufruf des Railo Admins existiert dieser Ordner nicht und muss entsprechen mit mkdir angelegt werden.

Dort können auch Datenbanken und Mail Server installiert werden. Natürlich bietet sich hier auch die Nutzung der aws Dienste an. Ein awsWrapper ist hier zu finden, der ist etwas verbugt aber anpassbar. Ansonsten schreibe ich grad einen Wrapper der hier zu finden ist.

Und schon können x Passwort gesicherte Railo Instanzen mit einem Git Projekt gestartet werden. Um ein Update der Application auf die Server zu spielen braucht man nur noch alles ins git zu pushen und die neue Instanzen des alten Servers starten, nicht vergessen die alten zu terminieren. Mit einer AutoScalling Group benötigt man nur noch die terminierung der Instanzen.

Tutorial: Erstellung einer Google Map

Erstellung einer Google Map

Einleitung:
Für die Einbindung einer Google Map wird JavaScript, HTML und die Google Map API benötigt.
Da zum 01.03.2013 die Google Map API 2.0 offiziell abgeschaltet wird sollten nun auch die letzten auf die Google Map API 3.0 upgraden.

Für eine einfache Map Einbindung wird nur die Google Map API 3.0 benötigt diese kann direkt über die Goolge Server eingebunden werden.
Der entsprechende JavaScript Aufruf ist:

<script type=“text/javascript“ src=“https://maps.google.com/maps/api/js?sensor=false&amp;language=de“></script&gt;

Der Parameter language steht für die Sprache. In diesem Fall de für Deutsch. Der Parameter Sensor steht für eine aktive Ortungsprüfung. In diesem Fall false da keine Endnutzer Ortung gewünscht ist. Sollte dies der gewünscht werden, diesen Wert auf true setzten oder den Parameter entfernen. Im nächsten Schritt wird ein HTML DIV definiert der die erzeugte Map enthalten wird. Der entsprechende Eintrag im HTML Dokument ist beispielsweise:

<div class=“gmap“ id=“google_map“></div>

Nun benötigen wir die eigentliche erstellung unserer Google Karte. Hierzu schreiben wir uns eine JavaScript Anweisung und definieren die Google Map.

<script type=“text/javascript“>// <![CDATA[
/* zu erst werden die Optionen im JSON Format definiert */
var myOptions = {
zoom: 12, // Zoom Stufe der Karte
mapTypeId: google.maps.MapTypeId.ROADMAP // Ausgabe art der Karte ( Straßenkarte / Satellitenkarte / Terrain Karte / Hybrid )
};

/* anschließend wird das Eigentlich Karten Objekt erstellt*/
var myMap = new google.maps.Map(
document.getElementById(„google_map“), // Die ID des HTML DIV in dem die Karte gezeigt werden soll.
myOptions // die oben definierten Optionen. Diese könneten auch direkt hier übergeben werde.
);

// Die Position für New York wäre die folgende
var latlong = new google.maps.LatLng(40.7143528,-74.0059731);

/* nun muss noch das Zentrum der Karte auf die Position gesetzt werden */
myMap.setCenter(latlong);

// ]]></script>

Nun wird unser Div mit der Karte ersetzt.

Koordinaten können zum Beispiel über die unten genannte Webseite gefunden werden.
http://www.mapcoordinates.net/

Um nun auch noch einen sogenannten Marker auf die Karte zu setzten muss das JavaScript erweitert werden.

/* neuen Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

Mit dieser Erweiterung ist ein Marker im Zentrum der Karte gesetzt. Das JavaScript sieht nun wie folgt aus:

<script type=“text/javascript“>// <![CDATA[
/* zu erst werden die Optionen im JSON Format definiert */
var myOptions = {
zoom: 12, // Zoom Stufe der Karte
mapTypeId: google.maps.MapTypeId.ROADMAP // Ausgabe art der Karte ( Straßenkarte / Satellitenkarte / Terrain Karte / Hybrid )
};

/* anschließend wird das Eigentlich Karten Objekt erstellt*/
var myMap = new google.maps.Map(
document.getElementById(„google_map“), // Die ID des HTML DIV in dem die Karte gezeigt werden soll.
myOptions // die oben definierten Optionen. Diese könneten auch direkt hier übergeben werde.
);

// Die Position für New York wäre die folgende
var latlong = new google.maps.LatLng(40.7143528,-74.0059731);

/* nun muss noch das Zentrum der Karte auf die Position gesetzt werden */
myMap.setCenter(latlong);

/* neuen Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

// ]]></script>

Um mehrere Marker auf die Karte zu setzten werden einfach mehrere neue Marker mit Positionen untereinander geschrieben.

<script type=“text/javascript“>// <![CDATA[
/* zu erst werden die Optionen im JSON Format definiert */
var myOptions = {
zoom: 12, // Zoom Stufe der Karte
mapTypeId: google.maps.MapTypeId.ROADMAP // Ausgabeart der Karte ( Staßenkarte / Sattelitenkarte / Terrain Karte / Hybrid )
};

/* anschließend wird das Eigentlich Karten Objekt erstellt*/
var myMap = new google.maps.Map(
document.getElementById(„google_map“), // Die ID des HTML DIV in dem die Karte gezeigt werden soll.
myOptions // die oben definierten Optionen. Diese könneten auch direkt hier übergeben werde.
);

// Die Position für New York wäre die folgende
var latlong = new google.maps.LatLng(40.7143528,-74.0059731);

/* nun muss noch das Zentrum der Karte auf die Position gesetzt werden */
myMap.setCenter(latlong);

/* neuen Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

// Die Position für den zweiten Marker erstellen
var latlong = new google.maps.LatLng(39.7143528,-75.0059731);

/* Einen weiterern Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

// ]]></script>

Die Karte kann zudem bei mehreren Markern dem Zentrum dieser ausgerichtet werden.
Die erreicht man mit dem Google Map LatLngBouncer.

Anhand des Folgenden Beispiels wird eine Karte mit drei Markern Mittig positioniert.

<script type=“text/javascript“>// <![CDATA[
/* zu erst werden die Optionen im JSON Format definiert */
var myOptions = {
zoom: 12, // Zoom Stufe der Karte
mapTypeId: google.maps.MapTypeId.ROADMAP // Ausgabeart der Karte ( Staßenkarte / Sattelitenkarte / Terrain Karte / Hybrid )
};

/* anschließend wird das Eigentlich Karten Objekt erstellt*/
var myMap = new google.maps.Map(
document.getElementById(„google_map“), // Die ID des HTML DIV in dem die Karte gezeigt werden soll.
myOptions // die oben definierten Optionen. Diese könneten auch direkt hier übergeben werde.
);

/* Ein Bounce Objeket erstellen */
var Bounds = new google.maps.LatLngBounds(); // das Objekt zur verwaltung der Marker Positionen

// Die Position für New York wäre die folgende
var latlong = new google.maps.LatLng(40.7143528,-74.0059731);

/* dem Bounce die Position des ersten Markers übergeben */
Bounds.extend(latlong);

/* neuen Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

// Die Position für den zweiten Marker erstellen
var latlong = new google.maps.LatLng(39.7143528,-75.0059731);

/* dem Bounce die Position des zweiten Markers übergeben */
Bounds.extend(latlong);

/* Einen weiterern Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

// Die Position für den zweiten Marker erstellen
var latlong = new google.maps.LatLng(41.7143528,-73.0059731);

/* dem Bounce die Position des dritten Markers übergeben */
Bounds.extend(latlong);

/* Einen weiterern Marker erstellen */
var Marker = new google.maps.Marker({
position: latlong, // Position des Markers ( hier New York das Zentrum der Karte )
map: myMap // die Karte zuweisen
});

/* nun muss die Karte auf das Richtige Zoom Level gesetzt werden um alle Punkte sehen zu können. */
var zoomLevel = myMap.fitBounds(Bounds);

/* jetzt wird das Zentrum des Bounce Objektes benötigt. */
var mapCenter = Bounce.getCenter();

/* nun muss noch das Zentrum der Karte auf die Position gesetzt werden */
myMap.setCenter(mapCenter, zoomLevel);

// ]]></script>