PowerTOP unter Debian

PowerTOP ist ein Linux-Werkzeug zur Diagnose und Optimierung des Stromverbrauchs. Es wurde 2007 von Intel veröffentlicht und eignet sich vor Allem beim Einsatz auf Laptops. Die Installation erfolgt per Paketmanager:

sudo apt install powertop

Da PowerTOP auf Hardware-Informationen zugreift, muss es als Root gestartet werden

sudo powertop

Nach dem Start sieht die Oberfläche ähnlich aus: 

Weitere Informationen bei Wikipedia und Fedora Magazine.

Standard-Editor in Midnight-Commander einstellen

Nach dem erstmaligen Bearbeiten einer Datei unter Midnight Commander `mc`muss der Standard-Editor gewählt werden.

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/mcedit
  4. /usr/bin/vim.gtk
  5. /usr/bin/vim.tiny

Choose 1-5 [2]:

Die Auswahlliste enthält alle terminalbasierenden Texteditoren, die auf dem System vorhanden sind. Hier wären das `GNU Ed – The GNU line editor` (1), `nano – Nano’s ANOther editor, an enhanced free Pico clone` (2), `mcedit – Internal file editor of GNU Midnight Commander` (3) und `vim – Vi IMproved, a programmers text editor` (4, 5).

Nach Eingabe einer Ziffer (optional) und dem Betätigen der Enter-Taste wird die Datei im gewählten Editor geöffnet. Diese Auswahl muss nur einmalig bestätigt werden. Beim nächsten Bearbeiten innerhalb von MC wird die Datei sofort geöffnet.

Git cleanup

Problem ist folgende Meldung nach `git pull`:

Die Datenbank des Repositories wird für eine optimale Performance im Hintergrund komprimiert.
Siehe „git help gc“ für manuelles Aufräumen.
error: Die letzte Ausführung von „gc run“ enthielt die folgenden Meldungen.
Bitte beheben Sie das Hauptproblem und löschen Sie .git/gc.log.
Ein automatischer Cleanup wird nicht ausgeführt, bis diese Datei entfernt wurde.

fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack

Lösungsansatz ist die Verwendung von `git fsck`.

Die Meldung `error: refs/remotes/origin/HEAD: invalid sha1 pointer 0000000000000000000000000000000000000000` gibt uns den Hinweis, dass eine Referenz nicht mehr passt. Prüfen lässt sich dies bspw. mittels `git branch -a`. Tatsächlich ist der Remote-Branch `master` nicht mehr vorhanden.

Lösen lässt sich dies durch editieren der Datei .git/refs/remotes/origin/HEAD. Deren Inhalt sollte von
`ref: refs/remotes/origin/master` zu `ref: refs/remotes/origin/develop` geändert werden. Nun sollte der Fehler verschwunden sein 🙂

Node.js unter Ubuntu / Linux Mint

Installation nach Anleitung auf nodejs.org.  Für Ubuntu-Derivate zusätzlich das Paket nodejs-legacy installieren, um node zur Verfügung zu haben (legt lediglich einen symbolischen Link unter /usr/bin/ an, der auf nodejs verweist). Danach node.js verifizieren:

$ nodejs -v
$ node -v

Nach einem nodejs-Update (v5 auf v6) und (vorher) installiertem (und vergessenem) nvm laufen beide Skripte allerdings auseinander:
Grund ist eine per nvm festgelegte node-Version. Die Lösung ist ziemlich einfach:

$ nvm list


default zeigt auf 5

$ nvm alias default system


=> $ node -v entspricht nun $ nodejs -v

Sollte

$ nvm -v

einen Fehler werfen, dann wurde die NVM-Installation nicht erkannt

Als Lösung muss ein Snippet in .zshrc oder .bashrc eingefügt werden:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

Publish Angular2-App using Webpack

$ npm run build:prod

This creates a folder called dist. This folder has to be copied to the webserver. I ran into the issue that an error appeared on reloading a page.

I’m not using the hash for routing ({useHash: false}), so all links appear as real paths like ibse-fehse.de/services.
But so reloading a sub-page leads to a 404-server-error „Page not found“ because the current path could not be located server-side.
Solution is to add some lines to .htaccess:

RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

Thanx to Dan Mindru.

Using git-hooks

Um den Entwicklungs-Workflow zu vereinfachen, können git-hooks eingesetzt werden. Dadurch können vor speziellen git-Befehlen automatisch  Skripte gestartet werden. Eine entsprechende Lösung bietet z.B. pre-commit. Die Installation erfolgt mittels GEM (the frontend to RubyGems):

$ sudo gem install pre-commit

Zur projektspezifischen Einrichtung sid folgende Schritte notwendig:

$ cd path/to/git/repo
$ pre-commit install
$ git config pre-commit.checks "[console_log, debugger, jshint, js_lint, merge_conflict, json]"

Nähere Informationen zur Konfiguration finden sich auf https://github.com/jish/pre-commit. Eventuell muss noch execjs installiert werden:

$ sudo gem install execjs

Suche mit find & grep

find dient der Suche nach Dateien bzw. Verzeichnissen.

Mit folgendem Befehl bekomme ich alle Verzeichnisse, die FooBar heissen (Großschreibung beachten!):

$ find $HOME -name FooBar -type d

Wöllte ich das Verzeichnis unabhängig von Groß-/Kleinschreibung, müsste ich schreiben:

$ find $HOME -name [Ff]oo[Bb]ar -type d

Folgender Befehl listet alle Dateien und Verzeichnisse im Home-Directory, die mit foobar beginnen:

 $ find $HOME -name "foobar*" -ls

Edit 22.10.2017: Um Dateien zu  finden, die innerhalb der letzten 24 Stunden heruntergeladen wurden und diese zu verschieben folgenden Befehl verwenden:

find ~/Downloads/ -mtime 0 -type f -exec mv '{}' ~/Dokumente/today/ \;

grep hingegen dient der Suche nach Dateiinhalten.

Upgrade Git

Seit kurzem arbeite ich mit Visual Studio Code als IDE. Nachdem dessen Update auf Version 1.6 kam die Meldung, dass Git 1.9.1 installiert sei, aber VSCode mit Git 2.x besser zusammenarbeiten würde. Also warum nicht auch Git aktualisieren?!

$ sudo apt install git

brachte erstmal keinen Erfolg, weil die aktuellste Version bereits installiert sei. Mmh.. Eine kurze Recherche ergab, dass noch ein passendes PPA-Repository hinzugefügt werden muss:

$ sudo add-apt-repository ppa:git-core/ppa

Danach die Paketquellen aktualisieren und die Installation erneut starten. Voila!

$ sudo apt update
$ sudo apt install git
$ git --version
git version 2.10.1

Das Web und ich