Einfaches C++ Socket

English version below

Ein weiteres C++ Template für Linux ist fertig: TcpSocket und TcpServerSocket. [Download]

Beides sind sehr einfache Implementierungen für Character-Stream Sockets unter Linux. Sie implementieren istream und ostream, daher kann ähnlich wie auf den Standart-input und Standart-output operiert werden.

Netter Screenshot
Netter Screenshot

Das Archiv inklusive kleinen Beispielprogram (ECHO-Server und Client) steht unter MIT-Lizenz im Repository. Direktlink für den Download hier.

English

I've create a new, very usefull C++ Template: Implementation of a simple and easy-to-use Tcp socket for character streams (Linux only currently). [Download]

What make it so beautiful is the simplicity: It comes basically without dependencies, is C++11 compliant (and you should use the C++11 Standart!) and implements the istream and ostream basic classes.
Reading and writing data from and to your socket becomes as easy as reading to stdin and stdout.
But see this simple example snippet:

The download of the socket package (including a small example program) is in the repository. Or you use the directlink here.

Keywords: C++, Cpp, Linux, TCP, Socket, Server, Client, istream, ostream, Easy TCP, Simple TCP

osmpng

English version below

Für mein SEGeo-Projekt habe ich gerade an einem neuen Tool gebastelt: osmpng

osmpng erstellt große PNG-Karten basierend auf den Kartenmaterial von OpenStreetMap (OSM).
Im Grunde lädt es kleine Kartenausschnitte von OSM-Servern herunter und erstellt aus diesen Teilausschnitten ("tiles") dann eine große Karte.

osmpng lädt einen Kartenausschnitt herunter
osmpng lädt einen Kartenausschnitt herunter

Getestet habe ich das Tool mit einem recht großen Kartenausschnitt von Innsbruck. Resultat ist eine tadellose PNG-Datei von etwa 50MB. Straßennamen und Häusernummer sind klar ersichtlich, lediglich das Laden der Datei ist etwas mühsam 🙂

Das Tool ist ein eigenes Repository auf GitHub und auf der osmpng-Seite des Blogs.

 

English version

My SEGeo-Project is growing. Today I've written a new tool for the project: osmpng.

osmpng is a simple C++ program that creates arbitrary huge PNG maps based on the data of OpenStreetMap (OSM).
In particular it downloads small map pieces ("tiles") from OSM servers and merges them to a single, possibly giant map.

The test osmpng was a ~50MB big PNG map of Innsbruck (Austria). Street names and house numbers are clear visible, only the loading of the PNG file was a bit annoying.

osmpng is found as a repository on GitHub and at the osmpng page of the blog.

Mit dem Raspberry Pi Internet Radio horchen

Ein weiterer Einsatzzweck für euren Raspberry: Empfangsstation für Internet-Radio!

Wir realisieren das ganze mit dem Music Player Daemon und einem schicken kleinen Webinterface

Web Interface um die Radiostation zu steuern
Web Interface um die Radiostation zu steuern

Los gehts!

Wir brauchen für den Betrieb drei Pakete: alsa-utils, mpd und mpc

Bei der Installation vom Music Player Daemon (mpd) taucht folgende Fehlermeldung auf, die wir getrost ignorieren können

Starting Music Player Daemon: mpdlisten: bind to ‘[::1]:6600′ failed: Failed to create socket: Address family not supported by protocol (continuing anyway, because binding to ’127.0.0.1:6600′ succeeded)
Failed to load database: Failed to open database file “/var/lib/mpd/tag_cache”: No such file or directory

 Der Dienst läuft nun. Wir müssen ihn nur noch konfigurieren. Dazu editieren wir die Datei /etc/mpd.conf wie folgt:

  • bind_to_address "localhost" mit bind_to_address "127.0.0.1" erstetzen
  • Auskommentieren von audio_buffer_size  und buffer_before_play

Die Änderungen werden erst nach einem Neustart vom mpd wirksam.

Als nächstes müssen wir noch die Radiosender einstellen. Dies geschieht über eine Playlist. Dazu legen wir die Datei /var/lib/mpd/playlists/radio.m3u an. Die Datei beinhaltet lediglich Links zu den Radiosender und kann ganz einfach geschrieben werden:

Eine passable Auswahl an Radiosender findet sich unter http://www.surfmusik.de/

Um die Musik zu starten, muss noch die Playlist geladen werden und der (erste?) Eintrag abgespielt werden. Dazu gebt ihr einfach in die Konsole ein

Beachte: mpc load Lädt m3u-Playlists (ohne Erweiterung eingeben!) vom Ordner /var(lib/mpd/playlist. Die Eingabe von mpc load radio ist damit absolut ausreichend!

Schickes Webinterface

Ich verwende das MPD-Webinterface von sn0opy (GitHub). Die Lösung benötigt einen Webserver mit PHP.

Wir müssen das ganze Downloaden und ins /var/www-Verzeichnis packen. Ich benenne den Ordner noch um, damit ich das ganze unter raspberry/radio finden kann

Fertig 🙂

Fix Ubuntu

Ubuntu ab Version 12.10 wird datenschutzrechtlich bedenklich. Jede Eingabe im Dashboard wird an Drittanbieter gesendet, mehrere davon (z.B. Amazon) benuzten die Daten für personalisierte Werbung.

Abhilfe verschafft das Projekt Fix Ubuntu mit dem folgenden Shell-Script

Das Script ist hier auf meinem Blog ge-mirrored.

SEGeo - Erste Screenshots

SEGeo, mein Projekt zur Erfassung von strategischen geografischen Punkten für den Zivil- und Katastrophenschutz liefert nun erste Screenshots.

SEGeo Screenshot vom 8. November 2013
SEGeo Screenshot vom 8. November 2013

Details zum Projekt findet ihr entweder auf der Projektseite des Blogs oder auf GitHub.

Ich bin im moment sehr zufrieden damit, da die Entwicklung zur Zeit sehr gut voranschreitet. Ich plane bis Weihnachten eine funktionsfähige Beta zum Laufen zu kriegen 🙂

Eclipse Java .gitignore

Wer viel mit GIT und Eclipse arbeitet, weiss wie mühsam es ist, keine anständige .gitignore zu haben.

Das folgende Template soll dem Abhilfe schaffen

# Build directories #
/build/
/bin
# Binary and temp files #
*.class
.DS_Store
# Package Files #
*.jar
*.war
*.ear
*.db
######################
# Windows
######################
# Windows image file caches
Thumbs.db
# Folder config file
Desktop.ini
######################
# Eclipse
######################
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
/src/main/resources/rebel.xml
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath

Gefunden auf
http://bmchild.blogspot.co.at/2012/06/git-ignore-for-java-eclipse-project.html

Hijacked

Frisch gebacken: Hijacked. [Direktlink zum GitHub]
Ein kleiner simpler in Java gehackter TomCat-"Ersatz". Minimalistisch. Spartanisch. Buggy. Very very ugly.

Perfekt für meinen Blog 😉

hijacked-01
Hijacked Webserver in der Eclipse Console

Der Webserver itself umfasst eine Klasse (Plus zwei Subklassen) und funktioniert für ganz simple GET-Requests recht gut. Es ist Multi-Threaded und somit für kleine Web-Anwendungen lauffähig. Naja ... Vielleicht sobald das Teil fertig getestet wurde 😉

GET-Request mit diversen Links in Firefox
GET-Request mit diversen Links in Firefox

Ihr findet Hijacked auf meinem GitHub-Repo: https://github.com/grisu48/Hijacked

Entwicklungsgeschichte

Ich brauchte für ein anderes Projekt einen kleinen minimalistischen Webserver. Hijacked wurde komplett per Reverse-Engineering zusammengebacken. Nicht gut. Nicht empfehlenswert. Very ugly.

Viel Spass damit!! 🙂