Festplattennutzung unter Mac OS X visualisieren

Festplatten, egal welcher Größe haben eine unangenehme Eigenschaft. Irgendwann sind sie voll und man fragt sie wo der ganze Platz hin ist. Um sich das ganze übersichtlich anzuschauen gibt es für Windows „WinDirStat„, für Linux „KDirStat“ und für Mac OS X gibt es „GrandPerspective“ welches unter http://grandperspectiv.sourceforge.net/ zu finden ist.

Eine GrandPerspective Analyse

Eine GrandPerspective Analyse

Nach dem Start von „GrandPerspective“ wählt man einen Ordner aus und bekommt anschließend eine Analyse aus welcher sich optisch erschließt welches die größten Brocken auf der Festplatte sind. Die Software wird aktiv weiter entwickelt und steht dabei unter der GPL. Es existieren auch lokalisierte Versionen, allerdings werde diese augenscheinlich nicht mehr gepflegt, so das man mit der englischen Version Vorlieb nehmen sollte.

Weitere Informationen gibt es unter:
http://en.wikipedia.org/wiki/GrandPerspective
http://de.wikipedia.org/wiki/WinDirStat
http://de.wikipedia.org/wiki/KDirStat

Probleme mit der Fontauswahl unter Inkscape

In einigen Versionen hat Inkscape Probleme mit der Fontauswahl. Nachvollziehen kann man das zum Beispiel mit den Ubuntu Fonts. Diese gibt es in den Varianten „Ubuntu“, „Ubuntu Condensed“ und „Ubuntu Light“. Möchte man nun z.B. den Font „Ubuntu Light“ anwählen, so funktioniert es nicht. Inkscape springt unvermittelt auf den Font „Ubuntu“.

Die Fontauswahl unter Inkscape

Die Fontauswahl unter Inkscape

Bei diesem Problem handelt es sich um ein Fehler in Inkscape, welche sich glücklicherweise umschiffen lässt. Dazu gibt man den Fontnamen, in der Fontleiste ein und hängt ein Komma an den Namen. Aus „Ubuntu Light“ wird dann „Ubuntu Light,“. Damit akzeptiert Inkscape den Font und man kann wieder damit arbeiten.

Weitere Informationen gibt es unter:
https://bugs.launchpad.net/inkscape/+bug/595432

melonJS ohne preload benutzen

Bei melonJS handelt es sich um eine Javascript Engine zur Spieleentwicklung im Browser mittels HTML5. Möchte man dort ein Level laden, so geschieht das in Form einer TMX Datei. In melonJS gibt es dabei zwei Methoden zum laden der entsprechenden Daten. Diese sind „me.loader.preload“ und „me.loader.load“. Alle Beispiele welche man im Netz so findet nutzen dabei immer die „preload“ Methode:

var g_resources= [
{ name: "desert1",          type: "image", src: "desert1.png" },
{ name: "desert",           type: "tmx",   src: "desert.tmx" },
{ name: "player_male_base", type: "image", src: "player_male_base.png" },
{ name: "fog",              type: "image", src: "fog.png" }
];

...

me.loader.preload(g_resources);

Das Problem ist das man bei größeren Spielen mit ein paar hundert MiB Spieldaten, das ganze schlecht komplett in den Speicher laden kann. Hierfür gibt es die „load“ Methode. Allerdings enthält diese einige Fehler welche das ganze erschweren. Die „preload“ Methode trägt jede TMX Datei in das Array „levels“ im „me.levelDirector“ ein. Bei der „load“ Methode passiert genau dies nicht. Deshalb muss man hier anders vorgehen (bis der Fehler behoben ist). Ein Minimalbeispiel zum laden eines Levels sieht damit so aus:

<!DOCTYPE html>
<html>
  <head>
    <title>melonJS minimal sample</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script type="text/javascript" src="melonJS.js"></script>

    <script type="text/javascript">
      var jsApp = {
        start: function() {
          if (!me.video.init('jsapp', 640, 480, false, '1', false))
          {
            alert("Sorry but your browser does not support html 5 canvas.");
            return;
          }

          me.loader.onload = this.loaded.bind(this);

          //lade manuell
          me.loader.load({name: "desert1",  type:"image",  src: "desert1.png"}, this.onload);
          me.loader.load({name: "desert",  type:"tmx",  src: "desert.tmx"}, this.onload);

          //zeige Ladebildschirm
          me.state.change(me.state.LOADING);
        },

        onload: function(data) {
          me.levelDirector.addTMXLevel("desert"); //Bugfix
          me.levelDirector.loadLevel("desert");
        },

        loaded: function() {
          me.state.set(me.state.PLAY, new PlayScreen());
          me.state.change(me.state.PLAY);
        }
      }

      var PlayScreen = me.ScreenObject.extend({
      });

      //starte wenn der Browser bereit ist
      window.onReady(function() {
        jsApp.start();
      });
    </script>
  </body>
</html>

Damit lädt man ein Level dynamisch, ohne auf die „preload“ Methode angewiesen zu sein. Möglich wird dies durch den kleinen Bugfix in der „onload“ Methode:

me.levelDirector.addTMXLevel("desert"); //Bugfix

Dieser sorgt dafür das der levelDirector über die entsprechende TMX Datei informiert wird und somit die Datei beim laden des Levels auch findet.