März 17, 2022

Typeisch C#

Lovely ArrayList

Weiterlesen
Dezember 2, 2021

Wieviel Pixel ist in einem Millimeter?

3 Satz in der Praxis

Weiterlesen
November 2, 2021

Fun with HTML5

making some noise

Weiterlesen
September 21, 2021

Mein kleines Leben

Chaos

Weiterlesen
Cover Image

Typeisch C#

Lovely ArrayList

März 17, 2022 - Lesezeit: ~1 Minute

Arraylist ist der tollste Datentyp überhaupt. Ich mag normale Arrays. Wie machen wir da jetzt ein draus. Ganz einfach:

ArrayList newList = new ArrayList();
newList.Add("1");
newList.Add("2");
string[] ParamNameListArray = (string[])newList.ToArray(typeof(string));
object[] ParamDataListArray = (object[])newList.ToArray(typeof(object));
Console.WriteLine(ParamNameListArray);
Console.WriteLine(ParamDataListArray);

C# und die Typen. Wenn man fast nur noch in JavaScript unterwegs ist, ist das schon fast eine Tortur.


Cover Image

Wieviel Pixel ist in einem Millimeter?

3 Satz in der Praxis

Dezember 2, 2021 - Lesezeit: 15 Minuten

Wer wollte nicht schon immer mal wissen wie viele Pixel eigentlich ein Millimeter sind? Die Frage lässt sich leider nicht ganz eindeutig beantworten, da es immer von der DPI abhängt. Also der Pixeldichte. Bei einem Monitor ist diese Dichte normalerweise deutlich weniger als bei einem Ausdruck auf Papier. Aber auch da gibt es Unterschiede, wenn ich z.B. ein Foto ausdrucken möchte. Da ich momentan viele Ausdrucke designe und leider aufgrund der Umstände häufig nicht vor dem betreffenden Drucker stehen kann, um mir das Ergebnis anzusehen bin ich gezwungen das Ganze auf dem Reisbrett vorher schon mal durchzuspielen und dem Kunden am besten ein PDF mit seiner Anforderung zum Testen schicken kann. Ein PDF hat den Vorteil, dass der Ausdruck wie designt ausgedruckt werden kann. Inklusive Schriftarten und Bildern. Nur die Abmessung sollte man vorher kennen, damit man das Ganze noch richtig zurechtschieben kann. Ein Kunde nennt aber im Normalfall Millimeter als Maß. Das ist beim Designen meistens hinderlich, da das ein permanentes Umrechnen erfordert, wenn es darum geht kleinere Korrekturen mit statischen Werten vorzunehmen. Wenn man das Design bereits mit Pixelwerten durchführt, übernimmt der Drucker die Rückrechnerei später für uns. Damit der Kunde weiterhin mit dem Lineal messen kann und ich bereits im Vorfeld pixelperfekte Layouts liefern möchte hab ich einen kleinen Umrechner geschrieben, der es mir ermöglich mit meiner Entwicklung im Bereich der Pixel Schalten und Walten zu können, aber auf die Wunschmaße nicht verzichten zu müssen.

Das Tool ist erreichbar unter:

mm in px

Und reit sich wunderbar in die Liste der anderen Tools ein. Auch dieses Tool kann man sich, wenn es öfter gebraucht wird, einfach als APP verknüpfen.


Cover Image

Fun with HTML5

making some noise

November 2, 2021 - Lesezeit: 25 Minuten

Jetzt gibt es soviele verschiedene Betriebssysteme und so viele unterschiedliche Musikplayerprogramme von VLC über mplayer oder der im Windows integrierte Grooveplayer. Nur sind die meisten Programme entweder nicht direkt installiert oder umständlich einzurichten, wollen ins Internet um irgendwas runterzuladen oder erstmal die ganze Festplatte durchsuchen. Ich will doch einfach nur ein paar mp3 Dateien anhören. Aber es gibt ja glücklicherweise den Browser, der das Abspielen von Musikdateien im HTML5 Standard ja bereits unterstützt. Super, also schnell die mp3 Datei gesucht und via Drag und Drop in den Browser ziehen und schon wird sie abgespielt. Nach 5 Minuten dann die nächste Datei draufziehen. Und dann nach 5 Min.? Genau: nächste Datei draufziehen. Nach 20 Min. war mir das dann zu doof und zu zeitaufwändig. Aber bis ich jetzt im Grooove mir was zusammengezogen habe und das Ganze dann noch für mein Linux und mein Androiden zusammengstellt habe, kam mir die Idee, warum nicht alles einmal fertig machen und auf jeder Plattform genießen. Also hab ich das Ganze mal in eine Website gepackt:

<audio id="audio" preload="auto" tabindex="0" controls="" type="audio/mpeg">
<source type="audio/mp3" src="./Voodoo Suite - Little Grass Shack.mp3">
Sorry, your browser does not support HTML5 audio.
</audio>

Ok, das war easy. Jetzt kann ich eine Datei abspielen. Die Datei muss im selben Ordner liegen und das Ganze kann, in zusammenarbeit mit einem einfachen Webserver, sogar schon gestreamt werden. Ist aber nur eine Datei, brauchen wir noch eine Playlist:

<ul id="playlist">
<li><a class='active'href="./Voodoo Suite - Little Grass Shack.mp3">Voodoo Suite - Little Grass Shack.mp3 (Local)</a></li>
<li><a href="https://files.freemusicarchive.org/storage-freemusicarchive-org/music/WFMU/Voodoo_Suite/blissbloodcom/Voodoo_Suite_-_03_-_Little_Grass_Shack.mp3">Voodoo_Suite_-_03_-_Little_Grass_Shack.mp3</a></li>
</ul>

Ok, jetzt haben wir eine Playlist. Wenn ich die aber anklicke, dann navigiert der Browser und ich bin soweit wie vorher. Dann packen wir doch einfach noch ein bisschen oldskool Javascript dazu:

<script>
  var audio;
  var playlist;
  var tracks;
  function init() {
    audio = document.querySelector('#audio');
    playlist = document.querySelector('#playlist');
    tracks = playlist.querySelector('li a');
    let links = playlist.querySelectorAll('a');
    links.forEach(e => {
      e.onclick = (evt) => {
        evt.preventDefault();
        playlink(e);
      }
    });
    audio.addEventListener('ended', function (e) {
      var current = playlist.querySelector('li a.active');
      var next = current.parentNode.nextElementSibling;
      if (next) {
        let e = next.querySelector('a');
        playlink(e);
      }
      else {
        let links = playlist.querySelectorAll('a');
        playlink(links[0]);
      }
    });
  }
  function playlink(link) {
    let e = link;
    playlist.querySelectorAll('a').forEach(l => { l.classList.remove("active") });
    e.classList.add("active");
    audio.src = e.getAttribute('href');
    audio.load();
    audio.play();
  }
  init();
</script>

So, jetzt kann ich mir in der Playlist aussuchen was ich will und die ganze Liste läuft solange ich nicht stoppe. Ich kann ich der Playlist entweder lokale Einträge verwenden oder Quellen aus dem Internet. Das Ganze lässt sich mithilfe eines Webservers bequem bedienen und funktioniert sogar mit der Xbox. Was will man mehr. Kein generve vom VLC für Updates oder das Verhalten des mplayers unter windows. Man muss nur seinen Browser aktuell halten und das war's schon.

Das Javascript in diesem Beispiel kann zweifelsohne noch deutlich verbessert werden. Ist aber für den vorliegenden Fall vollkommen ausreichend. Denn sonst hätt ich ja auch einen Player installieren können.


Cover Image

Mein kleines Leben

Chaos

September 21, 2021 - Lesezeit: ~1 Minute

"Wir müssen hier weg!" brüllt dir einer ins Ohr. Du reagierst. Du trägst einen Anzug, der sich wie ein Skelett an deinen Körper anschmiegt und deine Kraft verstärkt. Du steuerst diesen Anzug intuitiv, deine Hände und deine Beine kennen die Abläufe. Während du noch versuchst die aktuelle Situation einzuordnen, trägt dich dein Anzug weg von hier. Wo auch immer hier ist. Wann auch immmer hier ist. Derjenige, der dich angeschrien hat läuft neben dir und steckt ebenfalls in einem Anzug, der seine körperlichen Fähigkeiten zu verstärken scheint. Sein Gesichtsausdruck ist ernst und getrieben. Hinter dir kracht es und eine Druckwolke drückt dich nach vorne. Der Anzug hilft dir nicht das Gleichgewicht zu verlieren und weiterzulaufen. "Draufhalten!" brüllt dein Partner und erst jetzt erkennst du vor dir eine schwarze Wand aus, ja was eigentlich? Du vermutest, dass es sich um irgendwelche Tiere handelt. Wieder reagiert dein Körper und führt ein antrainerte Bewegung ohne dein Zutun aus. Dein Arm hebt sich und aus deinen Fingern regnet es Feuer und Flamme vor dich. Die schwarze Wand bekommt Risse und ihr lauft hindurch. Auf was hast du da gefeuert? Dir bleibt keine Zeit über diese Frage nachzudenken, da brüllt dein Nebenmann, der sich offensichtlich gut auf Befehle versteht, die nächste Anweisung: "Deckung". Es wird schlagartig dunkel.