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
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:, , , , ,
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