Mai
09
2010

OS X Spotlight stark beschleunigen

Unter OSX gibt es so etwas wieSpotlight-Blockierliste einStartmenünicht. Wenn man eine Applikation starten will, dann öffnet man mit Finder einfach den /Applications-Ordner und doppelklickt auf die gewünschte Applikation oder man drückt die Tastenkombination ⌘-Leertaste und gibt die ersten paar Buchstaben seiner Applikation ein. Wenn sie sofort gefunden wurde, drückt man nur noch Enter und sie wird gestartet. Das hat sich bei mir so stark zur Gewohnheit gemacht, dass ich teilweise keinen Dateibrowser mehr benutze (für Dateisystem-Operationen ist das Terminal sowieso benutzerfreundlicher), was wiederum erlaubt zu hinterfragen, ob man so etwas als Benutzer in Zukunft überhaupt wirklich braucht wenn solche Konzepte wie Spotlight sich noch etwas weiterentwickeln.

Spotlight holt seine Informationen aus einer Datenbank. Diese Datenbank hält einen Index über alle Dateien auf der Festplatte bereit und wird von Hintergrundprozessen ständig aktuell gehalten.

Allerdings ist Spotlight manchmal langsam. Ich definierelangsam” in diesem Fall mit “die Ergebnisse erscheinen nicht sofort“. Das kommt einerseits daher, dass der Hintergrundprozess, der die Datenbank aktuell hält, bei manchen Ordnern extrem viel zu tun hat, da sich dort ständig vieles ändert. Andererseits kommt es daher, dass Suchen in großen Datenbanken geringfügig länger dauert, als in kleinen. Die Laufzeit steigt zwar nicht linear mit der Datenbankgröße (Datenbanken verfügen über einige sehr ausgeklügelte Suchalgorithmen), aber sie steigt.

Googlen und Ausprobieren hat mir heute die Erkenntnis gebracht, dass es da gewisse Ordner gibt, nach deren Inhalten man eigentlich nie sucht, die sich aber laufend ändern. Wenn man sie von der Indizierung ausschließt, dann lässt Spotlight sich dadurch verblüffend gut beschleunigen.

Man geht folgendermaßen vor: Klick auf  -> Systemeinstellungen -> Spotlight -> Privatsphäre. Mit einem Klick auf “+” kann man nun Ordner hinzufügen, die dann später von Spotlight nicht mehr berücksichtigt werden.

Hier fügt man nun die Ordner “~/Library/Application Support” und “~/Library/Caches” hinzu (~ ist eine Abkürzung für den eigenen Home-Ordner). In diesen Ordnern ändert sich ständig einiges und als normaler Benutzer schaut man sowieso praktisch nie in die dort liegenden Dateien.

Da ich als Software-Entwickler haufenweise SDKs und Frameworks installiert habe, werde ich bei fast jedem Stichwort von Spotlight mit gefundenen Header-Dateien überflutet. Das bleibt aus, wenn man einfach grob “/Library” und unter “/Developer” alles außer “/Developer/Applications” in die Sperrliste hinzufügt.

Wer “Fink” benutzt (Ein Paketmanager für freie Software für OS X), wird “/sw” zur Liste hinzufügen wollen.

Der zur Datenbank gehörende Hintergrundprozess passt sein Vorgehen beim Indizieren nun automatisch daran an. Die Datenbank muss nicht neu aufgebaut werden.

4 Kommentare
Written by Jacek in: Computerstuff | Schlagwörter:,
Aug
28
2009

AVR-Programmierung unter OS X

atmelchipAtmel kümmert sich mit kostenloser Software zur komfortableren Entwicklung von Software für die hauseigenen Mikrocontroller ganz gut um seine Kunden. Wenn sie Windows benutzen.

AVR Studio (Homepage, für Windows) kann alles, was das Herz begehrt. Es ist eine Programmierumgebung für C- und Assembler-Programmierer, die zusätzlich das Hochladen und Debugging von Programmcode auf den Chip bietet. Außerdem ist ein Simulator mitgeliefert, der die Analyse des Chips mit dem man arbeitet, stark vereinfacht und veranschaulicht.

Abgesehen davon dass man, nach einer kurzen Phase der Enttäuschung darüber dass Kunden mit anderen Lieblingsbetriebssystemen nicht bedient werden, fast Neid empfindet, stellt sich nach etwas Recherche aber dann doch durchaus heraus, dass das kein Grund ist, auf Windows umzusatteln. Jeder Nicht-User von Windows hat schließlich seine guten Gründe.

Also um überhaupt erst einmal AVR-Mikrocontroller zu programmieren, braucht man Compiler, Bibliotheken, Header-Dateien, Assembler und das Tool zum Hochladen des Codes.

Toolchain

Fink-Nutzer mögen einfach die diversen AVR-Pakete installieren, das geht schnell und einfach. (Mit Paketnamen: avr-binutils, avr-gcc, avr-libc, avrdude). Ich gehe hier nicht weiter auf Fink ein, da diejenigen, die jetzt nicht wissen wie das geht oder was Fink überhaupt ist, sowieso ein paar mehr Seiten an Doku lesen müssten und da ich es selbst nicht so gemacht habe (Beispielsweise deswegen weil der Assembler den ich haben wollte meines Wissens nach nicht per Fink zu erhalten ist).

Objective Development hat ein sehr praktisches Paket herausgebracht: Das Crosspack bietet alle Tools die man braucht. Gleichermaßen für Intel-Macs wie PPC-Macs.

Jetzt steht man zwar noch ohne GUI-Tools da, aber per Konsole kann man schon losprogrammieren. Mit dem Lieblingstexteditor programmiert man drauf los, kompiliert mit “avr-gcc” oder assembliert mit “avra”, lädt das Kompilat mit “avrdude” hoch und mit selbigem Tool ändert man auch die FUSE-Werte. Das ist nicht unkomfortabel, wenn man sich mit Shellscripten und einem guten Texteditor ausrüstet. (Empfehlung: VIM – ist bereits vorinstalliert)

Allerdings fehlen noch Syntax-Highlightning, Code-Completion, Upload-Button, FUSE-Editor, Registerbrowser usw.:

Entwicklungsumgebung

Beim Crosspack sind bereits Xcode-Templates mitgeliefert, aber da ich jene nicht benutze, bleibt das nur nebenbei erwähnt.

Ich kann Eclipse wärmstens empfehlen: Es handelt sich um eine Entwicklungsumgebung, die – da Java-basiert – auf jedem Betriebssystem heimisch ist und Plugins für jede Programmiersprache und beinahe jedes Framework liefert. Sich an dieses sehr umfangreiche Programm zu gewöhnen ist eine gute Idee, da man sich damit nicht an ein Betriebssystem oder Framework oder ähnliches bindet. Die neueste Version für OS X hängt auch nicht mehr vom Carbon-Framework ab, sondern baut die Oberfläche endlich auf Cocoa auf, was viele Vorteile gebracht hat.

Um Eclipse den Umgang mit AVRs beizubringen, braucht man das entsprechende Plugin: AVR-Eclipse. Auf die Installation gehe ich nicht weiter ein, da sie nicht kompliziert ist und eine Anleitung bald ohnehin schnell veraltet sein kann. Das Wiki der Projektseite bietet eine gute Anleitung.

Der praktische Upload-Button!

Als nächstes bringt Eclipse allgemein natürlich den Syntax-Parser, die Code-Completion, Syntax-Highlightning, eine schöne Organisationsstruktur für Projekte, Debuggingmöglichkeiten, Symbolbrowser und so weiter.

AVR-Plugin-spezifischer sind der praktische Upload-Button, der AVR-Device-Explorer, in dem man alle Register, Ports und Interrupts chipspezifisch einsehen kann, die Programmer-Integration (über die man den Typ des Mikrocontrollers übrigens inklusive Taktung automatisch auslesen kann) und die Möglichkeit, alles projektspezifisch einzustellen.

Bilder sagen mehr als tausend Worte:

Der AVR Device ExplorerFUSE-Editorlockbit_editor

Wer die Arbeit mit Eclipse bereits gewohnt ist, der wird dieses Plugin sicher mögen.

Wenn allerdings schnell mal ohne großes Terminal-Bla FUSEs ausgelesen/geändert, Kompilat hochgeladen oder ähnliches getan werden soll, dann ist es übertrieben, extra ein Eclipse-Projekt aufzuziehen.

Das perfekte Tool hierfür heißt AVRFuses. avrfuses_about

Es ist in C#.NET programmiert, was wiederum bedeutet, dass es unter Windows, Linux (mit Mono) und OS X lauffähig ist.

Da es eine Vielzahl von AVR-Chips unterstützt und an sich recht spartanisch ausgestattet (Es kann das was man braucht und mehr nicht) ist, nutzt man es am besten um schnell mal ein paar Bits zu setzen, wenn man fremde Programme in den eigenen Mikrocontroller schicken will oder ähnliches.

Die eigentlichen Features:

  • Programme hochladen/auslesen
  • EEPROM hochladen/auslesen
  • Chip löschen
  • FUSE-Bits setzen/auslesen

Screenshots:

avrfuses_1avrfuses_2

3 Kommentare
Mai
27
2009

Boolesche Ausdrücke vereinfachen

KV-Diagramme vereinfachen war nie leichter!Um boolesche Ausdrücke zu vereinfachen, kann man Karnaugh-Veitch-Diagramme benutzen. Die Problematik gibt es praktisch überall, wo es um Low-Level-Logik geht.

Um mein eigenes Verständnis so tief zu treiben, wie es nur geht, habe ich ein Java-Applet dazu programmiert.

Da sich weit und breit im Internet kaum sinnvolle Sourcecodes zu solchen Anwendungen finden lassen, die auch noch Betriebssystem-unabhängig sind, gebe ich den Sourcecode frei.

Die lauffähige Version findet sich unter student-im-urlaub.de/kvdes

Und der Sourcecode unter student-im-urlaub.de/kvdes/kvdeskiller-2009-05-27.zip

Der Sourcecode darf völlig frei verwendet werden. Meinen Namen bei Weiterverwendung zu erwähnen wäre zwar nett, ist aber nicht nötig.

Viel Spaß damit, falls wer etwas damit anfangen kann. ;)

1 Kommentar
Mai
03
2009

Alle MP3s von einer Webseite holen

MP3s ladenManche Musiker bieten ihre Musik im MP3-Format kostenlos zum Download an. Man kann dann mit 30 Mausklicks 30 neue MP3s runterladen.

Aber es ist nervig, für alle MP3s die Maus zu benutzen. Man kann den Vorgang ja auch automatisieren:

wget $(curl http://www.8bitpeoples.com/discography/by/trash80 | awk '/mp3/{print gensub(/^.*(http:.+\.mp3)".*$/, "\\1", $0)}')

Die URL (http://….) lässt sich natürlich gegen jede andere ersetzen. Das Script sucht im Quellcode nach Adressen von mp3-Dateien.

0 Kommentare
Written by Jacek in: Computerstuff | Schlagwörter:, , , ,
Apr
12
2009

Optimalen WLAN-Kanal ermitteln

Histogramme mit AWK

Wenn man zuhause ein frisches Funknetzwerk aufstellt oder beim bereits laufenden Funknetzwerk Störungen feststellt, dann sollte man sich zunächst zum Konfigurationsdialog des Access Points begeben und sich folgende Frage stellen:

Welchen Kanal stelle ich ein?

Wenn man diese Frage aus dem Bauch heraus beantwortet, dann kann das zur Folge haben, dass man von einem langsamen und störungsbehafteten heimischen Funknetzwerk genervt wird. Die Ursache? Man funkt auf einem Kanal (Bzw. einer Frequenz), die von mehreren verschiedenen Funknetzwerken benutzt wird.

Also sollte man zunächst die umliegenden Funknetzwerke durchscannen und nachsehen, ob es noch freie oder möglichst wenig benutzte Kanäle gibt.

Da ich mich in den letzten Wochen vermehrt mit diesem Problem konfrontiert sah, habe ich ein kleines Einzeilerskript geschrieben, mit dem man dieses Problem effizient lösen kann:

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s | sed -e 's/^.*-[0-9]\{1,3\} *//g' | awk 'NF > 0{ counts[$1] = counts[$1] + 1; } END { for (word in counts) if (word !~ /SSID/) print "Kanal", word ":", counts[word], "mal"; }' | sort

Wegen des airport-Befehls funktioniert es nur auf OS X Systemen.

Die Frage des Kanals ist nun, wenn man sich einen Alias in der .bashrc, .zshrc oder wie auch immer setzt, innerhalb von einer Sekunde geklärt.

3 Kommentare
Written by Jacek in: Computerstuff | Schlagwörter:, , , , , , ,
Apr
04
2009

Ordentlicher Macbook-Touchpad Support

Ubuntu auf dem MacbookDas Problem mit Linux ist meistens, dass es zwar prinzipiell alles kann, aber die Distributoren sich überfordert damit zeigen, für jedes Computermodell sinnvolle Standard-Einstellungen zu schaffen.

Bei anderen Betriebssystemen wird das entweder so gelöst, dass der Hersteller den Support nur für eine stark begrenzte Hardware-Vielfalt zu pflegen hat oder sich die Hardware-Hersteller selbst darum kümmern.

In den letzten Tagen boote ich, wenn ich gerade nichts wichtiges zu tun habe, mein Macbook mit Linux und versuche, alles zum Rennen zu bekommen, was wichtig für eine komfortable Bedienung ist.

Fundamental wichtig sind natürlich Grafik und Eingabegeräte. Wenn sie nicht oder nur schlecht funktionieren, dann kann man den Computer bedienen, aber es nervt alles einfach nur.

Zwei Dinge habe ich in den letzten Tagen schön zum Arbeiten bekommen. Ich beziehe mich hierbei auf Ubuntu 8.10.

Touchpad

Unter OS X habe ich mich daran gewöhnt, mit einem Finger per Tap einen Mouseclick auslösen zu können. Zwei Finger: Rechtsklick. Drei Finger: Mittelklick. Und das beste Feature an den Apple-Touchpads schlechthin: Mit zwei Fingern scrollen können – egal wo auf dem Touchpad die Scrollbewegung beginnt.

Das funktioniert nicht von alleine, aber HAL ermöglicht eine Konfiguration, so dass alles exakt wie unter OS X läuft.

Wichtig ist zunächst, in der /etc/X11/xorg.conf – falls diese Datei existiert – alle Einträge zu entfernen, die Touchpads betreffen. Geräte, die hier nicht auftauchen, werden von HAL konfiguriert. Dieser Daemon wird von X.org mittlerweile insofern unterstützt, dass er Geräte sofort nach dem Einstecken konfiguriert.

Damit dieser Trick auch mit Apples Touchpads funktioniert, legt man eine Datei /etc/hal/fdi/policy/appletouch.fdi an, die folgenden Inhalt hat:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<deviceinfo version=”0.2″>
<device>
<match key=”info.capabilities” contains=”input.touchpad”>
<match key=”info.product” contains=”appletouch”>
<merge key=”input.x11_driver” type=”string”>synaptics</merge>
<merge key=”input.x11_options.SHMConfig” type=”string”>true</merge>

<merge key=”input.x11_options.VertEdgeScroll” type=”string”>false</merge>
<merge key=”input.x11_options.HorizEdgeScroll” type=”string”>false</merge>
<merge key=”input.x11_options.VertTwoFingerScroll” type=”string”>true</merge>
<merge key=”input.x11_options.HorizTwoFingerScroll” type=”string”>false</merge>

<merge key=”input.x11_options.RTCornerButton” type=”string”>false</merge>
<merge key=”input.x11_options.RBCornerButton” type=”string”>false</merge>
<merge key=”input.x11_options.LBCornerButton” type=”string”>false</merge>
<merge key=”input.x11_options.LTCornerButton” type=”string”>false</merge>

<merge key=”input.x11_options.TopEdge” type=”string”>0</merge>
<merge key=”input.x11_options.LeftEdge” type=”string”>0</merge>
<merge key=”input.x11_options.RightEdge” type=”string”>1100</merge>
<merge key=”input.x11_options.BottomEdge” type=”string”>800</merge>

<merge key=”input.x11_options.FingerLow” type=”string”>15</merge>
<merge key=”input.x11_options.FingerHigh” type=”string”>25</merge>

<merge key=”input.x11_options.TapButton1″ type=”string”>1</merge>
<merge key=”input.x11_options.TapButton2″ type=”string”>3</merge>
<merge key=”input.x11_options.TapButton3″ type=”string”>2</merge>

<merge key=”input.x11_options.ClickFinger1″ type=”string”>1</merge>
<merge key=”input.x11_options.ClickFinger2″ type=”string”>3</merge>
<merge key=”input.x11_options.ClickFinger3″ type=”string”>2</merge>

<merge key=”input.x11_options.MinSpeed” type=”string”>0.5</merge>
<merge key=”input.x11_options.MaxSpeed” type=”string”>2.5</merge>
<merge key=”input.x11_options.AccelFactor” type=”string”>0.15</merge>

<merge key=”input.x11_options.PalmDetect” type=”string”>true</merge>

<merge key=”input.x11_options.MaxTapMove” type=”string”>100</merge>
</match>
</match>
</device>
</deviceinfo>

Die Änderung wird sofort umgesetzt, wenn man mit “sudo /etc/init.d/hal restart && sudo modprobe -r appletouch && sudo modprobe appletouch” den HAL-Server neu startet und das Touchpad-Modul neu lädt.

Grafik

Die 3D-Beschleunigung des Desktops ist spürbar schneller und flüssiger, wenn man die folgende Zeile in den Grafikkarten-Teil der /etc/X11/xorg.conf hinzufügt:


Option “AccelMethod” “UXA”

Diese Beschleunigungsmethode ist bei Ubuntu standardmäßig nicht eingeschaltet, da sie offiziell noch nicht stabil ist. Aber auf meinem Macbook2,1 hat das noch keine Probleme verursacht. Im Gegenteil.

0 Kommentare
Written by Jacek in: Computerstuff | Schlagwörter:, , , , ,
Nov
01
2008

Programmieren in C an der RWTH

Im Studiengang “Elektrotechnik / Technische Informatik / Informationstechnik” an der RWTH Aachen hört man im ersten Semester unter anderem “Grundgebiete der Informatik 1″.

Es geht hier nicht darum, programmieren zu lernen, sondern um Algorithmen und Datenstrukturen. Die offizielle Vorlesungsprogrammiersprache ist C.

An der Uni ist man sich der Tatsache bewusst, dass viele noch nie programmiert haben, also werden in der Globalübung und in den Kleingruppenübungen durchaus ein paar Dinge erklärt.

Die meisten Anfänger benutzen Windows – und sie haben das typische Problem, dass ihr Konsolenfenster ( Unter Windows mehr “Eingabeaufforderung” genannt – das entspricht auch dem lächerlichen Funktionsumfang!) sich sofort nach Ablauf des Programms wieder schließt. Das passiert UNIX-Benutzern nicht, denn sie rufen ihr Programm in der Konsole mit “./meinprogramm” auf, sehen die Ausgabe und landen zurück in der Eingabezeile. Das sieht dann so aus:

tfc@photon u2 % ./aufg3_1_b                                                9:13
[Ausgabe des Programms (...)]
tfc@photon u2 %                                                                     9:13

Nichts klappt sich zu. Wozu auch? UNIX hin oder her – unter Windows ist es unüblich, die Konsole dauerhaft offen zu haben (Weil sie dort nichts kann), also besteht dieses Problem für einen Windowsprogrammierer nunmal.

Viele Windowsprogrammierer setzen deshalb vor dem “return 0;” in ihrem Sourcecode ein kurzes “getchar();” ab. Das ist sogar noch in der stdio.h enthalten, weshalb unnötige Includes wegfallen. Diese kleine Funktion lässt die Konsolenanwendung nach Ablauf des eigentlichen Programms auf die Eingabe eines Buchstaben warten. Was für ein Buchstabe das ist, ist ja völlig egal – das Programm blockiert an dieser Stelle und die Konsole geht nicht zu. Das erfüllt seinen Zweck. Abgesehen davon, dass es UNIX-Programmierer total nervt, weil man ständig Enter drücken muss, um zurück zur Konsole zu kommen.

Gestern allerdings war der erste Kleinübungsgruppentermin für Informatik (Erst letzte Woche wurden die Gruppenplätze verteilt). Hier wurde für die Total-Anfänger noch einmal gezeigt, wie man seinen ersten C-Sourcecode schreibt und kompiliert. Mit wxDev-C++ (oder sowas in der Art) unter Windows. Der Tutor erwähnte das “Zuklapp-Problem” mit der Konsole. Sein Lösungsvorschlag:

Man bindet über “#include <stdlib.h>” die stdlib.h ein und verwendet vor dem “return 0;” am Ende des Programms die Funktion system() mit folgendem Aufruf: “system(“PAUSE”);”. Dies hat zur Folge, dass am Ende des Programms das Programm “PAUSE” aufgerufen wird und die Konsolenausgabe so aussieht:

C:\winDOS\> meinprogramm
[Ausgabe (...)]
Bitte drücken Sie eine beliebige Taste, um fortzufahren…

Ja, toll. Den PAUSE-Befehl gibt es unter UNIX nicht. Weil an der Uni so verantwortungsbewusst Systemunabhängig gelehrt wird, darf ich während meinem Studium die Sourcecodes meiner UNIX-fremden Kommilitonen umhacken, damit sie bei mir überhaupt laufen und später schlage ich mich später im Berufsleben mit Arbeitskollegen herum, die kein wirkliches C können, sondern sich Müll zusammenprogrammieren, den sie sich unter Visual Studio oder so angewöhnt haben.

Ich richte einen Appell an alle Windows-Kommilitonen: Bitte, bitte nutzt Präprozessor-Anweisungen! Mit folgendem kurzen Code kann man sein Programm Plattform-Unabhängig machen:

#ifdef WIN32
system(“PAUSE”);
#endif 

Diese Anweisung bewirkt, dass der Compiler diesen “Windows-Behelf” auslässt, wenn man das Programm überhaupt nicht unter Windows kompiliert.

Bei einem einzelnen Entertastendruck ist das ja alles noch nicht soooo schlimm, aber schlimmere Zeiten werden kommen.

4 Kommentare
Written by Jacek in: Computerstuff, Uni | Schlagwörter:, , , , , , , ,
Sep
21
2008

Ad-Blocking auf die billige Tour

Mittlerweile gibt es auch für den Safari-Browser von Apple ein AdBlock-Plugin, aber irgendwie blockt mir das zu wenig.

Früher habe ich das mal anders gemacht. Seit vorgestern mache ich es wieder wie damals:

Auf so ziemlich allen unixoiden Systemen existiert die Datei /etc/hosts. Wenn man eine URL in den Browser eingibt oder irgendein Programm sich zu einem Domain-Namen verbindet, dann schaut das Betriebssystem zunächst in die Datei /etc/hosts, vergleicht den Domain-Namen und wenn er dort steht, dann wird die dazugehörige IP-Adresse zurückgegeben. Wenn dort nichts von dieser Domain steht, dann werden der Reihe nach die Nameserver abgefragt, die in der Datei /etc/resolv.conf aufgelistet sind. Das ist naturgemäß langsamer. Allerdings haben manche Browser einen eigenen DNS-Cache. Bei Firefox bin ich mir da sicher, bei anderen Browsern bin ich mir wiederum nicht sicher. 

Ich habe mal gehört, dass es unter Windows auch so eine Datei geben soll. Aber da ich in diesem Artikel ein Bash-Script vorstelle, das sicher nicht einmal von diesem neumodischen Windows Powershell-Schwachsinn unterstützt wird, können Windows-Benutzer hier praktisch schon aufhören, mitzulesen.

In die /etc/hosts schreibt man also IP-Adressen und Hostnamen rein, die man miteinander assoziiert haben will. Das kann verschiedene Zwecke haben:

1.) Man will die anderen Computerbenutzer ärgern. Man kann beispielsweise DNS-Anfragen nach microsoft.de auf apple.de umleiten. Dazu einfach eine Zeile zur /etc/hosts zufügen: “17.149.160.31 microsoft.de”, wobei die Nummern da Apples IP-Adresse darstellen.

2.) Man will gewisse Seitenaufrufe beschleunigen. (Wenn der Browser einen eigenen DNS-Cache hat, bringt das hier nichts) Oft aufgerufene Domains kann man hier also statisch eingeben und schon läuft alles schneller, vor allem wenn von der gleichen Domain viele Dateien pro Seite geladen werden.

3.) Man hat keine Lust, zuhause immer “192.168.1.1″ im Browser einzugeben, wenn man auf seinen Router zugreifen will. Also assoziiert man einfach ein Kürzel damit, indem man eine Zeile an die /etc/hosts anfügt: “192.168.1.1 router”. Und man kann sofort über “router” auf den Router zugreifen, anstatt umständlich die IP einzugeben. Das mache ich auch mit meinem gejailbreakten iPod so, wenn ich per SSH drauf will, weil ich seine IP ständig vergesse.

 4.) Man will Werbeseiten blocken, und darum geht es in diesem Artikel eigentlich: Viele Server im Internet würde man gerne komplett blockieren, denn von denen bekommt man immer nur Werbung und nichts anderes zu sehen. Diese Domains kann man mit der /etc/hosts-Methode einfach auf Localhost (127.0.0.1) umleiten und schon kommen dort nie HTTP-Requests nach Werbebildchen an, also kommen auch keine nervigen Werbebildchen, Javascripts oder sonstwas zurück. Perfekt!

Aber es gibt so viele Werbeserver. Alle per Hand einfügen? NEE!

Es gibt eine ständig gepflegte Liste an nervigen Werbeservern im Internet auf http://pgl.yoyo.org/adservers/. Das tolle an dieser Liste ist, dass man sie in den verschiedensten Formaten anfordern kann, so dass man auch verschiedene Werbeblocker damit füttern kann. Im /etc/hosts-Format bekommt man sie praktischerweise auch.

Und damit man möglichst kaum Hand anlegen muss, kann man sich das alles schön automatisieren.

Zunächst sollte man sich eine Datei anlegen, die eine “nackte” /etc/hosts Datei repräsentiert. Also so wie man sie normal hat, ohne dass Werbeserver eingetragen sind. Ich habe meine einfach mal /etc/hosts.bak genannt. Wenn man sowieso noch keine Werbeserver eingetragen hat, gibt man einfach in die Konsole ein (Der folgende Befehl kopiert die bestehende Datei einfach):

sudo cp /etc/hosts /etc/hosts.bak

Und als nächstes schreibt man sich ein kleines Script zusammen:

#!/bin/sh
echo "Updating adserver list..."
sudo cp /etc/hosts.bak /etc/hosts
curl "http://pgl.yoyo.org/\
adservers/serverlist.php?\
hostformat=hosts&showintro=0&\
startdate%5Bday%5D=&startdate%5B\
month%5D=&startdate%5Byear%5D=&\
mimetype=plaintext"\
| sudo tee -a /etc/hosts >& /dev/null
echo "Done. Have fun!"

Diesen Bash-Code kann man jetzt einfach per Texteditor unter /usr/bin/adblockrefresh abspeichern und mittels “chmod +x /usr/bin/adblockrefresh” ausführbar machen (Das sollte mit Root-Rechten geschehen, sonst klappt’s nicht!). Ein kleiner Aufruf von “adblockrefresh” in der Konsole macht jetzt die ganze Arbeit.

Werbeserver sind jetzt auf dem gesamten System blockiert. Für jeden Browser, für jedes Programm. Browser mit DNS-Cache sollte man vielleicht mal neu starten.

War Adblocking jemals einfacher? Jedenfalls muss ich jetzt nicht mehr diese verdammt nervige Javascript-Werbung wegklicken, bevor ich serienjunkies.org betreten kann.

4 Kommentare
Written by Jacek in: Computerstuff | Schlagwörter:, , , , , , ,
Jun
07
2008

Praktische TABkürzung

Gerade eben habe ich gemerkt, dass man beim Safari-Browser nicht immer Apfel+T drücken muss, um eine neue Seite aufzumachen, sondern man kann einfach die gewünschte Adresse in die Adressleiste eingeben und Apfel+Enter drücken.

Schont eure Fingergelenke! ;)

0 Kommentare
Written by Jacek in: Computerstuff | Schlagwörter:, , , ,

Powered by WordPress. Theme: TheBuckmaker. Darlehen, Geld verdienen

3.14159