Nautilus: zeigt verstecke Dateien an

man sagt zwar „Hartnäckigkeit führt einen ans Ziel“, aber wenn Computerprogramm hartnäckig sind, kann das sehr frustrierend sein. So geht es auch in diesem Beitrag um einen hartnäckigen Fehler, der sich leicht beseitigen läßt, wenn man es weiß.

Nautilus und die versteckten Dateien

Versteckte Dateien sind zwar eine Erfindung von Unix, aber auf fast allen Filesystem dieser Welt (nicht) zu finden. Im Linuxfilesystem werden versteckte Dateien mit einem Punkt am Anfang markiert, z.B. „.htaccess“

Diese Datei würde bei einem normalen Auflisten der Dateien nicht zu sehen sein. Nur wenn man explizit angibt, daß man diese sehen will, findet man sie auch. Gemacht wird dies oft, um Configdateien zu schützen oder Menschen nicht von wichtigen Sachen abzulenken.

Machen Sie doch mal mit Nautilus das Homeverzeichnis auf und drücken Sie auf CTRL+H / STRG+H .

Damit können Sie die Darstellung umschalten.

Nautilus Defaulteinstellungen

Wenn Sie immer die versteckten Dateien sehen wollen, müssen Sie das in den Einstellungen von Nautilus abstellen. Dazu gibt es zwei Wege, da wir einen Weg brauchen werden für den es keine Alternative gibt, bleiben wir bei einer Lösung: dem Dconf-Editor .

1. Starten Sie den Dconf Editor :  dconf-editor
2. Klappen Sie sich den Weg frei zu : org->gnome->nautilus->preferences
3. den Haken bei show-hidden-files entfernen

Wie diesen starten können, habe ich in diesem Beitrag schon erklärt:  „zuletzt-verwendet-abschalten“

Wenn Sie Nautilus jetzt neu starten und wie ich immer noch versteckte Dateien angezeigt bekommen, dann zeigt sich ein Bug von Nautilus bei Ihnen. Da kommen Sie nie alleine drauf !

Nautilus, der Dateiauswähler

Nautilus wird auch benutzt, wenn andere Programm eine Datei auswählen wollen. Dabei kann es passieren, daß Sie z.b. eine versteckte Datei sehen wollen und STRG+H drücken oder auswählen. Leider merkt sich Nautilus dies in einer anderen Einstellung, dem File-Chooser Objekt

1. Starten Sie den Dconf Editor :  dconf-editor
2. Klappen Sie sich den Weg frei zu : org->gtk->settings->file-chooser
3. den Haken bei show-hidden-files entfernen

Jetzt endlich kann man wieder freie Sicht auf die wichtigen Dateien bekommen, wenn man Nautilus öffnet.

 

Dancetracks selbstgemacht

Was Sie schon immer über aktuelle „Disko“ Musik wissen wollten, sowieso schon wußten und eh befürchtet haben, wird in diesem anschaulichen Video von den DJs from Mars schön gezeigt:

Viel Spaß dabei.

Javascript: Funktionen Referenz oder Execution

Ein kleiner Ausflug in die Welt der Javascriptprogrammierung. Kurz vorweg, das ist nicht JQuery. Es gibt noch mehr Frameworks und andere Ansätze erlauben auch andere Dinge. Javascript ist da sehr flexibel.

Heute geht es um Funktionsreferenzen. Diese Funktion soll aufgerufen werden :

        function login() {

            var dummy = document.createElement("div");
            if ( dummy.loadURL("cmd/login",$("user").toURI()+"&"+$("pass").toURI()) ) {
                var result = dummy.getValue().trim();
                if ( result == "OK" ) {
                    $("anzeige").loadURL("cmd/listen","");
                } else {
                    $("errormsg").HTML("Leider konnten wir Sie nicht anmelden:
"+ result );
                }
            } else {
                    $("errormsg").HTML("Leider konnten wir Sie nicht anmelden:
"+ result );
            }
        }

Wie man leicht erkennen kann, gibt diese Funktion nichts zurück, soll Sie auch gar nicht.

Dieses kleine Beispiel verwendet die Funktion auf zwei Arten auf:

        window.onload = function() {
             $("anzeige").loadURL("anmelden.html","");
             $("loginbutton").onclick = login();
             $("anmelden").onclick = function(){
                 $("anzeige").loadURL("anmelden.html","");
                 $("loginbutton").onclick = login;
             }
         }

Jetzt raten Sie mal welche Version falsch ist 😉  OK, nicht so schwer. Natürlich ist das richtig:

             $("loginbutton").onclick = login;

Das onlick der Referenzzeiger für die Funktion ist, die beim Click auf das Element ausgeführt werden soll, dürfte bekannt sein, genau  onKeyUp, onKeyDown, onDrag usw. . für andere Events da sind.

Beim Klick auf das LoginButton soll also der Login erfolgen. Wenn man nun aber statt login login() schreibt,  dann wird die Funktion login gleich ausgeführt. Was zur Folge hat, daß obigen Code eine Webseite lädt und in ein Element schreibt, feststellt, daß es nicht ging und eine Errormeldung ausgibt. Der Klick auf das Loginbutton führt dann bestenfalls zu gar nichts, schlimmstenfalls zu einem Crash des Javascriptinterpreter, das kommt auf die Güte des Interpreters an. Kurz um, es passiert nicht was man wollte.

Jetzt die natürlich die Frage, gäbe es für login() auch eine legitime Verwendung, weil sonst könnte der Javascriptsyntaxchecker ja einfach mal vorher meckern.

Die Antwort ist leicht: Ja, die gibt es.

function test() {

     if ( window.location.href  == "meinefiktiveURL" ) {
           return function() {
                alert("Hallo");
           };
     }

     return function() { alert("Hier sind Sie falsch"); };
};

$("alarmknopf").onclick = test();

Damit sich darin ein Sinn ergibt, habe ich eine IF-ELSE Anweisung benutzt. Ich kann also dynamisch festlegen was passieren soll, wenn der Alarmknopf gedrückt wird. Vorteil, die IF-Abfrage wird nur einmal ausgeführt, nicht ständig, wenn jemand auf den Knopf drückt. Das ist natürlich bei einem einmaligen Event egal, aber bei Funktionen die mehrere tausend mal pro Sekunde aufgerufen werden, kann das grade bei Javascript zum Flaschenhals werden.

Natürlich kann man das auch so machen wie folgt, aber dann muß man das für jeden Knopf machen – Folge: es verbraucht mehr Ressourcen:

$("alarmknopf").onclick = function () {

        if ( window.location.href  == "meinefiktiveURL" ) {
                alert("Hallo");
        } else {
                alert("Hier sind Sie falsch");
        };
};