Archive

Posts Tagged ‘Beschleuniger’

Ubuntu: Akustische Signale für länger laufende Befehle

25. Januar 2015 1 Kommentar

So manche Aktion auf der Kommandozeile braucht ihre Zeit. Um zügig voran zu kommen kann man entweder immer wieder nachschauen ob das Programm seine Arbeit erledigt hat oder man bleibt gleich vor dem Computer und wartet. Da man meist besseres zu tun hat sind beide Optionen nicht ideal.

Seit langer Zeit gibt es unter Linux den Befehl beep. Hängt man diesen mit zwei & ans Ende einer Befehlszeile wird zuerst der eigentliche Befehl ausgeführt und am Ende ertönt ein schriller Ton. Auf einem aktuellen Ubuntu kann man das Paket beep zwar nachinstallieren, doch bleibt der Lautsprecher stumm. Das von beep benötigte Kernelmodul ist fehleranfällig und daher in Ubuntu deaktiviert. Man kann zwar immer noch in die Kernel-Module abtauchen und in der Datei /etc/modprobe.d/blacklist.conf die richtige Zeile auskommentieren. Im besten Fall kriegt man einen schrillen Ton zurück und im schlechtesten Fall hat man ein unbrauchbares System. Beides ist es nicht Wert diese Option zu verfolgen.

 

Eine bessere Alternative

Viel angenehmer wäre es wenn ein angenehmerer Ton abgespielt werden könnte. Da mittlerweile jeder Desktop seine eigene Sammlung an Systemklängen und Melodien mitbringt findet man sicher eine Audio-Datei die als Hinweiston deutlich angenehmer ist.

Hat man die passende Audio-Datei gefunden braucht es einige kleine Ergänzungen an der .bashrc. Mit dem Editor seines Vertrauens kann man diese Datei im eigenen Home-Verzeichnis öffnen und am Ende diese Zeilen einfügen:

export BEEP_SOUND=/usr/share/sounds/gnome/default/alerts/glass.ogg
alias beep='paplay $BEEP_SOUND'

Wichtig: Der Pfad zur Audio-Datei muss entsprechend angepasst werden!

Sobald diese Datei gespeichert ist kann man die Einstellungen mittels source ~/.bashrc neu laden (oder ein neues Terminal öffnen). Führt man nun diesen Befehl aus ertönt nach 3 Sekunden der Hinweiston:

$ sleep 3 && beep

So lange der eigentliche Befehl korrekt abläuft und eine 0 als Return-Wert liefert ertönt der gewünschte Ton. Soll dies auch im Fall eines Fehlers passieren muss man noch das Programm wait bemühen:

$ sleep 3 & wait; beep

 

Fazit

Kleine Helfer kommen oft in ganz einfachen Befehlen daher. Nur bis man die richtige Idee oder den passenden Ansatz hat dauert es meist ein wenig länger…

Schlagworte: ,

Kurz-Tipp: Bildschirmfotos unter Mac OS X erstellen

30. November 2014 Kommentare aus

Eigentlich ist es ganz einfach Bildschirmfotos unter OS X zu erstellen. Aber da es keine extra beschriftete Taste gibt steht man dann doch immer wieder vor der Frage wie die entsprechende Tastenkombination lautet.

 

Ganzer Bildschirm

Um den ganzen Bildschirm zu Fotografieren genügt es die Tasten Cmd + Shift + 3 zu drücken:

Ganzer Bildschirm

 

Bildschirmbereich

Soll hingegen nur ein Bereich des Bildschirms fotografiert werden lautet die Tastenkombination
Cmd + Shift + 4:

Bildschirmbereich

 

Einzelnes Fenster oder in die Zwischenablage

Ein einzelnes Fenster kann man fotografieren indem man nach der Tastenkombination Cmd + Shift + 4 noch die Leertaste drückt:

Einzelnes Fenster

All diese Befehle speichern das Bildschirmfoto als Datei ab. Wenn das Bild allerdings in die Zwischenablage gespeichert werden soll genügt es zusätzlich die Taste Ctrl zu drücken:

Zwischenablage ganzer BildschirmZwischenablage BereichZwischenablage Einzelnes Fenster

Schlagworte: ,

Kurz-Tipp: Responsive Design einfach testen mit Window Resizer

21. Oktober 2014 1 Kommentar

Wer heutzutage Webapplikationen erstellt wird kaum um das Thema Responsive Design herum kommen. Dabei geht es um die Anpassungsfähigkeit einer Webseite an verschiedene Bildschirmgrössen. Schliesslich soll die Anwendung nicht nur auf dem Laptop bedienbar sein sondern auch auf dem Smartphone zum Verweilen einladen.

Die technische Seite wird durch Frameworks wie Bootstrap gut abgedeckt und dürfte den meisten Entwicklern bekannt sein. Wenn es allerdings ums Testen der einzelnen Auflösungen geht stutzt man das Browserfenster meist von Hand zurecht. Dies mag zwar ein gangbarer Weg sein, doch ist dies mühsam und ungenau.

Viel einfacher und schneller ist es eine entsprechende Erweiterung für den Browser zu installieren. Davon gibt es für jeden Browser mehr als genug, doch kaum eine kommt an Window Resizer von Ionut Botizan für Chrome heran. Diese Erweiterung ist auf genau einen Zweck optimiert und lässt einem die voreingestellten Fenstergrössen um beliebige eigene Formate erweitern.

Window Resizer

Für mich gibt aber eine Tastenkombination den Ausschlag Window Resizer zu verwenden: Mittels [Strg] + [Umschalt] + [Abwärtspfeil] lässt sich sehr schnell durch die einzelnen Fenstergrössen durchschalten. Dies ist sehr praktisch wenn man nicht nur wissen will ob eine bestimmte Grösse funktioniert sondern ob alles noch wie gewünscht aussieht.

Hat man sich einmal an die damit gewonnene Flexibilität gewöhnt will man so eine Erweiterung nicht mehr missen.

Schlagworte: , ,

Von Zeit und Datenmengen

22. Juli 2014 Kommentare aus

Bei Datenmigrationen und der Batchverarbeitung kommen 2 Bereiche zusammen bei denen viele Entwickler (mich eingeschlossen) schnell an eine mentale Grenze stossen:

  • Zeit
  • Datenmenge

Wohl ist jedem bekannt das ein Tag 24 Stunden hat und ein Terabyte aus 1024 Gigabyte besteht. Und doch kommt es immer wieder zu bösen Überraschungen.

 

Eine Optimierung am Code ist reine Zeitverschwendung, da die Arbeit in einer Sekunde erledigt ist.

 

Wer hat nicht schon solche Aussagen gehört? Das Problem von dieser einen Sekunde ist nicht die Dauer. Das Problem liegt in der impliziten Aussage über die Geschwindigkeit. Eine Sekunde ist kurz, meine Arbeit gross und daraus folgt mein Code ist schnell. Wenn es so doch nur so einfach wäre…

 

Wie lange kann es auf der Produktion schon gehen wenn es auf dem Testsystem gar nicht messbar ist?

 

Ist die wohl noch schönere Frage. Wer schon einmal versuchte eine grössere Datenmenge zu migrieren kennt die unbequeme Antwort: Lange – viel zu lange.

 

Was genau messen wir?

Wie immer wenn etwas gemessen wird kommt es auf die Relevanz an. Ob 1 Sekunde schnell oder langsam ist hängt davon ab, was darin gemacht wurde. Wie viele Datensätze wurden verarbeitet? Und in welchem Verhältnis steht diese Datenmenge zum Zielsystem?

Die einzelnen Sekunden summieren sich sehr schnell, alles was es dazu braucht ist eine unterschiedliche Menge an Daten auf dem Test- und auf dem Produktionssystem. Bei einem linearen Anstieg wächst die Verarbeitungsdauer gleichmässig mit der Datenmenge. Verdoppelt sich die Datenmenge, verdoppelt sich auch die Verarbeitungsdauer. Hat man 60x mehr Daten in der Produktion als auf dem Testsystem wird aus dieser einen Sekunde bei der Einführung eine Minute.

 

Eine Hochrechnungstabelle

Was passiert aber wenn man statt auf dem Testsystem auf dem Entwicklungssystem gemessen hat? Da ist das Verhältnis vielleicht nicht 1:60, sondern 1:1’000, 1:10’000 oder gar 1:100’000. Wie lange waren nochmal 100’000 Sekunden?

Diese kleine Hochrechnungstabelle nimmt das Rechenbeispiel auf und geht von einer Sekunde für eine bestimmte Menge von Daten aus. 10x mehr Daten ergeben den Faktor 10, der für diesen linearen Anstieg auch in einer 10x längeren Dauer resultiert:

Faktor Datenmenge Dauer
1 00:00:01
10 00:00:10
100 00:01:40
1’000 00:16:40
10’000 02:46:40
100’000 27:46:40 oder 1 Tag 03:46:40
1’000’000 277:46:40 oder 11 Tage 13:46:40

Die 100’000x mehr Daten machen aus der getesteten Sekunde bei der Einführung eine Aufgabe die sich in einem Tag nicht mehr abschliessen lässt. Aber schon bei 10’000x mehr Daten dürfte so mancher Einführungsplan in den kritischen Bereich kommen.

 

Probleme vermeiden

Diese Probleme lassen sich am einfachsten dadurch vermeiden, dass man die Performance-Messungen auf vergleichbaren Systemen mit vergleichbaren Datenmengen macht.

Ist es nicht möglich muss man die Werte entsprechend umrechnen. Dies ist viel aufwändiger und weniger genau, aber immer noch besser als sich einzureden die Arbeit sei in einer Sekunde erledigt. Dabei gilt es aber nicht nur die Datenmenge zu bedenken. SSD-Festplatten sind gerade in Kombination mit kleinen Datenmengen deutlich schneller als so manche Server-Festplatte. Von CPU, Netzwerk und Systemdiensten die auch noch laufen ganz zu schweigen.

 

Fazit

Wenn man eine Performance-Messung nur auf die Dauer reduziert führt dies zu völlig falschen Annahmen. Um lange Wartezeiten bei der produktiven Einführung zu verhindern muss daher unbedingt beachtet werden wie sich die Daten und Systeme gegenüber der Produktion unterschieden. Mehr Daten bedeutet eine längere Verarbeitungszeit. Und nur weil es auf irgendeinem System schnell ist bedeutet dies nicht automatisch das man aufs optimieren verzichten kann. Ganz abgesehen davon dass eine exponentielle Zunahme der Verarbeitungszeit alles noch viel schlimmer macht…

 

Schlagworte: ,

SyncToy: Ein kleiner Backup-Helfer

15. Juli 2014 2 Kommentare

An Backups denkt man in der Regel erst wenn es zu spät ist. Vorher ist es immer zu aufwändig und man glaubt eh keine wichtigen Dateien zu haben die nicht noch irgendwo anders gespeichert sind. Um nicht eines besseren belehrt zu werden würde es genügen die Daten nur regelmässig auf ein externes Laufwerk zu sichern.
Mit SyncToy gibt es ein kleines Programm das genau für diesen Zweck gemacht wurde.

 

Download und Installation

SyncToy kann bei Microsoft als 32 oder 64bit Version heruntergeladen werden. Welche Version man wählt spielt keine Rolle. Bisher konnte ich keine Unterschiede feststellen die über das Installationsverzeichnis hinausgehen (Programme oder Programme (x86)).

Der Installationsdialog ist erstaunlich umfangreich und will sehr viele Bestätigungen. Wiederholtes klicken auf “Next” genügt zur Installation allerdings vollkommen.

 

Konfigurieren

Nach dem ersten Start begrüsst einem dieser einfache Dialog mit der Aufforderung ein Verzeichnispaar zu erstellen:

SyncToy

Der Dialog zum Erzeugen des Verzeichnispaares unterscheidet zwischen linkem (Left) und rechtem (Right) Ordner. Um meinen persönlichen Ordner zu sichern wähle ich diesen als linken Ordner aus und als rechten Ordner das Verzeichnis “Z:\Air\User.JGR”:

SyncToy 1. Schritt

Rechter und linker Ordner sind wenig gebräuchliche Begriffe. “Quelle” und “Ziel” dürfte einem bekannter sein. Allerdings kommt es sehr darauf an was man mit diesen beiden Ordnern machen will. Dies legt man auf dem 2. Schritt fest:

SyncToy 2. Schritt

Zur Auswahl stehen einem diese Optionen:

  • Synchronize: Neue, veränderte und gelöschte Dateien werden in beide Richtungen synchronisiert.
  • Echo: Veränderungen (hinzufügen, löschen, verändern) im linken Ordner werden auf den rechten appliziert.
  • Contribute: Nur neue und veränderte Dateien aus dem linken Ordner werden in den rechten Ordner übertragen. Im linken Ordner gelöschte Dateien bleiben im rechten Ordner erhalten.

Welche Option man auswählen soll hängt ganz vom Einsatzweck ab. Echo und Synchronize unterscheiden sich dadurch ob auch mit dem rechten Ordner gearbeitet wird. Ist dies der Fall sollte man Synchronize verwenden. Will man die Ordner nur 1:1 sichern genügt Echo.
Contribute kann einem dabei helfen auch gelöschte Dateien zurück zu holen. Da keine Dateien gelöscht werden muss man sich selber ums aufräumen kümmern.

 
Zum Abschluss benötige dieses Ordnerpaar noch einen Namen, unter dem man später die beiden Verzeichnisse identifizieren kann:

SyncToy 3. Schritt

 

Ordner synchronisieren

SyncToy lässt einem die Ordnerpaare einzeln oder gemeinsam ausführen. Letzteres ist vor eine Arbeitserleichterung da man sich nicht an alle gemachten Änderungen erinnern muss. Je nach Anzahl Änderungen, der Datenmenge oder der Geschwindigkeit des angehängten Laufwerkes muss man sich nach einem Klick auf “Run all” ein wenig gedulden:

SyncToy Resultat

 

Fazit

Mit SyncToy gibt es ein kleines Tool mit dem man einfach seine Daten sichern kann. Nach einer einmaligen Konfiguration genügt dafür ein einziger Klick. Dennoch ist es flexibel genug um auch spezielleren Wünschen bei der Synchronisierung Rechnung zu tragen.

Empfehlung: Unbedingt ausprobieren!

Schlagworte: ,

Heruntergeladene Assemblies entsperren

7. Mai 2014 Kommentare aus

Ein Sicherheitsfeature von Windows ist für Entwickler besonders mühsam: Die Blockierung von aus dem Internet geladenen .Net-Assemblies. Versucht man so eine *.dll in einem Visual Studio Projekt zu verwenden trifft man auf diese Fehlermeldung:

Error 172 Could not load the assembly file://**/*.dll. This assembly may have been downloaded from the Web. If an assembly has been downloaded from the Web, it is flagged by Windows as being a Web file, even if it resides on the local computer. This may prevent it from being used in your project. You can change this designation by changing the file properties. Only unblock assemblies that you trust. See http://go.microsoft.com/fwlink/?LinkId=179545 for more information.

 

Da sich der Entwickler ein wenig Zeit für eine sinnvolle Fehlermeldung genommen hat findet man im MSDN eine entsprechende Lösung. Für einzelne Dateien genügt es diese im Explorer zu öffnen und mittels Rechtsklick den Eigenschaften-Dialog zu öffnen. Dort wird einem der Zulassen-Knopf prominent angezeigt:

Datei von fremden Computern zulassen

Diese Lösung dürfte den meisten bekannt sein. So lange man nur wenige Dateien entsperren muss kommt man damit auch gut zurecht. Hat man allerdings ein Projekt mit unzähligen Assemblies, die noch für alle möglichen Windows-Plattformen in Unterprojekte gegliedert sind, braucht es etwas Besseres.

 

Streams

Um Dateien massenhaft und rekursiv über verschachtelte Ordner zu entsperren empfiehlt Microsoft das Tool “Streams” von Sysinternals. Auch wenn dies mittlerweile in die Jahre gekommen ist macht es seinen Job noch immer zuverlässig.

Nach dem herunterladen und installieren steht einem Streams als Konsolenanwendung zur Verfügung. Startet man das Tool ohne Parameter zeigt es einem die möglichen Optionen an:

C:\>D:\Pfad\zu\Streams\streams.exe
Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: D:\Pfad\zu\Streams\streams.exe [-s] [-d] <file or directory>
-s     Recurse subdirectories
-d     Delete streams

Um den Ordner _DEV rekursiv zu entsperren genügt dieser Aufruf:

C:\>D:\Pfad\zu\Streams\streams.exe –s –d _DEV

 

Fazit

Ein an sich guter Schutz für Gelegenheitsanwender ist für Entwickler in der täglichen Arbeit ein Hindernis. Je nach Projekt wird man sehr häufig Dateien aus dem Internet herunterladen und jedes Assembly von Hand entsperren ist auf die Dauer nicht nur mühsam, sondern braucht auch viel Zeit. Mit einem Werkzeug wie Streams lässt sich dieses Problem aber glücklicherweise sehr einfach lösen.

Schlagworte: , ,

Kurz-Tipp: Bessere Screenshots mit Greenshot

18. März 2014 Kommentare aus

Um etwas zu erklären hilft ein Bild oft mehr als viele Worte. Bei der Bildschirmarbeit sind Screenshots daher kaum mehr wegzudenken. Wie aber macht man möglichst einfach solche Bilder? Meine Antwort darauf ist seit einiger Zeit Greenshot.

Mit diesem kostenlosen Programm kann man den ganzen Bildschirm, ein einzelnes Fenster oder nur einen Teilbereich abfotografieren. Wirklich praktisch sind aber die Zeichenfunktionen zum Hervorheben von Bereichen. So muss man nicht lange nach den entscheidenden Ausschnitt suchen. Und hat man für einmal einen Bereich den man nicht zeigen will kann man diesen unkenntlich machen:

Greenshot im Einsatz

Da alles Wesentliche in der kleinen Oberfläche untergebracht ist braucht man für die Alltagsarbeiten nicht extra ein Grafikprogramm zu starten. Wem dies alles zu viel ist und die Bildschirmfotos nur in die Zwischenablage haben will kann dies ebenfalls einrichten.

 

Fazit

All diese oft benötigten Zusatzfunktionen machen Greenshot äusserst nützlich. Hat man sich einmal an die einfach zu bedienende Oberfläche gewöhnt will man nicht mehr zu den Windows-Bordmitteln zurück. Dafür ist dieses kleine Tool viel zu praktisch.

Schlagworte: ,
Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 315 Followern an