ubuntuusers.de

9. Juni 2013

Titel Think Like a Programmer
Autor V. Anton Spraul
Sprache Deutsch (gedruckt), Englisch (EPUB)
Genre Sachbuch
Herausgeber mitp-Verlag (gedruckt), O'Reilly (EPUB)
Seitenanzahl 296

Aufbau des Buches

Das Buch beginnt recht unkonventionell mit einem Kapitel zu Rätseln wie Schiebepuzzeln und Sudoku. Genau hier sieht der Autor die Stärken von Programmierern, die es schaffen, solche Rätsel zu analysieren, zu abstrahieren und zu lösen.

Die folgenden Kapitel beschäftigen sich dann eher mit der Sprache von C++ und gehen auf einige Programmierprobleme ein, die man mit C++ lösen soll. Dabei werden Arrays, Zeiger, Listen, Klassen und Rekursion erklärt.

Die letzten zwei Kapitel versuchen die Bedeutung der Wiederverwendung von Code zu erklären und fassen alle vorherigen Aufgaben in einem großen Beispiel zusammen.

Die richtige Zielgruppe finden

Das Buch „Think Like a Programmer“ richtet sich vor allem an Programmieranfänger, die ihre ersten Schritte in der Programmierwelt gehen. Da C++ im Buch benutzt wird, setzt der Autor die Grundlagen der Programmiersprache voraus. Die Kapitel zu Arrays, Zeiger und Listen zeigen aber auch, dass das Wissen, was man mitbringen muss, nicht all zu hoch sein muss.

Hier ist aber nicht ganz klar, wer genau die Zielgruppe sein soll. Wenn man schon Erfahrung in C++ hat, wird man vermutlich keine Einführung in Arrays und Listen benötigen, da man diese sicherlich schon aus der STL (Standard Template Library) benutzt hat. Auf der anderen Seite muss aber auch klar gesagt werden, dass der Autor nicht einfach die STL-Container vorstellt, sondern tatsächlich das Konzept hinter diesen Konstrukten. So wird erklärt, wie die Verkettung von Listen in C++ funktioniert oder wie ein Array im Speicher aufgebaut ist. Hier können Programmieranfänger tatsächlich etwas lernen, selbst wenn sie schon einmal Listen in der Hand hatten.

Inhaltliche Auseinandersetzung

Die Einführung über das Thema „Rätsel“ halte ich für sehr gut gelungen. Es versucht den Leser spielerisch an das Thema Programmierung heranzuführen. Denn bei der Lösung von (logischen) Rätseln geht man normalerweise nicht anders vor als bei einem Programmierproblem. Man untersucht die Randbedingungen, versucht Schemen und Muster wieder zu erkennen, teilt die Aufgabe dann in Unteraufgaben auf und löst diese nacheinander.

Diese Grundzüge des Programmierdenkens sind dem Autor sehr wichtig. Ein Aspekt, den er immer wieder erwähnt, ist: „Niemals ohne Plan.” Bevor man eine Software schreibt, um ein Problem zu lösen, solle man sich klar werden, wie man es lösen will und in welchen Schritten man dazu vorgehen möchte. Der Plan könne dabei im Kopf entstehen oder auf (digitalem) Papier.

Ein weiterer wichtiger Punkt ist für Spraul die Zerlegung der Aufgabe in kleine Teile, sodass der Plan auch übersichtlich bleibt. Wenn man nur einen Planungspunkt „Problem lösen“ hat, ist die Wahrscheinlichkeit hoch, dass man sich bei komplexen Problemen leicht verläuft. Ebenso hilft es laut dem Autor, wenn man versucht, das Problem auf ein einfacheres herunterzubrechen, was man im Optimalfall bereits schon einmal gelöst hat.

Am Ende des Buches geht Spraul auch auf die Stärken und Schwächen von Programmierern ein. Er zeigt dabei natürlich nur ein paar Eigenschaften, arbeitet diese aber sehr gut heraus, sodass man sich sicherlich selbst als Programmierer darin wiederfindet. Vor allem das Thema „Schwächen“ sollte man ernst nehmen, da es oft dazu führt, dass ein Projekt scheitert oder zumindest nicht optimal läuft. Schwächen hat jeder. Wenn man sich derer aber bewusst ist, kann man sie gegebenenfalls elegant umschiffen.

Die Endaufgabe ist die Programmierung des Spiels Galgenmännchen. Dabei wird aber eine besondere Variante programmiert, in der der Computer betrügt und das gesuchte Wort nicht am Anfang auswählt, sondern dies erst im Laufe des Spiels je nach geratenen Buchstaben einschränkt. Die Idee halte ich für sehr gut, da es alle Aspekte der vorherigen Kapitel zusammenfasst. Vor allem ist die Aufgabe noch relativ einfach, aber gleichzeitig – vor allem für Programmieranfänger – kompliziert genug, dass man einfach nur durch Losprogrammieren nicht zum Ziel kommt. Hier ist also ein überlegtes Vorgehen sinnvoll.

Kritik am Buch

Vor allem die Kapitel 1 und 8 halte ich für sehr empfehlenswert. Hier geht Spraul zum einen auf die Grundlagen des Programmierdenkens ein und versucht zu vermitteln, welche Möglichkeiten man hat, ein Problem zu vereinfachen, um es zu lösen. Vor allem den Aspekt, niemals ohne Plan anzufangen, halte ich für sehr sinnvoll. Ob der Plan nur das Beschreiben der Teilaufgaben oder gleich das komplette Design umfasst, ist dabei unerheblich. Wenn man in kleinen Schritten vorgeht, kann man das Ergebnis zum einen viel leichter testen und prüfen und zum anderen hat man schneller Erfolgserlebnisse.

Im achten Kapitel halte ich vor allem die Herausstellung der Stärken und Schwächen für sehr wichtig. Dies ist etwas, was man sich selbst oft nicht klar macht. Anhand der vorgegebenen Beispiele kann man sich überlegen, welche Stärken und Schwächen man selbst hat. Dies hilft unter Umständen dabei, ein besserer Programmierer zu werden.

Auf die Art ist das Buch auch für erfahrene Programmierer empfehlenswert. Diese können den mittleren Teil mit Arrays und Listen überspringen und nur den Reintext lesen. Ebenso ist der Text in den ersten zwei und letzten zwei Kapiteln oft so allgemein gehalten, dass man auch mit C++ noch keine Berührung gehabt haben muss, um die Prinzipien zu verstehen.

Für echte C++-Anfänger ist das Buch insofern nicht empfehlenswert, dass man damit kein C++ lernt, was aber auch nicht der Anspruch des Autors ist. Man bekommt viel mehr die Prinzipien hinter Containern und Programmierparadigmen erklärt, die – rein zufällig – mit C++ umgesetzt werden. Man hätte aber auch fast jede andere Sprache nutzen können.

Dementsprechend wird auch nicht auf alle C++-Eigenheiten eingegangen, aber zumindest einige werden erwähnt. Sehr gut wird beispielsweise die Speicherverwaltung mit Stack und Heap erklärt, auf der anderen Seite wird das Thema Klassen nur so kurz angeschnitten, dass ihre wirklichen Vorteile wie Polymorphie gar keine Rolle spielen. Hier wurde etwas Potential verschenkt.

Alle Kapitel werden mit Übungen abgeschlossen, die man selbst umsetzen sollte. Leider gibt es keine Musterlösungen, was ich sehr schade finde. Wie der Autor schreibt, ist jede Lösung richtig, die die Randbedingungen erfüllt und das Problem löst. Aber sicherlich gibt es auch schöne und nicht so schöne Lösungen. Zusätzlich fehlt dem Leser eine Rückmeldung, ob es korrekt ist, was er gemacht hat. Oft merkt man bei solchen Aufgaben gar nicht, dass man einen Fehler begangen oder an etwas nicht gedacht hat. Gerade die Leser des Buches nehmen sich das Werk ja vor, weil sie damit noch Probleme haben.

Darüber hinaus stimme ich nicht in allen Punkten mit dem Vorgehen des Autors überein. So programmiert er die Endaufgabe anfangs rein prozedural und entscheidet sich erst später, Klassen einzusetzen. Hier bin ich eher Verfechter der Objektorientierten Programmierung und versuche gleich von Anfang mir die Klassen und Teilnehmer vorzustellen, die in der Problemstellung auftauchen und wie diese miteinander interagieren. Dies schafft oft ein klareres Design und bessere Schnittstellen.

Fazit

Alles in allem ist „Think Like a Programmer“ (was trotz des englischen Titels in Deutsch erhältlich ist) ein sehr empfehlenswertes Buch. Ohne die Programmierbeispiele in der Mitte hätte man sogar überlegen können, die Essenzen aus den Kapitel 1, 2, 7 und 8 zusammenzufassen und als kleines 50-seitiges Büchlein herauszubringen. Dann könnte man die wichtigen Themen sofort nachlesen. Für reine Programmieranfänger sind die Übungen und Beispiele in der Mitte des Buches aber sehr hilfreich.

Da das Buch auch für „alte Programmierhasen“ den einen oder anderen wichtigen Punkt bereithält, findet sich also wohl jeder wieder. Wer noch nie mit C++ programmiert hat, wird gegebenenfalls kleinere Probleme beim Verständnis haben. Wenn man aber bereits eine andere Programmiersprache beherrscht, ist dies kein so großes Problem mehr.

Dem Untertitel „Typische Programmieraufgaben kreativ lösen am Beispiel von C++“ wird das Buch also gerecht. Einzig das Wort „typisch“ könnte man streichen, da man in der „realen“ Welt sehr selten Container wie Arrays und Listen programmieren muss. Das Prinzip der Problemlösung ist aber auch in komplexeren Fällen sehr ähnlich und daher hilfreich.

Ein Hinweis zur E-Book-Version: Das Buch „Think Like a Programmer“ gibt es vom englischen O'Reilly-Verlag auch als EPUB-Version für E-Books. Die Code-Beispiele lassen sich alle gut lesen, auch wenn einzelne Code-Zeilen ggf. frühzeitig umgebrochen sind. Einige Abbildungen und Tabellen dagegen passen selbst bei kleinster Zoomstufe nicht immer voll auf das Gerät und können daher nicht im Ganzen betrachtet werden. Getestet wurde das EPUB mit einem PocketBook 622 Touch.

Wer Mozilla ein bisschen kennt, der weiß, dass Mozilla weit mehr macht, als nur einen Browser und andere Produkte zu liefern. Mozilla hat sich auch die digitale Bildung zur Aufgabe gemacht. In diesem Zusammenhang wird im Juli Mozillas sogenannter Web Literacy Standard in den Beta-Status gehoben.

Mozillas erklärtes Ziel ist es, Menschen weg vom reinen Konsumieren zu bringen, hin zum Selbst-Erstellen von Inhalten. In diese Richtung zielt Mozillas Webmaker-Initiative mit Tools wie Popcorn Maker oder Thimble sowie zahlreichen Lern-Events und -Workshops auf der ganzen Welt ab, wie auch die Mozilla Maker Party 2013, welche am 15. Juni starten wird. Genannt seien hierbei auch Mozillas Lernabzeichen-Programm Open Badges und Investitionen zur Förderung digitaler Bildung.

Ein weiteres Projekt, welches sich in diese Bestrebungen einfügt, ist Mozillas Web Literacy Standard, dessen erster Entwurf am 26. April veröffentlicht worden ist und am 26. Juli in den Beta-Status erhoben werden soll, ehe dieser dann beim Mozilla Festival in London Ende Oktober die finale Versionsnummer 1.0 erhalten wird.

Beim Web Literacy Standard, welchen Mozilla gemeinsam mit der Community erarbeitet, handelt es sich um eine Art Rahmenstruktur darüber, welche Kompetenzen wichtig sind, um aktiv am Web teilzunehmen und dieses nicht nur passiv zu nutzen. Die Kompetenzen verteilen sich auf drei Säulen, dem Erforschen, dem Erstellen sowie dem Verbinden. Für jede einzelne dieser Kompetenzen gibt es kurze Beschreibungen, welche derzeit aber aus noch nicht sehr viel mehr als jeweils einem kurzen Satz bestehen. Dies wird derzeit genauer ausgearbeitet, Mozilla bittet dabei um Feedback.

Bildquelle: wiki.mozilla.org

Unter Linux hatte ich meist fail2ban benutzt um die Maschine gegen ssh Bruteforce Attacken zu sichern. Für OpenBSD hatte ich bisher zu sshguard gegriffen, was aber Overkill ist. Ich muss nicht erst Logs parsen um zu wissen wer zu häufig am ssh Port anklopft.

Block

Wenn ich an pf rumspiele, aktiviere ich einen Cronjob der alle 10 Minuten /sbin/pfctl -d ausführt (denn er weiss nicht, was er da tut!). So schliesse ich mich wenigstens nicht für immer aus wenn was schief geht.

Die nachfolgende Regel bedeutet im Grunde, dass bei mehr als 5 Connections in 50 Sekunden die Source-IP in den Table <bruteforce> eingepflegt wird.

1
2
3
4
5
# Allow and track ssh brute force
pass in on $extif proto tcp from any to any port ssh \
  flags S/SA keep state \
  (max-src-conn 5, max-src-conn-rate 5/50, \
  overload <bruteforce> flush global)

Den aufgebauten Table <bruteforce> muss man aber auch noch verarbeiten. Alle Einträge darin werden geblockt.

1
2
table <bruteforce> persist
block quick from <bruteforce>

Whitelist

Die Whitelist-Funktionalität in fail2ban lässt sich auch mit nativem pf nachbauen.

1
2
table <admins> { 1.2.3.4/32 }
pass in on $extif from <admins> to any port ssh

Kurz gesagt, ein Table in dem sich eine SRC-IP befindet, die von den block Rules unberührt bleibt. Aufpassen bei der Reihenfolge.

Expire Tables

Fehlerhafte Logins passieren. Auf meinem oBSD loggen sich auch Menschen ein, die sich von gitolite ein Repo abholen wollen. Nur weil mal jemand 5 Repos in einer Minute haben wollte, ist das noch kein Grund ihn für immer auszusperren.

Seit OpenBSD 4.1 gibt es das native expire Feature für Tables.

1
2
3
4
5
6
7
8
9
$ pfctl -t bruteforce -T show
   69.110.96.21

$ pfctl -vt bruteforce -T expire 3600
0/0 addresses expired.

$ pfctl -vt bruteforce -T expire 600
1/1 addresses expired.
D  69.110.96.21

Expired wird alle 10 Minuten oder öfter per Cronjob.

1
*/10 * * * * /sbin/pfctl -t bruteforce -T expire 3600

Der relevante Teil meiner Config nochmal auf gist.github.com. Und nicht vergessen den --disable Cronjob für pf nach basteln und ausführlichem(!) Testen wieder abzuschalten. Sonst bringt das herzlich wenig.

HandPaint
Genre Zeichenprogramm
Preis kostenlos
Homepage http://dexterltd.com/

Für die heutige App habe ich eine Anwendung ausgesucht, mit der man schlichte Zeichnungen anfertigen kann.

Hand zu Malen (schlechte Übersetzung von HandPaint) hat nicht den Anspruch, dass man damit künstlerisch wertvolle Zeichungen anfertigen kann. Ganz im Gegenteil sogar: Es ist eine schlicht gehaltene App, mit der man lediglich einfache Zeichungen machen kann.

Gedacht ist sie eigentlich für kleine Kinder, die damit ihre Kreativität aus dem Smartphone oder Tablet ausleben können. Für mich hat das eher praktische Ziele, etwa um schnell eine Handskizze anzufertigen, um etwas leichter erklären zu können.

Einfache Handskizze auf dem Smartphone mit HandPaint

Einfache Handskizze auf dem Smartphone mit HandPaint

Das einfache Umschalten zwischen den Farben ermöglicht es, dass man schnell und einfach kleinere Skizzen in mehreren Farben anfertigen kann. Im Beispiel habe ich die grundlegenden Kräfte an einem Tragflügel gezeichnet. Viel filigranere Zeichnungen bekomme ich auf meinem Smartphone allerdings nicht hin.

Die Farbauswahl ist hier sehr gut gelungen, aber außer Freihandskizzen ist hier nichts möglich (keine geraden Linien, Kreise, Rechtecke...).

Fazit

Die App ist für kleine Übersichtszeichnungen oder kleine Kinder gut geeignet, wer aber Wert auf eine Vielzahl von künstlerischen Effekten legt, sollte sich nach alternativen Apps umsehen.

8. Juni 2013

Ich nutzte bis 2009 für meine Radtouren immer die Radkarte von Radfahrer. Das Typfile für mein Navigationsgerät Garmin Oregon 450 ist zum Radfahren optimal, da die Wege entsprechend ihrer Beschaffenheit dargestellt werden.

Die Karte wurde 2009 eingestellt, dann aber glücklicherweise von Johannes Formann fortgeführt. Das Projekt zur Erstellung einer Karte wird bei Launchpad gehostet.

Karte erstellen

Will man auf Basis des Radkarten-Projekts selbst eine Karte für das Garmin erstellt, geht man wie folgt vor.

Zuerst lädt man den Quellcode mit Bazaar herunter:

$ bzr branch lp:radkarte

Hier muss natürlich das Paket bzr installiert sein.

Danach wechselt man in den entstandenen Ordner:

$ cd radkarte

Theoretisch gibt man nun einfach nur

$ ant dist

ein, um die Generierung anzustoßen. Hierfür muss das Paket ant installiert sein.

Die Radkarten (also die entpackte Image-Datei gmapsupp.img aus dem Ordner build) speichert man danach auf der SD-Karte des Garmins im Ordner garmin/ ab.

Es gibt aber noch ein paar Besonderheiten, sodass man wahrscheinlich die Build-Datei build.xml anpassen muss.

Höhenlinien deaktivieren

Die vom Skript verwendeten Höhenlinien passen nicht auf Nicht-Deutschland-Karten, weswegen man die Zeile

<arg value="${basedir}/gmapsupp_Hoehenlinien.img"/>

im Target generate_full_gmapsup komplett entfernen sollte.

Andere Region generieren

Wenn man eine andere Karte als Deutschland generieren will (z.B. nur ein bestimmtes Bundesland), muss man den Downloadpfad und -dateiname anpassen:

<property name="dl_path" value="europe/"/>

<property name="dl_file" value="germany-latest"/>

Die jeweiligen Dateien und Pfade findet man auf geofabrik.de. Für Berlin wäre es z.B.

<property name="dl_path" value="europe/germany/"/>

<property name="dl_file" value="berlin-latest"/>

Karten-ID ändern

Wenn man mehr als eine auf die Art generierte Karte auf dem SD-Karte speichert, gibt es das Problem, dass diese zum einen zusammengefasst werden und zum anderen nur eine der Karten angezeigt wird. Grund hierfür ist, das diese alle die gleiche ID bekommen und somit nur eine gewinnt.

Daher ändert man die Zeilen

<property name="family_id_singleMap" value="5940"/>

<property name="family_id_fixMeLayer" value="5947"/>

<property name="family_id_RadRouten" value="5944"/>

<property name="family_id_Steigungen" value="5946"/>

<property name="family_id_Basiskarte" value="5942"/>

<property name="family_id_Hoehe" value="5948"/>

ab und vergibt dort bei jeder Karte andere IDs. Man kann z.B. die ersten zwei Ziffern hochzählen lassen. Erst dann erscheinen beide Karten auf dem Navi für eine eigene Anwahl und können auch gleichzeitig dargestellt werden.

Fazit

Das Erstellen eigener Karten geht Dank dem Build-Skript sehr schnell und einfach. Man muss zwar manchmal Hand anlegen, aber die Arbeit hält sich in Grenzen. Als Ergebnis erhält man eigene Radkarten für sein Garnin-Gerät, die immer aktuell sind.

Bei diesem Artikel handelt es sich um einen Kommentar. Die Formulierungen sind bewusst direkter gewählt als in den ausschließlich informativen Artikeln über Neuerungen. Dieser Artikel stellt zu 100% die reine Meinung des Autors dar. Auch wenn die Bilder jeweils nur ein Betriebssystem zeigen, gelten die grundsätzlichen Gedanken gleichermaßen für Windows, OS X sowie Linux.

Aus Gründen – welche liegen für mich im Verborgenen – schrieben in den letzten Tagen zahlreiche Seiten über das Australis-Redesign von Firefox, welches Einzug in Firefox 25 erhalten soll. Neue Informationen in diesen Artikeln: Fehlanzeige, alles schon seit Wochen bekannt und größtenteils von denselben Seiten sogar darüber berichtet. Was mich an diesen typischen Sommerloch-Artikeln überrascht: Die Aussage in wirklich jedem dieser Artikel, es würde eine besondere Ähnlichkeit zu Google Chrome bestehen. Auf der anderen Seite: Natürlich, mit solch reißerischen Aussagen stößt man Diskussionen an und kann sich über höhere Besucherzahlen freuen. Statt mich diesem vermeintlichen Qualitäts-Journalismus anzuschließen, möchte ich zeigen, wieso ich diese Aussage für Unsinn halte.

Mozilla plant mit Firefox 25 die Einführung bestimmter Änderungen am Erscheinungsbild von Firefox. Konkret sprechen wir hier von einer neuen Optik der Tabs, einem Lesezeichen-Stern, welcher aus der Adressleiste wandert, einem neuen Menü, einem neuen Dialog zum Anpassen der Benutzeroberfläche und wahrscheinlich auch einer verbesserten Optik der Suchleiste. Heißt für uns: Wir starten jetzt mal Chrome und vergleichen genau diese Punkte mit der Australis-Optik von Firefox. Denn alles andere bleibt in Firefox 25 beim Alten. Man wird sehr schnell bemerken: Australis und Chrome sehen komplett anders aus. Ähnlichkeiten lassen sich keinesfalls mehr als zu jedem anderen Browser auch feststellen.

Die Tabs

Die auffälligste Neuerung sind natürlich die Tabs. Und hier sind die Unterschiede bereits riesig. Mozilla führt mit Australis runde Tabs ein. Die Tabs von Google Chrome sind eckig. Hinter dieser Aussage steckt keinerlei Wertung, mir gefallen beide Varianten sehr gut. Aber beide Varianten sind sehr unterschiedliche Varianten. Und die Tabs von Firefox waren übrigens bereits während der Entwicklung von Firefox 4 wesentlich runder als sie es jetzt sind, was relativ spät in der Entwicklungsphase wieder verworfen worden war. Und Mozillas E-Mail-Client Thunderbird hat schon seit langem runde Tabs. Die Idee ist also nicht neu und schon gar nicht von Chrome inspiriert.

Weiter geht es mit der Darstellung inaktiver Tabs, bei Firefox komplett ohne Tab-Hintergrund, während Chrome bei allen Tabs, ganz egal ob aktiv oder inaktiv, einen Tab-Hintergrund anzeigt. Und wie gehen die beiden Browser mit einer großen Anzahl offener Tabs um? Chrome reduziert die Breite eines jeden Tabs immer weiter. Bei Firefox ändert sich hier nichts zum aktuellen Stand: Firefox besitzt eine Mindestbreite für die Tabs und lässt in der Tab-Leiste scrollen. Zusammenfassend kann man zu keinem anderen Ergebnis kommen, als dass die Unterschiede bezüglich Tabs Unterschiede wie Tag und Nacht sind.

Der Lesezeichen-Stern

Der Lesezeichen-Stern von Firefox wird aus der Adressleiste wandern und wie die anderen Symbole daneben Platz finden. Chrome zeigt den Lesezeichen-Stern wie aktuell Firefox in der Adressleiste an. Bedeutet: Hier gibt es eine große Ähnlichkeit zwischen Firefox und Chrome, welche Mozilla mit Version 25 aus der Welt schaffen wird. So herum wird ein Schuh daraus.

Das neue Menü

Mozilla hat mit Firefox 4 ein neues Menü eingeführt, hier hieß es sofort: Opera! Tatsache war hier allerdings, dass Mozilla das Design dafür veröffentlicht hatte, bevor Opera seinen Browser mit diesem neuen Menü herausbrachte. Wenn Mozilla im Oktober dann Firefox 25 veröffentlichen wird, wiederholt sich dieses Spiel 31 Monate nach der Veröffentlichung von Firefox 4 mit Chrome. Was bleibt auf den ersten Blick festzuhalten: Das Menü befindet sich das tatsächlich an der gleichen Stelle wie bei Chrome und wird durch ein gleich aussehendes Symbol dargestellt. Eine Tatsache, welche sich keinesfalls leugnen lässt, das große Aber allerdings ist: Dabei handelt es sich auch um keine Erfindung von Google. Mit diesem Symbol werden seit Jahren Hauptmenüs dargestellt, insbesondere auf Smartphones und Tablets. Die Wahl fiel sowohl bei Chrome als auch bei Firefox ganz einfach auf ein Symbol, welches die Nutzer kennen und ihnen vertraut vorkommt.

Bedient man nun dieses Menü, unterscheiden sich Firefox und Chrome wieder grundsätzlich voneinander. Während Chrome eine fixe Auflistung der Menü-Einträge in Textform anbietet, zeigt Firefox hier stattdessen Symbole an – und welche Symbole angezeigt werden, das kann der Benutzer selbst anpassen. Die Ähnlichkeit des Menüs geht also genauso gegen Null. Identisch sind lediglich die Entscheidung für das Quasi-Standard-Symbol sowie die Position des Menüs. Was bei der Position allerdings noch gesehen werden sollte: Dadurch kann endlich ein einheitliches Erscheinungsbild von Firefox auf allen Plattformen erreicht werden, ohne das natürliche Erscheinungsbild innerhalb des Betriebssystems kaputtzumachen. Nutzer von OS X hatten beispielsweise bislang ausschließlich die Menüleiste und kein zusätzliches Menü. An der gleichen Stelle wie bei Windows ließe sich das Menü hier gar nicht platzieren, da sich an dieser Stelle die Buttons unter anderem zum Minimieren der Anwendung befinden. Und: Damit befindet sich das Menü nun an der gleichen Stelle wie bei Firefox Mobile für Android und auch hier wieder: Thunderbird. Richtig: Wieso zu Chrome herüberschauen, wenn Mozilla genau das bereits für zwei eigene Produkte umgesetzt hat? Ein wesentliches Ziel hinter dem Australis-Redesign ist nämlich eine gewisse Konsistenz zwischen den verschiedenen Plattformen zu schaffen.

Benutzeroberfläche anpassen

Dieser Punkt gehört mit zum Menü dazu. Der bisherige Dialog zum Anpassen der Benutzeroberfläche wird bei Firefox durch ein neues Fenster ersetzt. Dieses erlaubt es nun sogar, das Menü von Firefox den eigenen Vorstellungen entsprechend anzupassen. Der Vergleich mit Chrome ist hier besonders einfach: Chrome bietet überhaupt keine Möglichkeit, Symbole auch nur zu verschieben, weder im Menü noch in den Symbolleisten.

Das neue Suchfeld

Auch die Suchleiste von Firefox soll optisch für Firefox 25 überarbeitet werden und wird wohl – tatsächlich wie in Chrome – dann am oberen statt am unteren Fensterrand platziert sein. Optisch haben beide Lösungen nach wie vor wenig bis überhaupt nichts gemeinsam, was bereits damit anfängt, dass die Suchleiste von Firefox über die gesamte Fensterbreite geht und die Suchleiste von Chrome eine fixe, nicht sehr hohe Breite besitzt.

Das waren alle geplanten Änderungen für Firefox 25 im Vergleich zu Chrome. Dazu kommen andere grundlegende Unterschiede, in welchen sich Firefox und Chrome sowieso schon unterscheiden. Sowohl optisch als auch von der Position sind die Vor-/Zurück-Buttons genauso wie die Stop-/Reload-Buttons beispielsweise komplett anders umgesetzt. Alles in allem ist es also fast unmöglich, eine besondere Ähnlichkeit zwischen dem Australis-Design von Firefox und Chrome festzustellen, wenn man sich beides einfach mal ansieht statt einfach nur nachzuquatschen, was irgendjemand ohne Ahnung einmal in den Raum geworfen hat. ;)

Mein Wort zum Samstag.

Seit heute bin ich stolzer Besitzer eines Wacom Bamboo Pen, also einem Grafiktablet mit USB Anschluss. Das Gerät funktioniert ohne Installation zusätzlicher Software direkt nach dem Anstecken inkl. aller Features die ich benötige.

Im normalen Zustand kommt bei diesem Tablet der USB Anschluss von der linken Seite über das (mitgelieferte, aber viel zu kurze) USB Kabel. Bei mir steht der Tower (ja, ich bin altmodisch) auf der rechten Seite und ich möchte auch von dort die Kabeleinführung haben.

Über das Tool xsetwacom kann hier Abhilfe geschaffen werden, indem das Tablet um 180° gedreht wird. Dazu müssen wir aber erstmal wissen wie man das Tablet überhaupt identifizieren kann:

[stefan@pc2007 ~]$ xsetwacom --list devices
Wacom Bamboo Connect Pen stylus         id: 14  type: STYLUS    
Wacom Bamboo Connect Pen eraser         id: 15  type: ERASER    
Wacom Bamboo Connect Finger touch       id: 16  type: TOUCH     
Wacom Bamboo Connect Finger pad         id: 17  type: PAD 

Bei mir schnappt sich das Tablet also die Device IDs 14-17. Es ist übrigens richtig das so ein Tablet viele verschiedene Funktionen hat und diese unabhängig voneinander kontrolliert werden können. Der nächste Schritt ist es nun die einzelnen Geräte zu rotieren, was mit folgendem Script möglich ist:

#!/bin/bash
for each in `xsetwacom --list devices | cut -f 2 | cut -d : -f 2`; do
xsetwacom --set $each Rotate half
done

Das Script einfach an die gewünschte Stelle im Dateisystem kopieren und ausführbar machen, nach dem Start sollte sich das Tablet auf magische weiße richtig verhalten. Das Script kann auch automatisch über eure Desktopumgebung gestartet werden, so dass ihr es nicht nach jedem Login selbst erneut starten müsst.

In der ursprünglichen Version des Scripts habe ich die Device ID genutzt um das Gerät zu verwalten, das hat sich als blöde Idee herausgestellt: Diese IDs sind dynamisch, was dafür sorgt das beim Aufruf von xsetwacom zuverlässig der X-Server abgeschossen wird falls es sich bei dem Gerät nicht um ein Wacom Gerät handelt!

Seit heute bin ich stolzer Besitzer eines Wacom Bamboo Pen, also einem Grafiktablet mit USB Anschluss. Das Gerät funktioniert ohne Installation zusätzlicher Software direkt nach dem Anstecken inkl. aller Features die ich benötige.

Im normalen Zustand kommt bei diesem Tablet der USB Anschluss von der linken Seite über das (mitgelieferte, aber viel zu kurze) USB Kabel. Bei mir steht der Tower (ja, ich bin altmodisch) auf der rechten Seite und ich möchte auch von dort die Kabeleinführung haben.

Über das Tool xsetwacom kann hier Abhilfe geschaffen werden, indem das Tablet um 180° gedreht wird. Dazu müssen wir aber erstmal wissen wie man das Tablet überhaupt identifizieren kann:

[stefan@pc2007 ~]$ xsetwacom --list devices
Wacom Bamboo Connect Pen stylus         id: 14  type: STYLUS    
Wacom Bamboo Connect Pen eraser         id: 15  type: ERASER    
Wacom Bamboo Connect Finger touch       id: 16  type: TOUCH     
Wacom Bamboo Connect Finger pad         id: 17  type: PAD 

Bei mir schnappt sich das Tablet also die Device IDs 14-17. Es ist übrigens richtig das so ein Tablet viele verschiedene Funktionen hat und diese unabhängig voneinander kontrolliert werden können. Der nächste Schritt ist es nun die einzelnen Geräte zu rotieren, was mit folgendem Script möglich ist:

#!/bin/bash
for each in `xsetwacom --list devices | cut -f 2 | cut -d : -f 2`; do
xsetwacom --set $each Rotate half
done

Das Script einfach an die gewünschte Stelle im Dateisystem kopieren und ausführbar machen, nach dem Start sollte sich das Tablet auf magische weiße richtig verhalten. Das Script kann auch automatisch über eure Desktopumgebung gestartet werden, so dass ihr es nicht nach jedem Login selbst erneut starten müsst.

In der ursprünglichen Version des Scripts habe ich die Device ID genutzt um das Gerät zu verwalten, das hat sich als blöde Idee herausgestellt: Diese IDs sind dynamisch, was dafür sorgt das beim Aufruf von xsetwacom zuverlässig der X-Server abgeschossen wird falls es sich bei dem Gerät nicht um ein Wacom Gerät handelt!

Mit Firefox 20 hat Mozilla ein neues Download-Panel eingeführt und das alte Download-Fenster durch eine überarbeitete Download-Ansicht in der Bibliothek ersetzt. Zwei häufig genannte Kritikpunkte an der neuen Lösung: Die Limitierung auf maximal drei gleichzeitig sichtbare Downloads sowie das Fehlen der Anzeige der Download-Geschwindigkeit. Das Add-on Download Panel Tweaks verbessert das Download-Panel unter anderem in diesen Punkten.

Download Panel Tweaks nennt sich die Erweiterung, welche das mit Firefox 20 eingeführte Download-Panel um ein paar Dinge verbessert. So werden standardmäßig maximal zehn statt drei Downloads gleichzeitig angezeigt, wobei sich dieser Wert genauso wie die maximale Höhe des Panels über die Einstellungen der Erweiterung konfigurieren lässt. Auch die Download-Geschwindigkeit wird mit dieser Erweiterung standardmäßig angezeigt, wobei auch das Format dieser Statuszeile konfiguriert werden kann. Das Betätigen der Tastenkombination Strg + J respektive Cmd + J auf OS X öffnet mit dieser Erweiterung außerdem das Download-Panel und nicht die Download-Ansicht in der Bibliothek. Die Erweiterung erlaubt noch ein paar weitere Einstellungen wie das Zeit-Format der verbleibenden Zeit einzustellen.

via: ghacks.net

Nun, meine System-Logs sind mal wieder voll: Also, was machen wir? Die Log Dateien selbst zu Löschen wäre fatal, da diese nicht neu angelegt werden, sprich man hat sich das System erfolgreich zerschossen. Also wird der Inhalt der Dateien ins “nichts” geschrieben, sodass die Dateien und der deren Zugriffsrechte weiterhin intakt bleiben.
Zuerst wechseln wir in das Entsprechende Verzeichnis, unter Debian ist dies /var/log/ :

$ cd /var/log

Jetzt kommt das Spannende an der Geschichte: Durch ‘test’ lokalisieren wir die Dateien, überprüfen sie und löschen sie, in einer Schleife.

$ for i in *
>  do test -f $i -a -s $i && > $i
>  done

Gib das bitte genauso ein, da nach dem ersten Kommando die dort mit geschriebenen “>” kommen.
Nun wollte ich dass ja nicht immer machen. Also muss das ganze in die Crontab.

$ sudo crontab -e
Password: 
#[..]Inhalt der Crontab[..]
#Am ende der Datei eintragen: 
0 0 * * 1 cd /var/log && for i in *; do test -f $i -a -s $i && > $i; done

Durch test wird, wie schon erwähnt, auf die jeweilige Datei geprüft. Der Inhalt der Dateien werden dann ins “nichts” durch “> $i” geschrieben.
Nun wird jede Woche um 00:00 der Cronjob ausgeführt, sprich die Dateien werden geleert. Aber Achtung: Derartige Spielchen könnten das System ernsthaft gefährden, würde es also nur auf PC empfehlen, welche typischerweise nicht in die Hände anderer kommen.

Soweit wünsche ich viel Spaß und einen Sonnigen Freitag morgen! :)

7. Juni 2013

Viele Programme besitzen einen Export in das PDF - Format. Jedoch nicht alle. Da oft jedoch darauf Wert gelegt wird, Dokumente im PDF - Format zu versenden braucht man in dieser Situation eine andere Lösung. Es besteht die Möglichkeit, einen virtuellen Drucker anzulegen, mit dem sich ein PDF erzeugen lässt. An dieser Stelle möchte ich erklären, wie das geht.

Voraussetzungen

Um die hier dargestellte Lösung nutzen zu können bedarf es eines aktiven CUPS - System auf dem Computer. Um das zu ermitteln, kann man in einem beliebigen Browser die Adresse localhost:631 angeben. Erhält man folgende Seite, so kann davon ausgegangen werden, dass CUPS aktiv ist. Auswahl_004 Alternativ kann man mit folgenden Befehlen auch ermitteln, ob ein CUPS - Server auf dem Rechner läuft: Debian - Systeme: sudo service cups status

Andere Systeme: sudo /etc/init.d/cups status

Installation

Prinzipiell besitzen die größeren Distrubitionen das benötigte Paket direkt in ihren Paketquellen. Hierzu wird beispielsweise unter Ubuntu/ Debian das Paket cups-pdf genutzt. Wie gewohnt lässt sich über folgenden Befehl das Paket installieren sudo apt-get install cups-pdf

Sollte kein Paket vorhanden sein, kann es auch unter http://www.cups-pdf.de/download.shtml bezogen werden. Nach der Installation muss CUPS neu gestartet werden, was mit den folgenden Befehlen (je nach System) getan werden kann: Debian - Systeme: sudo service cups restart

Andere Systeme: sudo /etc/init.d/cups restart

Konfiguration

Nachdem CUPS neu gestartet wurde, sollte der Drucker auch schon auftauchen. Zum Beispiel unter XFCE ist dies unter Einstellungen -> Drucker zu finden: Printers - localhost_006 Prinzipiell kann man die Konfiguration, welche unter /etc/cups/cups-pdf zu finden ist, so belassen wie sie ist. Dann werden die generierten PDF - Dokumente unter /home/user/PDF/Dokumentname.pdf abgelegt. Will man einen anderen Pfad angeben, muss man diesen in der Konfiguration anstelle von ${HOME}/PDF angeben. Nutzung

Der "Drucker" wird wie ein am PC angeschlossener Drucker verwendet. Lediglich der "Druck" dauert etwas länger, bis die Datei endgültig im Verzeichnis abgelegt wird, kann es etwas dauern. Während des Druckvorgangs ist die Datei nicht korrekt lesbar. Sollte der Druck abgeschlossen sein, wird die Datei ganz normal zu Öffnen sein. Hinweis

Die Dokumente scheinen bisher alle Korrekt angezeigt zu werden jedoch scheint es, dass die Dokumente anders kodiert werden, das heißt, kopiert man einen Text aus dem Dokument kann es sein, dass auf einmal nurnoch Salat da ist (ASCII - Zeichen - Salat anstelle des erwarteten Textes). Haftungsausschluss: Ich übernehme keinerlei Haftung für Schäden, die durch Befolgung der Schritte dieses Beitrages auftreten können. Es können auch hier Fehler und Unstimmigkeiten auftreten, die Fehler veursachen können. Ich habe die Tutorials in der Regel so erstellt, wie ich es bei meinem System auch durchgeführt hatte. Eventuelle Probleme sind dabei je nach Konfiguration möglich. Fehler gefunden? Ich bin für einen Kommentar dankbar .

Viele Programme besitzen einen Export in das PDF - Format. Jedoch nicht alle. Da oft jedoch darauf Wert gelegt wird, Dokumente im PDF - Format zu versenden braucht man in dieser Situation eine andere Lösung. Es besteht die Möglichkeit, einen virtuellen Drucker anzulegen, mit dem sich ein PDF erzeugen lässt. An dieser Stelle möchte ich erklären, wie das geht.

Voraussetzungen

Um die hier dargestellte Lösung nutzen zu können bedarf es eines aktiven CUPS - System auf dem Computer. Um das zu ermitteln, kann man in einem beliebigen Browser die Adresse localhost:631 angeben. Erhält man folgende Seite, so kann davon ausgegangen werden, dass CUPS aktiv ist. Auswahl_004 Alternativ kann man mit folgenden Befehlen auch ermitteln, ob ein CUPS - Server auf dem Rechner läuft: Debian - Systeme: sudo service cups status

Andere Systeme: sudo /etc/init.d/cups status

Installation

Prinzipiell besitzen die größeren Distrubitionen das benötigte Paket direkt in ihren Paketquellen. Hierzu wird beispielsweise unter Ubuntu/ Debian das Paket cups-pdf genutzt. Wie gewohnt lässt sich über folgenden Befehl das Paket installieren sudo apt-get install cups-pdf

Sollte kein Paket vorhanden sein, kann es auch unter http://www.cups-pdf.de/download.shtml bezogen werden. Nach der Installation muss CUPS neu gestartet werden, was mit den folgenden Befehlen (je nach System) getan werden kann: Debian - Systeme: sudo service cups restart

Andere Systeme: sudo /etc/init.d/cups restart

Konfiguration

Nachdem CUPS neu gestartet wurde, sollte der Drucker auch schon auftauchen. Zum Beispiel unter XFCE ist dies unter Einstellungen -> Drucker zu finden: Printers - localhost_006 Prinzipiell kann man die Konfiguration, welche unter /etc/cups/cups-pdf zu finden ist, so belassen wie sie ist. Dann werden die generierten PDF - Dokumente unter /home/user/PDF/Dokumentname.pdf abgelegt. Will man einen anderen Pfad angeben, muss man diesen in der Konfiguration anstelle von ${HOME}/PDF angeben. Nutzung

Der "Drucker" wird wie ein am PC angeschlossener Drucker verwendet. Lediglich der "Druck" dauert etwas länger, bis die Datei endgültig im Verzeichnis abgelegt wird, kann es etwas dauern. Während des Druckvorgangs ist die Datei nicht korrekt lesbar. Sollte der Druck abgeschlossen sein, wird die Datei ganz normal zu Öffnen sein. Hinweis

Die Dokumente scheinen bisher alle Korrekt angezeigt zu werden jedoch scheint es, dass die Dokumente anders kodiert werden, das heißt, kopiert man einen Text aus dem Dokument kann es sein, dass auf einmal nurnoch Salat da ist (ASCII - Zeichen - Salat anstelle des erwarteten Textes). Haftungsausschluss: Ich übernehme keinerlei Haftung für Schäden, die durch Befolgung der Schritte dieses Beitrages auftreten können. Es können auch hier Fehler und Unstimmigkeiten auftreten, die Fehler veursachen können. Ich habe die Tutorials in der Regel so erstellt, wie ich es bei meinem System auch durchgeführt hatte. Eventuelle Probleme sind dabei je nach Konfiguration möglich. Fehler gefunden? Ich bin für einen Kommentar dankbar .

Viele Programme besitzen einen Export in das PDF - Format. Jedoch nicht alle. Da oft jedoch darauf Wert gelegt wird, Dokumente im PDF - Format zu versenden braucht man in dieser Situation eine andere Lösung. Es besteht die Möglichkeit, einen virtuellen Drucker anzulegen, mit dem sich ein PDF erzeugen lässt. An dieser Stelle möchte ich erklären, wie das geht.

Voraussetzungen

Um die hier dargestellte Lösung nutzen zu können bedarf es eines aktiven CUPS - System auf dem Computer. Um das zu ermitteln, kann man in einem beliebigen Browser die Adresse localhost:631 angeben. Erhält man folgende Seite, so kann davon ausgegangen werden, dass CUPS aktiv ist. Auswahl_004 Alternativ kann man mit folgenden Befehlen auch ermitteln, ob ein CUPS - Server auf dem Rechner läuft: Debian - Systeme: sudo service cups status

Andere Systeme: sudo /etc/init.d/cups status

Installation

Prinzipiell besitzen die größeren Distrubitionen das benötigte Paket direkt in ihren Paketquellen. Hierzu wird beispielsweise unter Ubuntu/ Debian das Paket cups-pdf genutzt. Wie gewohnt lässt sich über folgenden Befehl das Paket installieren sudo apt-get install cups-pdf

Sollte kein Paket vorhanden sein, kann es auch unter http://www.cups-pdf.de/download.shtml bezogen werden. Nach der Installation muss CUPS neu gestartet werden, was mit den folgenden Befehlen (je nach System) getan werden kann: Debian - Systeme: sudo service cups restart

Andere Systeme: sudo /etc/init.d/cups restart

Konfiguration

Nachdem CUPS neu gestartet wurde, sollte der Drucker auch schon auftauchen. Zum Beispiel unter XFCE ist dies unter Einstellungen -> Drucker zu finden: Printers - localhost_006 Prinzipiell kann man die Konfiguration, welche unter /etc/cups/cups-pdf zu finden ist, so belassen wie sie ist. Dann werden die generierten PDF - Dokumente unter /home/user/PDF/Dokumentname.pdf abgelegt. Will man einen anderen Pfad angeben, muss man diesen in der Konfiguration anstelle von ${HOME}/PDF angeben. Nutzung

Der "Drucker" wird wie ein am PC angeschlossener Drucker verwendet. Lediglich der "Druck" dauert etwas länger, bis die Datei endgültig im Verzeichnis abgelegt wird, kann es etwas dauern. Während des Druckvorgangs ist die Datei nicht korrekt lesbar. Sollte der Druck abgeschlossen sein, wird die Datei ganz normal zu Öffnen sein. Hinweis

Die Dokumente scheinen bisher alle Korrekt angezeigt zu werden jedoch scheint es, dass die Dokumente anders kodiert werden, das heißt, kopiert man einen Text aus dem Dokument kann es sein, dass auf einmal nurnoch Salat da ist (ASCII - Zeichen - Salat anstelle des erwarteten Textes). Haftungsausschluss: Ich übernehme keinerlei Haftung für Schäden, die durch Befolgung der Schritte dieses Beitrages auftreten können. Es können auch hier Fehler und Unstimmigkeiten auftreten, die Fehler veursachen können. Ich habe die Tutorials in der Regel so erstellt, wie ich es bei meinem System auch durchgeführt hatte. Eventuelle Probleme sind dabei je nach Konfiguration möglich. Fehler gefunden? Ich bin für einen Kommentar dankbar .

Auf meinem Netbook nutze ich derzeit Chromium, da mein Lieblingsbrowser Opera zu zäh läuft und Midori leider regelmäßig abstürzt. Unter Opera nutze ich schon seit Jahren die Mausgesten. Chromium unterstützt von Haus aus keine und die Erweiterungen die ich auf die schnelle gefunden habe, gefallen mir alle nicht so richtig. In den Weiten des Internets bin ich dann auf Easystroke gestoßen.

Der Vorteil an Easystroke ist, dass man damit eigentlich jedes Programm mit Mausgesten ausrüsten kann. Der Nachteil, es ist eben kein Plugin, sondern ein extra Programm das gestartet werden muss. Naja auf eines mehr oder weniger kommt es bei halbwegs aktuellen Rechnern auch nicht an.

Nachdem man das Tool installiert und gestartet hat, wird einem erst einmal eine mehr oder weniger leere grafische Oberfläche angezeigt. Als erstes klicken auf den Reiter “Preferences” und wählen unter “Behavior” die Schaltfläche “Gesture Button” aus. Im nun erscheinenden Fenster wählen wir recht unten anstelle des voreingestellten Button 2 (Mausrad) Button 3 aus (rechte Maustaste) und bestätigen mit “OK”. Natürlich kann man hier verwenden was man will. Wer das Mausrad nutzen will kann auch Button 2 lassen usw.

Nun wechseln wir wieder auf den Reiter “Actions” und klicken auf den kleinen Pfeil neben Applications und öffnen somit das Untermenü.

easystroke_2

Als nächstes starten wir das gewünschte Programm, dass wir mit Mausgesten ausstatten wollen. Danach klicken wir unter easystroke auf die Schaltfläche “Add Application”. Nun sollte sich der Mauszeiger in ein Fadenkreuz verwandelt haben, mit welchem wir das gewünschte Fenster klicken. In diesem Fall Chromium. Nun sollte in Easystroke neben dem bereits vorhandenen Eintrag “default” auch Chromium gelistet sein.

Diesen Eintrag wählen wir nun mit einem Mausklick aus. Wenn der Eintrag markiert ist, klicken wir in easystroke auf die Schaltfläche “Add Action”, welche man am unteren Rand findet. Nun erscheint bereit die erste Aktion, welche den voreingestellten Namen “chromium Gesture 1” trägt. Diesen Namen ändern wir als erstes. Zum Beispiel in “Zurück”, da wir als erstes die Mausgeste anlegen wollen, die die vorherige Internetseite aufruft. Nun wechseln wir mit TAB in die Spalte “Type” Nun erhalten wir eine Auswahlliste mit diversen Einträgen. Hier kann man sich je nach Anwendung, die mit Mausgesten ausgestattet werden soll, austoben. Bei diesem Beispiel ist “Key” das was wir brauchen. Nachdem wir das ausgewählt den Cursortasten ausgewählt haben (alternativ mit der Maus), erscheint in der Spalte Details der Eintrag “Key combination…”. An dieser Stelle drücken wir nun die gewünschte Tastenkombination. In diesem Fall wäre dies die Taste ALT und die Cursortaste nach Links. Die genauen Shortcuts für Chrome/Chromium kann man sich hier ansehen. Das Ganze müsste nun wie folgt aussehen.

easystroke_3

Nun müssen wir nur noch die Mausgeste bestimmen, mit der dieser Eintrag ausgeführt wird. Da ich, wie schon angemerkt, ein Fan von Opera bin, kopiere ich einfach mal die Mausgesten dieses Browsers. Diese findet man hier. Für unser Beispiel müssten wir also die rechte Maustaste drücken, gedrückt halten und mit der Maus eine Bewegung nach Links ausführen. Also gut. Damit auch easystroke das kapiert klicken wir nun auf “Record Stroke”. Hier erhalten wir den Hinweis, dass nun alles aufgezeichnet wird, was wir nun mit der Maus anstellen. Also klicken wir auf die rechte Maustaste, halten diese und ziehen die Maus ein Stück nach links und lassen die rechte Maustaste wieder los. Nun sollte der von uns erstelle Eintrag für “Zurück” wie folgt aussehen.

easystroke_4

Das wiederholen wir nun für alle gewünschten Mausgesten. Mehr gibt es eigentlich nicht zu tun. Easystroke zeigt in den mit Mausgesten ausgestatteten Anwendungen beim Ausführen der Gesten diese auch grafisch an. Dies kann man im Reiter “Preferences” unter “Apperence” ändern bzw. abstellen. Hier gibt es auch eine Möglichkeit anzugeben, dass easystroke automatisch gestartet werden soll. Denn läuft easystroke nicht, funktionieren die Mausgesten auch nicht.

Hier eine Liste von grundsätzlich für jeden Nutzer geeigneten, praktischen Apps für ein Android-Smartphone.


Und weiter gehts:

  • FileManager
    Ein ziemlich guter Dateimanager
  • Kobo
    Falls man einen eBook-Reader hat, kann man auch am Androiden auf die Bibliothek zugreifen
  • K-9 Mail bzw K-@ Mail free / K-@ Mail Pro
    Schöne und sehr funktionale Mail-Apps. K-9 ist open-source, K-@ gibt es als free und Premium-Version, die ich nun schließlich auch nutze.
  • Lookout Ad Network Detector
    Sehr gute Idee: Meldet Apps, die außerhalb der App Werbung anzeigen oder ungefragt persönliche Daten sammeln. Kann auch Links und Nummern automatisch auf „Bösartigkeit“ prüfen.
  • mitfahrgelegenheit.de
    Auch wenn Mitfahrgelegenheit sich mit dem Einführen von Provision und verpflichtendem Buchungssystem unbeliebt gemacht hat, findet man doch immernoch sehr viele Fahrten über das Portal.
  • OMG! Ubuntu! for Android
    Informiert einen über neue Beiträge von OMG! Ubuntu
  • Sicher reisen
    Nachrichten und Tipps vom Auswärtigen Amt
  • TripAdvisor
    Zeigt Bars, Restaurants, Cafés und andere interessante Orte in fremden Städten an
  • Zoll und Reise
    Zeigt Einfuhr- und Einreisebedingungen und -Informationen an – kann für den Urlaub ganz praktisch sein.

Vielleicht auch ganz interessant:

  • SeriesGuide
    Bietet komfortabel die Möglichkeit, Informationen zu verschiedenen Fernsehserien zu organisieren und sich Favoriten anzulegen und deinen Fortschritt zu verwalten (gesehen / archiviert)
  • Nespresso
    Zum Informieren und Bestellen
  • TeamViewer
    Mit der App kann man einen PC fernsteuern, auf dem ebenfalls TeamViewer ausgeführt wird.

Natürlich gibt es noch etliche weitere Apps, die ich empfehlen kann, aber da kommt es immer auch auf den Verwendungszweck an. So braucht ja logischerweise nicht jeder den WordPress-Blogclient etc.

Als Debian Nutzer komme habe ich manchmal das Problem, dass mein Rechner mir nicht schnell genug in ein Desktop Environment bootet. Mich stört dass zwar nicht wirklich, aber 14 Leute haben gestern den Weg über Google mit den Wörtern “Lxde automatisch”und “starten” hierhin gefunden. Um direkt durch die Anmeldung des Logins durch GDM3,XDM4 und KDM3 zu rutschen, benötigt man nur das eigene User-Passwort.
Unter LXDE4 dies hier suchen: Anwendungsmenü -> Einstellungen -> “Benutzer und Gruppen”. Mit Gnome 3 sucht man entsprechend in den System-Einstellungen, nach dem gleichen Eintrag. Nach dem öffnen sieht das so aus:
Benutzer und Gruppen
Jetzt geht man bei “Passwort: ” auf Ändern. Dann gibt man einfach sein Passwort ein, und betätigt unten das Kästchen “Nicht bei der Anmeldung nach einem Kennwort fragen”.
Voila.
Bei “Slim” Editierst Du einfach die Datei /etc/slim.conf:

$ sudo nano /etc/slim.conf
Suchst nach...

# Automatically login the default user (without entering
# the password. Set to "yes" to enable this feature
auto_login yes

und schreibst bei auto_login “yes” hin, was ich hier schon getan habe.
Mit freundlichen Grüßen :)

Wie üblich gab es eine Woche nach der Veröffentlichung des Humble Indie Bundle 8 ein Update, welches 4 weitere Spiele dem Bundle hinzufügte. Diese erhält man, wenn man mehr als den aktuellen Durchschnitt zahlt bzw. bereits zahlte.

„Tiny & Big in Grandpa's Leftovers“ ist ein interessantes 3-D-Spiel, bei dem Tiny, ausgerüstet mit Greifhaken, Laserschneider und Raketenwerfer, den bösen Big verfolgt, der die magische Unterhose von Tinys Großvater gestohlen hat. Im Spiel geht es darum, die Umwelt physikalisch so zu verändern, dass man zum Ziel kommt.

„Intrusion 2“ ist ein schnelles Actionspiel, bei dem man sich seitwärtsscrollend und schießend den Weg durch das Level bahnt. Besonders ist dabei die Grafik und die Gegnergestaltung, die auf einiges an Kreativität schließen lässt. Ich habe es noch nicht gespielt, aber es erinnert etwas an „Turrican“ vom Spielprinzip.

„English Country Tune“ ist ein Puzzlespiel mit über 100 Leveln. Eingebracht in das Spiel sind verschiedene Ideen aus dem Puzzlegenre wie Blöcke schieben oder Muster nachbauen.

Der letzte große Hit ist „Oil Rush“, das bekannte Strategiespiel, in dem in einer Welt, in der die Öl-Ressourcen zur Neige gehen, man um jeden Tropfen kämpfen muss.

Das Humble-Angebot gibt es nur noch 4 Tage!

Sunbird war der Name einer eigenständigen Kalender-Anwendung von Mozilla. Vor drei Jahren wurde die Entwicklung eingestellt, nun wurde der verbleibende Code aus Mozillas Codebasis entfernt. Mit Lightning gibt es allerdings nach wie vor eine Kalender-Erweiterung für Thunderbird.

Diese Meldung dürfte für die Wenigsten überhaupt eine nennenswerte Relevanz besitzen, doch ist es irgendwo auch ein historischer Moment – nachdem der letzte Code aus Mozillas Repository entfernt worden ist, ist das Ende von Sunbird endgültiger als es das sowieso schon war. Mozilla hatte die Entwicklung im März 2010 aus Ermangelung an Programmierern eingestellt, die Version 1.0 Beta 1 war die letzte Version, welche jemals veröffentlicht worden war.

Bildquelle: mozilla.org

Einen Kalender gibt es von Mozilla nach wie vor – Lightning nennt sich die Erweiterung, welche Mozillas E-Mail-Client Thunderbird um einen Kalender erweitert. Beide Anwendungen waren damals Teil des Mozilla Calendar-Projekts, welches 2001 ins Leben gerufen worden war. Ursprünglich sollte der Kalender in die Mozilla Application Suite integriert werden, wovon man allerdings Abstand genommen hatte, nachdem entschlossen worden war, auf voneinander unabhängige Programme zu setzen, woraufhin Firefox und Thunderbird entstanden sind.

6. Juni 2013

Wer mit LibreOffice arbeitet stand vielleicht schon mal vor der Aufgabe mehrere Dokumente ausdrucken zu müssen.

Genau das wollte ich gestern musste aber feststellen das das nicht so einfach ist. Für meinen Sohn sollte ich 23 einzelne Dokumente für eine Projektmappe ausdrucken. Das markieren und drucken über die rechte Maustaste wie man es aus Windows kennt sucht man in Linux vergeblich. Nach kurzem Überlegen habe ich dann aber eine für mich akzeptable Lösung geschaffen. LibreOffice bietet über die Konsole die Möglichkeit über den Parameter -p ein Dokument an den Standarddrucker zu senden. Man könnte alle Dokumente aus einem Ordner an den Drucker senden lassen:

[codesyntax lang=”bash”]

libreoffice -p "*.odt"

[/codesyntax]

ist aber nicht sehr praktisch weil man vorher die zu druckenden Dokumente in den Ordner kopieren müsste.

Besser und praktischer geht es mit einem kleinen Script das ich mir für diesen Zweck geschrieben habe:

[codesyntax lang=”bash”]

#!/bin/bash

DRUCK=$(zenity --file-selection --multiple --separator=" ")
if [ $? = "1" ] ; then exit 1 ; fi
for i in  $DRUCK 
do
libreoffice -p "$i" 2>>.error
done
exit 0

[/codesyntax]

Über ein Zenity Auswahldialog markiert man die Dokumente die ausgedruckt werden sollen. Das markieren mehrerer Dokumente wird wie in einem Dateimanager durch festhalten der STRG Taste erreicht. Nachdem die gewünschten Dokumente ausgewählt wurden wird durch anklicken von OK der Druck ausgelöst.

Das Script übergibt wie man erkennen kann alle zuvor gewählten Dokumente die in der Variable $DRUCK gespeichert sind nacheinander als Parameter an die Druckfunktion von LibreOffice. Wenn man das Script im /usr/bin abspeichert und ein Tastenkürzel für den Aufruf anlegt, kann man zukünftig komfortabel mehrere Dokumente an den Standarddrucker senden.

 

The post LibreOffice – Mehrere Dokumente gleichzeitig drucken appeared first on Radiolauscher.de.

Libreoffice seitliche WerkzeugleisteWenn ich mit vielen über LibreOffice spreche, bekomme ich sehr häufig zu hören, dass die Oberfläche doch deutlich in die Jahre gekommen ist und längst nicht mehr so modern aussieht, wie es der große Konkurrent Microsoft Office in den letzten Jahren mit der neuen Ribbon-Oberfläche zeigt.

Dies ist zwar mit Sicherheit Geschmackssache und für die Designänderungen bekam Microsoft in den Anfangszeiten zu Office 2007 auch einiges an Kritik, spätestens seit Office 2013 hat man hier meiner Meinung nach aber optisch ein gelungenes Paket geschnürt, wogegen die freien und offenen Alternativen etwas alt aussehen.

Die Idee ist zwar keineswegs neu, schließlich hat man bei Apache OpenOffice bereits ähnliche Vorhaben geäußert, bei dem die Hauptarbeit hauptsächlich aus dem von IBM finanzierten Lotus Symphony stammt. Dennoch ist natürlich ein neuerer und hoffentlich etwas moderneres bzw. praktischeres Design immer gerne gesehen und so gibt der LibreOffice-Entwickler Leif Lodahl in einem Blogpost einige Einblicke in die zukünftigen Pläne.

Calc3

Allerdings solltet ihr euch nicht zuviel Hoffnung auf ein baldiges Erscheinen machen, denn der Code stammt hauptsächlich aus dem Jahre 2008 und wurde seitdem kaum weiterentwickelt. Bis er also optimal an LibreOffice angepasst ist, wird noch ein wenig Zeit ins Land ziehen. In LibreOffice 4.1 wird die Designänderung wohl als experimentelle Funktion integriert. Weiterhin werden über 200 Dialoge mit einem neuen Widget-Layout umgestaltet.

5. Juni 2013

Heute fand ich den weg auf den Blog von Seeeseeky. In einem nicht ganz so alten Artikel findet sich ein interessanter Beitrag, welcher zwar nicht in die Tiefe geht, aber ein gutes Projekt vorstellt.
Dieses Projekt heißt “Dive”. Dive Visualisiert Musik in Form von sich bewegenden Partikeln in allen möglichen Farben. Diese sind in allen Variationen einstellbar.
Das Projekt wurde im Allgemeinen mit OpenGL und HTML5 Realisiert, was schon das mächtige an dieser Api zeigt. Viele aber haben ein Problem mit bestimmten Funktionen von HTML5, wie das Video-Format von Google, die Datenspeicherung auf dem Client-PC, Allgemeine API Sicherheit.

Was wäre eine Automation ohne das Zeitgesteuerte Schalten von Aktoren?

Eine Vorraussetzung für das Zeigesteuerte Schalten ist die richtige Uhrzeit. Um zu prüfen ob die Uhrzeit stimmt, reicht ein einfaches date auf der Kommandozeile aus. Bei der Installation von wheezy auf meinem Raspberry Pi hatte ich versehentlich die Zeitzone falsch gesetzt, dies konnte ich über dpkg-reconfigure tzdata korrigieren.

Einfaches Zeitgesteuert Schalten
In meiner fhem Konfiguration wurde die LampeFlur bereits definiert und konnte über Weboberfläche geschaltet werden.
Nun sollte Sie gegen 16 Uhr ein und um 22 Uhr ausgeschaltet werden, hierfür waren nur zwei Einträge in der fhem.cfg nötig:

Lampe einschalten
define LapmpeFlurAn at 16:00 set LampeFlur on;

Lampe ausschalten
define LapmpeFlurAus at 22:00 set LampeFlur off;

Laut der fhem Dokumentation soll es auch möglich mehrere Lampen gleichzeitig zu schalten, das hatte ich jedoch nicht ausprobiert. Das Schalten mehrerer Aktoren würde wie folgt aussehen:
define LapmpeFlurAn at 16:00 set LampeFlur on;;set LampeKueche on

Schalten über Sonnenaufgang / Sonnenuntergang
Da der Sonnenuntergang an jeden Tag zu einer anderen Uhrzeit stattfindet, ist es hilfreich die Lampe über den Sonnenaufgang bzw Sonnenuntergang zu schalten.

Der Sonnenuntergang / Sonnenaufgang findet nicht nur täglich zu einer zu einer anderen Zeit statt, sondern ist auch noch Ortsabhängig. Damit nun fhem die Aktoren entsprechend schalten kann, muss folgendes in der fhem.cfg folgendes hinterlegt werden.

attr global latitude 53.31698
attr global longitude 7.48216

Die latitude und longitude Informationen können über diverse Seiten im Internet ermittelt werden.

Um letztendlich die Lampe zu schalten reicht folgender Einzeiler.

define LampeFlurAn at *{sunset(0,"17:00","22:00")} set LampeFlur on
define LampeFlurAus at *{sunrise(0,"05:00","07:30")} set LampeFlur off

In der 1. Zeile wird die LampeFlur eingeschaltet, wenn der Sonnenuntergang zwischen 17 Uhr und 20 Uhr liegt. Ausgeschaltet wird LampeFlur wenn der Sonnenaufgang zwischen 05:00 Uhr und 07:30 Uhr liegt.

Für Penetrationstest im IT-Umfeld gab es bis vor einiger Zeit die Distribution „Backtrack“. Mittlerweile steht der Nachfolger dieser zur Verfügung. Er trägt dabei den Namen „Kali Linux“. Die Basis für Kali Linux bildet dabei ein Debian, der Standard Desktop ist GNOME.

Kali Linux mit GNOME

Kali Linux mit GNOME

In der Distribution sind dabei viele Werkzeuge für unterschiedlichste Zwecke, wie forensische Auswertungen, Reverse Engineering, Sniffing, Spoofing und Stress Test Werkzeuge enthalten. Neben der Möglichkeit das ganze als Live CD zu benutzen, gibt es auch einen grafischen Installer. Bezogen werden kann Kali Linux unter http://www.kali.org. Es existieren dabei x86-Versionen für 32- und 64 Bit. Daneben wird auch die ARM Architektur unterstützt.

Weitere Informationen gibt es unter:
https://de.wikipedia.org/wiki/Kali_Linux
http://www.pro-linux.de/news/1/19561/kali-linux-10-erscheint-als-nachfolger-von-backtrack.html

4. Juni 2013

Ich merke mir irgendwie schlecht, wie die richtige Reihenfolge für die Einträge in die Crontab ist. Ist die erste Stelle nun für die Minuten zuständig? Oder waren es die Stunden? Jedes mal das selbe Drama. Lars von Suckup.de hat deswegen heute einen Tipp in seinem Blog veröffentlicht, mit dem man diese Unsicherheit aus dem Weg räumen kann.

An dieser Stelle möchte ich nicht noch einen Tipp für cron veröffentlichen, sondern eine Alternative vorstellen. Runwehn. Hiermit finde ich es wesentlich angenehmer einen Cronjob zu erstellen.

Nehmen wir mal an, man möchte etwas täglich um 5.30 Uhr am Morgen ausführen. Hier wäre der Eintrag RUNWHEN=“,H=5,M=30” nötig. Oder es soll nur etwas am fünften Tag vor Monatsende ausgeführt werden? Dann wäre RUNWHEN=“,d-5” das Richtige.

Das Ganze lässt sich beliebig kombinieren. Um zu zeigen, was neben H,M und d noch alles möglich ist, hier mal ein Auszug aus meiner Konfigurationsdatei:

# The constraint string consists of a sequence of unit constraints. Each unit
# constraint consists of a comma, one of the following letters indicating which
# unit is constrained:
#
# * y: year.
# * m: month (in the range 1-12).
# * d: day of the month (in the range 1-28, 1-29, 1-30, or 1-31, as
# appropriate for the month in question).
# * w: day of the week (in the range 0-6, with 0 representing Sunday).
# * H: hour of the day (in the range 0-23).
# * M: minute of the hour (in the range 0-59).
# * S: second of the minute (in the range 0-59).
#
# and finally one of the following:
#
# * =n: matches times when the given unit is exactly n.
# * -n: matches times when the given unit is exactly m, where m+n is one
# more than the largest value of the unit. (For example, n+m=24 for H,
# so ,H-1 is equivalent to ,H=23.
# * /n: matches times when the given unit is divisible by n.

Persönlich finde ich das irgendwie angenehmer. Ist aber vermutlich Geschmackssache. Einen etwas ausführlicheren Artikel zu dem Thema Runwhen findet man im Wiki von Uberspace.