Mal wieder die Nexus…

Meine alte Nexus hat unter Windows 7 leider die unangenehme Eigenschaft, dass beim Starten einer Aufzeichnung (respektive Nutzung der Karte überhaupt) das System kurz ins Stocken kommt. An sich kein Problem, aber wenn meine andere DVB Karte (Nova-HD-S2) gerade eine Aufzeichnung macht, gibt es kurz Aussetzer. Für VCR.NET 4.2 wird es daher eine eigene Planungsregel geben – hey, ich nutze das halt auch 🙂 :

Startzeit einschränken

In dieser Variante (die Regel ist durchaus etwas mächtiger) sagt die Zeile mit der Nexus: wenn möglich (i.e. keine der vorherigen Regeln wird verletzt) sollten Aufzeichnung auf der Nexus immer vor Aufzeichnungen anderer Karten starten. Da in der Standardeinstellung die Priorität der Geräte erst ganz am Ende berücksichtigt wird heißt das, dass die Nexus in solchen Situationen bevorzugt wird, obwohl sie (bei mir aus gutem Grund) eigentlich eine niedrigere Aufzeichnungspriorität hat.

Viel Spaß

Jochen

WaitableTimer und der Schlafzustand mit Tücken

Für VCR.NET 4.1 habe ich einige grundlegende Änderung beim Arbeiten mit dem Schlafzustand vorgenommen. Ursache war, dass seit Windows Vista der Windows Dienst den durch den Anwender ausgelösten Schlafzustand nicht mehr unterbinden kann und sich dem ganzen Vorgang stillschweigend anschließen muss. Das Beenden laufender Aufzeichnungen ist dabei ein wichtiger Schritt und das scheint auch soweit zu klappen. Allerdings wollte ich VCR.NET dafür sorgend lassen, dass zum einen ein überhasteter Schlafzustand Aufzeichnungen nicht ganz unter den Tisch fallen lässt zum anderen aber der Rechner auch nicht direkt wieder aufgeweckt wird.

Die Grundidee war der neue Konfigurationsparameter zur minimalen Verweildauer im Schlafzustand. Wenn der Anwender eine Minute vor Beginn in der Aufzeichnung den Schlafzustand auslöst, dann respektiert VCR.NET das erst einmal. Allerdings wird sichergestellt, dass der Aufweckzeitpunkt durch einen sogenannten WaitableTimer nicht weiter als diese minimale Verweildauer in der Zukunft liegt – die Voreinstellung ist 5 Minuten, i.e. im Beispiel gingen „nur“ 4 Minuten der Aufzeichnung verloren.

Leider haben wir nun festgestellt, dass das so nicht immer geht. Es scheint so zu sein, dass Windows den Aufweckzeitpunkt ignoriert wenn dieser zu spät während des Übergangs in den Schlafzustand erfolgt! Einige Änderungen in VCR.NET 4.1 führen dazu, dass je nach konkreter Konfiguration, Anzahl von Aufzeichnungen und Karten und abhängig von der Leistungsfähigkeit des Rechners in einigen Fällen genau dies passiert. Und dann wacht der Rechner für die nächste Aufzeichnung gar nicht auf – blöd, wenn das im Urlaub passiert.

Ab VCR.NET 4.2 kann man dieses neu eingeführte Verhalten wieder deaktivieren – in der Voreinstellung ist es weiterhin aktiv, für mich benutze ich es als Selbstschutz gegen persönliche Dummheit.

Neue Einstellung

Ist das Häkchen gesetzt, so manipuliert VCR.NET 4.2 den Aufweckzeitpunkt nicht mehr. Würde das Kontrollzentrum einen gelben Hintergrund zeigen und damit signalisieren, dass eine Aufzeichnung unmittelbar bevorsteht, so kann es dann sein, dass der Rechner sehr schnell wieder aufwacht – und dann die Aufzeichnung korrekt ausführt. Bei einem blauen Hintergrund und damit einer laufenden Aufzeichnung kann das Verhalten nicht genau vorhergesagt werden. Überlappen sich Aufzeichnungen, so wird VCR.NET zu Beginn der Folgeaufzeichnung aufwachen, ansonsten eventuell unnötig zu dem Zeitpunkt, an dem die unterbrochene Aufzeichnung eigentlich zu Ende wäre. Mit Verlust ist auf jeden Fall zu rechnen.

Nach aktuellem Kenntnisstand ist das im Moment das beste, was ich für VCR.NET 4.2 machen kann.

Jochen

Öfter mal was Neues: noch eine Foto-Galerie

Hier mal etwas aus dem Dunstkreise Jochen versucht jQuery zu lernen: man kennt sie alle, die vielen Varianten von kostenlosen und kommerziellen Werkzeugen um im Web eine Fotogalerie anzulegen. Im Rahmen meines Selbststudiums habe ich für mich einmal versucht, nur mit jQuery eine möglichst einfache Lösung zu basteln – der JavaScript Code sieht etwas komisch aus, da ich zur Entwicklung TypeScript eingesetzt habe. Wichtig war hierbei der Plan, eine SPA (Single-Page-Application) zu erhalten, also im Wesentlichen nur eine HTML Seite, auf der die Galerie präsentiert wird. Mit jQuery eigentlich kein Problem.

Hier in aller Kürze der Status Quo – keine Ahnung, ob ich da noch jemals etwas daran tue:

  • Am Anfang steht ein kleines Windows Programm (.NET 4.5, WPF, C#), mit dem man eine solche Galerie erstellen kann.
  • Man gibt dem Programm den Namen eines Verzeichnisses mit Bilddateien (diese einfachste Version nimmt nur JPGs), einem Verzeichnis für die Web Seite und eine Überschrift für die Foto-Galerie.
  • Das Programm erzeugt zu jedem Bild ein Mini-Bild, dass proportional so skaliert wird, dass die längste Seite genau 200 Pixel enthält.
  • Die Web Seite erhält nur eine einzige HTML Datei INDEX.HTML, die bei Aufruf eine Übersicht über die ersten 21 Bilder gibt – organisiert in 3 Reihen mit je 7 Mini-Bildern. Eine Navigationsleiste erlaubt es, zwischen den Seiten der Übersicht zu wechseln, wenn man mehr als 21 Bilder hat.
  • Wählt man ein Mini-Bild aus, so wird dieses groß angezeigt. Darüber erscheint eine Navigationsleiste mit 7 Mini-Bildern rund um dieses Bild, die durch Auswahl ein Blättern von Bild zu Bild erlaubt.

Ok, das ist sicher einfach genug. Aber vielleicht doch einige interessante Details – die sich sicher auch ausbauen lassen, wenn man Lust und Zeit hat vor allem das Windows Programm zur Erzeugung anzupassen:

  • In der INDEX.HTML ist der Name des Unterverzeichnisses festgelegt, in dem die Bilder zu finden sind – erzeugt wird immer PICS. Dieser Name ist austauschbar.
  • In dem Unterverzeichnis liegt eine Datei GALERIE.TXT im JSON Format. Diese enthält die wenigen Konfigurationsparameter des Spielprojektes.
  • Zum einen wird hier die Anzahl der Reihen von Mini-Bildern (erzeugt wird immer 3) und die der Mini-Bilder pro Zeile (erzeugt wird immer 7) festgelegt. Man kann hier ein wenig herumspielen, die Detailansicht funktioniert aber nur richtig, wenn die Anzahl pro Zeile ungerade ist.
  • Dazu kommt der Titel, der als Seitenname und Überschrift verwendet wird.
  • Spannender ist die Liste der Bilder, die angezeigt werden sollen. Diese Liste erlaubt es auch, die Reihenfolge der Bilder vorzugeben (erzeugt wird immer eine alphabetisch sortierte Liste). Für die Galerie selbst ist das Format (JPG, PNG, GIF, …) der Bilddateien eigentlich egal, bei der Erzeugung werden aber nur JPG berücksichtigt. Zu jeder Bilddatei muss es aber ein Mini-Bild im gleichen Format mit dem Präfix TN_ geben, dessen längste Seite 200 Pixel lang ist.

Der Wechsel zwischen den Ansichten erfolgt über den Anker (Hash) in der URL. So sieht das dann Live aus (ich habe mal die Bilder aus der Web Seite des DVB.NET / VCR.NET Viewers zusammen geklaubt).

Die Übersicht

Ein Bild

Viel Spaß

Jochen

<Update1>Die Anzahl der Minibilder wird nun dynamisch aus der Größe des Fensters bestimmt, die entsprechenden Parameter wurden aus der Konfiguration entfernt. Klappt leider noch nicht ganz: je nach Breite des Fensters im Übersichtsmodus enthält die unterste Zeile weniger Bilder als die anderen Zeilen.</Update1>

VCR.NET 4.2 – Ablage der Favoriten (gespeicherten Suchen) der Programmzeitschrift

VCR.NET 4.2 wird die gespeicherten Suchen der Programmzeitschrift (dort Favoriten genannt) im Benutzerprofil auf dem Server (App_Data Unterverzeichnis) ablegen – der REST Web Service wurde entsprechend erweitert. VCR.NET 4.1 speicherte die Favoriten im localStorage auf dem Client. Allerdings verwaltet jeder Browser diese Ablage individuell und ärgerte dadurch Anwender wie mich, die ab und an zwischen den Browsern wechseln – hier IE und FF.

Es wird auch ein einfacher Migrationsalgorithmus eingesetzt: wenn man die gespeicherten Suchen aufruft aber noch keine im Profil abgelegt wurden, so werden die des Browsers verwendet. Bei der ersten Veränderung an den Favoriten (neu Anlegen oder Entfernen) gibt es dann endgültig die einzige Wahrheit auf dem Server.

Viel Spaß

Jochen

VCR.NET 4.2 – Regeln für die Aufzeichnungsplanung

Hier schon einmal ein erster Blick auf die Möglichkeit, mit VCR.NET 4.2 ein Feintuning an dem Regelwerk vorzunehmen, das die Grundlage für die Verteilung von Aufzeichnungen auf verschiedene DVB Geräte ist. Ich habe diese Version noch nicht hochgeladen, da es wirklich direkt aus der Werkstatt ist: keine Ahnung, ob man auch etwas ordentlich kaputt machen kann und zudem sind die Konfigurationsmöglichkeiten unzureichend. Wie dem auch sei: das Bild zeigt die Regeln, die ohne weitere Maßnahmen durch den Anwender verwendet werden – i.e. vor allem direkt nach einer Erstinstallation.

Initiale Regeln

Wie zu sehen erfolgt die Eingabe direkt aus der Konfiguration des VCR.NET heraus. Zusätzlich gibt es natürlich auch einen recht einfach direkt verwendbaren REST Web Service.

Jochen