Archiv ‘IT’
Samstag, 17. November 2012
Bilddateien unter Mac OS X mit Rechtsklick auf Flickr laden (Python und Automator)
Link zu diesem Artikel
Rückblickend — wie so vieles — eine ganz simple Aufgabe.
WICHTIG: Das neueste, überarbeitete Script findet sich auf Github unter emeidi/flickrUpload
flickrUploaderLean.py
#!/usr/bin/env python
import os
import sys
import re
import flickrapi
api_key = ''
api_secret = ''
flickr = flickrapi.FlickrAPI(api_key, api_secret)
(token, frob) = flickr.get_token_part_one(perms='write')
if not token:
raw_input("Press ENTER after you authorized this program")
flickr.get_token_part_two((token, frob))
numArgs = len(sys.argv)
if(numArgs < 1):
sys.exit("Usage:" + sys.argv[0] + " ")
photo_path = sys.argv[1]
if(os.path.isfile(photo_path) == False):
sys.exit("File not found: " + photo_path)
res = flickr.upload(filename=photo_path, is_public=u'1')
t = res[0]
if t.tag == 'photoid':
print 'http://www.flickr.com/photos/upload/edit/?ids=' + t.text
else:
print 'http://www.flickr.com/upload+failed'
sys.exit(0)
Anschliessend erstellt man mittels Apple Automator einen Service, welcher nach dem Abspeichern mittels eines Rechtsklick auf eine Datei im Untermenu „Services“ aufgeführt wird:

Konkret:
- Service receives selected files or folders in Finder.app
- Run Shell Script
- Shell: /bin/bash
- Pass Input: as arguments
- (Textfeld): /Users/mario/Scripts/flickrUploadLean.py „$@“
- Display Webpages
Tags: Automator, Flickr, Image, Mac OS X, Photo, Python, Upload
Labels: IT
Mittwoch, 7. November 2012
Microsoft Domain Policies mit grep unter Windows filtern
Link zu diesem Artikel
Herkules-Aufgabe am Tag, an welchem Barack Obama zum neuen alten Präsident der USA gewählt wurde: Ich musste aus über 150 Domain Policies im HTML-Format diejenigen Dokumente herausfiltern, welche Passworteinstellungen enthielten. Und dies – wohlgemerkt – unter Windows. Wie macht man das?
Im Grund genommen ist das ganze keine grosse Hexerei:
- msysgit herunterladen
- msysgit installieren
- Git bash starten
- Ins Verzeichnis mit den Policies wechseln
- Folgenden Befehl ausführen:
$ grep "Enforce password" *.html
Doch oha! grep liefert keine einzige Datei zurück, welche Kennwortrichtlinien enthält? Ein cat auf eine Beispieldatei zeigt, dass zwischen jedem Buchstaben ein Leerzeichen folgt. Indem man eine Beispieldatei mit Notepad++ öffnet, findet man heraus, dass die Exporte vom Domain Controller mit UCS-2 Little Endian enkodiert sind (der Zeichensatz steht in Notepad++ unten rechts in der Statusleiste).
Was nun? Ich habe mir kurzerhand ein bash-Script geschrieben, um die Dateien on-the-fly in ein für grep verständliches Format (UTF-8) zu konvertieren:
#!/bin/sh
if [ $# -lt 2 ]
then
echo "Usage: $0 [extension of files to search] [string to search for in files]"
exit 1
fi
for i in *.$1
do
RES=`iconv -f UCS-2LE -t UTF-8 "$i" | grep "$2"`
RET=$?
if [ $RET -eq 0 ]
then
echo "$RET - $i"
echo $RES
echo ""
fi
done
exit 0
Das Script tut folgendes: Zuerst liest es alle Dateien im aktuellen Verzeichnis aus, welche auf .html enden. In einer Schleife wird nun jede gefundene Datei mittels iconv von UCS-2LE nach UTF-8 konvertiert und an grep weitergepipet. grep sucht im Zeichensalat nach „Enforce password“. Die bash-Variable $? speichert das Resultat dieses Befehls; sprich 0 falls die Zeichenkette gefunden wurde, 1 (oder eine andere Zahl ungleich 0), wenn grep gestolpert ist oder einfach nichts gefunden hat. Ist $RET gleich 0, wird der Dateiname ausgegeben.
Schlussendlich fanden sich in den 150 Dateien gerade mal 6 Stück, welche Passworteinstellungen enthalten. Doch statt dem fehleranfälligen manuellen Geklicke habe ich quelloffene Tools, gepaart mit ein wenig Scripting-Wissen für mich arbeiten lassen.
Gut zu Wissen
Wer die Namen der Zeichensätze nicht auswendig weiss, dem wird unter folgendem Link geholfen:
libiconv
Tags: Bash, cat, Domain Policies, Domänenrichtlinien, Git, grep, HTML, iconv, Little Endian, msysgit, OSS, UCS-2, UCS-2LE, UTF-8, Windows
Labels: IT
Samstag, 13. Oktober 2012
Wenn man sich bei Arcotel unter Mac OS X 10.7 nicht in das WLAN einloggen kann
Link zu diesem Artikel
… liegt das daran, dass das Login-Fenster des Apple WiFi-Services keine JavaScript-Alerts ausführt resp. anzeigt.
Deshalb muss man sich über den Web-Browser (Safari oder bspw. Chrome) anmelden und den JavaScript-Dialog („Bitte verwenden Sie http://logoff.now, um sich abzumelden“) abnicken. Dann klappt es auch mit dem kostenlosen WLAN für Hotelgäste.
Tags: Arcotel, Hotel, Mac OS X, Stuttgart, WiFi, WLAN
Labels: IT
Donnerstag, 4. Oktober 2012
Wie man aus smime.p7s ein .cer-Zertifikat macht
Link zu diesem Artikel
Irgendwie hat es Lotus Notes auf der Arbeit (von mir auch schon liebevoll als „a pile of shit“ bezeichnet) so an sich, dass es so seine Problem mit Private Public-Key-Verschlüsselung hat. Zugegebenermassen habe ich selber auch noch nicht ganz durchblickt, was jetzt was ist — und wann man von Public-Key-Verschlüsselung spricht und wann von Zertifikaten.
Mittlerweile habe ich realisiert, dass die Verschlüsselung dann auf Anhieb klappt, wenn ich das X.509-Zertifikat eines Benutzers in dessen Kontakt importiere (über Actions > Certificates > Import Internet Certificate). Doch manchmal hat man das Zertifikat einfach nicht zur Hand, weil es auf Gottes Erde so viele Arten gibt, den Mailverkehr zwischen zwei Parteien zu verschlüsseln.
So wie heute: Da kam also ein Mail an, welches eine smime.p7s-Signatur im Anhang enthielt (nur sichtbar über den Quelltext des E-Mails). Lotus Notes scheint (zumindest bei uns) nichts damit anfangen zu können.
Ich kopierte die Signatur deshalb manuell in eine Textdatei und speicherte diese als smime.p7s ab. Windows erkennt diese Dateiendung leider nicht. Indem ich .p7s in .p7b änderte, wechselte das Icon der Datei in ein Zertifikat. Ich konnte dieses nun Doppelklicken, Microsoft Certificates wurde gestartet und zeigte mir den Inhalt des Zertifikats an.
Mittels Rechtsklick auf das Zertifikat mit dem Namen der Person wählte ich Actions > Export aus. Ich generierte mir auf diese Weise eine DER-kodierte .cer-Datei. Diese legte ich wiederum als Datei auf dem Desktop ab.
Jetzt erst war es dem „dampfenden Scheisshaufen“ (Lotus Notes) möglich, das Zertifikat dem Kontakt hinzuzufügen. Und somit kann ich seither mit der Gegenpartei verschlüsselt kommunizieren, ohne auf eine webbasierte Secure Mail-Lösung zurückgreifen zu müssen.
Kleingedrucktes: Natürlich benötige auch ich ein entsprechendes Zertifikat. Dieses habe ich über Symantec VeriSign bezogen.
Tags: CER, DER, GPG, Lotus Notes, p7b, p7s, PGP, S/MIME, Verschlüsselung, Zertifikate
Labels: IT
Donnerstag, 4. Oktober 2012
In Microsoft Word einen neuen Paragraphen nach einer Tabelle einfügen
Link zu diesem Artikel
Jeder Angestellte, welcher von seinem Arbeitgeber gezwungen wird, Microsoft Word einzusetzen kennt das Problem: Da habe ich also eine Tabelle und nach dieser kommt … nichts. Will heissen, die Tabelle reicht bündig bis ans Seitenende. Und nun steht man plötzlich vor dem Problem, dass man nach der Tabelle doch noch einige Paragraphen Text anfügen möchte. Indem man den Cursor in der letzten Tabellenzeile in die Spalte ganz rechts platziert und danach die Return-Taste betätigt, generiert man eine neue Tabellenzeile nach der anderen.
Abhilfe schafft folgender Trick:
Click the Show/Hide button on the toolbar until your paragraph marks appear. Without them, you cannot see what you are doing. To solve your situation, place your cursor in the last cell of the table, then hit Cursor Right twice.
You will see the cursor moves to the empty paragraph mark after the table.That’s the end of the file. Start typing there.
Quelle: cursor will not exit the table
Auf Deutsch: Anstelle dass man die Zeilenschaltungstaste betätigt, drückt man zweimal auf Cursor Rechts. Und schwupps, Word wechselt den Cursor auf die nächste Zeile und eröffnet einen neuen Paragraphen für die Texteingabe.
Tags: How-To, Microsoft, Word
Labels: IT
Montag, 27. August 2012
Multipart ZIP-Archive im Mac OS X Shell entpacken
Link zu diesem Artikel
Zuerst muss man die ZIP-Dateien zu einer grossen Datei zusammenbacken — dabei ist darauf zu achten, dass die .zip-Datei am Schluss angefügt wird, gestartet wird mit .z01:
$ cat teilarchiv.z01 teilarchiv.z02 teilarchiv.zip > archiv.zip
Anschliessend kann man die grosse ZIP-Datei mit Mac OS X Bordmitteln entpacken, wobei man sich über die Fehlermeldungen getrost hinwegsetzen kann:
$ unzip archiv.zip
Tags: Bash, How-To, Mac OS X, Shell, Terminal, Zip
Labels: IT
Samstag, 28. Juli 2012
Europapark-DVD mit ffmpeg konvertieren und zuschneiden
Link zu diesem Artikel
Da haben meine Freundin und ich uns die DVD zu unserer Achterbahnfahrt „Blue Fire“ geleistet — doch wie bringt man das Material nun auf Facebook, YouTube & Co.?
Ganz einfach! Zuerst einmal kopieren wir die Datei VTS_01_1.VOB im VIDEO_TS-Ordner (die grösste Datei auf der DVD) auf die Festplatte. Dann dampfen wir die 353MB (60 Sekunden Fahrt) auf 41MB ein:
ffmpeg -i VTS_01_1.VOB -vcodec mpeg4 -acodec libmp3lame converted.mp4
Die Parameter bedeuten folgendes:
- -i VTS_01_1.VOB: Das Ursprungsvideo
- -acodec libmp3lame: Verwende Lame MP3 als Audio-Codec
- -vcodec mpeg4: Verwende MPEG4 als Video-Codec
- converted.mp4: Die Ausgabedatei
Anschliessend schneiden wir das insgesamt 7 Minuten lange Video auf unsere eigene Achterbahn zurecht:
ffmpeg -i converted.mp4 -ss 112 -t 60 -acodec copy -vcodec copy "cut.mp4"
Die Parameter bedeuten folgendes:
- -i converted.mp4: Das Ursprungsvideo
- -ss 112: Starte bei 112 Sekunden
- -t 60: Ende nach 60 Sekunden
- -acodec copy: Verwende den derzeitigen Audio-Codec
- -vcodec copy: Verwende den derzeitigen Video-Codec
- cut.mp4: Die Ausgabedatei
Tags: Facebook, ffmpeg, How-To, Video, Youtube
Labels: IT
Donnerstag, 26. Juli 2012
Access stellt importierte Excel-Zeilenschaltungen als Sonderzeichen dar
Link zu diesem Artikel
Microsoft-Produkte weisen seit Jahrzehnten kompromisslose Interoperabilität auf:
As you have found, Excel uses only the line feed character (ASCII 10) to indicate a line break, while Access uses carriage return + line feed (ASCII 13 and ASCII 10).
Damit die Zeilenschaltungen auch in Access als Zeilenschaltungen angezeigt werden, führt man nach dem Import einer Excel-Datei in eine Access-Tabelle folgendes Query aus:
UPDATE Feststellungen SET Feststellung = Replace(Feststellung,Chr(10),Chr(13) & Chr(10));
Via: Import Text from Excel with line breaks (2003)
Tags: Access, Excel, Export, How-To, Import, Microsoft, SQL
Labels: IT
Mittwoch, 18. Juli 2012
Microsoft Excel beschwert sich über „Too many different cell formats“
Link zu diesem Artikel
Es vergeht keinen Tag am Bürorechner, an welchem man nicht eine neue Fehlermeldung in Microsoft-Produkten präsentiert kriegt – und sich beim der Recherche zum Fehler wieder einmal wünschen würde, jeden einzelnen Entwickler in Redmond einen unendlich langsamen Tod sterben zu lassen.
Microsoft gibt seinen Endanwendern die grandiose Möglichkeit, jede einzelne Tabellenzeile mit einem individuellen Format zu versehen. Rahmendicke, Hintergrundfarben, Schriftschnitte können individuell definiert werden. Und jede so formatierte Zelle ergibt ein neues Zellformat, welches in der Excel-Datei zentral gesichert wird.
Das Schöne daran ist, dass es offenbar Endanwender in Schwellenländern gibt, welche es bei der Erledigung von ausgelagerten Arbeiten fertigbringen, annähernd 65’000 Formate in einer einzigen Excel-Datei mit ca. 20 Sheets unterzubringen. Heilige Shiva! Das Problem: Excel kriegt massiven Schluckauf, sobald diese Limite (wahrscheinlich mit der Grenze für unsigned integers) erreicht ist – nichts geht mehr, keine Zellformatierung, kein Zusammenführen von Zellen, ja nicht einmal kopieren geht mehr. Und dazu die lapidare Fehlermeldung:
Too many different cell formats.
Die Lösung ist im Grunde simpel: Das Dokument muss analysiert und nicht verwendete Styles gelöscht werden. Dafür gibt es mittlerweile unzählige Varianten, davon hier nur drei:
- Kommerziell. 39 Dollar will der Entwickler des Style Reduction Tools haben, damit die Excel-Endanwender wieder arbeiten und nicht Excel-Fehlermeldungen wegglicken und Abstürze überwinden müssen.
- Handgestrickt. Auf Stackoverflow findet sich VBA-Code, welchen man mit entsprechenden Kenntnissen über eine Excel-Datei laufen lassen kann. Fallstricke:
- .xlsx-Dateien müssen zuerst in .xlsm-Dateien umkonvertiert werden
- Danach muss man das Developer-Ribbon aktivieren
- Anschliessend fügt man ein Modul in die Excel-Datei ein
- Nun kopiert man den Source-Code in das Modul hinein
- Schlussendlich muss unter Tools > References noch „Microsoft Scripting Runtime“ aktiviert werden
- Jetzt kann man die Funktion starten, fliegt aber rasch auf die Schnauze, weil Dim iStyleCount As Integer als Integer definiert ist und deshalb überläuft
- Nachdem der Laptop für ca. 20-30 Minuten wie totgefroren ist, erscheint dann die erlösende Meldung: Statt der ursprünglich 64999 gefundenen Styles sind nach der Bereinigung nur noch effektiv 10 verwendete Stück im Dokument
- Beschleunigt. Da sich Microsoft des Problems bewusst ist, verlinken sie in ihrem KB-Artikel zur Fehlermeldung auf ein kostenfreies Tool eines unabhängigen Entwicklers (.NET4.0 version of the XLStylesTool is now available), welcher die Styles auf OOXML-Ebene säubert, was einen massiven Geschwindigkeitsgewinn gegenüber der VBA-Version ermöglicht. WICHTIG: Nachdem die Applikation gestartet und die Datei ausgewählt wurde, muss zwingend [x] „Commit changes …“ ausgewählt werden, damit die Anpassungen gespeichert werden können.
VBA-Code
Via: Too Many Different Cell Formats, ergänzt/überarbeitet von eMeidi.com
' Description:
' Borrowed largely from http://www.jkp-ads.com/Articles/styles06.asp
' Additional debug message piping to .txt file in C:\ by eMeidi.com
' Bugfixing iStyleCount from Integer to Long by eMeidi.com
Option Explicit
' Description:
' This is the "driver" for the entire module.
Public Sub DropUnusedStyles()
Dim styleObj As Style
Dim rngCell As Range
Dim wb As Workbook
Dim wsh As Worksheet
Dim str As String
Dim iStyleCount As Long
Dim dict As New Scripting.Dictionary ' <- from Tools / References... / "Microsoft Scripting Runtime"
' wb := workbook of interest. Choose one of the following
' Set wb = ThisWorkbook ' choose this module's workbook
Set wb = ActiveWorkbook ' the active workbook in excel
Dim strPath As String
strPath = "C:\excelFormatCleanerDebug.txt"
Dim f
f = FreeFile()
Open strPath For Output As f
'Print #f, Text
Debug.Print "BEGINNING # of styles in workbook: " & wb.Styles.Count
'GoTo Bla
' dict := list of styles
For Each styleObj In wb.Styles
str = styleObj.NameLocal
iStyleCount = iStyleCount + 1
Call dict.Add(str, 0) ' First time: adds keys
'Debug.Print str & ", ";
Print #f, str & ", "
Next styleObj
Debug.Print " dictionary now has " & dict.Count & " entries."
' Status, dictionary has styles (key) which are known to workbook
'GoTo Bla
' Traverse each visible worksheet and increment count each style occurrence
For Each wsh In wb.Worksheets
If wsh.Visible Then
For Each rngCell In wsh.UsedRange.Cells
str = rngCell.Style
dict.Item(str) = dict.Item(str) + 1 ' This time: counts occurrences
Print #f, str & "+1"
Next rngCell
End If
Next wsh
' Status, dictionary styles (key) has cell occurrence count (item)
' Try to delete unused styles
Dim aKey As Variant
On Error Resume Next ' wb.Styles(aKey).Delete may throw error
For Each aKey In dict.Keys
' display count & stylename
' e.g. "24 Normal"
Debug.Print dict.Item(aKey) & vbTab & aKey
Print #f, dict.Item(aKey) & vbTab & aKey
If dict.Item(aKey) = 0 Then
' Occurrence count (Item) indicates this style is not used
Call wb.Styles(aKey).Delete
If Err.Number <> 0 Then
Debug.Print vbTab & "^-- failed to delete"
Err.Clear
End If
Call dict.Remove(aKey)
End If
Next aKey
Debug.Print "ENDING # of style in workbook: " & wb.Styles.Count
Bla:
End Sub
Tags: Error, Excel, Fehlermeldung, How-To, Microsoft, Sucks, VBA, Visual Basic
Labels: IT, Programmierung
Montag, 9. Juli 2012
Wenn Word 2007 bei jedem Speichern wegen Kommentaren und Änderungen nervt
Link zu diesem Artikel
The document being saved contains comments. Continue with save?
Wer sich – wie ich – über diese typische Nervensäge aus dem Hause Microsoft aufregt, dem sei hier Abhilfe empfohlen:
- Office-Knopf
- Word options
- Trust Center
- Trust Center Settings…
- [] Warn before printing, saving or sending a file that contains tracked changes or comments
Via: Prompts to save comments
Tags: 2007, How-To, Microsoft, Nagging, Nerv, Word
Labels: IT