DevDiary

Spiele – The Journey Down Chapter One

Dass Spiel kann ohne Zweifel als Antwort auf die Frage „Sind Point and Click Advantures Zeitgemäß“ angesehen werden.
In dem für 5.49 Euro erhältlichen Spiel geht es von Anfang an spannend zu.

Quelle - Bildschirmfoto von The Journey Down Chapter One

Quelle – Bildschirmfoto von The Journey Down Chapter One

Eine Besonderheit ist hier für Linux Nutzer die Art der Erscheinung.
The Journey Down wird in mehreren Kapiteln veröffentlicht was ähnlich zum Spiel The Walking Dead ist. Dabei ist für dass erste Kapitel bereits mehr als ein Jahr Arbeit vorausgegangen.

Wer ein Perfektes Spiel sucht wird hier definitiv fündig.
Nicht nur dass Erscheinungsbild sondern auch die Musik, Sprecher und Geschichte sind erstklassig und sind aus meiner Sicht auf Linux bisher unerreicht.

Die Geschichte dreht sich um ein Buch welches Notizen für einen Weg ins Unterland enthält.
Dass Betreten des besagten Unterlandes ist illegal und alle Hinweise bis auf dass Buch wurden bereits von der mächtigen Firma Armando vernichtet.

Dass führt nach einem erstklassigen Intro eine Dame namens Lina zu der Tankstelle Kaonandodo Gas Station wo der Spieler und der Mechaniker namens Kito arbeiten.
Der Eigentliche Besitzer ist verschollen wobei im Spiel Andeutungen auf dass eingreifen von Armando gestreut werden.

Danach geht es darum ein Flugzeug wieder flott zu machen.
Dabei müssen zahlreiche andere Missionen erfüllt werden welche Abwechslungsreich gehalten sind.
Jedoch fällt hier auf dass der Spieler bei manchen Aufgaben zu wenig Informationen zum Lösungsweg bekommt.
Beim Testen war dies jedoch auf 3 Stellen begrenzt welche sich über dass Internet schnell lösen lassen.

Die Musik ist hier erstklassig und passt mit dem Jazzeigen auch zu den Stimmen der Charaktere.
Dabei fällt dass Wiederholen der Musik durch die Variationen an bestimmten Orten nicht negativ auf.
Die Stimmung wird mit der Musik zudem verstärkt sodass man sich gleich in die Geschichte rein versetzen kann.

Auch die Sprecher sind hier erstklassig ausgewählt und haben mit der Afrikanisch klingender Sprachweise einen in Spielen noch selten benutzen Akzent.
Aus meiner Sicht ist hier die Wahl keine Übersetzungen anzubieten Ideal da die Zusammenhänge und Wortspiele wirklich gut sind.

Dass Comic-Artige Erscheinungsbild steht den Spielen großer Puplisher in keiner weise nach. Dabei ist die Firma „Skygoblin“ mir noch nicht bekannt.
Die Texturen sind dabei wirklich gut und fügen sich Optimal in die 3D Umgebung ein.
Ich konnte auch vom nahem keine Pixelfehler sehen.

Quelle - Bildschirmfoto von The Journey Down Chapter One

Quelle – Bildschirmfoto von The Journey Down Chapter One

Die Systemanforderungen fallen trotz großartiger Grafik niedrig aus und ermöglichen auch ein Spielen auf dem Laptop.

Systemanforderungen:
Linux:
Processor: 1.8 GHz CPU
Grahpics: OpenGL 1.4+ compatible video card
Memory: 1GB RAM
OpenAL Soft required.

Kaufen kann man dass Spiel derzeit für 5.49 Euro beispielsweise im Humble Store.
Dort kriegt man neben der DRM-Freihen Version auch einen Steam Key sodass einerseits Steam Nutzer dass Spiel nutzen können anderseits auch die Weitergaben beispielsweise an die eigenen Kinder kein Problem darstellt.
Verfügbar ist dass Spiel für Linux, Mac und Windows die mit dem Humble Store alle zusammen gekauft werden.
Außerdem ist eine Version für IOS und Android erhältlich.

Dass Spiel ist aus meiner Sicht für jede Altersklasse geeignet und auch die End- Szene ist dank der Comic-Artigen Gestaltung Kinderfreundlich gehalten.
Somit kann ich dass Spiel jedem empfehlen der Spaß haben und dabei eine großartige Geschichte durchspielen möchte.

Ubuntu 14.04 – Fazit

Mit Ubuntu 14.04 kommt eine Ideale Distribution auf die Festplatte zahlreicher Nutzer.
Die Distribution hat sich diesmal, wie bei LTS Versionen üblich, auf Stabilität, Sicherheit und einen lange Support-Phase ausgerichtet.

Quelle - Bildschirmfoto von Ubuntu 14.04

Quelle – Bildschirmfoto von Ubuntu 14.04

Mit Features wie beispielsweise Oxide wird die Langlebig von Wichtigen Komponenten Sichergestellt und den Entwicklern die Entwicklung von Software für die LTS Version einfacher gemacht. Dass Beispiel Oxide bezieht sich auf die in der Distro eingebaute Webengine welche für die Zeit des Supports mit Updates versorgt werden soll.

Daneben gibt es einige weitere Änderungen an der Ubuntu Basis sowie an den verschiedenen Offiziellen Versionen von Ubuntu.
Bei der Unity Edition wird beispielsweise eine eigene Version des Einstellungs- Editors von Gnome eingeführt.

Nutzer welche sich nicht mit dem Global Menü anfreunden konnten werden sich über die Möglichkeit dass Menü wieder in die Fenster zurückzubringen freuen.
Diese ermöglicht dass Menü in den Fensterrahmen zu packen wobei dass Verschieben von Fenstern dabei nicht beeinträchtigt wird.

Eine Neuerung die Besonders Nutzer von HiDPI Bildschirmen zugute kommt ist die Unterstützung solcher Geräte und die Möglichkeit Unity daran anzupassen.

Was den Zeitraum für Unterstützung (Support) angeht so dürfen Nutzer der Standard Ubuntu Variante sich über 5 Jahre freuen. Der gleiche Zeitraum besteht für die Varianten Edubuntu, Kubuntu und die chinesische Version Kylin.
Nutzer von den Varianten Lubutu, Ubuntu Gnome, Xubuntu, Mythbuntu und Ubuntu Studio dürfen sich dagegen auf 3 Jahre Unterstützung freuen.

Für Ubuntu Gnome ist dies die erste LTS Version sodass hier eventuell noch große Aktualisierungen, neben den sogenannten Point Releases, nachträglich kommen könnten.

Alles im allen ist diese Version für alle empfehlenswert und ein großer Schritt in Richtung Zukunft.
Aktuell gibt es zwar noch ein paar Bugs, diese werden jedoch nachträglich mit Point Releases behoben.
Wer von Anfang an ein stabiles System haben möchte sollte jedoch den ersten Point Release abwarten bevor er 14.04 installiert.
Wer ein paar Bugs verkraften kann muss nicht zwingen abwarten.

Ubuntu 14.04 – Eigene Webengine im LTS

Für die neue LTS Version von Ubuntu wurde eine eigene Webengine entwickelt.
Diese soll im Gegensatz zu anderen Webengines wie beispielsweise Webkit eine sichere und schnelle Anzeige für Webinhalte sein welche auf dem neusten stand der Technik ist und regelmäßig aktualisiert wird.

Der Name der Webenige lautet Oxide und wird standardmäßig vorinstalliert sein.
Dabei wird bei Oxide als Basis Chromium verwendet. Entwickler sind jetzt angehalten Oxide in ihren Programmen zu verwenden.

Wer mehr über Oxide lesen will kann zum Beispiel im Wiki von Ubuntu nachschauen.

Software – wbar

Wer nach dem gestrigen Artikel zu Openbox nach einer einfachen Methode zum starten von Programmen sucht wird hier fündig.
Die Software wbar ist ein Minimalistischer Dock der für die Transparenz keine weiteren Programme benötigt.

Quelle - Bildschirmfoto von wbar bei der Arbeit.

Quelle – Bildschirmfoto von wbar bei der Arbeit.

Dass Tool kann man am besten Grafisch mit Paket „wbar-config“ konfigurieren.
Dort lassen sich unter anderem die Angezeigten Icons zum Starten der Jeweiligen Programme und dass Aussehen des Docks festlegen.

Beim starten des Konfigurators ist gleich der erste Reiter mit dem Namen „Symbole“ aktiv.
In diesem Reiter könnt ihr Symbole hinzufügen oder löschen welche immer angezeigt werden sollen.
Dies ist zum Beispiel für dass Starten häufig genutzter Programme ganz nützlich.
Die Option „Taskbar (Fensterliste) aktivieren“ ist besonders für Nutzer von minimalistischen Denktopumgebungen empfehlenswert.

Sie ermöglicht dass anzeigen der im Augenblick geöffneten Programme in der Leiste
Mit einem Klick auf dass entsprechen Symbol wechselt man dann automatisch zu dem jeweiligen Programm oder startet es.

Über die Einstellungsoption Position lässt sich zudem der Ort der Leiste festlegen dabei sollte man je nach Einstellung auch die Option „Vertikale Anordnung“ anpassen.

Über den Reiter Effekte lassen sich auch noch ein paar Effekte wie beispielsweise die Transparenz der Leiste regulieren.
Mir persönlich gefallen hier die Standartoptionen jedoch ganz gut sodass dieser Punkt hier eher unbeachtet bleiben kann.
Dass Programm kann zum Beispiel über die Ubuntu Paketquellen mit folgendem Befehl installiert werden.

sudo apt-get install wbar wbar-config

Ich kann jedem empfehlen wer jedoch Wert auf viele Effekte legt kann sich gerne dass Paket „Docky“ anschauen.
Minimalistischen Nutzer haben jedoch mit diesem Paket weniger Probleme.
Bei Docky zum Beispiel können die Zusatzpakte für Transparenz Probleme verursachen.

Youtube – Endlich auch ohne Flash

Wer bis 2013 noch Youtube Videos schauen wollte ärgerte sich meist über die Meldung dass Flash doch bitte installiert werden soll.
Da die Weiterentwicklung von Flash jedoch von dem Hersteller Adobe abgebrochen wurde bedeutete eine Installation eine ernst zu nehmende Gefahr da auch keine Sicherheits-Aktualisierungen veröffentlicht wurden.

Eine Alternative bot Google mit der Integration von Flash in den Hauseigenen Webbrowser Chrome und die Aufnahme der Weiterentwicklung von Flash.
Dies Beschränkte sich jedoch nur auf die Integrierte Version, Firefox Nutzer gingen leer aus.
Wer gerne Youtube nutzt musste als Firefox Nutzer bislang in die Röhre schauen doch dass hat sich in-zwischen geändert.

Einige haben schon früh mitbekommen dass Google an einer HTML 5 Version des Youtube Players arbeitet und die Möglichkeit zum Testen besteht.
2013 wurden in der HTML 5 Version jedoch noch keine Videos mit Werbung abgespielt was bedeutete dass große Kanäle nicht Funktionierten.
Jetzt funktionieren auch Videos mit Werbeinhalten und so kann man getrost auf Flash verzichten was nicht nur für Linux Nutzer empfehlenswert ist.

Um die Videos mit dem HTML 5 Player abzuspielen ist ein Besuch dieser Seite und ein Klick auf den Knopf „HTML5-Videoplayer anfordern“ notwendig danach kann Youtube wie gewohnt genutzt werden.

Mich persönlich freut dass da ich Youtube gerne nutze um beispielsweise mir einen Eindruck von Betriebssystemen und Software zu machen.

Software – Openbox

Wer fast alles Selber machen will ist mit Openbox bestens beraten denn der Desktop ist auf dass nötigste reduziert.
Eine Menüleiste gar einen Menüknopf sucht man nach dem Einloggen hier vergeblich doch nach relativ kurzer Zeit findet man den Weg ins Menü über die rechte Maustaste.

Openbox nach dem Einloggen.

Openbox nach dem einloggen.

Als erstes fällt beim Starten eines Programms wie beispielsweise dass Terminal die enorme Geschwindigkeit gegenüber bekannteren Desktops wie Gnome oder KDE auf.
Dies ist auf die aufs nötigste reduzierte Komponentenliste zurückzuführen.

Die erste Version von Openbox ist 2002 auf Basis von dem Fenstermanager Blackbox entstanden jedoch wurde für die Version 3 alles neu geschrieben wobei sie dem Aussehen von Blackbox treu geblieben sind.

Unter anderem benutzt LXDE auch diesen Fenstermanager wobei er auch alleine genutzt werden kann und wo er seine Stärken im Bezug auf den geringen Ressourcen-Bedarf besonders gut ausspielen kann. Mit LXDE verwendet auch Lubuntu Openbox daneben gibt es zahlreiche andere Distributionen wie beispielsweise Crunchbang die den minimalistischen Fenstermanager benutzen.

Wer schon immer mal eine Oberfläche nachbauen wollte ist generell immer mit Openbox bedient. Da es im Grunde keine Sichtbaren Elemente gibt nutzen die Anwendungen den gesamten Platz des Bildschirms was insbesondere bei kleinen Bildschirmen von Vorteil sein kann.

Um Openbox zu installieren kann beispielsweise unter Ubuntu folgender Befehl genutzt werden.

sudo apt-get install openbox openbox-themes obconf obmenu

Zum starten kann ein Befehl genutzt werden was den umständlichen „startx“ Weg erspart.

openbox-session

Ein netter Nebeneffekt von Openbox ist zudem der häufigere Einsatz des Terminals welcher meiner Meinung nach mit den großen Desktops leider etwas in den Hintergrund gerückt ist.

Openbox nach einigen Anpassungen.

Openbox nach einigen Anpassungen.

Wer mehr zu dem Thema Openbox erfahren möchte oder Hilfe bei der Einrichtung braucht kann hier gerne seine Fragen stellen oder aber dass Wiki von Ubuntuusers nutzen.

Empfehlen ist dies nur eingefleischten Linux Nutzern die genau wissen was ihre Lieblingsprogramme sind. Der Aufwand ist zwar groß doch dass Ergebnis kann sich sehen lassen und die Geschwindigkeit ist beeindruckend.

Software – Sublime Text 3

Viele Programmierer werden den bekannten Editor Sublime Text bereits kennen und einige werden ihn wie ich auch gekauft haben.
Der Editor ist nicht nur einfach ein Editor der 70 Dollar kostet sondern er bietet alles was zum Programmieren wichtig ist und den Komfort erhöht.

Quelle - Bildschirmfoto von Sublime Text 3.

Quelle – Bildschirmfoto von Sublime Text 3.

Zum Beispiel lassen sich ganz einfach mehrere Stellen im Text Markieren und gleichzeitig ersetzen was besonders bei großen Quellcodes sehr hilfreich ist.
Der Editor ist für alle großen Plattformen (Linux, Mac und Windows) verfügbar und bietet neben einem Tarball auch ein Debian Paket für Ubuntu an.

Zum Testen ist keine Lizenz notwendig jedoch wird beim Speichern zufällig ein Dialog erscheinen dass man dass Programm doch bitte unterstützen möchte.
Außerdem kann man bei Version 3 nicht die Dev Builds nutzen. Ansonsten sind aber keine Einschränkungen enthalten.

Was die Auswahl an Themes angeht so bringt Sublime Text bereits eine große und breite Auswahl mit und Grade dass Standard Theme gefällt mir persönlich sehr gut.
Wer dennoch etwas anderes bevorzugt kann auf eine breite Auswahl an Themen von der Nutzergemeinschaft zurückgreifen.

Erweitern kann man den Editor zudem auch noch und dafür gibt es sogar einen eigenen Menüpunkt über den man ein solches Plug-in ganz schnell erstellen kann.
Dafür wird die Programmiersprache Python verwendet, die sich besonders einfach erlernen lässt und mittlerweile auch sehr verbreitet ist.
In dem Forum sowie zahlreichen anderen Webseiten werden bereits eine große Anzahl an Plug-in zum Download angeboten.

Einige werden sogar zum verkauf angeboten wie zum Beispiel einige der Plug-in des Erstellers des Installer Plug-ins. Mit dem lassen sich Erweiterungen und Themes ganz einfach über ein Interface im Editor installieren.

Leider ist es derzeit sehr Ruhig geworden und der Letzte Blog Eintrag wurde im Jahre 2013 verfasst. Warum dass so ist kann ich leider nicht sagen jedoch hoffe ich hier dass dass Projekt nicht vom Entwickler aufgegeben worden ist.

Ich kann dieses Programm diesmal wirklich nur Entwicklern empfehlen was aber keineswegs am Programm selbst liegt. Vielmehr ist es der Verwendungszweck da dass Programm sich vorrangig an Entwickler richtet.
Die 70 Dollar haben sich in meinem Fall jedoch gelohnt und ich arbeite gerne mit dem Programm.

Suchmaschine – Erste Version bereits nutzbar

Ich habe heute eine erste Version meiner Suchmaschine fertig gestellt. Sie ist für die Datensuche auf den Lokalen Datenträgern ausgelegt und speichert alle gefundenen Wörter inklusive einiger Daten in einer SQLite Datenbank die man auch auf dem USB Stick mitnehmen kann.

Dazu nutze ich nur die Standard Module von Python sodass dass Skript auf fast jeder Linux Distribution laufen sollte.

import os, sys, sqlite3, re, codecs, datetime
global od
conn = sqlite3.connect('data.db')
conn.text_factory = str
c = conn.cursor()

# Create table
#print("Creating DB please wait thats could take long time!")
#c.execute('''CREATE TABLE data
#            (name text, time text, end text, filename text, content text)''')

def replacehtml(html):
	txt = []
	for i in html:
		if i == '<':
			delete = True
			continue
		if i == '>':
			delete = False
			continue
		if delete == True:
			continue
		txt.append(i)
	return ''.join(txt)
def countlinks(html):
	counter = 0
	counter = html.count("</a>")
	return counter
def counttag(html,tag):
	counter = 0
	counter = html.count(tag)
	return counter

def addfile(filename):
	# Larger example that inserts many records at a time
	data = []

	filei = codecs.open(filename, 'r', encoding='utf-8')
	filec = filei.read()

	counter = 0
	rawdata =  filec.split()

	for item in rawdata:
		if (item != None):
			content = ""
			rating = 0
			for i in range(counter, counter + 100):
				if (i < len(rawdata)):
					contentitem = rawdata[i].encode('utf-8', 'xmlcharrefreplace')
					if (contentitem != None):
						content += rawdata[i].encode('utf-8', 'xmlcharrefreplace') + " "
					if counter == 25 or counter == 50 or counter == 75 or counter == 100:
						content += "\n"
				else:
					break

			data.append((item.encode('utf-8', 'xmlcharrefreplace'), str(datetime.date.today()), 'end', filename, content))
			counter += 1

	c.executemany('INSERT INTO data VALUES (?,?,?,?,?)', data)

	conn.commit()

def updatedb(filenames):
	c.execute('DELETE FROM data')
	conn.commit()
	for filename in filenames:
		addfile(filename)
	print "Successfully updated the DB!"

def rateelement(html,search,time):
	countedlinks = countlinks(html)
	countedsearchtags = counttag(html, search)
	lowercountedsearchtags = counttag(html.lower(), search.lower())
	
	mode = 0.5
	if (countedlinks >= 10):
		mode = 0.75

	#timenow = str(datetime.date.today()).split('-')
	timenow = str(datetime.date.today()).split('-')
	timepast = str(time).split('-')
	years = int(timenow[0]) - int(timepast[0])
	months = int(timenow[1]) - int(timepast[1])
	days = int(timenow[2]) - int(timepast[2])
	ratetime = (0.25*days)+(0.5*months)+(0.75*years)
	print str(years) + " years, " + str(months) + " months and " + str(days) + " days."

	print str(countedlinks) + "---" + str(countedsearchtags) + "---" + str(lowercountedsearchtags) + "---" + str(ratetime)
	rating = (mode*countedlinks)+(0.5*countedsearchtags)+(0.75*lowercountedsearchtags)+(0.9*ratetime)
	#Je niedriger die Bewertung desto besser der Inhalt!
	return rating

def buildsite(filename,search):
	founds = 0
	highestrating = 0
	gc = "<html><head><style>table,td{border: 1px solid grey;} table{width: 100%;} header, footer{text-align: center;}"
	gc += "html{font-family: ubuntu; background: #F8F8F8;}"
	gc += "header{position: absolute; top: 0px; left: 0px; width: 100%;background: #0F0F0F;color: #BA2121;}"
	gc += "h3.first {margin-top: 7%;}"
	gc += "</style><meta charset='UTF-8'><title>DEVSEARCH</title></head>"
	gc += "<body><header><h1>DEVSEARCH</h1></header>"

	gc += "<h3 class='first'>SUCHWORT: " + str(search) + "</h3>"

	gc += "<table><thead><tr><th>Wort</th><th>Datum</th><th>Bewertung</th><th>Auschnitt</th><th>Datei</th></thead><tbody>"
	for row in c.execute('SELECT * FROM data WHERE name LIKE "' + search + '" ORDER BY time'):
		rating = 0.0
		content = "<p>[...] " + str(row[4]) + " [...]</p>"
		rating = rateelement(content, search, row[1]) 
		content = replacehtml(content)
		content = content.replace(search, "<b>" + str(search) + "</b>")
		filecontent = "<tr><td>" + str(row[0]) + "</td><td>" + str(row[1]) + "</td><td>" + str(rating)
		filecontent +=  "</td><td>" + content + "</td><td>" + str(row[3]) + "</td></tr>"
		gc += filecontent
		founds += 1
		if rating > highestrating:
			highestrating = rating

	gc += "<h3>TREFFER: " + str(founds) + "</h3>"
	gc += "<h3>HIGHSCORE " + str(highestrating) + "</h3>"
	gc += "</tbody></table><footer><h5>A Marc Volker Dickmann production. All rights reserved.</h5></footer></body></html>"
	fo = open(filename, "w+")
	fo.write(gc)

filenames = ["datei1", "datei2.txt"]

#addfile("datei1.txt")

if (sys.argv[1] == "search"):
	buildsite("search.html", sys.argv[2])
elif (sys.argv[1] == "updatedb"):
	updatedb(filenames)
elif (sys.argv[1] == "addtodb"):
	addfile(sys.argv[2])
elif (sys.argv[1] == "info"):
	print "DEVSEARCH created by Marc Volker Dickmann - devdiary.org"

#for filename in filenames:
#	addfile(filename)

Um die Datenbank erstmalig zu erstellen müssen noch die Zwei Zeilen unter dem Kommentar “Create Table” auskommentiert werden. Danach einfach mit

 python search.py info

dass Skript starten und nach dem erstellen der Datenbank die zwei Zeilen wieder als Kommentar markieren.

Dateien der Datenbank hinzufügen kann man jetzt mit dem Befehl

 python search.py addtodb $datei

Um alle Dateien die in der „filenames“ Liste eingetragen sind in der Datenbank zu updaten nutzt man folgenden Befehl

 python search.py updatedb

Zum suchen brauch ihr nur folgenden Befehl eingeben und die Datei “Search.html” in einem Webbrowser zu öffnen.

 python search.py search $suchbegriff

Dass Programm hat jetzt auch einen Namen bekommen: DevSearch.

Ich werde natürlich noch weiter an dem kleinen Programm arbeiten da es sich als ziemlich nützlich erwiesen hat. Zudem habe ich ja bereits gesagt dass ich mich für Suchmaschinen begeistere und interessiere.

 

Suchmaschine – Erster Erfolg

Ich habe Grade begonnen an meiner eigenen Suchmaschine zu arbeiten und habe bereits ein ersten Erfolg zu verbuchen.
Der Quellcode unten ist bereits fähig in einer Datei ein bestimmtes Wort zu suchen und grafisch in einer HTML Datei auszugeben. ;)

Hier der Code:

import os, re
global od
filei = open("DATEI", 'r')
filec = filei.read()

gc = "<html><head><style>table,td{border: 1px solid grey;}</style></head>"

gc += "<body><table><thead><tr><th>Wort</th><th>Start</th><th>Ende</th></thead><tbody>"
for item in re.finditer(r'\bSUCHWORT[a-z]*', filec):
filecontent = "<tr><td>" + str(item.group(0)) + "</td><td>" + str(item.start()) + "</td><td>" + str(item.end()) + "</td></tr>"
gc += filecontent
gc += "</tbody></table></body></html>"

Ich habe für dass kleine Programm die Programmiersprache Python gewählt unter anderem beruht dies auf meiner Vorliebe für diese Sprache. :)

Ich werde noch ein paar Tage daran Arbeiten da mich dass Thema Suchmaschinen selbst Entwickeln mich Grade fasziniert. ;)