Sie befinden sich in den Archiven der Kategorie Computer.
- Samstag den 19. Mai 2012: DCP's erstellen
- Samstag den 19. Mai 2012: ffmpeg
- Freitag den 27. April 2012: Oracle BPEL und neue Endpoint URLS
- Freitag den 27. April 2012: Mehrere Java Klassen Serialisierbar machen
- Freitag den 27. April 2012: Oracle Startup File für Linux
- Sonntag den 26. Juni 2011: Southside 2011
- Sonntag den 12. Juni 2011: R.i.P. 2011
- Montag den 7. Juni 2010: R.i.P. 2010
- Samstag den 10. Januar 2009: Brüssel die (aller) letzte
- Donnerstag den 8. Januar 2009: Brüssel die sechste
Blogroll
Archiv der Kategorie Computer
DCP’s erstellen
Samstag den 19. Mai 2012 von Matze.
Aus Spaß hab ich mir mal angschaut wie man aus beliebigen Video Quellen wohl ein DCP erstellt. Es stellte sich heraus das dies mittels Open Source Tools ar nicht so einfach ist. Ich hatte folgende URL gefunden:
http://bitfilms.blogspot.de/2010/11/making-dcp-entirely-with-open-source.html
Leider hat das bei mir aufgrund eines Fehlers in der opnjpeg Bibliothek nie funktioniert. Ich habe es aber folgendermaßen geschafft:
Wieder ffmpeg, diemal, um einzelne Bilder zu erhalten:
ffmpeg -r 24 -i ../Trailer.mp4 -f image2 %08d.png
Aber Achtung, mit png braucht man da für 90min irgendwas im Terabyte Bereich an Platten Platz. Normales JPEG dürfte bei 90% der Videoquellen aber zu keinem Qualitätverlust führen (oder hat jemand ne Sony HDCAM zur Hand?)
Dann die Bilder in 12bit per Channel tiffs wandeln:
for i in *png; do
convert $i -type TrueColor -alpha Off -depth 12 \
-gamma 0.454545 \
-recolor “0.4124564 0.3575761 0.1804375 \
0.2126729 0.7151522 0.0721750 \
0.0193339 0.1191920 0.9503041″ \
-gamma 2.6 $i.tif
done;
Theoretisch könnte man über openjpeg daraus jetzt jpeg2k Bilder machen, wie gesagt, aufgrund eines Speicherlochs hat das bei mir nie funktioniert…
for i in *tif; do
image_to_j2k -cinema2K 24 -i $i -o $i.j2c
done;
Hier hilft aber opendcp.
Jetzt noch den Audiotrack holen…
mplayer -vc null -vo null -nocorrect-pts -ao pcm:waveheader Trailer.mp4
Dann in rechts und links splitten:
sox audiodump.mp3 outfile1 remix 1
sox audiodump.mp3 outfile2 remix 2
Damit hat man dann alle Quellen um mit opendcp das DCP zu erstellen. Schnell noch ne externe Festplatte kaufen, mit ext3 formatieren und los kanns gehen im Kino…
Geschrieben in Computer | Keine Kommentare »
ffmpeg
Samstag den 19. Mai 2012 von Matze.
Ich hatte in letzter Zeit öfter mal die Notwendigkeit zwischen verschiedenen Videoformaten hin und her zu konvertieren. Natürlich gibts da dann das ein oder andere GUI Programm (z.B. sehr zu Empfehlen Handbrake und makemkv) aber ffmpeg is your Friend…
Konvertiere in DVD Format:
ffmpeg -i Trailer.mp4 -f dvd -target pal-dvd -aspect 16:9 -mbd rd -trellis -mv0 -cmp 0 -subcmp 2 Trailer.mpg
Konvertiere von mxf nach h264:
ffmpeg -i film_j2c.mxf -i film_pcm.mxf -vcodec libx264 -acodec ac3 ../film.avi
DCP 3d Film nach 2d
EIn wenig mehr tricky, aber möglich: Einzelbilder machen
ffmpeg -r 24 -i ../Trailer.mp4 -f image2 -vcodec mjpeg -qscale 1 %08d.jpg
Format png geht zwar auch, aber da braucht man für 90min Terabytes…
Die hälfte der Bilder löschen
rm [0-9]*[0,2,4,6,8].jpg
Dateien umbenennen
cnt=1; for i in *; do mv $i `printf “%08d” $cnt`.jpg; cnt=$((cnt+1)); done
Dann aus den Bildern wieder Film machen…
ffmpeg -r 24 -i %08d.jpg -i ../ton.mxf -acodec ac3 -vcodec libx264 ../film.avi
Die qualität ist erstaunlich gut…
Geschrieben in Computer | Keine Kommentare »
Oracle BPEL und neue Endpoint URLS
Freitag den 27. April 2012 von Matze.
In einem Projekt habe ich das Problem es mit einer ganzen Menge von BPEL Prozessen (in diesem Fall der SOA Suite 10g) zu tun zu haben. Das ganze funktioniert eigentlich ganz gut, das Problem ist nur das die Prozesse in verschiedenen Umgebungen laufen müssen. Nun könnte man im JDeveloper BPEL Editor überall die neuen Endpoint URL’s eintragen. Aber das ist gar nicht so einfach, wenn der Webservice von meiner Entwicklungsumgebung aus nicht erreichbar ist compiliert das ganze nicht und somit wird dann auch kein Deployment File erzeugt. Die einzige Möglichkeit ist das Deployment File zu erstellen und dann, hinterher, in der bpel.xml die Endpoint URL’s zu ersetzten.
Hilfe naht mittels eines kleinen Shell Scripts:
#!/bin/sh # alter Server export OLD_SERVER=alter.server.de:8080 # neuer Server export NEW_SERVER=neuer.server.de # Verzeichnis in dem die bpel Prozesse liegen export SOURCE=quelle # Verzeichnis in das die neuen Dateien geschrieben werden sollen export DESTINATION=../neuesVerzeichnis cd quelle for i in *bpel_*, do unzip $i -d ../tmp$$ sed s/$OLD_SERVER/$NEW_SERVER/g ../tmp$$/bpel2.xml mv ../tmp$$/bpel2.xml ../tmp$$/bpel.xml cp $i $DESTINATION cd ../tmp$$/ zip $DESTINATION/$i -D bpel.xml cd - rm -rf ../tmp$$/* done; rm -rf ../tmp$$
Geht mit Cygwin natürlich auch unter Windows…
Geschrieben in Computer | Keine Kommentare »
Mehrere Java Klassen Serialisierbar machen
Freitag den 27. April 2012 von Matze.
In einem Projekt, in dem die Migration von einem ollen OC4J (10g 10.1.3.4) auf einen einigermaßen aktuellen (naja, ok, der ist auch schon fast 5 Jahre alt) Bea WebLogic (11g, 10.0.3.4) gemacht werden wird habe ich die Aufgabe ein ganze Reihe von Java Klassen Serialisierbar zu machen. Da es dabei um ca. 50 Klassen geht muss das per Script gehen. Und folgendes Scrip erledigt das auch prima:
#!/bin/sh
for i in *; do
sed '/import javax.xml.bind.annotation.XmlType/a
import java.io.Serializable;' $i > a.tmp
sed '{/public class [a-z,A-Z]/s/ / implements Serializable /3}' a.tmp > b.tmp
cp b.tmp $i
done;
rm a.tmp
rm b.tmp
Klar, das ganz geht natürlich nur mit ner bash und sed, aber das sollte mit Cygwin ja auch unter jedem Windows laufen…
Geschrieben in Java / JEE, Computer | Keine Kommentare »
Oracle Startup File für Linux
Freitag den 27. April 2012 von Matze.
So, nachdem ich jetzt schon ewig nix mehr geschrieben habe, hier mal was von praktischem Nutzen. Vor langer Zeit schon habe ich mir ein Startup File für die Oracle Datenbank geschrieben das mit einem System V Init die Datenbank(en) die in der /etc/oratab stehen mit Ihren Diensten startet.
Hier mal das Script:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 60 20
#
# Source function library.
if [ -x /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
fi
# We need this to determine the oracle user
if [ ! -f /etc/sysconfig/oracle ]; then
exit 0
fi
. /etc/sysconfig/oracle
# See if ORACLE_OWNER is set
if [ "+" = "+$ORACLE_OWNER" ]; then
exit 0
fi
case "$1" in
'start')
# Look at the /etc/oratab file and start the marked databases
for i in `grep -v "^#" /etc/oratab`; do
if [ `echo $i | cut -d: -f 3` = Y ]; then
ORACLE_HOME=`echo $i | cut -d: -f 2`
ORACLE_SID=`echo $i | cut -d: -f 1`
if [ -e $ORACLE_HOME/bin/dbstart ]; then
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/bin/emctl start dbconsole"
fi
if [ -e $ORACLE_HOME/opmn/bin/opmnctl ]; then
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/opmn/bin/opmnctl startall"
fi
fi;
done
touch /var/lock/subsys/oracle
;;
'stop')
# Stop the Oracle databases:
for i in `grep -v "^#" /etc/oratab`; do
if [ `echo $i | cut -d: -f 3` = Y ]; then
ORACLE_HOME=`echo $i | cut -d: -f 2`
ORACLE_SID=`echo $i | cut -d: -f 1`
if [ -e $ORACLE_HOME/opmn/bin/opmnctl ]; then
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/opmn/bin/opmnctl stopall"
fi
if [ -e $ORACLE_HOME/bin/dbstart ]; then
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/bin/dbshut $ORACLE_HOME"
fi
fi;
done
rm -rf /var/lock/subsys/oracle
;;
'status')
for i in `grep -v "^#" /etc/oratab`; do
if [ `echo $i | cut -d: -f 3` = Y ]; then
ORACLE_HOME=`echo $i | cut -d: -f 2`
ORACLE_SID=`echo $i | cut -d: -f 1`
if [ -e $ORACLE_HOME/opmn/bin/opmnctl ]; then
echo $i;
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/opmn/bin/opmnctl status"
fi
if [ -e $ORACLE_HOME/bin/dbstart ]; then
echo $i;
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; ORACLE_SID=$ORACLE_SID $ORACLE_HOME/bin/lsnrctl status"
fi
fi
done
;;
esac
Zu beachten gibts noch dass in /etc/sysconfig/oracle der Oracle Benutzer eingetragen werden muss, Beispielsweise so:
ORACLE_OWNER=oracle
Vielleicht hilfts ja dem ein oder anderen…
Geschrieben in Computer | Keine Kommentare »
Solaris
Mittwoch den 9. Juli 2008 von Matze.
Heute habe ich eine 18 GB Festplatte, die ich letzte Woche bei EBay fuer 6,50 Euro ersteigert habe bekommen.
Sofort habe ich die in meine Sun Ultra 60 eingebaut und OpenSolaris 10 05/08 installiert. Das hat eine weile gedauert, aber versuch mal Windows Vista auf einem 10 Jahre alten PC zu installieren ….
Geschrieben in Computer | Keine Kommentare »
Plan9 (aber nicht from outer Space) Teil 1
Mittwoch den 9. Juli 2008 von Matze.
Ich bin ja so ein wenig ein Fan der Betriebssysteme mit dem x im Namen (mit zwei ausnahmen: bei Solaris ist kein x im Namen und Mac OS/X kenn ich nicht).
Seit einigen Jahren wird an den Bell Labs, das sind die Nachfolger jener bei welchen ursprünglich mal UNIX auf der PDP11 entwickelt wurde, ein “Nachfolger” entwickelt. Der hat den Namen Plan9 angelehnt an den Legendären Science-Fiction Film”Plan 9 from outer Space” von Ed Wood. Das Konzept des “alles ist ein File” soll bei diesem Betriebssystem wirklich für alles gelten, z.B. auch für Netzwerkressourcen. Natürlich kann so ein neues Betriebssystem nicht ohne eine grafische Oberfläche daherkommen, deswegen wurde “rio” dazugebaut. Der “root”Benutzer heißt hier glenda, auch in Anlehnung an einen Ed Wood Film.
Hört sich alles ziemlich interessant an, oder? Also gut, gleich mal ausprobieren.
Da das ganze Open Source ist und von http://plan9.bell-labs.com/plan9/download.html heruntergeladen werden kann, stellt auch das kein Hindernis dar.
Also gedacht getan!
Da ich ja nun zwar schon so den einen oder anderen Rechner bei mir zuhause rumstehen habe, aber keinen nur für Plan9 reservieren wollte musst das ganze in einer Virtuellen Maschine laufen.
Als erstes habe ich mich an VirtualBox von Sun versucht. RPM Paket von https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=innotek-1.6-G-F@CDS-CDS_SMI für das entsprechende Host Betriebssystem herunterladen. Dann einfach das Paket installieren (in meinem Fall für Fedora Core 9):
rpm -ivh VirtualBox-1.6.2_31466_fedora9-1.i586.rpm
Jetzt kann mit dem erstellen der Virtuellen Maschine begonnen werden. Das erstellen, verwalten und ändern von virtuellen Maschinen geschieht mit dem Befehlt VBoxManage. VM anlegen:
VBoxManage createvm plan9
Noch eine virtuelle Platte mit 1 GB anlegen:
VBoxManage createvdi -filename plan9.dsk -size 1024
Diese “Platte” muss noch registriert werden:
VBoxManage registerimage disk plan9.dsk
Jetzt der VM noch ein wenig mehr Speicher gönnen
VBoxManage modifyvm -memory 512M
Und schon kann damit gearbeitet werden:
VBoxSDL -hda .VirtualBox/VDI/plan9.dsk -cdrom Download/plan9.iso -vm plan9
Damit startet die Virtuelle Maschine und bootet vom CD Image. Ach ich vergaß: damit ein Benutzer mit VirtualBox arbeiten kann muss er der Gruppe vboxusers angehören.
Auf diese Weise konnte ich plan9 installieren. Allerdings war das ganze ziemlich zäh und die “Load” anzeige die Plan9 bei der Installation zeigt hatte immer ca. 15.000 Interrupt anfragen. Ich habe ein wenig mit den Parametern der virtuellen Maschine rum gespielt, aber ohne erfolg.
Also zweiter Versuch mit qemu-kvm. Die Installation unter Fedora Core 9 ist ziemlich einfach:
yum install kvm
Damit hat man dann schon alles was man benötigt. Natürlich muss auch hier eine Image Datei für die virtuelle Platte erzeugt werden:
dd if=/dev/zero of=plan9.dsk bs=1024 count=1024000
damit bekommt man ein Image von (nicht ganz) 1GB. Gestartet wird die VM nun über:
qemu-kvm -cdrom Download/plan9.iso plan9.dsk -m 512
Die Installation kann beginnen. Diesmal gibts auch keine Probleme mit den Interrupts.
Nach der Installation und dem ersten Login (mit dem Benutzer glenda, das ist gewissermaßen der “root” Benutzer von plan9) sieht das ganze dann so aus.
So genug für heute. Fortsetzung folgt …
Geschrieben in Computer | 2 Kommentare »
Ich bin nicht allein
Freitag den 4. Juli 2008 von Matze.
Seit einiger Zeit arbeite ich an einem Projekt für einen Kunden. Dort wird die JPA mit der Implementierung Toplink Essentials verwendet.
Was mich das Ding Nerven gekostet hat!!!!!! Manchmal hab ich den Eindruck da sind mehr Fehler als funktionierende Features drin. So ein paar Highlights sind:
- Die Umsetzung von EJBQL (oder JPQL) in SQL funktioniert nicht fehlerfrei. Wenn man es geschickt anstellt (so wie ich) baut er einen Select der ein kartesisches Produkt zurückliefert.
- Laut Dokumentation lässt sich über einen Hint festlegen wie gecached werden soll. In einem Master Detail Modell funktioniert das aber immer nur für den Master…
- Zumindest im OC4J kann ich nur einen persistence Provider verwenden. Das ist ja ganz prima, und was mache ich wenn ich Daten aus mehr als einer Datenbank benötige?
- Das schreiben über merge funktioniert nicht zuverlässig. Ich hab wirklich an mir gezweifelt, aber es stimmt: Ab und zu vergisst der Toplink Essentials einfach Daten in die Datenbank zu schreiben. Obwohl ich ihm schon mit einem explizitem Merge gesagt habe er soll das tun! Mir war nicht möglich darin in irgendeiner Form einen Determinismus zu erkennen!
- Und da kommt dann auch schon der nächste Bug: wenn der merge bei einem Detail Objekt einen Update machen soll dann “vergisst” er das auf jeden Fall!
So schön die JPA ist, mit Toplink Essentials kann man das nicht verwenden! Da ist man nur am Workaround bauen.
Ich habe schon einige sachen mit JPA und Hibernate gemacht. Der ist zwar jetzt auch nicht so ganz ohne, aber er hat (zumindest bei mir) immer ohne Probleme funktioniert.
Jetzt habe ich aber heute das hier auf diesem Blog entdeckt:
“For now I’ll keep using OpenJPA until the Glassfish people can make Toplink Essentials stop sucking so damn much. OpenJPA is a bit more pedantic anyway, and that’s a good thing. My code should end up tighter as a result”
Ich glaub ich muss mir mal OpenJPA angucken.
Geschrieben in Java / JEE | Keine Kommentare »
Web Services mit EJB 3.0 und JPA
Donnerstag den 26. Juni 2008 von Matze.
Ich hab in letzter Zeit mal ein wenig mit durch EJB 3.0 implementierte SOAP Web Services rumgespielt. Alles in allem ist das prima, einfach ein paar Annotationen, und schon hat man einen Web Service.
Wenn man jetzt aber versucht seine JPA Klassen (die können ja serialisiert werden) über diesen Web Service zu schicken dann bekommt man (vorausgesetzt das Datenmodell besteht aus mehr als einer Klasse) die Fehlermeldung das “circular References” vorhanden sind.
Ist ja eigentlich auch klar. Die Java Klassen referenzieren sich ja mit “Zeigern” während im XML (dem SOAP Body) sowas natürlich nicht geht.
Die Frage ist nun ob man dem Container beibringen kann nur entweder die
@OneToMany
oder die
@ManyToOne
Methode zu serialisieren, und die jeweils andere zu ignorieren. Denn dann würds ja funktionieren. Vielleicht find ich da ja noch was …
Update Montag den 07. Juli 2008:
Also ich hab ganz schön lang gesucht und leider nix gefunden. Ich fürchte man kommt um DTO’s in diesem Zusammenhang nicht herum. Schade …
Update Sonntag den 04. Januar 2009:
Mann manchmal stellt man sich an! Ist doch ganz einfach, bevor man die Pojo’s als SOAP Nachricht verschickt löscht man in der EJB einfach die circular Reference raus. Voila, und schon gehts! Also nix mit DTO’s!!!!!
Geschrieben in Java / JEE | Keine Kommentare »