Kicktipp-Tipps auf andere Tippgruppe übertragen

Anbei 2 Bookmarklets, mit denen man die Tipps spieltagsweise einfach in die nächste Tippgruppe übertragen/übernehmen kann. Unheimlich praktisch vor WM-Start:

Vorgehen:

  1. Links in Bookmarkleiste ziehen
  2. Kicktipp-Seite mit abgegebenen Tipps besuchen
  3. erstes Bookmarklet anklicken und Text in Zwischenablage kopieren
  4. Kicktipp-Seite mit leeren Tippts besuchen (auf Spieltag achten)
  5. zweite Bookmarklet anklicken und Text einfügen

Das wars

Update

Die Verbesserungen aus den Kommentaren übernommen.

emacs –daemon mit launchd und KeepAlive

Problem

Wer den Emacs unter OSX als daemon starten will, kann das mittels launchd-Skript machen.

Das Verfahren wird schon an verschiedenen Stellen beschrieben.

Problematisch wird es nur, wenn im launchd-Skript „KeepAlive“ benutzt wird, da der Emacs einen Fork macht, was launchd nicht mag – siehe Emacs-Bugeintrag.

Lösung

Als Workaround habe ich mir einen emacsdaemon.sh –Wrapper geschrieben:

$HOME/Library/Scripts/emacsdaemon.sh

#/bin/sh

EMACS_DIR=/usr/local/Cellar/emacs/HEAD/
EMACS=${EMACS_DIR}/bin/emacs
EMACSCLIENT=${EMACS_DIR}/bin/emacsclient

getPid(){
 PID=$($EMACSCLIENT -e '(emacs-pid)' 2> /dev/null)
 echo $PID
}
anywait(){
 for pid in "$@"; do
 while kill -0 "$pid"; do
 sleep 5
 done
 done
}

DAEMON_PID=$(getPid)

on_complete() {
 echo $(date +%R)' Ended.' >> "$LOG"
 kill -9 $DAEMON_PID
 exit
}

trap 'on_complete 2> /dev/null' SIGTERM SIGINT SIGHUP EXIT

case $1 in 
 status)
    if [ -z "$DAEMON_PID" ]; then 
       echo "Emacs-Daemon NOT RUNNING"
    else
       echo "Emacs-Daemon running PID:$DAEMON_PID"
    fi
 ;;
 stop)
    kill -9 $DAEMON_PID
    exit 0
 ;;
 launchd)
    test -z "$DAEMON_PID" && {
        $EMACS -daemon
        sleep 1
    }
    DAEMON_PID=$(getPid)
    test -z "$DAEMON_PID" && {
       echo "not running -> exit"
       sleep 2
       exit 1
    }
    anywait $DAEMON_PID
 ;;
 wait)
    anywait $DAEMON_PID
 ;;
esac

EMACS_DIR sollte evtl angepasst werden

$HOME/Library/LaunchAgents/gnu.emacs.daemon.plist

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
 <key>Label</key>
 <string>gnu.emacs.daemon</string>
 <key>ProgramArguments</key>
 <array>
 <string>~/Library/Scripts/emacsdaemon.sh</string>
 <string>launchd</string>
 </array>
 <key>RunAtLoad</key>
 <true/>
 <key>KeepAlive</key>
 <true/>
 <key>EnableGlobbing</key>
 <true/> 
 <key>ServiceDescription</key>
 <string>Gnu Emacs Daemon</string>
 </dict>
 </plist>

Einsatz

Einfach einmal per launchctl laden und der Emacs ist nach jeden Login als daemon gestartet.

$ launchctl load $HOME/Library/LaunchAgents/gnu.emacs.daemon.plist
$ ps ax | grep -i emacs
52370   ??  S      0:00.08 sh /Users/xxx/Library/Scripts/emacsdaemon.sh launchd
52382   ??  Ss     0:03.18 /usr/local/Cellar/emacs/HEAD/Emacs.app/Contents/MacOS/Emacs -nw --daemon=^J3,4^J

 

VTech Storio2 (aka Innotab2) – Filme konvertieren

Meine Tochter hat dieses Spielzeug zu Weihnachten bekommen. Wer sich für die Specs interessiert kann ja hier ein Review lesen.

Es gibt einen Store in dem man etliche Sachen kaufen kann, u.a. auch Kinderserien. Da man diese Serien ja auch schon meisten mit dem SAT/Kabel-Receiver aufgenommen hat, wäre es schön diese auf einfache Weise auf den Storio2 zu bekommen

Tools

Für den Konvertiervorgang benötigt man folgendes:

  1. ffmpeg – das sollte bei den meisten Linuxdistributionen dabei sein, für den Mac kann man MacPorts oder diese Anleitung benutzen.
    Für Windows-Nutzer gibt es ffmpeg prinzipiell auch, nur mein Shellscript (Punkt 2) wird nicht ganz so leicht funktionieren
  2. Meine Skripte, die ich mit der Zeit für das Storio2 sammeln werde. Zur Zeit beschränkt sich das noch auf das Video-Konvertieren
    Konkrekt ist das: https://github.com/boecko/vtech-innotab2-scripts/blob/master/video/video2storio.sh (TEXT-Version)

Vorgehen / Ablauf

Die fettgedruckten Zeichen sind Eingaben:

$ video2storio.sh BIBI_BLOCKSBERG.ts bibi_blocksberg1.avi \
       -ss 620 -t 1513
  • BIBI_BLOCKSBERG.ts ist das Aufnahmefile des Receivers – ein sogenannter MPEG-TS-Stream
  • bibi_blocksberg1.avi ist das zu erstellende File, dass auf die SD-Karte oder internen Speicher des Storio soll
  • -ss 620 bedeutet, dass der eigentliche Serie erst bei 10min 20sec der Aufnahme anfängt
  • -t 1513 bedeutet, dass das Konvertieren nach 25min 13sec stoppen soll

Ausgabe

Hier gibt es eine Rückfrage des Skriptes zu dem Format des Ausgansmaterial. Je nach dem wird der Film auf die korrekte Größe für das Storio2 konvertiert

Format des Ausgangsmaterials? 
1 -> 16:9 (Sendung ist in 16:9 ausgestrahlt worden)
2 -> 4:3 (Sendung ist in 4:3 ausgestrahlt worden)
3 -> 16:9 im letterbox (Sendung in 4:3 aber Bild ist eigentlich 16:9)
1
==========
ACHTUNG:
Um die Länge und Start anzugeben noch die Optionen -ss und -t übergeben
Benjamin Benjamin : 25min -> 1500
Heidi : 24min -> 1440
z.B.: Benjamin Blümchen ab 25 Sekunden ganz zu konvertieren (25min)
=> -ss 25 -t 1500
==========
Aktueller Befehl:
ffmpeg -i "BIBI_BLOCKSBERG.ts" -vcodec mpeg4 -vtag XVID -q:v 3 -s 483x272 -aspect 1.7777777777 -acodec libmp3lame -y -ab 64k -ss 620 -t 1513 "bibi_blocksberg1.avi"
Weitermachen?
<RETURN>
ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers
...
Input #0, mpegts, from 'BIBI_BLOCKSBERG.ts':
  Duration: 00:35:59.76, start: 50559.492322, bitrate: 2530 kb/s
    Stream #0:0[0x20](deu): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
    Stream #0:1[0xff]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p, 480x576 [SAR 8:5 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:2[0x100](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s (clean effects)
Output #0, avi, to 'bibi_blocksberg1.avi':
  Metadata:
    ISFT            : Lavf54.59.106
    Stream #0:0: Video: mpeg4 (XVID / 0x44495658), yuv420p, 483x272 [SAR 1:1 DAR 483:272], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0:1(deu): Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 64 kb/s (clean effects)
Stream mapping:
  Stream #0:1 -> #0:0 (mpeg2video -> mpeg4)
  Stream #0:2 -> #0:1 (mp2 -> libmp3lame)
Press [q] to stop, [?] for help
frame= 8485 fps= 31 q=3.0 size=   47402kB time=00:05:39.40 bitrate=1144.1kbits/s

 

ARD/ZDF Euro2012-Streams mit VLC multiplexen

EURO2012-Multiplexer (sinnvoll in Büros)

Man braucht:

  • OSX/Linux/whatever
  • aktueller VLC (am besten mit cvlc-Kommandozeilenclient)

Folgendes Script (vlcproxy.sh)


#!/bin/bash

case $(uname -s) in
Darwin)
VLC_BINARY=“/Applications/VLC.app/Contents/MacOS/VLC“
;;
*)
VLC_BINARY=$(which vlc)
;;
esac

VLC=“${VLC_BINARY} –intf=rc –sout-ffmpeg-strict=-2″

CHANNELS=““
case $1 in
ard|ARD)
PLAYLIST=http://metafiles.gl-systemhaus.de/wdr/ARD/ARD_Event2_geo.m3u8 #original aus iOS-App von Squid-Log
PLAYLIST=http://wdr_ios_fsev_geo-i.akamaihd.net/hls/live/201764/1/playlist1x.m3u8
$VLC $PLAYLIST –sout ‚#standard{mux=ts,dst=:8181,access=http}‘
;;
zdf|ZDF)
;;
*)
echo „USAGE: $0 ard oder $0 zdf“
;;
esac

Danach auf dem Client die URL im VLC öffnen
http://SERVERIP:8181

FYI: Stratus Avance und Debian

Nur wenn jemand mal auf die kommen sollte, Debian auf die HA-Lösung von Stratus zu spielen. Macht euch auf einige Irritationen gefasst.

Im Prinzip ist es ja ein ausfallsicherer XEN-Server, aber:

  • Ihr könnt nur Cent-OS (5.3) als Linux Installieren, da man dieses per RPM-Repo installieren kann
  • Der aktuellste Kernel, der dann von Stratus eingespielt wird, ist 2.6.18!!  ganze 5 Jahre alt
  • hochgespielte CD-Images können nicht einmal umbenannt werden
  • Für Debian muss man „Windows“ als VM-Art auswählen
  • Netzwerk geht nicht out of the box

To be continued .. installing

Update

ich hab die Installation abgebrochen, da der Xen-Kernel von Debian (und wahrscheinlich jeder aktuelle) die Netzwerk-Devices zwar sieht, aber diese nicht benutzbar sind. Und ein 2.6.18-Kernel setze ich mit Sicherheit nicht mehr ein.

Das lässt eigentlich nur den Schluss zu, dass Stratus Avance in dieser Version nicht für aktuelle Distributionen geeignet ist.

Update 2

XenServer-Iso gezogen (samt LinuxGuest-Addition) und  der Server lief in 10 Minuten. Bei XenServer-HA ist leider ein SAN von nöten .. Deswegen letzter Versuch mit Avance

Update 3

So .. ich hab es geschafft Squeeze 6.0 zum laufen zu bringen. Das ist aber einen eigenen Blogeintrag wert, da es nicht straightforward ist.

Update 4

Beim OnTheFly-Verschieben von Node0 auf Node1 gibt es Probleme. Ich schaue mir jetzt mal per „Dial-In“ an, was das System wirklich so macht.

Support kann ich ja für Debian sowieso keinen erwarten 😉

1&1 Surf-Stick (ZTE MF110) unter OSX ohne Join Air

Wie man ja schön in einer c’t nachlesen kann, saugt die Provider UMTS-Software ziemlich unter dem Mac.

Zum Glück lässt sich auch darauf verzichten, das ZTE Join Air-Programm zu installeren.

Treiber

Im Join Air.mpgk-Paket ist der Treiber drin, der gebraucht wird.

Variante 1 (Finder):

  • Im Finder mittels „Paketinhalt anzeigen“  den Inhalt des Join Air.mpkg zum Vorschein bringen
  • in Contents/Packages wechseln
  • drv.pkg durch Doppelklick installieren

Variante 2 (Shell):

$ cd /Volumes/Join\ Air/Join\ Air.mpkg/Contents/Packages/
$ open drv.pkg

Danach sollte OS X bei eingesteckten STICK ein Modem erkennen ….

Neue Hardware

PIN-eingabe

Zuerst muss man seine SimCard mittels PIN aktivieren. Und zwar jedes Mal, wenn der Stick eingesteckt wird.

automatisch per launchd-Skript

Ich habe mir ein launchd-skript gebaut, das automatisch beim Einstecken des Sticks die SimCard mit dem PIN freischaltet.

my.domain.surfstick.plist nach /Users/MEINNUTZER/Library/LaunchAgents legen und PIN (1111) ändern
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.domain.surfstick</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/MEINNUTZER/Library/Scripts/setpin.sh</string>
<string>1111</string>
<string>/dev/tty.ZTEUSBATPort_</string>
</array>
<key>WatchPaths</key>
<array>
<string>/dev/</string>
</array>
</dict>
</plist>

setpin.sh nach /Users/MEINNUTZER/Library/Scripts legen
#!/bin/sh
PIN=$1
DEVICE=$2
test -z "$DEVICE" && DEVICE=/dev/tty.ZTEUSBATPort_
test -z "$PIN" && {
echo "Usage: $0 <PIN>"
exit 0
}
test -c $DEVICE || exit 0

PID=zte

screen -dm -S $PID $DEVICE 115200
sleep 0.2;
screen -S $PID -p0 -X stuff "AT+CPIN=$PIN
"
sleep 0.1;
screen -S $PID -p0 -X kill;

Aktivierung:

launchctl load -w ~/Library/LaunchAgents/my.domain.surfstick.plist

manuell

Da gibt es 2 Möglichkeiten, die hier ganz gut beschrieben sind. Der Devicename ist hierbei /dev/tty.ZTEUSBATPort_ (screen-Methode) oder ZTEUSBATPort_ (für das KingPin.app).

Netzwerkeinstellungen

Jetzt fehlen nur noch die richtigen Einstellungen.

  • Ich habe dabei ZTEUSBModem in 1und1Stick umbenannt
  • Benutzername und Passwort sind total egal
  • Der APN war in meinen Fall web.vodafone.de (aus der 1und1 Schnellstartanleitung)

Danach sollte die Verbindung mit OSX Bordmitteln möglich sein.

APTANA GO TO HELL


!ENTRY com.aptana.ide.core 4 0 2010-10-13 08:55:39.658
!MESSAGE (Build 2.0.5.1278523018) [ERROR] An error occurred while shutting down the database
!STACK 0
SQL Exception: Die Datenbank 'aptanaDB' wurde nicht gefunden.
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)

bei einen neuen Workspace, nachdem man Eclipse neugestartet hat …..
Danach ist Eclipse im SAT1-Ball-Mode.

Nochmal zum mitschreiben

$ rm -fr workspace/.metadata
$ open -a Eclipse.app
Eclipse stoppen
$ open -a Eclipse.app
-> SAT1-Ball

WM-Stream von ARD/ZDF multiplexen/verteilen (update)

UPDATE für EURO 2012 ->

http://www.boeckler.org/2012/06/ardzdf-euro2012-streams-mit-vlc-multiplexen/

 

Man braucht dazu:

  • OSX/Linux/whatever
  • aktueller VLC (am besten mit cvlc-Kommandozeilenclient)

Folgendes Script (vlcproxy.sh)


#!/bin/sh
SENDER=$1

 

STREAMTYPE="mms"
MYIP="192.168.0.100"
if [ -z "$URL" ]; then
case $SENDER in
ARD|ard)
URL='http://www.metafilegenerator.de/dyn/metagen.asx?stream=swr_wmv_l_event04'
;;
ZDF|zdf)
URL='http://wstreaming.zdf.de/encoder/livestream4_vh.asx'
;;
esac
fi

if [ -z "$URL" ]; then
echo "USAGE: "
echo "$0 ard|zdf"
echo "oder"
echo 'URL="http://..." $0'
exit
fi

case $STREAMTYPE in
multicast)
cvlc -vv -R –sout=“#standard{mux=asfh,dst=225.1.2.3:1234,access=udp}“ „$URL“
;;
mms|*)
cvlc -vv -R –sout=“#standard{mux=asfh,dst=${MYIP},access=mmsh}“ „$URL“
;;
esac

 

  • MYIP anpassen und dann das skript per ./vlcproxy.sh ard bzw. ./vlcproxy.sh zdf starten
  • URL kann auf der Kommandozeile überschrieben werden (Hier ist es der ARD-Stream).
  • Die  Clients müssen einfach die URL mms://MYIP:8080 öffnen Achtung: der erste Start kann mal bisschen länger dauern

Dadurch muss der Stream nur einmal ins Büro gezogen werden und die DSL-Leitung wird nicht unnötig belastet.

Wer das ganze mit DVB-T sucht, kann mal hier vorbeischauen.

UPDATE:

Die URL bei ZDF kann manchmal anders sein (livestream4 statt livestream2). Hier gibt es immer die aktuellsten URLs

http://www.zdf.de/ZDFmediathek/hauptnavigation/live?flash=off

UPDATE2:

WindowsMedia-Stream geht bei ZDF gerade nicht so …

Abhilfe schafft der QT-Stream:

cvlc -vvv --sout="#rtp{mux=ts,dst=239.255.12.42}" http://hstreaming.zdf.de/encoder/livestream4_vh.mov

Das erzeugt ein Multicast-Stream. Die VLC-Clients brauchen dann die URL „rtp://@239.255.12.42“

Safari JS-Debug saugt…

wieso schafft es Apple nicht die Javascript-Tools (die eigentlich hübsch aussehen) brauchbar zu machen?

Cache im Debugger

Selbst wenn man den Cache leert zeigt der Safari im Debugger die alte JS-Datei an. Man kann machen was mann will. Nur ein Neustart hilft.
Wenn der Debugger aus ist, hat es den Anschein, dass es besser funzt.

JS bei File-URLs

Noch schlimmer ist es, wenn das Javascript über eine file://-URL eingebunden ist (wenn die Seite lokal ist). Dort lässt sich der Safari nur durch Neustart dazu bewegen, die Datei neu einzulesen.

Warum?

Dies betrifft nur JS-Dateien, die per DOM addChild oder document.write eingebunden werden.

Apple … tu was…!