request_url_withoutHTTP=,canonical_url_withHTTP=,canonical_url_withoutHTTP=,request_url_withoutHTTP_realspaces=. Shell (Seite 1 von 3) « Tags « Blog « Bernhard Häussner
Bernhard Häussner
Tags: Artikel mit dem Tag «Shell» durchstöbern

GIF-Animationen

24.08.2014, 08:01

Das Dateiformat mit dem Kürzel GIF ist im Internet und bei mir in letzer Zeit sehr beliebt. Das liegt daran, dass sich damit Animationen erstellen lassen, die in jedem Browser und auf vielen Geräten ohne großen Aufwand abspielbar sind. Einige sozaiale Netzwerke lassen auch das Hochladen von GIF-Animationen zu.

Im Gegensatz zu JPEG-Bildern können in GIF-Bildern mehrere Frames für Animationen abgespeichert werden. Nachteilig ist, dass eine schlechtere Kompression (maximal 256 Farben) verwendet wird: Die Ergebnisse erhalten u.U. deutlich mehr Artefakte als bei JPEG. Außerdem haben die GIF-Animationen oft eine größere Dateigröße als beim Speichern in einem Videoformat. Für kurze Animationen und nach der Anwendung von Dithering lassen sich jedoch recht brauchbare Ergebnisse erzielen. So habe ich z.B. in meinen Blogeinträgen Jonglieren und Ich. Und du? und Die eigenen Augen kennen lernen: Drei optische Tricks GIF-Animationen statt Videos verwendet.

Für die beiden Animation oben wurden mit dem 3D-Programm Blender Einzelbilder generiert. Hat man eine Reihe von Bildern für eine Animation, kann man sie mit ImageMagik zusammen seitzen:

convert -resize 640x360 -delay 4 frame-*.png anim.gif

Hierbei werden die Einzelbilder vorskaliert und dann in einem animierten GIF-Bild gespeichert.

Es ist auch möglich eine GIF-Animation aus einem (Teil eines) Videos zu erstellen. Dazu hat es sich als Praktisch erwiesen, zunächst die Frames z.B. mit FFmpeg zu extrahieren:

ffmpeg -i video.mp4 -f image2 frame-%3d.png

Dann kann man die Frames heraussuchen, die in die Animation sollen. Die beiden Animationen oben sind so entstanden.

Zusammenfassen lässt sich sagen, das GIF-Bilder in vielen Fällen eine gute Alternative zu Videos darstellen. Für kompliziertere Animationen sollte jedoch auf ein Videoformat zurückgegriffen werden.

Kommentare: keine

Fix subverison error: Valid UTF-8 data followed by invalid UTF-8 sequence

23.06.2010, 16:53

This is a solution to fix problems with SVN when you can't update your working copy for some rather odd reason. Everything you get is an obscure error message like this:

svn: Valid UTF-8 data
(hex: 65 64 69 74 65 64)
followed by invalid UTF-8 sequence
(hex: ad 6c 69 73)

This does not only appear when doing svn update but even pops up while svn status.

Since Subverion can handle binary files this is quite confusing. At luck, after some googling I found out that these errors are caused by file names with e.g. Chinese characters.

Unfortunately the error message can't display the corrupt file name because it contains non-UTF-8 data. So I figured that the „Valid UTF-8 data“ (In this case the hex sequence 0x65, 0x64, 0x69, 0x74, 0x65, 0x64) translates to the string „edited“ using some UTF-8 table.

Since there were way too many files with this string I had to look for the 0xAD 0x6C sequence. This could be the asian symbol 구, but you can't grep for this, because it is not UTF-8 encoded. However we can look for the byte sequence using some perl magic:

find /path/to/workingcopy | perl -n -e "print if /\xAD\x6C/" | less

Note the hex-regexp used here to scan binary content in file names. It outputs a nice (and in this case rather short) list like:

/path/to/workingcopy/folder/of/colleque/edited<AD>list.txt

Interestingly, less tries to expose the binary data. Now you just have to rename the file and you're good to go and able to update your working copy again.

Kommentare: 1 Einträge

Howto: Start using Subversion

31.01.2010, 14:46
Subversion

Subversion

Sometimes you want to start using Subversion code control with an existing project. This tutorial explains the steps required to create a repository and add the files of the existing project.

Start by creating a repository:

svnadmin create /dir/to/store/repo/repository-name

This will create a directory „repository-name“ containing the database of files and revisions.

Then let's add some internal directories to our repository:

svn mkdir file:///dir/to/store/repo/repository-name/trunk \
 -m "Creating repo directory structure"

Now that you have created the repo-directory that should contain all the files, import the existing project files. Start by checking out the empty repo-dir to into your project dir. This will make your project dir a working copy (that is: create a dir named „.svn“ containig some internal info) but won't change anything else.

cd /existing/poject/dir
svn checkout file:///dir/to/store/repo/repository-name/trunk .

Then go on adding (or planing to add) all the files:

svn add *

This command will list all the files that will be loaded into the repository. You can always look at the planned changes with svn st.

You probably want to exclude some files such as configuration files, runtime data. You just have to revert the add-command again:

svn revert runtimedata # exclude whole dir
svn revert config/my.ini # exclude single file

Then apply the changes to your repository (commit it):

svn commit \
-m "initial import"

And that's it. You project is added to the repository without extra files. That can be crucial if your runtime data has a huge file size. If you're paranoid or just curious check the repository for success:

svnlook tree /dir/to/store/repo/repository-name

This should show the imported directory tree. Now you can start making changes to your files and commit them as usual.

vim app.cpp
svn commit -m "typo"
svn log -r 1:HEAD #show full revision history

If you ever got stuck, you may use the built in help:

svn help #list commands
svn help commit #list options
svnlook help tree #works too

I will start using subversion for everything... soon.

Kommentare: 4 Einträge

Pimp deine MOTD

26.01.2010, 10:50

Jedes mal, wenn man eine Shell öffnet und sich einloggt, begrüßt die Message of the Day. Diese habe ich mit einem „coolen“ Schriftzug „aufgewertet“.

Viele Systemadministratoren lassen die MOTD einfach leer. Ich habe bisher meist einen Begrüßungssatz hineingesetzt, so dass ich (und andere), beim Arbeiten an vielen Computern gleichzeitig über remote shells, wie ssh, leichter die Übersicht behalten kann. Bei Computern, die von vielen verschiedenen Anwendern benutzt werden (z.B. an der Uni) findet man dort Benutzungsregeln, Hinweise auf Downtime und was die IT-Abteilung gerade neues installiert hat. Wenn der Administrator einen Clown gefrühstückt hat, auch mal einen guten Witz.

Als ich vor kurzem frisch eingeloggt auf ein langwieriges rekursives grep wartete, habe ich mir nach einem Routinecheck sämtlicher Logfiles beim Betrachten der nicht sehr kreativen MOTD gedacht, ich könnte sie doch etwas ausschmücken, „make it pop out“, damit die Programmierer zu Beginn ihrer Arbeit motivierend begrüßt werden.

Wie wäre es mit einem ASCII-Art-Schriftzug? Bei Google ganz oben stand der ASCII-Generator. Man kann bei diesem Generator auch eine Schrift „_all fonts with your text_“ auswählen, sodass man nicht ständig klicken muss. Damit die Chefetage nicht die ganze IT-Fraktion als kindisch abstempelt, wählte ich die Schrift „big“.

Dann habe ich mir kurz die Privilegien verschafft, um die /etc/motd zu bearbeiten, und siehe da... jeder, der sich seither auf dem Server tummelt, bekommt sein halbes Terminal mit einem protzigen Schriftzug vollgespammt. Das scheint glücklicherweise niemanden gestört zu haben... eher im Gegenteil. Zumindest passiert jetzt hoffentlich nicht mehr das wohl jedem bekannte „Oh ich habe gedacht ich arbeite auf Aquarium.Buckelwal und aus versehen auf Pool.Badeente die ganzen Backups gelöscht“. Und nicht vergessen:

 o8o      .                                   oooo                 .o. 
 `"'    .o8                                   `888                 888 
oooo  .o888oo    oooo d8b  .ooooo.   .ooooo.   888  oooo   .oooo.o 888 
`888    888      `888""8P d88' `88b d88' `"Y8  888 .8P'   d88(  "8 Y8P 
 888    888       888     888   888 888        888888.    `"Y88b.  `8' 
 888    888 .     888     888   888 888   .o8  888 `88b.  o.  )88b .o. 
o888o   "888"    d888b    `Y8bod8P' `Y8bod8P' o888o o888o 8""888P' Y8P 

Oh das ist ja zweideutig...

Kommentare: keine

KDE4 Twitter Benachrichtigungen

18.11.2009, 12:29

Da ich gerne das Webinterface von twitter benutze, aber auch gleich wissen will, ob jemand etwas neues getwittert hat, habe ich ein kleines Bash-Script geschrieben, welches eine Meldung aufploppen lässt, sollte jemand einen neuen tweet schreiben.

Es benutzt kdialog, die Meldungen integrieren sich also Problemlos in den KDE-Desktop. Es ist auch recht kurz und einfach.

Einfach herunterladen und in $PATH ablegen. Zum Starten genügt:

nohup twitterNotify.sh &

Da es nicht sonderlich viel Aufwand betreibt, um die XML-Antworten der Twitter-API zu parsen kann nicht zu viel Information übermittelt werden, außer woher die tweets kommen.

Kommentare: keine
[ Seite 1 2 3 ] Nächste Seite »
 
Χρόνογραφ
© 2008-2017 by Bernhard Häussner - Impressum - Login
Kurz-Link zur Homepage: http://1.co.de/