« Lifestyle     Programmierung »


Media Indexer Entwicklung Status 1Donnerstag, 28 Juli, 2011 2:24

Es gibt ja bereits ein, zwei Media Kataloge für KDE und GTK, die mir aber zu aufgebläht sind und und für meinen Zweck "auf welchem USB Stick befindet sich die Datei xyz?" einfach zuviele Abhängigkeiten mitinstallieren, die ich gar nicht haben will.

Ausserdem will ich mehr C Programmieren und nachdem Perl mit Sqlite3 und zip und unzip Funktionalität gar nichts anfangen konnte, habe ich also mein zweites C Projekt angefangen, das mich sehr beansprucht hat und deswegen gab es auch lange nichts Neues hier zu lesen.

Inzwischen bin ich mit meinem persönlichen Media Indexer aber weit fortgeschritten und möchte an dieser Stelle bereits einmal ein paar Schnipsel Screenshots zeigen. Ich habe wirklich viel C Programmierungstechnik dazugelernt, dazu gleich mehr.

Ich stelle hier nur kurz mal dar, was ich gerne hätte:

Ein Programm, dass gemountetet Datenträger in /media liest, die Informationen in eine Datenbank schreibt, die ich einfach mal abfragen kann und die mir dann schnell Ergebnisse auswirft. Ich hätte ja auch einfach ein "ls -lR > USB-Stick.inhalt" pumpen können und anschliessend ein "grep" draufwerfen können. Das ist schnell erzeugt, das mit schnell ausgelesen irgendwann aber nicht mehr.

Ausserdem sollte dieses Programm kein Konsolenprogramm werden, sondern grafisch für den Desktop sein. Erste positve Erfahrungen hatte ich mit Zenity  schon gesammelt und das sollte auch meinen Ansprüchen genügen.

Dazu sollte eine Datenbank gehören, auch meinetwegen gerne verteilt auf verschiedene Dateien wie eine Datei pro Datenträger und starke Abhängigkeiten wie Server/Client Datenbanken wollte ich auch nicht haben dafür, sondern etwas wie eine Berkely Datenbank.

Meine Wahl fiel jedoch auf Sqlite, das auch in aktuellen Produkten wie Firefox und I-Phone Verwendung findet.

Bisher habe ich Einlesen fertig, hier sind die Screenshots:

Auswahl des/der Datenträger:

Datenträger Auswahl, auch mehrere  

Einlesen der Dateien, hier ist die Dauer ungewiss und durch einen pulsierenden Fortschrittsbalkens dargestellt:

Dateien einlesen

Schreiben der Datenbank mit den zuvor ermittelten Daten, hier ist der Verlauf eindeutig und es kann ein echter Fortschrittsbalken angezeigt werden:

Datenbank schreiben

Fertig:

Ende Hinweis

Ich bin mächtig stolz auf mich, ich kann jetzt nämlich in C Programmen dynamisch Speicher aloziieren, was auch dringend notwendig ist, denn die Menge an Daten von vorher nicht bestimmten Datenträgern kann man nicht fest einprogrammieren.

Ausserdem habe ich gelernt, wie ich mit C nicht nur Sqlite3 Dateien reinpumpe, sondern auch wie ich Pragmas zur Geschwindigkeitsoptimierung verwende und Unterprogramme zum Un-/Komprimieren anmelde.

Eine wahre Wucht und ich freue mich schon auf das Gestalten der Ausgabe...

[Update 01.08.2011]

Meine Vorstellung, für jedes Medium je eine Datenbank zu schreiben und bei Abfragen die Funktion SQLITE_ATTACH zu verwenden, wodurch ich alle Datenbanken über ein Datenbankhandle ansprechen kann und alle Datenbanken wie eine erscheinen, schien ja das voll geile komfortable feature zu sein.

Jedoch bin ich beim Hinsehen auf die Grenzen gestoßen, z. Z. sind da nicht mehr als 62 Datenbanken  drin. Das erscheint mir doch ein bißchen wenig, sodass ich mich beim Datenbank Design kalt erwischt fühle und das wohl ändern muss. Also ist in etwa doch nur eine Datei für alles oder so angesagt, schließlich kann eine Datenbank 2^64 Reihen haben, eine Grenze die man eigentlich gar nicht haben können soll und dann wäre die Datei 14 TB groß. Das Datenbankdesign muss ich mir also nochmal überdenken.

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [0] Kommentare ]

rtl2832u neues build aus neuer Quelle Dienstag, 14 Juni, 2011 10:45

Für meinen "MSI Digi Vox mini Deluxe DVB-T USB Stick" sind die im Mai verwendeten Quellen alt geworden wenn ich neueste Kernel verwenden möchte. In den Kernelquellen sind linux/autoconf.h und linux/smp_lock.h verschwunden (so seit 2.6.37-39) und dann bricht kompilieren natürlich mit Fehler ab.

Aber ich habe eine neue Quelle gefunden und jetzt kompiliert es wieder: http://www.spinics.net/lists/linux-media/msg24890.html 

Diesmal gibt es nicht viel zu tun:

    
mkdir /tmp/dvbt
cd /tmp/dvbt
git clone git://linuxtv.org/mchehab/new_build.git
cd new_build/
wget http://goo.gl/CnJJu -O rtl2832u_v2.0.1-new_build-set.tar.gz
tar -xf rtl2832u_v2.0.1-new_build-set.tar.gz
./build-rtl2832u.sh

sha1sum:
c023031f3cc2cc22a1f40dc5d9fa64968af7307e  rtl2832u_v2.0.1.tar.gz

3aca8850fe118473f25b034239b3bf5648d4a08e rtl2832u_v2.0.1-new_build-set.tar.gz


All credit goes to Realtek, Antti Palosaari, Afatech and V4L/DVB developers.

Nice :-)

Categories: Hardware, Linux, Software

[ [0] Kommentare ]

MSI Digi Vox mini Deluxe DVB-T USB Stick Version 3Sonntag, 08 Mai, 2011 22:41

Für 15€ habe ich den "MSI Digi Vox mini Deluxe DVB-T USB Stick" der mit einer Stummelantenne und einer Fernbedienung, sowie viel Werbematerial von MSI, dafür aber ohne USB-Verlängerung ausgeliefert wurde ergattert, der sogar HDTV 1080i ready ist.

Nun, leider gibt es für diese Gerät mit der USB ID 1d19:1101 keine Kernelunterstützung. Ein Tag Internet Recherche hat mich erst hierhin: http://www.linuxtv.org/wiki/index.php/MSI_DigiVox_mini_II_V3.0  und dann zu dieser Seite mit der Lösung geführt: http://www.turnovfree.net/~stybla/linux/v4l-dvb/lv5tdlx/ 

Bei dem z. Z. aktuellsten Paket 20101102_linux_install_package-Dongle.rar handelt sich um ein für den Chipsatz rtl2832u gepatchtes v4l (in gentoo maskiert: media-tv/v4l-dvb-hg von http://www.linuxtv.org ) samt Install Script. Zum Verständnis: Hier werden ausserhalb der Kernelquellen Module gebaut und ins System installiert.

Und hier ist die Anleitung: http://wiki.ubuntuusers.de/MSI_DigiVox_mini_II . Ich habe jedoch nur ein Blick in das Script geworfen selbst ein "make distclean" ausgeführt und anschliessend mit "make menuconfig" alles überflügsige rausgehaun, denn sonst wird alles und jedes gebaut. Hier ist die die .config Datei aus linux_install_package/v4l_rtl2832_install/v4l-dvb-abd3aac6644e/v4l/.config zum Anschauen, wer die verwenden will, muss ein "make oldconfig" oder ein "make menuconfig" ausführen, bevor kompliliert werden kann. Naja, und dann ein "make" und "make install" wie im Script eben. Dann habe ich nur die Module, die ich wirklich brauche.

Und wirklich, Stick eingesteckt, Module geladen und läuft. Damit es läuft, war noch ein bisschen für die Programme, die ich verwenden möchte notwendig. Vlc und mplayer brauchen eine channels.conf, siehe z. B. hier: http://wiki.ubuntuusers.de/dvb-utils#channels-conf . Der Befehl scan übrigens heißt jetzt dvbscan und ist im Paket media-tv/linuxtv-dvb-apps enthalten.

meine de-BRAUNSCHWEIG sieht so aus:

  
# DVB-T DBraunschweig # Mai 2011 # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 768000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE

und die habe ich mir mit der besagten Vorlage und http://dvb-t.the-media-channel.com/nord/dvb-t-braunschweig.html zusammengebastelt und stimmt dann im Detail mit der Realtität überein und unterscheidet sich damit von der /usr/share/dvb/zap/dvb-t/de-Braunschweig (auch aus dem Paket media-tv/linuxtv-dvb-apps enthalten). Die damit erzeugte channels.conf habe ich ein bisschen umsortiert und kann hier angesehen werden: channels.conf .

Sie gehört in das Verzeichnis ~/.mplayer und dann kann man mplayer mit "dvb://XY" (wobei XY dann der Sendername ist) zum TV-Programm anzeigen anweisen.

Vlc kann z. B. mit der Angabe "~/.mplayer/channsels.conf" sofort im TV-Modus gestartet werden, hier fünktioniert auch Programm auf und ab (n und p). Für mplayer habe ich mir auch soetwas gebastelt: dvb.playlist . "mplayer -playlist .mplayer/dvb.playlist" startet dann im TV-Modus und auch hier kann man im Programm auf und ab (> und <).

So, damit bin ich erstmal vollstens zufrieden, EPG Basteleien kommen später.

Categories: Hardware, Linux, Selbstgemacht, Software

[ [0] Kommentare ]

udev Regel für cryptsetup luks verschlüsselte USB DatenträgerFreitag, 29 April, 2011 1:12

In Linux nehme ich gerne andere Windowmanager als KDE oder Gnome, nämlich solche, die wenig Speicher brauchen und die CPU kaum beanspruchen - wie z. B. jwm oder fluxbox. Die kennen keinen Fortschrittsbalken, sondern poppen einfach auf und sind dann da und es kann losgehen. Sie sind winzig und auch klein im Funktionumfang und bringen nicht alles mit, wofür es schon Spezialisten gibt - in jwm bekomme ich Desktop Icons mit rox desktop. Der Lautstärkeregler? gvolwheel. Und so weiter.

Nun gab es aber schon immer das Problem, daß solchen smarten Windowmanagern wirklich etwas völlig und seit ewig fehlte: Ein grafisches Poppup zum Eingeben des Schlüssels, wenn man einen cryptsetup luks verschlüsselten USB Stick angeschlossen hatte.

Im Gentoo Forum habe ich eine schöne Vorlage gefunden für eine udev Regel die in arch Linux funktionierte, nicht aber in Gentoo. Das habe ich untersucht und mit der ersten selbst erstellten udev Regel für mich experimentiert, was man in der udev Regel machen kann und was ein externes Script braucht. Das Problem hatte ich schnell gefunden und es lag hier verborgen: "Running external programs upon certain events ... udev does not run these programs on any active terminal, and it does not execute them under the context of a shell. Be sure to ensure your program is marked executable, if it is a shell script ensure it starts with an appropriate shebang (e.g. #!/bin/sh), and do not expect any standard output to appear on your terminal. (http://reactivated.net/writing_udev_rules.html#external-run )

Was dabei herausgekommen ist, kann man hier sehen:

Leerer Desktop vor dem Einstecken des USB-Sticks 

USB Stick gesteckt, das Fenster poppt auf 

Eingabe des Schlüssels 

Desktop Notify poppt auf 

Der geöffnete /media Ordner 

Der Inhalt des gemounteten Ordners 

Wieder eine Ebene zurück 

Umounten mittels pumount des Ordners mit der Maus 

Der Ordner nun nicht mehr gemountet 

Der USB-Stick wieder herausgezogen 

Download /etc/udev/rules.d/99-crypt.mount.rules weil es hier sonst den Rahmen sprengt :-)

/etc/udev/scripts/crypt.open.sh

 
#!/bin/sh WHAT=$1 WHERE=$2 while [ "$LOOP" != "done" ] do export DISPLAY=":0.0" PASS=`/usr/bin/sudo -u sascha /usr/bin/zenity --entry --hide-text=LUKS \ --text="LUKS open $WHAT at $WHERE" --title "Luks Passphrase" --width 500` if [ $? = 0 ];then # This is the ok button LOOP="run" echo $PASS | /sbin/cryptsetup -t 15 luksOpen $WHAT $WHERE if [ $? = 0 ]; then # Password success LOOP="done" fi else # this catches the cancel button LOOP="done" fi

done

Damit das im Windowmanager mit dem umounten funktioniert, muss der auf pumount eingestellt werden und sys-apps/pmount installiert sein.

Super, was habe ich lange vergeblich nach soetwas gesucht und jetzt konnte ich es sogar selbst fertigstellen.

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [1] Kommentar ]

Notfallsystem auf CF-CardSonntag, 03 April, 2011 21:58

Für lau vom Freund die CF-Card, den Adapter vom Arbeitskollegen, dann ist die Hardware komplett für ein Notfallsystem. Ich habe es bestückt mit Puppy Linux und Tiny Core Linux.

Die CF-Card ist 4GB groß und reicht bei diesen beiden Mini Linux Systemen lange Meter aus. Hier ein Foto:

CF-Card mit Adapter  

Nun kann ich bequem ein Backup machen oder den Computer booten, wenn die Festplatte nicht mehr will.

Categories: Hardware, Linux, Selbstgemacht

[ [0] Kommentare ]

Hacking Samsung SPF-87H - Linux demon v0.0.2Sonntag, 27 Februar, 2011 14:57

Der Deamon ist nicht länger auf /proc/bus/usb/devices angewiesen, wenn diese Pseudodatei nicht existiert, wird in /sys/bus/usb/devices hinabgestiegen und dort nach dem Gerät gesucht.

Hiermit kommt also die v0.0.2 an der sich sonst nichts geändert hat.

Download spf87hd_v0.0.2.tar.gz 

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [0] Kommentare ]

Hacking Samsung SPF-87H - Linux demonMittwoch, 02 Februar, 2011 13:34

Meinen Wunsch, wie ich den Samsung SPF-87H digitalen Bilderrahmen als Zweit-Monitor verwenden möchte, habe ich fertig programmiert. Da Samsung für dieses Gerät leider nur Windowsen unterstützt, guckt man als Linux User diesbezüglich in die Röhre. Das ist nicht (mehr) modern, aber leider Fakt. Nun ja, wenn du etwas gemacht haben willst, mach' es selbst! Und so habe ich mir einen Demon geschrieben.

Der Demon läuft im Hintergrund, schläft überwiegend und guckt dann immer nach einer Sekunde nach, ob das Gerät angeschlossen und im Monitormodus ist - dann schlägt er zu. Die Systemlast läuft gegen Null. Die einfache Lösung erschien mir am Anfang platt, es hat sich aber herausgestellt, daß sie auch die nervenschonenste und auch die Last schonenste ist, jedenfalls ist es nun so, dass ich die Pseudodatei des Kernels /proc/bus/usb/devices nach "Vendor=04e8 ProdID=2034" greppe. Das ist ja auch nicht wirklich eine echte Dateioperation und findet ohne Plattenzugriff allein im Hauptspeicher statt.

Es wird dann der permanente Monitormodus eingeschaltet und, sofern man es angegeben hat, das Kommando für diesen Fall ausgeführt. Da starte ich das Script, dass mir meine Conkys, die auf dem Hauptmonitor laufen, beendet und mir dann mit Xvfb, scrot und jpeg2spf87h, siehe unten, die Bilder auf den SPF-87H pumpt, die ich da sehen möchte.

Der demon kann noch was, denn wenn ich den SPF-87H dann wieder ausschalte, wird das Kommando für diesen Fall gestartet und dann startet er per Script wieder meine Conkys für den Hauptbildschirm.

Im Syslog sieht das so aus:

    
Feb  2 00:09:52 localhost spf87hd[16354]: SPF87H device in monitor mode found.
Feb  2 00:09:53 localhost spf87hd[16354]: claimed device.
Feb  2 00:09:53 localhost spf87hd[16354]: Permanent monitor mode enabled.
Feb  2 00:09:54 localhost spf87hd[16354]: Monitor cmd started.
...
Feb  2 00:11:27 localhost spf87hd[16354]: SPF-87H monitor device gone.
Feb  2 00:11:27 localhost spf87hd[16354]: No-Monitor cmd started.

Im Top:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                   
16354 root      20   0 18692  784  584 S    0  0.0   0:00.95 spf87hd

Na, damit kann man doch zufrieden sein, oder nicht?

Der Demon läuft auch im Vordergrund und kann auch ohne jede Option ausgeführt werden, dann schaltet er nur den permanenten Monitormodus auf dem Gerät ein.

Als demon muss er als root laufen, damit er in /var/run/ auch seine pid Datei schreiben und wieder löschen kann. Als user Prozess kann er auch betrieben werden, dann jedoch nur als Vordergrund Prozeß.

    
  $ ./spf87hd -h
Initializes the SAMSUNG SPF-87H for Linux Monitor Mode when it is set to it.

spf87hd has these Options:

-f, --foreground          Don't deamonize, stay at console.
-n, --nomonitor 'command' Command (unchecked) to be executed after Mini-
  Monitor function has been stopped.
-m, --monitor 'command'   Command (unchecked) to be executed after Mini-
  Monitor function has been started.
-u, --user [name]         Username (must exist) the commands are run by.
-h, --help                This text.
 

Für das Rüberschieben von JPEG Dateien habe ich auch ein eigenes Programm geschrieben, naja, abgeschrieben, wie im Großen und Ganzen eigentlich alles abgeschrieben, angepaßt und modifiziert ist. Dafür hat es aber auch sehr wenig Systemlast und produziert keine Beschwerden des Kernels mehr, "...process 24676 (jpeg2spf87h) did not claim interface 0 before use". Und ich verwende da libusb_bulk_transfer, genau wie der Windows Treiber auch bulk transfer verwendet.

Fehler passieren, die ich nicht verhindern kann. Bei hoher Systemlast ist es so, dass hier bei mir das Bilder rübersenden nicht immer funktioniert. Das ist aber kein Fehler von jpeg2spf87h, sondern eine Folge der Arbeit des Kernels in so einer Situation, jpeg2spf87h ist eben userland. Ausserdem gerät das Gerät manchmal aus dem Monitormodus hinein in den Datenträgermodus, das ist aber selten und kann durch einen Neustart des SPF-87H behoben werden. Ich merke das an der Bildschirmmeldung die dann kommt, sinngemäß steht dann da, der Datenspeicher sei fast voll und ich solle Dateien löschen wenn ich da Platz brauche. Diese Meldung fehlt vermutlich wenn Platz ist, dann merkt man es wohl nur daran, dass das Bild nicht mehr aktualisiert wird. Vermutlich ist das ein Bug in der Firmware, nur habe ich wenig Lust die neue Firmware einzuspielen die diesen Bug behebt, mir aber meine ganze Arbeit vielleicht wieder zunichte macht. Wer weiß? Never change a running sytem, you know? Aber vielleicht kann mir ja ein Leser mit der neuesten Firmware da mal was berichten...

Für die Realisation dieses kleinen aber anstrengenden Projektes habe ich also vielen Leuten zu danken, sie sind alle in den Quellen aufgeführt. Ja, opensource ist eine tolle Sache, ohne hätte ich meinen Samsung SPF-87H wohl wieder verkauft, oder nein, zum Kauf wäre es gar nicht erst gekommen. So wird mein Dank noch größer und geht auch an Samsung, denn ohne diese Versorgungslücke hätte ich mich gar nicht in diese Arbeit gestürzt. Da aber auch ohne Opensource ohne Hintergrund und Basis dieses Projekt gar nicht möglich gewesen wäre, ist es sogar so, daß ich gar nicht allen danken kann. Was ich aber tun kann, ist, das was ich gemacht habe, wieder zu veröffentlichen.

Wer also Lust hat, den Code einmal zu begutachten oder als Vorlage für sein eigenes Projekt nehmen möchte, oder wenn Du sogar selbst einen Samsung SPF-87H mit dieser bescheuerten, broken by design Firmware hast, dann hättest du ja sogar selbst dafür Verwendung.

Downloads:

spf87hd_v0.0.1.tar.gz 

jpeg2spf87h_v0.0.1.tar.gz 

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [1] Kommentar ]

Hacking Samsung SPF-87HMontag, 17 Januar, 2011 2:52

Der Digitale Bilderrahmen Samsung SPF-87H  kann unter Windows als Zusatzbildschirm verwendet werden. Auf http://vdrportal.de/board/thread.php?postid=947900   zeichnete sich ab, dass es auch mit Linux läuft.

Nun, da es mir keiner programmiert hat, musste ich es selbst tun und ein verschnupftes Wochenende weiter mit viel Internetsuche und viel Code kopieren und zusammenwürfeln und vor allem einem USB Verkehr Mitschnitt durch Wireshark war es schließlich soweit:

spf87h-tool , mein erstes C-Programm, das die ermittelte Codesequenz zum Bildschirm schickt, damit der im Monitormodus bleibt, ist fertig (UPDATE: Ich arbeite gerade an einem Deamon, damit man den Bildschirm nur "anschalten" muss und der rest automagisch funktioniert).

Der Samsung SPF-87H Digitale Bilderrahmen ist nun nicht länger nur ein Windows Werkzeug, sondern mir auch in Gentoo Linux zu Diensten und ich habe jetzt einen Zweitbildschirm, auf den ich meine Conkies auslagere, so habe ich auch in Vollbilddarstellung auf dem Hauptmonitor schnell mal auf den kleinen Samsung erblickt, was mein System so macht und wie das Wetter wird.

Nun kann ich den Monitor einschalten, Mini Monitor Modus auswählen, das Programm spf87h-tool starten, dann geht es los :

SPF-87H.sh

#!/bin/sh
killall conky 2>&1 >/dev/null
killall Xvfb 2>&1 >/dev/null
rm /tmp/.X13-lock 2>&1 >/dev/null
Xvfb :13 -screen 0 480x800x16 &
sleep 5
/home/sascha/SPF-87H/playusb/playusb -j /tmp/ram/xwud.jpg
export DISPLAY=:13.0
conky -p 0 -c /home/sascha/SPF-87H/conky/.conkyWeather &
conky -p 4 -c /home/sascha/SPF-87H/conky/.conkySystem &
conky -p 6 -c /home/sascha/SPF-87H/conky/.conkyCal &
conky -p 8 -c /home/sascha/SPF-87H/conky/nixie_clock.conkyrc &
while `grep -q 'Vendor=04e8 ProdID=2034' /proc/bus/usb/devices`
do
scrot /tmp/ram/xwud.jpg -q 100
jpegtran -rotate 90 -trim -outfile /tmp/ram/xwud.jpg /tmp/ram/xwud.jpg
/home/sascha/SPF-87H/playusb/playusb -j /tmp/ram/xwud.jpg
done
killall conky 2>&1 >/dev/null
killall Xvfb 2>&1 >/dev/null
sudo rm /tmp/.X13-lock 2>&1 >/dev/null
exit 0

Ach ja, /tmp/ram, das mounte ich per

/etc/fstab

  none /tmp/ram tmpfs mode=1777,size=512M 0 0

Durch tmpfs kann ich Dateien im RAM ablegen und verarbeiten, das verschnellert den Prozess enorm. Sogar meine nixie Röhren Digital Uhr mit Sekunden läuft im Zweitbildschirm dann ganz aktzeptabel.

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [1] Kommentar ]

Sub-pixel rendering für LCD Bildschirme in GentooDonnerstag, 18 November, 2010 2:06

Gerade LCD Monitore lassen sich in der Darstellung von Schriften pimpen, siehe z. B. hier:

http://www.kev009.com/wp/2009/12/getting-beautiful-fonts-in-gentoo-linux/ 

Mittels zusätzlichem subpixel Rendering lassen sich Treppenstufen glätten, siehe

http://de.wikipedia.org/wiki/Subpixel-Rendering 

und das haben sich die großen Firmen wie Windows und Apple aber auch patentieren lassen und Linux hat eigentlich freetype für diese Aufgabe, aufgrund der Patentsituation aber eben nicht, siehe

http://david.freetype.org/cleartype-patents.html 

Eine patentfreie Version und wie das aussieht kann man sich hier ansehen:

http://www.oyhus.no/SubLCD.html 

und schliesslich hat mich das hierhin geführt:

http://forums.gentoo.org/viewtopic-p-6350322.html 

Das Gentoo overlay lcd-filtering implementiert die patches von infinity und macht selber patchen überflüssig.

Nachdem das lcd-filtering overlay implementiert ist, müssen nur noch die use flags für die Pakete ergänzt werden, dazu kann global in der /etc/make.conf die USE Variable um folgende Einträge ergänzt werden:" lcdfilter -cleartype" oder auch gezielt in der Datei

/etc/portage/package.use

x11-libs/cairo lcdfilter -cleartype
media-libs/fontconfig lcdfilter -cleartype
x11-libs/libxft lcdfilter -cleartype
media-libs/freetype lcdfilter -cleartype

Im Anschluss kann dann emerge -NaDuv world ausgeführt werden um die neuen use flags einzukompilieren. Wenn die obigen Pakete nicht in der update Auswahl sind, dann liegt das daran, dass ACCEPT_KEYWORDS in der /etc/make.conf nicht die KEYWORDS der lcd-filter ebuild "treffen". Sie können in der Datei /etc/portage/package.keywords nachgetragen werden:

/etc/portage/package.keywords:

x11-libs/cairo
media-libs/fontconfig
x11-libs/libxft
media-libs/freetype

Wenn das nicht hilft, ist /etc/make.conf bezüglich layman Einträgen fehlerhaft.

Ausserdem muss hier folgendes ergänzt werden:

~/.Xresources:

Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.dpi: 96
Xft.rgba: rgb

Die Xft.dpi: 96 resultieren vermutlich hierdurch:

~ $ xdpyinfo | grep -B1 dot 
  dimensions:    1024x768 pixels (270x203 millimeters)
  resolution:    96x96 dots per inch

und müssen ggfs. angepasst werden.

Ausserdem kann/sollte? die infinity ~/.font.conf für user oder als /etc/local.conf systemweit verwendet werden:

http://www.infinality.net/files/local.conf 

Es werden dann allerdings Windows, Apple und Google fonts gebraucht.

Ich verwende diese patentierten Schriften nicht, dafür aber die ~/.font.conf von dem Artikel ganz oben und bin damit auch sehr zufrieden. Die Schriftendarstellung auf meinem Monitor hat sich erheblich verbessert und ich kann das wirklich weiter empfehlen.

Categories: Linux

[ [0] Kommentare ]

Webbrowser absichern mit VSERVERDienstag, 16 November, 2010 2:11

Die Entwicklung von malware schreitet voran, bisher ist die Standard Strategie dagegen, Betriebssystem und Applikationen stets auf aktuellem Stand zu halten und Sicherheitssoftware, d. i. im Einzelnen einen Antivirus und eine Firewall einzusetzen. Manchmal werden auch intrusion detection Systeme verwendet oder file integrety checkers.

Linux kennt chroot, d. i. ein Verzeichnis, das aus Sicht der Applikation im chroot der Stamm des Betriebssystems ist. Die Applikation im chroot kann (normalerweise) nicht aus dem chroot ausbrechen. Gentoo bietet mir nicht an, Webbrowser und andere Netzapplikationen im chroot einzusperren. - Wenn ich das möchte, ist das ein Aufwand, den ich selbst erledigen muss, obwohl es Pakete gibt, für die man per USE flag ein chroot bestimmen kann.

linux+chroot googlen 

VSERVER ist ein Projekt, das erlaubt, ein virtuelles Linux mit demselben Kernel laufen zu lassen. Auch hier wird ein Verzeichnis im System verwendet und darin läuft ein richtiges Linux System parallel zum host System. Es funktioniert wie ein chroot, hat aber mehr Konfigurationsmöglichkeiten und ist besser abgeschottet als das chroot.

http://linux-vserver.org 

Applikationen in einem VSERVER sind gegen den host gekapselt, aber es gibt Schnittstellen, SSH Beispielsweise. Ich kann mich auf dem VSERVER per SSH vom host aus einloggen, auch wenn beide auf der selben Maschine laufen. SSH bietet an X zu transportieren, also kann ich im host X-Applikationen vom VSERVER laufen lassen. Eine Analyse von X über SSH kann man sich hier ansehen (englisch):

X over SSH - A Tutorial 

Um nun Firefox, Opera oder welchen modernen internet browser auch immer und internet messanger wie Pidgin vom eigenen host abgeschottet laufen zu lassen, wird ein minimaler VSERVER installiert, wie z. B. hier beschrieben:

Gentoo Linux Dokumentation -- Gentoo Linux-VServer Howto 

Ausführlicher und in Englisch: Gentoo Linux Documentation -- Gentoo Linux-VServer 

Danach kann man seinen VSERVER behandeln wie einen zweiten Computer der mit Gentoo installiert ist. Er funktioniert genauso, braucht aber nicht alles. Da ich hier nur einzelne X Applikationen haben will, brauche ich gar keinen xorg server und auch keine Fenstermanager im VSERVER. Mein host, in dem die Applikationen dargestellt werden hat das X. Man muss nur darauf achten, dass die Bibliotheken, gegen die die Applikation gelinkt ist, im VSERVER liegen, wodurch sich auch die Optik ergibt. Auch die Proxy Konfiguration wenn die z. B. auf 127.0.0.1 zeigt, trifft den VSERVER und nicht den gastgebenden host - das kann verwirrend sein, wenn man das vergisst.

Damit die im VSERVER liegenden Applikationen im host schön gestartet werden können, bietet es sich an, SSH nicht über password authentification, sondern mittels public key authentification laufen zu lassen. Siehe:

ssh public key authentifizierung googlen 

Auch wenn davon abgeraten wird, kann auf Passwortvergabe für den Schlüssel verzichtet werden, denn schließlich ist das ja der springende Punkt - das VSERVER Programm wie andere Programme die lokal installiert sind starten zu können, ohne ein Passwort eingeben zu müssen.

Eine Programmverknüpfung auf dem Desktop oder im Programm-Menü würde im host dann z. B. eine Kommandozeile wie folgende enthalten:

  ssh -p 23 -Y simpson@tux firefox

-p gibt den Port an, schliesslich kann der SSH deamon im VSERVER nicht auf dem gleichen Port laufen, wie im host. Wir erinnern uns: Es ist die Maschine, die antwortet! simpson ist der user der im VSERVER über SSH und dem übergebenen public key ohne Passworteingabe firefox startet und im host kann das der user bart z. B. tun.

Damit firefox von tux aber überhaupt X resourcen im host nutzen darf, muss dem X mitgeteilt werden, dass ein fremder host, in diesem Fall tux das überhaupt darf. Im host muss daher

  xhost +tux

ausgeführt werden. Am besten vorher im xterm ausprobieren und dann z. B. in der Datei .xinitrc fest einbauen, damit das automatisch gestartet wird wenn man seinen Fenstermanager startet.

Dieser Artikel geht nun nicht sehr ins Detail ein. Ein sicherheitsbewußter Leser der Linux verwendet wird sich sicher selbst Lücken füllen können. Andererseits kann aber auch gerne eine Frage gestellt werden, wenn sich die Lösung eines bestimmten Problems einfach nicht zeigen will.

Vergnügliches sicheres browsen im Internet!

Categories: Linux

[ [2448] Kommentare ]

Amphetadesk verbessernSamstag, 30 Oktober, 2010 0:18

Eine Weile habe ich in meinem Browser RSS Feeds hausen lassen, war jedoch schon immer unzufrieden mit dem handling. RSS Applikationen konnten mich auch nicht befriedigen und glücklich geworden bin ich schließlich mit Amphetadesk, das als package in Gentoo verfügbar ist (noch immer, obwohl es schon länger nicht mehr gepflegt wird). Es ist mit Perl programmiert und bietet einen eignen Webserver, den man standardmäßig über Port 8888 erreicht.

Nun habe ich nicht wirklich viele Feeds die ich abonniert habe, aber trotzdem wird die channels Seite doch ziemlich lang. Und nachdem ich von dem rumgescrolle genug hatte, habe ich mich daran gemacht und eine kleine Änderung eingeführt. Ich wollte oben links haben, die einzeln channels ansteuern können. Das war schnell gemacht und hier ist das diff :

templates_default_index.html.diff 

Das diff file kann dann mit

patch -p1 </path/to/patchfile> /usr/share/amphetadesk/templates/default/index.html

auf die index.html losgelassen werden. Vielleicht solltest du vorher ein backup anlegen :-)

Bilder gibt es keine, ich zeige hier doch nicht meine Lieblingsfeeds, aber ich schätze, du wirst so begeistert sein wie ich.

Categories: Linux

[ [0] Kommentare ]

« Lifestyle     Programmierung »