Archiv Juli 2012

Samstag, 28. Juli 2012

Europapark-DVD mit ffmpeg konvertieren und zuschneiden

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: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 26. Juli 2012

Access stellt importierte Excel-Zeilenschaltungen als Sonderzeichen dar

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: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 18. Juli 2012

Microsoft Excel beschwert sich über „Too many different cell formats“

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: , , , , , , ,
Labels: IT, Programmierung

Keine Kommentare | neuen Kommentar verfassen

Montag, 16. Juli 2012

Das Kerning der Prozentzahl auf dem iPhone 4S stimmt nicht

Bin ich der einzige Mensch auf der Welt, welchen das Kerning der Prozentanzeige auf dem iPhone 4S (iOS 5.1) stört? Der horizontale Abstand zwischen den zwei Ziffern ist viel zu gross, wenn bspw. 50% oder 84% steht:

Nachtrag: Nein, das Thema scheint bekannt zu sein:

A while ago I noticed, that on iPhone 4 sometimes the battery percentage figures looked odd. They are unevenly spaced and seem to jump off the baseline of the font. I tried to narrow it down and found out that this only occurrs on the 4, not a 3GS running the same iOS. The main font-related difference between the two devices – as far as I know – is, that the 4 uses Helvetica Neue, rather than simple Helvetica. Other than that, the increased resolution of the 4 versus the 3GS could also make a difference.

Quelle: Battery Percentage Numbers look odd on iPhone 4 and 4S

Tags: , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Montag, 16. Juli 2012

PHPs serialize und unserialize-Funktion mit Unicode-Problemen

Ich habe es mir angewöhnt, regelmässig in das PHP-Error-Log auf meinem privaten Web-Server zu schauen, in welches mit E_ALL jede erdenkliche Art von Fehlern aufgezeichnet werden.

Und kürzlich häuften sich durch einen Spider verursachte Fehler in der Form:

...
PHP Notice:  unserialize(): Error at offset 1573 of 20531 bytes in /var/www/sites/domain.ch/administration/inkludierung/file.php on line 1816
...

Heute hatte ich Zeit, dem Problem auf den Grund zu gehen. Die erste Aufgabe bestand einmal daraus, den serialisierten String vor der Speicherung in die Datenbank mit dem serialisierten String nach dem Extrakt aus der Datenbank zu vergleichen. Hierzu schrieb ich die beiden Zeichenketten in Dateien im Web-Root. Wie sich mit einem Blick erkennen liess, war der serialisierte String nach dem Zurücklesen aus der Datenbank um 30 Bytes grösser.

Was war die Ursache? Natürlich vermutete ich auf Anhieb Probleme mit dem Zeichensatz und Sonderzeichen, von welchen es in der deutschen Sprache halt ziemlich viele gibt (jedenfalls aus der Optik von 127 ASCII-Zeichen). Da PHP Offsets in Bytes (und nicht Zeichen) angibt, war es hilflos, den String in einem Texteditor wie TextMate anzuschauen. Stattdessen rief ich 0xED auf, und musste danach „offset 1573“ in Hex umrechnen — mit dem erstbesten Tool, welches ich im Web fand: Hexadecimal Conversion. Der Blick auf den Array-Wert bestätigte meine Befürchtung: Es handelte sich um eine Zeichenkette, welche deutsche Umlaute enthielt.

NB: Der Offset lag aber ca. 10 Zeichen hinter dem Auftreten der Sonderzeichen, aber immer noch innerhalb des Strings, welcher die Sonderzeichen enthielt.

Nach etwas Googlen realisierte ich, dass PHPs serialize() und unserialize() nicht den besten Ruf besitzen und äusserst fehleranfällig sind — besonders, wenn es um Multibyte-Strings geht. Nachdem ich kurzfristig auf json_encode() und json_decode() wechseln wollte, das Vorhaben aber abbrechen musste, weil ich mein Mega-Array mangels nicht fortlaufender Keys teilweise in Objekte umgewandelt zurückerhielt, stiess ich auf folgenden Blog-Post:

PHP Serialize() & Unserialize() Issues

Seit ich die serialisierten Zeichenketten noch durch Base64-En- resp. Dekodierung durchlaufen lasse, bleibt mein PHP-Error-Log leer:

...
$toDb = base64_encode(serialize($sitemap));
...
$sitemap = unserialize(base64_decode($fromDb));

Einziger Nachteil: Durch Base64-Encodierung setzt der String 7 Kilobytes an Länge an. Aber mir soll’s Recht sein.

Tags: , ,
Labels: Programmierung

4 Kommentare | neuen Kommentar verfassen

Freitag, 13. Juli 2012

Wie man die Schweizerischen Nummernschilder von Diplomatenfahrzeugen liest

Da ich und meine Partnerin seit knapp 40 Tagen in Bern wohnen und sich in unserer Strasse zufälligerweise auch die Vietnamesische Botschaft befindet, konnte ich endlich die Struktur der Diplomatenschilder entschlüsseln:

[CD|AT] BE [0-9]{1,2} • [0-9]{1,3}

Von einem Kollegen aus der Zeit am Gymnasium, der seines Zeichens Sohn eines ausländischen Diplomaten ist, wusste ich bereits, dass eine der Nummern das Entsendeland des Diplomaten enthielt. Dank den unzähligen Fahrzeugen vor der Vietnamesischen Botschaft konnte ich durch einen raschen Vergleich der Nummernschilder herausfinden, dass die zweite — und nicht wie von mir ursprünglich vermutet die erste — Nummer das Land kennzeichnet.

Doch wie finde ich nun unterwegs auf der Strasse heraus, welchem Land ein Fahrzeug gehört? Ganz einfach, Wikipedia (und für einmal nicht Google) hilft gerne weiter:

Autokennzeichen (Schweiz) / Diplomaten-Kennzeichen

Indem man die Liste „Diplomatische Kodes (Nationen)“ mit Klick öffnet, finden sich die Nummerncodes von 177 Nationen.

Vietnam hat — wie ich bereits wusste — die Nummer 49 zugeteilt, die USA die Nummer 9 und China die Nummer 55. Wieso China? Bei einem Spaziergang entdeckten wir vorgestern einen Volvo auf dem Areal des Inselspitals, der die Landeskennnummer 55 trug. Anhand der „chinesischen“ Airbags, wie ich die am Rückspiegel angemachten Glücksbringer auch nenne, lag die Vermutung schon vor Ort nahe, dass es sich um ein chinesisches Fahrzeug handelt. Diese Vermutung wurde heute durch Wikipedia bestätig.

Ob jede Nation auch ein Schweizerische Nummernschild besitzt, weiss ich hingegen nicht …

Tags: , , , , , , ,
Labels: Schweiz

1 Kommentar | neuen Kommentar verfassen

Dienstag, 10. Juli 2012

Adressänderungen von PayNet unter DirectNet

Die PayNet-Adressdaten werden von der Credit Suisse nicht mit den bei der Bank hinterlegten Adressdaten synchronisiert. Zügelt man, müssen diese gesondert (und durch den Kunden selber) angepasst werden:

  1. DirectNet
  2. Zahlungen
  3. E-Rechnungen
  4. Administration
  5. Profil
  6. Adressdaten ändern

Tags: , , ,
Labels: Leben

Keine Kommentare | neuen Kommentar verfassen

Montag, 9. Juli 2012

Wenn Word 2007 bei jedem Speichern wegen Kommentaren und Änderungen nervt

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:

  1. Office-Knopf
  2. Word options
  3. Trust Center
  4. Trust Center Settings…
  5. [] Warn before printing, saving or sending a file that contains tracked changes or comments

Via: Prompts to save comments

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Freitag, 6. Juli 2012

2004, das Jahr in welchem die Windows-Hegemonie zu bröckeln begann

When Windows 95 launched in 1995 it negated most of the advantages of the ease of use of the Macintosh and the PC market took off. The ratio reached 56 in 2004 when 182.5 million PCs were sold vs. 3.25 million Macs. […]

Then, in 2004, something happened.

Quelle: Building and dismantling the Windows advantage

Im März 2004 wurde mein PowerMac G5 geliefert, welcher mir bis zum Anfang dieses Jahres treue Dienste leistete. Ich wechselte also unbewusst just in diesem Moment von der Wintel- in die Apfel-Welt, als Microsoft auf dem Höhepunkt seiner Dominanz angekommen war.

Seit 2004 ging es nur für die Firma nur noch bergab; heute werden pro einem Apple-Geräte (Mac, iPhone, iPad) nur noch zwei Windows-Geräte verkauft. Auch das knacken wir noch …

Für jemanden, der seinerzeit den CD-ROM-Laufwerken keine Zukunft voraussagte und noch im Jahr 2000 felsenfest davon überzeugt war, noch lange ohne Mobiltelefon auszukommen, für einmal ein offensichtlich richtungsweisender Entscheid.

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen