Alle Beiträge von adlerweb

Konstante kWh über die Solaranlage

Etwa 1.5-2kWh lassen sich pro Tag realistisch gesehen mit der momentanen Ausstattung meiner Solaranlage und wolkenlosem Himmel abdecken – wenn man sie denn konsequent auslastet. In den meisten Fällen ist dies nur am Wochenende der Fall, denn nur da bin ich tagsüber zu Hause und nutze energieintensive Geräte wie den Laptop oder stecke die Tiefkühltrue beaufsichtigt an den Inverter des Solarsystems um den Überschuss im Griff zu halten. In der Woche durch ist meist nach wenigen Stunden der Akku voll und die Solaranlage wird massiv gedrosselt. Immer wieder hatte ich seit letztem Sommer weitere Geräte auf meine 12V-Solaranlage umgestellt und auch mein Verhalten angepasst – mit Erfolg: In den letzten Tagen waren konstant mehr als 1kWh in den Statistiken zu sehen – trotz Wochentag. Wichtige Bausteine waren sicher die Umstellung weiterer Dauerläufer wie den Netzwerkverteilern sowie die Tatsache, dass ich nun abends den Laptop mit dem internen Akku betreibe und ihn morgens pünktlich zum Sonnenaufgang an das Ladegerät verfrachte.

Etwas Luft ist noch: Auch jetzt ist bei wolkenlosem Himmel noch Drosselung erkennbar, hier wird dann aber langsam etwas mehr Steuerung und aufwändigere Netzteile erforderlich. Genug Bastelspaß für die nächste Zeit. Erst mal wird jedoch das Verteilernetz erweitert werden müssen – die bisherigen Verteiler stoßen zu Spitzenzeiten langsam an ihre Grenzen, vor den nächsten Erweiterungen müssen hier also noch ein paar Gramm Kupfer nachgerüstet werden.

Der neue Fuß- und Radweg Saffig ? Miesenheim

Seit Jahren wurde er angekündigt, jetzt tut sich etwas: Parallel zur K63 zwischen Saffig und dem Andernacher Stadtteil Miesenheim ist in den letzten Wochen ein neuer Fuß und Radweg entstanden. Auch wenn noch nicht offiziell eröffnet: Die Baufahrzeuge sind vor einigen Tagen erst mal abgerückt und der Weg nutzbar – und er liegt auf einer täglichen Strecke. Zeit zu schauen, ob die jahrelangen Streitereien zu etwas Brauchbarem geführt haben.

Warum überhaupt ein Fuß und Radweg?

Bild: https://adlerweb.info/blog/wp-content/uploads/2015/05/radweg4-186×300.png Fuß- und Radweg Saffig ? Miesenheim
Map data © OpenStreetMap contributors
Tiles CC-BY-SA 2.0
http://www.openstreetmap.org/copyrightUm von Saffig nach Miesenheim – oder umgekehrt – zu gelangen hatte man als Fußgänger oder Radfahrer bisher zwei Möglichkeiten:

Einerseits kann man über den alten Mühlenweg und das Freibad Pellenz die Strecke überwinden. In Saffig trifft man nahezu direkt am Sportplatz ein, in Miesenheim im Bereich der Regionalen Schule. Da die Strecke zu einem großen Teil aus Feldwegen oder wenig befahrenen Zufahrten besteht kann man Gemütlichkeit walten lassen. Etwas unangenehmer ist der Abschnitt zwischen Nettetal/Freibad und der weiterführenden Straße: Durch das Gefälle wird die persönliche Fitness bei dem ein oder anderen doch stark strapaziert. Wer in Richtung Kernstadt weiter möchte darf den soeben erklommenen Hügel auch direkt wieder bergab fahren.

Eine weitere – und die von mir häufig genutzte – Möglichkeit bietet die K63, welche in Saffig an nahezu selber Stelle startet, jedoch an großen Teilen Miesenheims vorbei führt und direkt auf den Sportplatz sowie den Nette-Rundweg nach Andernach trifft. Die Straße selbst hat ein leichtes, stetiges Gefälle, ein ständiges auf und ab entfällt. Die flachere Wegführung und bessere Verkehrsanbindung erkauft man sich jedoch mit einer an anderer Stelle nicht ganz angenehmen Fahrt: Die K63 ist eine der Hauptstrecken für Berufspendler zwischen beiden Orten und im ersten Abschnitt nicht geschwindigkeitsbegrenzt. Auch Seitenstreifen oder andere Ausweichmöglichkeiten sucht man vergebens. Bei Gegenverkehr ist einem die gute Laune der nachfolgenden Autofahrer sicher.

Der parallel laufende Weg soll es den Muskelnutzern ermöglichen eine direkte Anbindung an das weitere Fuß- und Radwegenetz Andernachs ermöglichen ohne den Kraftverkehr wie bisher auszubremsen.

Erster Abschnitt: Von Höhen und Tiefen

Der Beginn des Weges findet sich in Saffig direkt an der Andernacher Straße/K63 an der Einmündung Drieschweidenweg. Auf der linken Seite trennt eine Baumreihe den Weg von der Straße, rechts befinden sich Felder. Der sehr breit geratene Weg ist nicht weiter befestigt, die Erde jedoch gut verdichtet und angenehm zu befahren. Während die Straße sich mit leichtem Gefälle in Richtung Andernach bewegt muss man auf dem neuen Weg erst eine leichte Steigung in Kauf nehmen, welche kurz vor Ende des Abschnitts rasant abfällt. Aus Richtung Saffig keine besondere Anstrengung, in Gegenrichtung jedoch sicher keine angenehme Angelegenheit.

Zweiter Abschnitt: Guten Rutsch!

Etwa in Höhe des ersten Feldweges, welche von der K63 abgeht und den Fuß- und Radweg kreuzt, endet das Saffiger Gebiet. Andernach hat hier etwas mehr versprochen, jedoch in Etappen. Während im Endausbau nach meinem Wissen eine Alphaltschicht vorgesehen war muss man sich für’s Erste mit einer Splittschicht anfreunden. Diese Befestigungsmethode ist hier in der Gegend sehr verbreitet – nicht zuletzt da es sich um ein lokales Erzeugnis handelt und bei Regen das Wasser gut abfließen lässt. Leider bietet dieses Material nur wenig Halt und man sollte Kurven als Radfahrer mit entsprechend niedriger Geschwindigkeit angehen. Mit Beginn des Abschnitts endet auch die trennende Baumreihe und wird durch einen Graben bzw. im weiteren Vertauf einen Grünstreifen ersetzt. Das Höhenprofil entspricht grob jenem der angrenzenden Kreisstraße, die Übergänge zu den bestehenden Wirtschaftswegen sind gut befestigt und ohne größere Anstrengungen überwindbar.

Dritter Abschnitt: Ziel verfehlt?

In Höhe des Sportplatzes endet nach 1¼km der neue Weg an der Zufahrt zur Schützenhalle. Fußgänger können die Kreisstraße überqueren und den gegenüberliegenden Fußweg zwischen Sportplatz und Ort nutzen, Hilfseinrichtungen gibt es hierzu nicht. Als Radfahrer muss man sich für etwa 200m wieder auf die Kreisstraße bemühen – dann beginnt der nächste Radweg nach Andernach. Immerhin: In diesem Bereich ist die Straße mit einer Begrenzung auf 50km/h ausgeschildert. Trotzdem bedauerlich, dass jene Lücke nicht geschlossen werden konnte.

Und nu?

Die Trennung vom fließenden Verkehr ist eine schöne Sache, leider kostet der rutschige Belag auf Andernacher Seite Zeit: Etwa 15% mehr sollte man für die Strecke nach meinen Messwerten einplanen. Der fehlende direkte Zugang zu den weiteren Radwegen, welcher seitens der Politik immer wieder als wichtiger Punkt aufgegriffen wurde, ist sicher unglücklich. Da ich persönlich ohnehin durch den Ort fahre um über die Wege auf der anderen, flacheren Seite der Nette nach Andernach zu gelangen, ist dieser Lapsus für mich allerdings nicht relevant. Ob der Weg für meine Belange eine Zukunft hat werden die nächsten Regenschauer zeigen: Dem Saffiger Bereich wird dies zwar sicher nicht gut tun, wenn dafür jedoch der darauf folgende Splitt durch angespülte Erde befestigt wird nehme ich das gerne in Kauf.

Des Admins 10 Gebote

Ich bin root, dein Admin, der dir den Rechner eingerichtet hat.

  1. Du sollst neben mir keine anderen Admins haben. Du sollst dir kein Bild von jenem machen, was der Admin an Tätigkeiten ausübt. Du sollst nicht zweifeln an seinen Entscheidungen, denn das Firmennetz des Allmächtigen ist nicht dein Heimrechner. Du sollst dich nicht vor anderen Admins niederwerfen und dich nicht verpflichten, ihnen deinen Addressbuch freizugeben.
  2. Du sollst den Namen des roots, deines Admins, nicht missbrauchen; denn der root lässt den nicht ungestraft, der seinen Namen missbraucht.
  3. Gedenke des Sabbats: Halte ihn heilig. Sechs Tage darfst du schaffen und jede Arbeit tun. Der siebte Tag ist ein Ruhetag, denn dort wird der Admin seine Updates einspielen und möchte nicht gestört werden.
  4. Ehre dine Gruppenrichtlinie und deinen Virenscanner, damit du lange arbeitest an dem Rechner, den der root, dein Admin, dir gibt.
  5. Du sollst nicht rooten.
  6. Du sollst nicht die Richtlinie brechen.
  7. Du sollst nicht Raubkopieren.
  8. Du sollst nicht falsch gegen deinen Nächsten aussagen, denn das Log wird jene strafen.
  9. Du sollst nicht nach dem Rechner deines Nächsten verlangen, nach seinem Handy oder seinem Tablet, seiner Tastatur oder seinem Monitor oder nach irgendetwas, das deinem Nächsten gehört, denn der Admin hat auch so schon genug zu tun und weiß um deine Klagen.
    So achte Allzeit auf diese Gebote und erfreue dich an der Arbeit, welche du durch des Admins Schöpfung erledigen kannst. Ist sie erledigt so ziehe hinaus aus der Knechtschaft des Büros, kehre zurück zu Heim und Familie, wende dich deinen Privatgeräten zu und habe Spaß am Gerät. Enter.

    (Ist gcc jetzt fertig? Noch mehr blöde Ideen aus dem Chat vertrag ich nicht ;))

Monitorprofile mit xrandr-mgr

Mehrere Monitore machen Spaß. An meinem Hauptplatz werkeln 4 TFTs an einem Rechner – Mail, Code, Testausgaben, Medien – alles ist irgendwo dauerhaft sichtbar. Was etwas nervig ist sind jedoch Spiele: Diese landen unabhängig von der Primärmonitordefinition immer auf dem linken Monitor. Bisher habe ich hier manuell mit xrandr nachgeholfen und vor Start des Spiels meinen Desktop auf den TFT vor meiner Nase beschränkt. Leider hat xrandr keine undo-Button, das heißt nach dem Spielen musste ich immer wieder per Hand nachhelfen.

Heute ich mir das Tool xrandr-mgr begegnet, welches das anlegen von benannten Profilen erlaubt. Für mich nicht direkt nutzbar, da sich meine Konfiguration häufig ändert, aber für ein temporäres Merken des vorherigen Konfiguration trotzdem Ideal.

YouTube Watch Later als M3U-Playlist exportieren

Ein großer Teil meines Medienkonsums läuft über YouTube. Bastler, Podcasts, Vorträge – nahezu alles ist hier vorhanden und hat den Fernseher nahezu vollständig abgelöst. Eine der aufwändigsten Arbeiten für mich ist es meine „Wunschliste“ an Videos zu verwalten. Welche Videos möchte ich mir noch ansehen. Hierzu nutze ich bereits seit längerem einige Scripte um Posts diverser Channels zu sortieren und Interessantes in die „Watch Later“-Liste, also „Später ansehen“, zu verschieben. Diese kann ich dann einfach auf dem Tablet laufen lassen und so die Videos nach und nach ansehen.

Anders sieht es aus wenn ich am PC arbeite. Zwar kann man auch hier die Liste über die Webseite nutzen, jedoch ist hier ohne Klimmzübe kein Overlay („Immer im Vordergrund“) möglich. Als Abhilfe nutze ich hier üblicherweise VLC – dort kann man eine YouTube-URL eingeben und direkt abspielen. Leider gibt es keine direkte Unterstützung für Playlisten und die verfügbaren Plugins lassen nur öffentliche Listen abrufen.

Bild:

Natürlich könnte ich jetzt meine Scripte umschreiben und öffentliche (bzw. „Nicht gelistete“) Listen nutzen, jedoch ist das manuelle Hinzufügen zur Watch-Later-List dank des überall verfügbaren Buttons wesentlich einfacher als das Hinzufügen zu selbst angelegten Listen.

Bild: https://adlerweb.info/blog/wp-content/uploads/2015/04/wll.png

Da ich von LUA, welches in VLC zum Einsatz kommt, keine Ahnung habe und durch meine sonstigen YT-Automationen tonnenweise fertigen PHP-Code zur Verfügung habe ist entsprechend eine Webanwendung daraus geworden. Benötigt wird ein API-Key, welcher in der Dev-Console beantragt werden kann sowie die Installation des Google API PHP-Client. Auch sollte der Webserver die Berechtigung haben key.php im selben Verzeichnis zu beschreiben – dies kann z.B. über „touch key.php ; chmod ugo+w key.php“ erfolgen. Der erste Aufruf sollte über den Browser erfolgen, hierbei wird man aufgefordert das Script mit YouTube zu Paaren. Die so abgerufenen Schlüssel werden in den angesprochenen key.php gespeichert, sodass folgende Zugriffe ohne weitere Abfragen erfolgen. Die URL kann nun in VLC eingefügt werden – dieser sollte die so bereitgestellte Playlist laden und die Videos nacheinander abspielen – mit allen Features des VLC wie z.B. Always-on-Top, Abspielgeschwindigkeit, Videoeffekte, etc.

Bild: https://adlerweb.info/blog/wp-content/uploads/2015/04/playlist-300×266.png

Den Code zum selbst testen gibts anbei oder – ohne WordPress-Korrekturversuche – im Gist. Eventuell ließ sich das Ganze auch noch mit youtube-dl kombinieren um einen Podcast-kompatiblen Feed zu erstellen.

< ?php

/**
 * Youtube Watch Later List To Playlist Script
 * 
 * This script fetches your watch later list and outputs it as an M3U playlist
 *
 * Requirements:
 *   PHP enabled webserver
 *   Google PHP API (https://github.com/google/google-api-php-client)
 *   A YouTube API key (Oauth2, can be registered at https://console.developers.google.com/)
 *   Some kittens to sacrifice
 *
 * Initialization
 *   First ensure your webserver can write a file called "key.php" to the directory
 *   you put this file in. E.g. "touch key.php ; chmod ugo+w key.php"
 *   Next open the appropriate URL in your browser. You will be asked to pair
 *   this script with your YouTube-Account. If you configured everything correctly
 *   it will output the playlist and save your access codes in the key.php mentioned
 *   above. Successive requests do not require additional authentication. You may now
 *   put the URL in your YT-enabled media player like VLC.
 *
 * Based on examples by DomSammut (https://www.domsammut.com/code/php-server-side-youtube-v3-oauth-api-video-upload-guide)
 * 2015 Florian Knodt 
 */ 

// Set this to the directory of google api php client
set_include_path('./google-api-php-client/src/');

$OAUTH2_CLIENT_ID = 'YOURID.apps.googleusercontent.com';
$OAUTH2_CLIENT_SECRET = 'YOURSECRET';
$REDIRECT = 'http://localhost/yt/ytwll2m3u.php';
$APPNAME = 'YouTube WLL Import Test';

require_once 'Google/autoload.php';
session_start();

$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setApplicationName($APPNAME);
$client->setAccessType('offline');

if(file_exists('key.php')) {
    require_once 'key.php';
}

if(isset($key)) {
    $client->setAccessToken($key);
    $_SESSION['token'] = $key;
}else{
    $client->setScopes('https://www.googleapis.com/auth/youtube');
    $client->setRedirectUri($REDIRECT);
}

// Define an object that will be used to make all API requests.
$youtube = new Google_Service_YouTube($client);

if (isset($_GET['code'])) {
    if (strval($_SESSION['state']) !== strval($_GET['state'])) {
        die('The session state did not match.');
    }
 
    $client->authenticate($_GET['code']);
    $_SESSION['token'] = $client->getAccessToken();
 
}
 
if (isset($_SESSION['token'])) {
    $client->setAccessToken($_SESSION['token']);
    $keydata = '< ?php $key=\''.$_SESSION['token'].'\'; ?>';
    //echo '' . $_SESSION['token'] . '';
   
    if(!is_writable('key.php')) {
        die('key.php can not be written - please put this code into key.php: '.$keydata);
    }
    file_put_contents('key.php', $keydata);
}

// Check to ensure that the access token was successfully acquired.
if ($client->getAccessToken()) {
    try {
        // Call the channels.list method to retrieve information about the
        // currently authenticated user's channel.
        $channelsResponse = $youtube->channels->listChannels('contentDetails', array(
            'mine' => 'true',
        ));
 
        $playlist = '#EXTM3U'."\n";
        foreach ($channelsResponse['items'] as $channel) {
            // Extract the unique playlist ID that identifies the list of videos
            // uploaded to the channel, and then call the playlistItems.list method
            // to retrieve that list.
            $uploadsListId = $channel['contentDetails']['relatedPlaylists']['watchLater'];
 
            $playlistItemsResponse = $youtube->playlistItems->listPlaylistItems('snippet', array(
                'playlistId' => $uploadsListId,
                'maxResults' => 50
            ));
 
            foreach ($playlistItemsResponse['items'] as $playlistItem) {
                $playlist .= '#EXTINF:-1,'.$playlistItem['snippet']['title']."\n".'https://www.youtube.com/watch?v='.$playlistItem['snippet']['resourceId']['videoId']."\n";
            }
            
            while(isset($playlistItemsResponse['nextPageToken'])) {
                $playlistItemsResponse = $youtube->playlistItems->listPlaylistItems('snippet', array(
                    'playlistId' => $uploadsListId,
                    'maxResults' => 50,
                    'nextPageToken' => $playlistItemsResponse['nextPageToken'],
                ));
                foreach ($playlistItemsResponse['items'] as $playlistItem) {
                    //$htmlBody .= sprintf('
  • %s (%s)
  • ', $playlistItem['snippet']['title'], //$playlistItem['snippet']['resourceId']['videoId']); $playlist .= '#EXTINF:-1,'.$playlistItem['snippet']['title']."\n".'https://www.youtube.com/watch?v='.$playlistItem['snippet']['resourceId']['videoId']."\n"; } } } } catch (Google_ServiceException $e) { echo sprintf('

    A service error occurred: %s

    ', htmlspecialchars($e->getMessage())); } catch (Google_Exception $e) { echo sprintf('

    An client error occurred: %s

    ', htmlspecialchars($e->getMessage())); } $_SESSION['token'] = $client->getAccessToken(); } else { $state = mt_rand(); $client->setState($state); $_SESSION['state'] = $state; $authUrl = $client->createAuthUrl(); $htmlBody = < <Authorization Required

    You need to authorise access before proceeding.

    END; } if(isset($playlist)) die($playlist); ?> < !doctype html> My Uploads < ?php echo $htmlBody?>

    Logrotate für Windows-Webserver IIS

    Seriously, Microsoft? Der in Windows integrierte Webserver IIS kann problemlos vernünftige Log-Dateien erzeugen und besitzt auch eine Funktion diese bei Erreichen einer Zeitspanne oder eines Größenlimits zu schließen und eine neue beginnen. Was leider fehlt: Alte Dateien löschen. Es kommt was kommen musste: Auf einem Produktivserver durfte ich mehr als 100GB an logtechischen Textkauderwelsch finden. Platte voll.

    Zwar kann man hier mit der in NTFS verfügbaren Ordnerkompression gegensteuern, eine Dauerlösung ist das aber sicher nicht. Am Ende habe ich auf Basis eines Powershell-Scriptes von Daniel Schroeder aka deadlydog etwas passendes gebastelt um hier Abhilfe zu schaffen. Regelmäßig über die Aufgabenplanung aufgerufen bleibt so der Ordner auf einem erträglichen Maß.

    $limit = 15 #Delete Logs after 15 Days
    $path = "C:\inetpub\logs\LogFiles\W3SVC1"
    
    # Function to remove all files in the given Path that have not been modified after the given date.
    # original written by deadlydog / Daniel Schroeder, http://blog.danskingdom.com/powershell-functions-to-delete-old-files-and-empty-directories/
    # Requires Powershell >=2.0
    function Remove-FilesNotModifiedAfterDate([parameter(Mandatory)][ValidateScript({Test-Path $_})][string] $Path, [parameter(Mandatory)][DateTime] $DateTime)
    {
        Get-ChildItem -Path $Path -Recurse -Force -File | Where-Object { $_.LastWriteTime -lt $DateTime } | Remove-Item
        #Get-ChildItem -Path $Path -Recurse -Force -File | Where-Object { $_.LastWriteTime -lt $DateTime } | Format-List BaseName,LastWriteTime
    }
    
    Remove-FilesNotModifiedAfterDate -Path "$path" -DateTime ((Get-Date).AddDays(1-$limit))

    Zum Ausführen wird mindestens PowerShell 2.0 benötigt. Ältere Betriebssysteme wie z.B. 2008R2 bringen nur PowerShell 1 mit, hier muss manuell über das Windows Management Framework aktualisiert werden.

    SSH: Fingerprint-Algorithmus ändern

    Bild: https://adlerweb.info/blog/wp-content/uploads/2015/04/sshmd5-300×45.pngMit einem der letzten Updates scheint OpenSSH einen Schritt in Richtung Gegenwart getätigt zu haben. Nun werden Fingerprints nicht mehr als MD5 sondern mit SHA256 präsentiert. Was auf der einen Seite eine tolle Sache ist kann aber auch zum Problem werden: Eine hiesige Debian-Kiste kann mit dem dort als stable deklarierten OpenSSH 7.0 auch optional keinen SHA256-Hash herausrücken. Manueller Abgeleich mit dem neueren Client des ArchLinux-Systems unmöglich. Um hier wieder auf einen gemeinsamen Nenner zu kommen bleibt nur den neuen Client auf den älteren Hash-Algorithmus zurückzutrimmen. Das funktioniert über die SSH-Config (/etc/ssh/ssh_config or ~/.ssh/config) mit folgenden Zeilen – zum Glück auch für einzelne Hosts:

    Host oldserver.org
    FingerprintHash md5

    Schon erhält man beim Verbinden wieder den gewohnten MD5-Hash und kann sich – bis auch andere Distros sha256 herausrücken – behelfen.

    Internet Explorer und die Kompatibilitätsmodi

    Auch wenn Microsoft ihn quasi schon beerdigt hat: Immer wieder stößt man noch auf den Internet Explorer. Gerade in Firmen ist er kaum wegzudenken, denn viele Produkte der Industrie haben es auch 2015 noch nicht geschafft auf ActiveX zu verzichten bzw. halbwegs standardisierte Formate zu verwenden. Besonders tückisch hierbei: Während die neueren Versionen des Internet Explorer immerhin halbwegs mit den aktuellen Webstandards klar kommen sind viele Webanwendungen noch auf ältere Inkarnationen zugeschnitten. Um hier den Nutzern keine Angst vor einer Aktualisierung zu bescheren schaltet der Internet Explorer beim kleinsten Anzeichen für Probleme in einen Kompatibilitätsmodus und behandelt die Inhalte wie frühere Versionen. Auch ist es nicht unüblich, dass alle internen Adressen automatisch immer mit den damaligen Vorgaben behandelt werden.

    Wer als Webentwickler für Firmen unterwegs ist sollte hier gegensteuern. Natürlich ist es einfach den jeweiligen Administratoren eine Änderung der Einstellungen oder gar einen anderen Browser zu empfehlen, jedoch ist dies häufig nicht mit Policies vereinbar oder aber wird als Ausnahme gehandhabt. Letztere werden gerne auf Grund der Seltenheit nur schlecht gewartet oder gehen mit der Zeit in den Tiefen des Systemmanagements verloren und sogen dann für aufwändige Fehlersuchspiele.

    Wer sich sicher ist, dass seine Seite mit aktuellen IE-Versionen läuft kann jedoch auch ganz ohne Firmenadministrator die meisten Probleme vermeiden. Über einen propritären Meta-Tag lässt sich der IE anweisen eine bestimmte Rendering-Art zu verwenden – unabhängig von der globalen Vorlage.

    Um beispielsweise explizit als IE11 zu rendern kann folgender Eintrag im head der Seite ergänzt werden:

    Selbes geht natürlich auch für andere Versionen. Eine Sonderstellung bildet noch „edge“ – hiermit wird immer die neueste verfügbare Engine genutzt. Perfekt wenn mann möglichst viele aktuelle Funktionen verfügbar machen will. Identifiziert sich dennnoch ein älterer Browser kann man immernoch per Browserweiche o.Ä. einen abgespeckten Content servieren ohne befürchten zu müssen unbeabsichtigt auch neuere IE-Versionen einzuschränken.

    Mehr Infos gibt es in einem Technet-Artikel von Stephanus Schulte, welcher das Thema ausführlich erklärt. Wer sich lieber auf die Fakten beschränkt wird im MSDN fündig.

    Hak5 als ASCII-Video

    (was posted only on YT before)

    You can’t watch Hak5 on text consoles? Challenge accepted…

    Downloading Hak5 using lynx and watching as ASCII-Art using mplayer and aalib.
    Re for 1808: https://www.youtube.com/watch?v=3RPgd6U2oyc

    full command:
    mplayer -quiet -vo aa:driver=curses -monitorpixelaspect 0.5 yourfile.mp4

    Sorry for the audio, guess the mic-cable must be broken somewhere

    It is also possible to use vo=caca to get colored output

    Nvidia/X.org: OpenGL-Fehler bei einigen Spielen

    Vor kurzem mussten die mehr als 10 Jahre alten Grafikkarten meines Rechners einem neueren Modell weichen. Schneller, weniger Strom und – das Wichtigste – ich kann wieder die aktuelle Treibergeneration nutzen. Die Umrüstung ist unter Linux ja kein Problem: Umstecken, den alten Nvidia 340 „Legacy“-Treiber gegen einen aktuellen 346er ersetzen und fertig ist. Dank nvidia-settings sind die Monitore schnell sortiert und der 3D-Test glxgears zeigt trotz Rendering auf 4 Monitoren zugleich solide 60 Frames (aka vsync-Maximum). Auch Videobearbeitung und Co reagieren solide. Also schnell die Arbeit fertig gemacht und eine Runde zocken. Oder auch nicht.

    X Error of failed request: BadAlloc (insufficient resources for operation)
    Major opcode of failed request: 154 (GLX)
    Minor opcode of failed request: 3 (X_GLXCreateContext)

    so lautete die Meldung, welche ich beim Starten von RTCW:ET erhielt. Na gut, eventuell ja was daran kaputt, also graben wir mal UT99 aus. Nichts. UT2004? Nichts. $randomgame in wine? Nichts. WTH?

    Genervt klicke ich mich durch meinen Game-Ordner und bleibe bei OpenTTD und ArmagetronAD hängen. Beide funktionieren fehlerfrei und dürfen nun den Feierabend versüßen. Die nächsten Tage blieb keine Zeit für Spiele.

    Heute konnte ich mich dem Problem nochmal genauer annehmen und mein Kopf machte soeben Bekanntschaft mit der Tischkante. Wer aufgepasst hat wird feststellen: Nur binär vertriebene Spiele machten das Problem, Open-Source Games laufen. Kein Wunder, denn letztere werden – egal wie alt – passend zum System kompiliert. 64Bit. Die Binärspiele hingegen laufen – wie auch wine – im 32 Bit Modus und greifen entsprechend auf die Kompatibilitätslibraries zurück…die ich natürlich nicht aktualisiert hab. Also schnell die lib32-nvidia-340xx-libgl gegen die aktuelle lib32-nvidia-libgl getauscht und voilà: Auch die Binärblobs können auf wundersame Weise wieder 3D. Doh‘!