Software

XFS-Dateisysteme reparieren

Dieser Artikel ist älter als zwei Jahre und womöglich veraltet!

Auch das XFS-Dateisystem kann kaputt gehen. Doch Linux wäre nicht Linux, wenn es nicht für jeden möglichen Fall mindestens ein Paket gäbe, mit dem sich alles wieder in den Normalzustand versetzen ließe. In diesem Fall hilft xfs_replair aus dem Paket xfsprogs.

Um es zu installieren öffnet man das Terminal und schreibt:

sudo apt-get install xfsprogs

Anschließend lässt sich die Festplatte mittels folgendem Befehl reparieren:

xfs_repair -n /dev/sdb1

Natürlich sollte dazu der Pfad zum Datenträger angepasst werden. Innerhalb weniger Sekunden hatte ich damit wieder eine funktionierende Festplatte in den Händen.

Entwicklung

Web-Apps strukturieren mit Backbone.js

Dieser Artikel ist älter als zwei Jahre und womöglich veraltet!

Mit Backbone.js ist es möglich JavaScript-Web-Apps nach dem MVC-Prinzip aufzubauen. Dadurch kann die komplette Verwaltung der Daten von diesem Framework erledigt werden und es kümmert sich zudem auch darum #-URLs (Fragmentbezeichner heißt das Ding) auszuliefern.

Model

Über das Model wird die Struktur der Daten definiert. Außerdem wird die Adresse festgelegt, an die die Ajax-Anfragen gerichtet werden. Im Objekt defaults werden die Standardwerte, oder, wenn diese leer bleiben, die Existenz der Felder definiert.

var UserModel = Backbone.Model.extend({
    urlRoot: 'data/users',
    defaults: {
        username: '',
        name: ''
    }
});

Collection

Mit Sammlungen (Collections) werden mehrere Einheiten eines Models gespeichert. Hierbei wird das Model der Daten angegeben und wiederum die URL, unter der mit Ajax die Liste der Daten abgerufen werden können.

var UsersCollection = Backbone.Collection.extend({
    model: UserModel,
    url: 'data/users'
});

var users = new UsersCollection();

Über die fetch - Funktion können die Daten abgerufen werden.Die Daten können dann in der success - Funktion verarbeitet werden.Über .get("<feld>") lässt sich der Wert eines Feldes abrufen.

users.fetch({
    success: function(items) {
        items.each(function(item) {
            alert(item.get("username"));
        });
    }
});

Router

Über so genannte Router lassen sich die verschiedenen URLs definieren und mit dem gewünschten JavaScript-Code verbinden. Mit Backbone.history.start() stellt man sicher, dass die URLs auch im Verlauf des Browsers auftauchen.

var AppRouter = Backbone.Router.extend({
    routes: {
        ":user": "user", // Ein Benutzer (/muster)
        "": "users" // Alle Benutzer (/)
    },

    user: function() {
        // magic
    },

    users: function() {
        // other magic
    }
});

Backbone.history.start();

Views

Backbone.js ermöglicht es Views mit Templates zu laden. Dazu definiert man einen script-Tag mit dem type-Attribut text/template. Darin kann man Platzhalter für Variablen einfügen, die zwischen <%= und %> stehen.

<script type="text/template" id="template-user">
    <h1><%= username %></h1>
</script>

Den eigentlichen View erzeugt man wie folgt:

var UserView = Backbone.View.extend({

    initialize: function() {
        this.template = _.template($("#template-user").html());
    },

    render: function(eventName) {

        var data = {
            test: "abc"
        }

        $(this.el).html(this.template(data));
        return this;
    }
});

var user = new UserView({
    model: User
});

user.render();

Dabei wird in der initialize-Funktion das Template aus dem Script-Tag geladen und in der Variable this.template gespeichert. In der Funktion render wird das Template befüllt und anschließend zur Seite hinzugefügt. Die Daten werden direkt aus dem Model geholt, das auch bei der Konstruktion des Views angegeben wird.

Es können jedoch auch erst in der Render-Funktion Template-Variablen deklariert werden, die in als Objekt, in diesem Beispiel data, das der this.template()-Funktion übergeben wird.

Fazit

Das Backbone.js Framework stellt eine große Erleichterung dar und macht es möglich sich auf die eigentliche Entwicklung einer App zu konzentrieren, anstatt sich mit wiederkehrenden Aufgaben und Problemen befassen zu müssen. Vor allem der Umgang mit den Daten ist so klar strukturiert und macht keine Programmierung der oft umfangreichen Ajax-Anfragen nötig.

Als Voraussetzung ist die jQuery-Bibliothek vonnöten, die jedoch in vielen Fällen bereits verwendet wird und sich bereits zu einem Quasi-Standard etabliert hat.

Software

Empfehlung: Sublime Text 2

Dieser Artikel ist älter als zwei Jahre und womöglich veraltet!

Vor einiger Zeit bin ich auf einen großartigen Code-Editor für Windows, Linux und Mac gestoßen: Sublime Text 2. Der Editor ist einfach zu bedienen, enthält aber einen große Auswahl von nützlichen Funktionen.

Sublime Text 2

Besonders gefällt mir das Design, die große Auswahl an Syntaxhervorhebung und der einfache Umgang mit Tabs anstelle von gedit.

Am besten testet man den Editor selbst, denn die Demo-Version hat augenscheinlich keine Einschränkungen. Nur ein Fenster mit der Aufforderung den Editor zu kaufen wird von Zeit zu Zeit geöffnet.

Entwicklung

Code von früher: Wie konnte ich nur?

Dieser Artikel ist älter als zwei Jahre und womöglich veraltet!

Gelegentlich findet man in irgendwelchen Ordnern und auf Datenträgern alten Quellcode, den man in seiner Frühzeit als Entwickler geschrieben hat. Nicht selten, eigentlich immer, schämt man sich im Nachhinein für diese Zeilen voll Ressourcenverschwendung und ineffizienter und unsicherer Programmierung.

Gefunden habe ich jetzt diesen ausgesprochen performanten Codeausschnitt aus einem Projekt aus der Frühzeit meiner PHP-Kenntnisse, als ich gerade etwas MySQL gelernt hatte. Hier wird der Wert eines Eintrages ausgelesen, hochgezählt und wieder abgespeichert.

$res = mysql_query("SELECT count from users WHERE id=" . $id);
$data = mysql_fetch_object($res);
$count = $data->count;
$count++;
mysql_query("UPDATE users SET count=" . $count . " WHERE id=" . $id);

Heute würde ich das natürlich so machen:

mysql_query("UPDATE users SET count = count+1 WHERE id=" . $id);

(SQL-Injection. Ja, ja, aber darum geht es jetzt nicht)

Software

Schnelle Textsuche in Linux

Dieser Artikel ist älter als zwei Jahre und womöglich veraltet!

Mit dem folgenden Linux-Befehl lassen sich die Dateien in einem Ordner schnell nach Text durchsuchen

grep -r "Text" /pfad/

Die einzelnen Teiles des Ausdrucks bedeuten das Folgende:

Befehl Bedeutung
grep Linux-Programm grep
-r Rekursive Suche in Ordner
"Text" Zu suchender Text
/pfad/ Pfad zu durchsuchenden Ordner

Beispiel

Folgendes Beispiel zeigt den Einsatz bei der Suche nach dem Text “Welt” in einem Ordner:

johannes@johannes-Ubuntu:~$ grep -r "Welt" /home/johannes test 
/home/johannes/test/datei:Hallo Welt!