Archiv November 2013

Sonntag, 17. November 2013

Checkliste für die Aktualisierung des Profilbildes („Avatar“) auf den wichtigsten Social Media-Plattformen

Gestern habe ich am AvatarDay #5 von Pictura teilgenommen und bin so nicht nur zu einer kostenlosen Gesichtsmaske gekommen, sondern auch zu zwei netten Profilbildern (meine Facebook-Freunde werden es bereits bemerkt haben). Noch einmal ein grosses Danke an die Organisatoren für diesen tollen Anlass!

Nachfolgend eine Checkliste, um auch ja keinen personalisierten Internet-Service zu verpassen, auf welchem das Profilbild aktualisiert werden muss:

Internet-Anwendungen

  • Facebook
  • Twitter
  • Google+
  • Skype
  • Swisscom iO
  • What’s App
  • Viber
  • Last.fm
  • Foursquare
  • Gravatar
  • WordPress (resp. auf der eingesetzten Blogging-Software)

Desktop-Rechner

  • Apple Addressbook (synchronisiert sich Dank iCloud auf alle Macs und iOS-Geräte)
  • System Preferences > Users & Accounts (muss leider auf jedem Mac durchgeführt werden; sprich bei mir drei Mal)

Da ich für geschäftliche Internet-Services ein anderes Photo von mir verwende (mit Kravatte & Anzug), waren nachfolgende Web-Sites nicht relevant:

  • Xing
  • LinkedIn

Tags: , , , , , , , , , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 17. November 2013

Finder-Eigenschaften von Dateien auf der Kommandozeile auslesen

Mit nachfolgendem bash-Script durchsuche ich einen Ordner mit über 700 Photos und gebe all diejenigen JPG-Dateien aus, welche im Finder die Farbe „Rot“ zugewiesen haben:

#!/bin/sh

MDLS=`which mdls`
ATTRIBUTE="kMDItemFSFinderFlags" # Color
VALUE=12 # Red

for FILE in *.JPG
do
	RETVAL=$($MDLS -name "$ATTRIBUTE" "$FILE" | cut -d "=" -f 2)
	
	if [ $RETVAL -eq $VALUE ]
	then
		echo $FILE
	fi
done

exit 0

Alle zutreffenden Dateien kopiere ich mit folgendem Script in den Unterordner Highlighted (das obige Script habe ich unter filter-highlighted.sh abgelegt):

#!/bin/sh

FILES=`./filter-highlighted.sh`

for FILE in $FILES
do
	cp "$FILE" "Highlighted/"
done

exit 0

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 9. November 2013

E-Mail-Adressen aus einer Textdatei auslesen und mit imapfilter in einen Unterordner verschieben

Seit ich ein Smartphone besitze, verschiebe ich mittels dem alle 5 Minuten per cron-Job auf meinem privaten Server laufenden imapfilter unwichtige E-Mails in Unterordner, damit ich mich auf die wesentlichen Mails konzentrieren kann.

Der grösste Unterordner in meinem privaten E-Mail-Account heisst „_UNPERSOENLICH“ und enthält all den Newsletter-Plunder, welchen man die Woche hindurch so zugeschickt erhält. Die imapfilter-Regel, welche die treffenden E-Mail-Absender herausfiltert und dorthin verschiebt, ist mittlerweile auf über 60 Zeilen (d.h. 60 Absenderadressen) angewachsen. In der imapfilter-Konfigurationsdatei sieht dies dann in etwa so aus:

...
messages = mbox.INBOX:contain_from('domain1.ch') +
           mbox.INBOX:contain_from('domain2.org') +
           mbox.INBOX:contain_from('user@domain3.com')
           ...
           mbox.INBOX:contain_from('userxy@domain112.com')
messages:move_messages(mbox['_UNPERSOENLICH'])
...

Heute habe ich mich dazu entschieden, diese E-Mail-Adressen aus der Konfigurationsdatei herauszulösen, in einer Textdatei zusammenzufassen (je eine E-Mail-Adresse pro Zeile) und dann imapfilter diese Textdatei einlesen zu lassen und die Absenderadressen in einer Schleife in meiner INBOX zu suchen und gegebenenfalls in den Unterordner zu verschieben.

Äusserst hilfreich war dabei die Hilfe, wie man Lua zu einem solchen Vorhaben bewegt (imapfilter setzt auf Lua auf): File Read In Lua?

Basierend auf dieser Antwort habe ich folgenden Code in meine imapfilter-Konfigurationsdatei aufgenommen:

...
function file_exists(file)
  local f = io.open(file, "rb")
  if f then f:close() end
  return f ~= nil
end

function lines_from(file)
  if not file_exists(file) then return {} end
  lines = {}
  for line in io.lines(file) do 
    lines[#lines + 1] = line
  end
  return lines
end
...
-- Unpersoenlich
local file = '../filters/private-unpersoenlich.txt'
local lines = lines_from(file)

for key,email in pairs(lines) do
--  print('line[' .. key .. ']', email)
  messages = mbox.INBOX:contain_from(email)
  messages:move_messages(mbox['_UNPERSOENLICH'])
end
...

Im Ordner oberhalb desjenigen Ordners, welcher die imapfilter-Konfigurationsdateien enthält (für jeden meiner Accounts existiert eine solche Konfigurationsdatei), gibt es nun einen Ordner filters, welcher momentan die Datei private-unpersoenlich.txt enthält.

Mit den obengenannten Funktionen und Konstrukten wird die Textdatei ausgelesen und in eine Lua-Tabelle (in anderen Programmiersprachen wohl als Array bezeichnet) gespeichert (lines_from(). Anschliessend gehe ich mit einem for-Loop durch die Tabelle, filtere den Absender (contain_from()) und verschiebe treffende E-Mail-Nachrichten in den Ordner „_UNPERSOENLICH“ (move_messages(mbox['_UNPERSOENLICH'])).

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

1 Kommentar | neuen Kommentar verfassen

Freitag, 8. November 2013

Automatische Nummerierungen in Word

Als IT-Auditor sieht man sich am Ende eines jeden Projektes mit der Abfassung von Feststellungen und Empfehlungen konfrontiert. Damit man diese Erkenntnisse sauber referenzieren kann, empfiehlt es sich, diese zu Nummerieren.

Eine Funktion, welche ich in Word noch viel zu wenig verwende, sind Felder, welche sich automatisch fortlaufend Nummerieren.

Im vorliegenden Fall verwendete ich solche Felder, um eine Liste von Fragen zu nummerieren, wobei vor dem Punkt jeweils die Rubrik steht und nach dem Punkt die Nummer der Frage. Da ich zu faul war, die Nummerierung der Fragen auch zu automatisieren, verwendete ich das Feld einzig für die Rubriken.

In der ersten Zeile der Tabelle erstellte ich also ein Feld mit folgendem Inhalt:

{SEQ RubrikID}

. Auf den nächsten Zeilen folgten die Fragen, welche diese Rubrik betrafen. Ich kopierte das Feld also und fügte es in die zweite Zeile ein und ergänzte die Zelle mit .1. Damit die Rubrik-ID nun aber nicht hochzählt, verwendet ich hierzu einen Modifier \C, welcher den Zähler mit dem aktuellen Wert ausgibt:

{SEQ RubrikID \C}

Bei Beginn der nächsten Rubrik kopierte ich das Feld aus der ersten Zeile, welches dann auch prompt auf 2 hochzählte.

Tipp: Die Felder aktualisieren sich nicht automatisch. Am Besten aktiviert man den gesamten Dokumentinhalt mit Ctrl-A und betätigt dann F9.

Via: Field codes: Seq (Sequence) field

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 7. November 2013

Die gängigsten Unix-Kommandozeilen-Tools unter Windows

Welcher Linux-Benutzer kann unter Windows schon auf nützliche Kommandozeilen-Tools wie cat, cut, sed, awk, tr und Konsorten verzichten? Das Complete package, except sources der CoreUtils for Windows rüstet unter Windows die gängigsten Linux-Kommandos nach.

Damit Windows nach der Installation die Linux-Befehle aber auch wirklich findet, muss der Pfad zu den ausführbaren Dateien in die Windows-Umgebungsvariable PATH aufgenommen werden. Dies geschieht folgendermassen:

  1. Computer
  2. Systemeigenschaften
  3. Erweitert
  4. Umgebungsvariablen…
  5. Path
  6. Bearbeiten…

An den String fügt man den Pfad C:\Program Files (x86)\GnuWin32\bin; (Windows 7 mit 64-bit CPU) respektive C:\Program Files\GnuWin32\bin; an.

Sobald man nun die Windows-Kommandozeile öffnet, hat man die ganze Palette an Befehlen zur Hand …

… ausser grep!

Dieses muss man als eigenständiges Installationspaket von derselben Web-Site herunterladen und installieren:

Grep for Windows

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

Keine Kommentare | neuen Kommentar verfassen

Montag, 4. November 2013

MySQL-Parameter mit Perconas Monitoring Plugins in Cacti überwachen

Wer seine MySQL-Installation mit Cacti überwachen möchte, sei Perconas Monitoring Plugins empfohlen. Die Datei (zum Zeitpunkt des Verfassens dieses Artikels war 1.0.5 aktuell) lädt man sich im Download-Bereich des Anbieters herunter.

$ cd /tmp
$ wget http://www.percona.com/redir/downloads/percona-monitoring-plugins/LATEST/percona-monitoring-plugins-1.0.5.tar.gz

Anschliessend entpackt man das Archiv:

$ tar xvzf percona-monitoring-plugins-1.0.5.tar.gz

Danach wechselt man in das cacti-Unterverzeichnis …

$ cd /tmp/percona-monitoring-plugins-1.0.5/cacti

… wo man folgenden Befehl ausführt:

cp -R . /var/www/cacti/

Dies kopiert alle nötigen Dateien (sprich: das ss_get_mysql_stats.php-Script) in das cacti-Root.

Anschliessend erstellt man sich unter MySQL einen Benutzer, welchen das Percona-Script verwenden wird, um die Parameter auszulesen:

GRANT SUPER, PROCESS ON *.* TO 'mysqlmon'@'localhost' IDENTIFIED BY "sikrit";
FLUSH PRIVILEGES;

Die Zugangsdaten erfasst man nun auch noch im Script ss_get_mysql_stats.php.

Anschliessend importiert man das XML-Template mit dem Namen cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.0.5.xml in cacti — dies geschieht über den Menupunkt Import Templates.

Zu guter letzt richte man sich einen neuen Host ein, gibt in das Adressfeld localhost ein und weist dem Host den Typ Percona MySQL Server HT zu. Anschliessend kann man die Graphen generieren.

Debugging

Bei Problemen hilft es, im Script folgende Zeile anzupassen …

...
$debug = TRUE;
...

… und die Kommandozeile, wie sie im cacti-Log auftaucht, in einer interaktiven Shell auszuführen.

ERROR 2013 (HY000): Lost connection to MySQL server at ‚reading initial communication packet‘, system error: 0

Diesem Fehler stand ich zu Beginn gegenüber. Folgende drei Massnahmen lösten das Problem schlussendlich:

  • In /etc/mysql/my.cnf muss die Zeile mit bind-address = ... auskommentiert und der MySQL-Server neu gestartet werden.
  • Dem MySQL-Benutzer mysqlmon muss in der Tabelle user in der Datenbank im Feld Host localhost eingetragen werden.
  • MySQL muss über localhost und nicht über 127.0.0.1 angesprochen werden.

RRD-Dateien werden nicht aktualisiert …

… obwohl das cacti-Log aufzeigt, dass das PHP-Script Werte zurückliefert? Nach einem Debug-Spagat hatte ich die Lösung gefunden. Im cacti-Log las ich etwas in der Form:

...
/usr/bin/rrdtool update /var/www/cacti/rra/mysql_sort_rows_999.rrd --template Sort_merge_passes:Sort_range:Sort_rows:Sort_scan 1383591127:0:522:13426:951
...

Ich führte den Befehl auf der Kommandozeile aus und sah mich mit folgender Fehlermeldung konfrontiert:

ERROR: /var/www/cacti/rra/mysql_sort_rows_999.rrd: illegal attempt to update using time 1383591127 when last update time is 1383594548 (minimum one second step)

Den Unix-Timestamp 1383590086 konvertierte ich mit Bordmitteln in ein lesbares Kalenderdatum und stellte fest, dass die Uhrzeit eine Stunde zurück lag. Ich hatte es also mit einem ganz klassischen Zeitzonen-Problem zu tun!

Um sicher zu gehen, startete ich in eine interaktive PHP-Session:

$ php -a
Interactive mode enabled

php > date_default_timezone_get();
PHP Warning:  date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in php shell code on line 1
PHP Stack trace:
PHP   1. {main}() php shell code:0
PHP   2. date_default_timezone_get() php shell code:1
php > 

Voila! Nachdem ich in der Datei /etc/php5/cli/php.ini folgende Information eingefügt hatte …

...
date.timezone = Europe/Zurich
...

… klappte es plötzlich mit den Updates.

Tags: , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) Setting up a Virtual Postscript Network Printer on Windows

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die „Perlen“ über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

This installation instructions were compiled of several pages I’ve found on the web. Since i’m using Windows 2003, the screenshots may be up to date and valid for Windows 2000 Professional/Server, Windows XP Home/Professional.

The Task

I wanted to make my Brother HL-760 compatible with Mac OS X – unfortunately, Brother gives no driver support for this platform. There is a solution with GIMP-Print, which didn’t satisfy me at all (it’s a bit tricky, graphics get badly dithered). Fortunately, the HL-760 supports a printing standard at all – PCL. This helped a lot. I’m not sure wheter this print-server could print to any printer which has driver-support on windows?

The Printing Process

After you’ve set up the virtual printer, you can install a Postscript-Compatible driver on mostly any known workstation (like Mac OS, Mac OS X, Linux, …) and print to to the Windows-Server (first try to use LPR because it’s an open standard). The postscript-data received by the server is being processed by Ghostscript, converted to PCL (proprietary HP Printing Language) and finally sent to the Brother HL-760.

The Requirements

You need the following software, available for free:

  • Other Network File and Print Services
    A windows component provided for free by Microsoft; available at least since Windows 2000 (see Microsoft Knowledgebase for installation instructions)
  • TCP/IP print server service is set up to start up automatically
  • Ghostscript
    Converts Postscript-Files to other Formats like PCL or PDF (with a few changes to the printer.rsp-File, you can build a free PDF-Printer with no cost!).
  • RedMon
    Short for ‚Port Redirection Monitor‘. Redirects data received on a Printer-Port to another printer and allows to pre-process the data.

The Installation Screenshots

After you’ve successfully installed Ghostscript and RedMon you’re ready to set up and configure your print-server. (Please note that these screenshots were made on my server at home and therefore reflect my environment. It may vary from yours, but as you’re obviously kinda pro who got to my page, you should be able to perform the necessary translations with ease).

setup_rpt_01

setup_rpt_02

setup_rpt_03

setup_rpt_04

Error Logging was essential after the first test runs didn’t work as expected. The error messages stored to the error log file did help a lot fixing problems (pathnames with spaces, as example).

setup_rpt_05

After you’ve successfully set up RedMon and Ghostscript, you need to set up a new printer.

setup_rpt_06

setup_rpt_07

setup_rpt_08

This is the clue: You need to assign not a physical, but a virtual port to the printer – the RPT1:, set up above.

setup_rpt_09

It is essential that you create a postscript-compatible Printer, whereby the Apple Laserwriter II is recommended.

setup_rpt_10

I called the printer ‚Postscript‘ to avoid having troubles with spaces and special-chars in LPR-Queue-Names, which could confuse UNIX operating systems (?).

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) Windows 2000 and Windows XP as LPD Server

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die „Perlen“ über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

You can turn your Windows 2000 and Windows XP-Clients in a LPD Server at ease:

  1. Just make sure you have the Other Network File and Print Services components installed.
  2. Set the TCP/IP print server service to startup automatically

According to www.uark.edu

Tags: , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) Default LPR Queue Names of different Vendors

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die „Perlen“ über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

List

Windows with LPR-Support: Use the name of the printer as it appears in Start > Settings > Printers (don’t know whether spaces and special chars cause problems).

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. November 2013

(Aus dem Archiv) Apple Printers

Der vorliegende Artikel habe ich ursprünglich irgendwann einmal ab 2002 auf meinem damaligen Linux-Entwicklungsserver im Web publiziert. Da ich das bloggen erst 2005 entdeckt habe, waren die Tipps in einer grossen HTML-Seite untergebracht. Anlässlich einer Aufräumaktion auf dem Server habe ich mich entschieden, die „Perlen“ über meine heutige Kommunikationsplattform ins Web zu posaunen. Seitdem ich die Artikel verfasst habe, sind viele Tage ins Land gegangen — ob der Artikel noch Gültigkeit hat, entscheidet der geneigte Leser selber.

Apple Knowledge Base

  • Apple Printer Utility (Mac)
    The Apple Printer Utility program works with all Apple PostScript Level 1, PostScript Level 2, and PostScript 3 printers. If this software is used with a non-Apple printer or with a printer developed after this release, a set of generic features will be available. The generic feature set consists of options that are common to most PostScript printers. These features should work with non-Apple printers but are not specifically supported by Apple. This utility is included with the LaserWriter 8.5.1 software posted here. It replaces all previous versions of Apple Printer Utility.

Tags: ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen