Archiv ‘IT’

Sonntag, 30. August 2015

Mittels Windows PowerShell Abkürzungen aus einer Textdatei auslesen und sortieren

Auf der Arbeit darf ich derzeit ein Dokument mit viel, viel Text überarbeiten. Am Ende des Berichts gibt es eine Liste aller im Lauftext verwendeten Abkürzungen. Um sicherzugehen, dass der vorherige Autor alle Abkürzungen erwischt und erläutert hat, speicherte ich das Word-Dokument als Plain Text (.txt) ab und liess dann folgendes PowerShell-Skript drüberlaufen:

$source = 'source.txt'
$temp = 'acronyms-raw.txt'
$result = 'acronyms.txt'
$regex = '\b[A-Z]{3,}\b'
select-string -Path $source -Pattern $regex -CaseSensitive -AllMatches |
% { $_.Matches } | % { $_.Value } > $temp
gc $temp | sort | get-unique > $result

Tada! Und schon hatte ich in acronyms.txt eine fein säuberlich, alphabetische Liste aller Abkürzungen, die aus drei oder mehr aufeinanderfolgenden Grossbuchstaben bestehen.

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 30. August 2015

Der Papiereinzug eines Fujitsu ScanSnap ix500 funktioniert nicht mehr richtig

Vor zwei Tagen wollte ich kurz vor dem Zu-Bett-gehen noch kurz eine aktualisierte Police meiner Hausratsversicherung scannen — natürlich waren aktualisierte AVBs im Umfang von gefühlten 20 Seiten ebenfalls Teil der neuen Police.

Doch Schreck lass nach: Der Papiereinzug meines Fujitsu ScanSnap ix500 schaffte es knapp noch, ein oder zwei Blätter einzuziehen, versagte aber anschliessend kläglich.

Nach etwas Googeln fand ich folgendes Handbuch:

SCANSNAP IX500 CONSUMABLE REPLACEMENT AND CLEANING INSTRUCTIONS

Darin stand, dass man sich mit der Kontroll-Software (ScanSnap Manager) den Status der Verbrauchsmaterialien — dazu gehören auch die Rollen des Papiereinzuges — anzeigen lassen kann:

Fujitsu ScanSnap ix500 Consumables

Da bin ich ja noch meilenweit vom Grenzwert entfernt (200’000 Blatt Papier), um die Rollen auszutauschen. Nichtsdestotrotz funktioniert der Einzug nicht!

Ich folgte deshalb der Anleitung und baute die beiden erwähnten Rollen aus. Da ich nichts besseres damit anzufangen wusste, nahm ich diese Rollen in die Küche und hielt die Plasticrollen unter das laufende Wasser, rubbelte etwas daran und trocknete die Rollen fein säuberlich. Anschliessend baute ich diese wieder in den Scanner ein.

Seit dieser Aktion saugt der Scanner wieder jedes Futter ein, und das auf Anhieb im ersten Versuch.

Tags: , , , ,
Labels: IT

1 Kommentar | neuen Kommentar verfassen

Sonntag, 30. August 2015

In einer Sharepoint 2010-View einer Liste auf die Detailseite eines Datensatzes verlinken

Auf der Arbeit verwenden wir Sharepoint-Listen, um strukturiert vorliegende Informationen als Datensätze abzulegen.

Um in E-Mails auf bestimmte Listenelemente verlinken zu können, war ich auf der Suche nach einer Permalink-Funktion. Diese existiert mit der View DispForm.aspx, welche den mit ID in einer GET-Variable referenzierten in einer eigenständigen Seite anzeigt (sprich: kein Overlay über die Listenansicht, offenbar das Standardverhalten von Sharepoint).

Die Permalink-URL für die Liste „MyServers“ schaut folgendermassen aus:

http://domain.tld/lists/MyServers/DispForm.aspx?ID=1234

Doch wie zeige ich diesen Permalink in der Ansicht der gesamten Liste (AllItems.aspx) als Feld für jeden Datensatz an, ohne Quellcode von Web-Seiten oder den Sharepoint Designer zu bemühen? Ganz einfach:

Man erstelle eine neue „Calculated Column“ in der Listenansicht und definiere dafür folgende Funktion:

="<a href='http://domain.tld/lists/MyServers/DispForm.aspx?ID=" & [ID] & "'>" & [Servername] & "</a>"

Speichert man das Feld, wird einem der HTML-Code im Klartext angezeigt. Damit stattdessen der Link gerendert wird, muss man den Typ der Spalte auf „Number (1, 1.0, 100)“ umschalten. Wie aus Zauberhand interpretiert Sharepoint den HTML-Code, und der Permalink kann kopiert werden.

Via: SharePoint 2010 calculated column and hyperlink (no workflows or scripts needed)

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 14. Juli 2015

In Excel ein Pivot nach Monat und Jahr gleichzeitig gruppieren

Wer von SQL her kommt und gelegentlich Auswertungen mit Excel fahren muss, wird die Pivot-Funktion zu schätzen wissen: Sie bietet annähernd etwas wie die GROUP BY-Klausel in SQL-Statements.

Kürzlich durfte ich auf der Arbeit die zeitlichen Aufwendungen für eine IT-Prüfung analysieren. Dazu erfasste ich alle Meetings mit ihrer Dauer, ihrem Datum und dem Titel in eine Tabelle. Anschliessend wollte ich mir ausrechnen lassen, wie viele Stunden pro Monat aufgewendet wurden.

Da die Prüfperiode im Juli 2014 begann und im Juli 2015 endete, gab es beim ersten Auswertungsversuch das Problem, dass die Aufwendungen im Juli des Vorjahres mit denjenigen des Julis des aktuellen Jahres addiert wurden. Doch wie macht man statt ein GROUP BY month ein GROUP BY month, year?

Stellt sich heraus, dass man in einer Pivot-Tabelle mittels Rechtsklick auf einen Datumswert im Menupunkt „Grouping“ durchaus auch zwei Elemente in der Liste („By“) auswählen kann, also beispielsweise auch „Months“ und „Years“.

Quelle: Pro tip: Group an Excel PivotTable by dates

Tags: , , , , , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 24. Juni 2015

Raspberry Pi 2 einrichten (10/n): Apple USB-Tastatur sauber einrichten

Bei der einzigen im Haushalt freien USB-Tastatur handelt es sich um ein Apple Aluminium Keyboard mit Schweizerdeutschem Layout. Diese wird für die Installation des neuen Taschencomputers benötigt, solange noch keine Netzwerkverbindung verfügbar ist (dann geht alles viel einfacher mittels SSH).

Die Tastatur kann unter Raspberry Pi und jedem anderen Linux problemlos verwendet werden.

Die Tastatur kann ganz einfach mittels raspi-config eingerichtet werden (Kurzanleitung für die graphische Oberfläche). Leider scheinen nachträgliche Anpassungen mit diesem Tool nur dann möglich zu sein, wenn die Tastatur auch wirklich am USB-Port hängt.

Deshalb kann man die Anpassungen auch manuell an folgender Datei vornehmen:

/etc/default/keyboard

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="applealu_iso"
XKBLAYOUT="ch"
XKBVARIANT="de_mac"
XKBOPTIONS=""

BACKSPACE="guess"

Via: Changing the default keyboard layout from “gb” to “us” in Raspbian “wheezy” for Raspberry Pi

Apple Aluminium-Keyboards gibt es in drei Standards:

  • ANSI
  • ISO
  • JIS

Quelle: How to tell an Apple ISO USB keyboard from an Apple ANSI ISO keyboard

Da ich eine Tastatur mit schweizerdeutschem Layout besitze, vermute ich, dass es sich dementsprechend um ein ISO-Keyboard handelt.

Damit sich die F1-F12-Tasten wie ebendiese Tasten verhalten, musste ich zudem noch folgende Datei erstellen:

/etc/modprobe.d/hid_apple.conf

options hid_apple fnmode=2 iso_layout=0

Die bedeuten der Zahlenwerte für fnmode (0, 1 und 2) sind im Artikel „Apple Keyboard“ beschrieben.

Ist die Tastatur korrekt konfiguriert, kann man mit Druck auf die Tasten Ctrl-Alt-F1 von einer X-Oberfläche in eine Shell wechseln. Zurück ins GUI geht es, in dem man Ctrl-Alt-F7 betätigt.

Tags: , , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (6/n): Automatisch in einen Web-Browser starten

Da ich meinen Raspberry Pi 2 dazu verwende, ein Dashboard anzuzeigen, soll der Taschencomputer nach einem Kaltstart automatisch aufstarten, sich mit dem Standardbenutzer in die graphische Oberfläche einloggen und danach ein Web-Browser-Fenster mit einer bestimmten URL öffnen. Dabei soll nur der Web-Site-Inhalt angezeigt werden, nicht aber die Fensteroberfläche des Window-Managers.

Automatischer Login

Auf der Kommandozeile öffnet man raspi-config und aktiviert dort die Option Enable Boot to Desktop/Scratch. Wichtig ist, dass man die Option mit den Cursortasten auswählt und danach mittels Tabulator auf „OK“ springt und dieses auch betätigt.

Quelle: RASPI-CONFIG

Automatischer Start des Web-Browsers mit einer bestimmten URL

Damit nun die gewünschte Web-Site angezeigt wird, muss man dem Betriebssystem nun noch sagen, dass bei jedem Login in die grafische Oberfläche ein entsprechender Befehl ausgeführt werden soll:

~/.config/lxsession/LXDE-pi/autostart

@xset s off
@xset -dpms
@xset s noblank

@unclutter -idle 1
# PROD
#@chromium-browser --incognito --kiosk http://dashboard.local/

# DEBUG
@chromium-browser --remote-debugging-port=4444 --show-fps-counter --incognito --kiosk http://dashboard.local/

Quelle: How to auto start chromium after boot on the Raspberry 2 (2015-01-31 debian wheezy)?

Ferner: How To Autostart Apps In Rasbian LXDE Desktop

Auch: Raspberry Pi Dashboard Kiosk

Wichtig: In vielen Anleitungen liest man, dass man die Datei /etc/xdg/lxsession/LXDE-pi/autostart (Raspberry Pi 2) respektive die Datei /etc/xdg/lxsession/LXDE/autostart (Raspberry Pi 1) mit den obigen Befehlen ergänzen soll. In meinem Fall hat das zu einer einstündigen Debugging-Session geführt, die erst mit folgendem Hinweis gelöst werden konnte:

Note: If both files are present, lxsession only executes the local file as of v0.4.9

Aus irgendeinem Grund war bei meiner Installation die Datei ~/.config/lxsession/LXDE-pi/autostart vorhanden, weshalb die Einträge in den generischen autostart-Dateien nie berücksichtigt wurden.

Quelle: LXDE

Mauszeiger ausblenden

Damit der Mauszeiger ausgeblendet wird, muss noch folgendes Paket installiert werden:

# apt-get install unclutter

Das Programm wird anschliessend beim Ausführen der Autostart-Datei ausgeführt.

Quelle: Step 16: Hiding the mouse pointer

Alternative: Window Manager umgehen und direkt in ein Browser-GUI starten

Dank an Simon Jenny für den Hinweis — leider bleibt der Bildschirm schwarz, diese Lösung funktioniert also derzeit nicht.

~/.xinitrc

xset -dpms &
xset s off &
unclutter -idle 1 &

exec chromium-browser \
--window-position=0,0 \
--window-size=1080,1920 \
--incognito \
--kiosk \
http://dashboard.local/

Folgende zusätzliche Parameter könnten ebenfalls hinzugefügt werden:

...
--no-first-run \
--disable \
--disable-translate \
--disable-infobars \
--disable-suggestions-service \
--disable-save-password-bubble \
--disk-cache-dir=/tmp/chromium/cache/ \
--user-data-dir=/tmp/chromium/user_data/ \
--show-fps-counter \
--remote-debugging-port=4444 \
...

/etc/rc.local

...
/usr/bin/xinit /home/pi/.xinitrc &
exit 0

Quelle: Raspberry Pi Information Radiator: Booting into a Browser

Tags: , , , , , , , ,
Labels: IT, Linux

5 Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (4/n): Chromium installieren

Nachdem der Raspberry Pi 2 auf Raspbian Jessy läuft, können wir die neueste verfügbare Version des Chromium-Browsers herunterladen und installieren. Wir bedienen uns dazu der Repositories von Ubuntu und laden uns (Stand 22. Juni 2015) folgende zwei .deb-Pakete herunter:

Die Links zu den vorkompilierten Binaries finden sich auf den beiden Paket-Seiten rechts im Abschnitt „Downloadable Files“.

WICHTIG: Unter Raspberry Pi 1 läuft nur die unter Wheezy verfügbare Version 22 von Chromium. Neuere Versionen funktionieren unter diesem System nicht, weil die ARMv6-CPU des Raspberry Pi 1 keine hardwarebasierte Fliesskommaeinheit mitbringt. Das armhf-Paket von Ubuntu setzt diese CPU-Einheit aber leider voraus. Wer Chromium trotzdem auf dem nachfolgenden Weg installiert, erhält spätestens beim Start von Chromium folgende Fehlermeldung:

$ chromium-browser --version
Illegal instruction

Raspberry Pi 2 basiert glücklicherweise auf der ARMv7-Plattform und hat diese Einheit mit an Bord.

Sobald die Dateien im lokalen Dateisystem vorliegen, installiert man sie folgendermassen:

# dpkg -i chromium-browser_43.0.2357.81-0ubuntu0.15.04.1.1170_armhf.deb chromium-codecs-ffmpeg-extra_43.0.2357.81-0ubuntu0.15.04.1.1170_armhf.deb

Quelle: Installing Google Chromium on ARM devices with Flash plugin – solution

Ob die Installation erfolgreich war, zeigt folgender Befehl auf der Kommandozeile:

$ chromium-browser --version
Chromium 43.0.2357.81 Built on Ubuntu 15.04, running on Raspbian 8.0

Tags: , , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (7/n): Zeitzone und Uhrzeit einstellen

Mittels folgendem Befehl sollte man die Uhrzeit richtig stellen:

# dpkg-reconfigure tzdata

Ausserdem empfiehlt es sich, die Uhrzeit stündlich neu zu stellen:

# apt-get install ntpdate

/etc/crontab

...
* * * * *	root	ntpdate -s ch.pool.ntp.org
...

Tags: , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (5/n): Bildschirmausgabe um 90 Grad drehen

Da ich meinen Raspberry Pi 2 für die Anzeige eines web-basierten Dashboards verwende, dessen 22″-Monitor hochkant an einer Wand neben der Eingangstüre unserer Wohnung hängt, muss ich die Bildschirmausgabe um 90 Grad im Uhrzeigersinn rotieren.

Hierzu ist mindestens eine Einstellung namens display_rotate im Pseudo-BIOS des Raspberry Pis 2 nötig:

/boot/config.txt

...
disable_overscan=1
...
gpu_mem=256
...
display_rotate=1

Quelle: CONFIG.TXT

In der Dokumentation sind die Gradangaben für die Werte 0 bis 3 aufgeschlüsselt — 90 Grad im Uhrzeigersinn werden mit dem Wert 1 konfiguriert.

Tags: , , , , , , , , , , ,
Labels: IT, Linux

6 Kommentare | neuen Kommentar verfassen

Montag, 22. Juni 2015

Raspberry Pi 2 einrichten (3/n): Von Raspbian Wheezy auf Jessie aktualisieren

Nachdem man SSH-Verbindungen herstellen kann, aktualisiert man zuerst einmal das System. Hierzu loggt man sich per SSH mit dem Benutzer pi ein und wechselt danach zum root-Benutzer:

$ sudo su -

Als nächstes aktualisiert man wie von Debian gewohnt die

# apt-get update

und installiert alle neuen Pakete:

# apt-get upgrade

Ist Wheezy auf dem neuesten Stand, wechseln wir das Repository in folgender Datei zu Jessie:

/etc/apt/sources.list

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

Nun führen wir erneut ein

# apt-get update

durch, um die Jessy-Paketliste herunterzuladen.

Jetzt startet die grosse Upgrade-Aktion:

# apt-get dist-upgrade

Nach einigen Stunden und allfälligen Dialogen sollte nach einem Reboot Raspbian Jessy auf dem System laufen.

Tags: , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen