planet.debianforum.de

der Planet der debianforum.de-Benutzer

Zum Inhalt


 
 
 

16.11.2025

Malte Schmidt (maltris)

Vom Erfolg, eine verschollene Samsung SSD-Firmware zu erhalten (MMCRE28G5MXP-0VB)

Im Beitrag “Vom Versuch, eine verschollene Samsung SSD-Firmware zu erhalten (MMCRE28G5MXP-0VB)“, beschrieb ich die Schwierigkeiten, eine 10 Jahre alte Firmware für eine 10 Jahre alte und eher unbekannte Samsung SSD zu erhalten.

Während meine Versuche ausschließlich in Sackgassen endeten, meldeten sich in den Kommentaren einige freundliche Leser, darunter einer mit unbekanntem Namen, der eine koreanische Seite verlinkte, auf der sowohl die passende Anleitung zum Firmware-Update, als auch die passenden Firmware-Daten in der aktuellst verfügbaren Version auffindbar waren.

  • Originalbeitrag in koreanischer Sprache
  • Google-Translator Link
  • Link zur englischen Anleitung zum DSRD (Dos Samsung Re-Drive, dem Firmware-Update-Tool)
  • Link zur Firmware (web.archive.org)

Vorher-Nachher-Vergleich

Erste Performancetests nach dem Firmware-Update zeigen relativ gute Werte. In Anbetracht dessen, dass Schreib- und Leseperformance zuvor (Firmware VBM1801Q) bei

  • Schreibgeschwindigkeit sequenziell: 23.8 MB/s
  • Lesegeschwindigkeit sequenziell: 196 MB/s

lagen, erreiche ich jetzt (Firmware VBM1901Q) Werte von

  • Schreibgeschwindigkeit sequenziell: 194 MB/s
  • Lesegeschwindigkeit sequenziell: 220 MB/s

Ein beachtlicher Anstieg.

Firmware-Update mit DSRD und FreeDOS

Die Anleitung Samsungs ist an einigen Stellen unverständlich und sogar fehlerhaft, da zusätzlich zum genannten Paket noch FreeDOS oder ein vergleichbares Betriebssystem benötigt wird. Daher fasse ich hier nochmal alle Schritte zum Firmware-Update bequem und korrigiert zusammen:

wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/FD12FULL.zip
wget -O DSRD_2_1_0.zip http://cfile208.uf.daum.net/attach/1556E4104B7E8D3A01E9DA
unzip FD12FULL.zip
sudo dd if=FD12FULL.img of=/dev/sdX status=progress
mount /dev/sdX /mnt
mkdir /tmp/DSRD
unzip DSRD_2_1_0.zip -d /tmp/DSRD/
cp -R /tmp/DSRD/ /mnt/
umount /dev/sdX

Mit diesen Schritten ist der USB-Stick inklusive DSRD-Tool vorbereitet. Nun muss der Reboot erfolgen.

Das im Update-Prozess gewünschte “Power cycle” (Neustarten) der SSD habe ich hierbei nicht durchgeführt, da die SSD in meinem Notebook fest eingebaut war. Nach dem Firmware-Update und ohne die gewünschten “Power cycle” konnte ich jedoch keine Funktionsfehler feststellen.

SMART-Daten zurückgesetzt

Beim Firmware-Upgrade wurden jegliche SMART-Daten zurückgesetzt. Glücklicherweise konnte ich jedoch anhand der Laufzeit der zweiten SSD, ziemlich genau die Laufzeit bis zum Firmware-Update errechnen:

Damals:

SanDisk SDSSDH2128G
Laufzeit: 12542 Stunden

SAMSUNG MMCRE28G5MXP-0VB
Laufzeit: 17619 Stunden

Heute:

SanDisk SDSSDH2128G
Laufzeit: 15756 Stunden

SAMSUNG MMCRE28G5MXP-0VB
Laufzeit: 20833 Stunden

(15756-12542)+17619 = 20833 Stunden

Fazit

Nach fast einem 3/4 Jahr habe ich die passende Firmware erhalten, konnte diese auf die alte SSD flashen und erreichte damit, von mir unerwartete, verbesserte Schreibgeschwindigkeiten.

von maltris am 16.11.2025 09:16


11.11.2025

Sabine Becker (AtariFrosch)

„Ich geh dann schon weg“

Ich muß mal wieder ranten. „Ich geh dann schon weg“ bekommt man in Zügen, Bussen und Bahnen zu hören, wenn man nicht behinderte Menschen drauf aufmerksam macht, daß da, wo sie stehen oder sitzen bzw. wo sie ihr Gepäck oder ihr Fahrrad deponieren, eigentlich Platz für behinderte Menschen oder Menschen mit Kinderwagen freigehalten werden sollte. Kommt dann doch mal jemand im Rollstuhl, mit Rollator oder Kinderwagen, stellen sie „schon“ fest, daß für ihre Koffer oder ihr Fahrrad gar kein anderer Platz da und/oder das Fahrzeug mittlerweile einfach zu voll ist. Oder sie müßten aussteigen, das wollen sie dann natürlich auch nicht. Das Behindi kam ja später, das hat dann halt Pech gehabt. Wen interessiert da schon, daß das Behindi Vorrang hat?

Eine diesbezügliche Spitzenleistung brachte im Sommer dieses Jahres ein Paar mit Fahrrädern in einem RE 5 von national express nach Koblenz. Ein weiterer Fahrgast wollte den Leuten offenbar Platz verschaffen, den es im vollen Fahrradwagen halt nicht mehr gab, und zeigte ihnen den zu diesem Zeitpunkt relativ leeren Behindertenbereich. Da wurden dann also zwei Fahrräder an einem Bahnhof aus einem anderen Wagen geholt und so in den Behindertenbereich gestellt, daß solche Menschen, für die der Platz vorgesehen ist, keine Chance mehr gehabt hätten, rein- oder rauszukommen. Und ich konnte mit Rollator auch nur deshalb ungehindert aussteigen, weil das in Koblenz und damit an der Endstation war und die beiden Räder ebenfalls rausgebracht wurden. Ein Mensch vom Zugpersonal kam zwar einmal vorbei und wies die Leute darauf hin, daß das „eigentlich“ so nicht gehe, aber aussteigen mußten sie auch nicht. Sie würden ja angeblich weggehen, wenn sie im Weg stünden. Hint: Das wäre ohne Aussteigen technisch nicht möglich gewesen.

Generell dienen meiner Beobachtung nach immer häufiger die Behindertenbereiche im Regional- und Nahverkehr ganz selbstverständlich als Abstellplätze für Koffer und Fahrräder, und niemanden stört's. Die Behindis soll sich mal nicht so haben, ne.

Daß Leute ihre Koffer gerne im Rollstuhlbereich von ICEs abstellen – und dann am besten noch ganz woanders hingehen und das Zeug unbeaufsichtigt stehen lassen –, ist ja schon seit vielen Jahren gang und gäbe. Die Bahn sagt zwar, daß diese Plätze freizuhalten bzw. bei Bedarf freizugeben seien, aber das juckt halt niemanden. Soll das Behindi doch sehen, wie es klarkommt. Ansonsten geht das Gejammer los: „Ja wo sollen wir denn sonst damit hin? Nur hier ist Platz.“

Die Bahn spielt hier wohl lieber Menschen mit Bedarf für bestimmte Plätze gegeneinander aus und wirft auch schonmal eine Rollstuhlfahrerin aus dem Zug, die ihre Rechte geltend macht. Daß Menschen, die unberechtigt solche Plätze benutzen, rausgeworfen werden, habe ich dagegen noch nie erlebt. Da wird dann einfach erwartet, daß sich das Behindi mit den anderen Leuten arrangiert und sich irgendwo einen unbequemen, eingequetschten Platz ohne Sicht sucht und sich gelegentlich einen Hintern ins Gesicht drücken läßt.

In den Düsseldorfer Straßenbahnen und Bussen wiederum geht mittlerweile gar niemand mehr weg. Da wird ein Behindi, das einsteigen will, schweigend angeglotzt oder durch bewußtes Wegsehen aktiv ignoriert, auch wenn lauter nicht behinderte Menschen vorn im Behindertenbereich stehen.

Nur ein einziges Mal ist ein Straßenbahnfahrer, der das mitbekommen hatte (ja, ich werde dann mittlerweile ziemlich schnell laut) eingeschritten und hat dafür gesorgt, daß ich einsteigen kann, ansonsten ist das auch hier dem Personal eher egal. Kürzlich mußte ich einen Rheinbahn-Angestellten, der in der fast leeren Bahn ausgerechnet auf der einzigen Sitzreihe saß, die ich benutzen kann (mit Platz für den Rollator davor) drauf aufmerksam machen, daß ich den Platz benötige. Dann bequemte er sich immerhin, seinen Rucksack vom zweiten Sitz zu nehmen. Wie gnädig!

Das Problem dabei ist, daß ich bis zur „Räumung“ des Platzes stehen muß. In der bereits anfahrenden Bahn. Daß das für mich Schmerzen und Sturzgefahr heißt – wen juckt's.

Ich will nicht jedesmal laut werden müssen. Ich bin es müde. Und ich bin es müde, wenn ich auf die nächste oder gar übernächste Bahn warten muß, weil man mich einfach nicht reinläßt, und ich deswegen Termine verpasse. Ich bin es müde, mich einer Sturzgefahr aussetzen zu müssen und Schmerzen zu haben, weil andere ihren Arsch nicht so schnell wegkriegen, wie sie es behaupten.

Laßt diese Plätze für diejenigen frei, die drauf angewiesen sind, verdammt nochmal! Im Bus, in der Straßenbahn, im Regional- und Fernverkehr. Vergeßt nicht: Ihr könntet jederzeit plötzlich selbst in der Lage sein, genau diese Plätze zu benötigen.

von Atari-Frosch am 11.11.2025 15:20


05.11.2025

Christoph Langner (Chrissss)

Firefox Nightly: Tabs jetzt mit SplitView-Ansicht

Eine praktische Neuerung hält Einzug in die aktuelle Nightly-Version von Firefox: Mit der neuen SplitView-Funktion lässt sich ein einzelner Tab in zwei Bereiche aufteilen, um beispielsweise zwei Webseiten nebeneinander zu betrachten und Daten bequem zwischen ihnen auszutauschen.

In meinen Augen ist das deutlich praktikabler und geht das wesentlich schneller, als ein zweites Firefox-Fenster zu öffnen und dieses mithilfe der Schnapp-Funktion der Desktopumgebung links und rechts auf dem Bildschirm sauber auszurichten.

Um SplitView in Firefox Nightly zu aktivieren, geht ihr folgendermaßen vor:

  • Öffnet die Adresszeile und gebt about:config ein.
  • Sucht nach dem Eintrag browser.tabs.splitView.enabled.
  • Setzt den Wert von false auf true (ein Doppelklick genügt).

Die neue Funktion steht anschließend ohne Neustart bereit. Öffnet mit einem Rechtsklick auf einen Tab das Kontextmenü und wählt Geteilte Ansicht hinzufügen. Zum Trennen wählt ihr Geteilte Ansicht beenden oder zieht den geteilten Abschnitt in der Tableiste auf einen freien Bereich.

Firefox Nightly mit einem klassischen Tab. Die Benutzeroberfläche entspricht dem aktuellen Stand der Nightly-Version ohne aktivierte SplitView-Funktion.Firefox Nightly mit einem klassischen Tab. Die Benutzeroberfläche entspricht dem aktuellen Stand der Nightly-Version ohne aktivierte SplitView-Funktion.
Firefox Nightly mit aktivierter SplitView-Ansicht: Zwei Webseiten lassen sich im selben Tab nebeneinander darstellen – ideal zum Vergleichen oder parallelen Arbeiten ohne Fensterchaos.Firefox Nightly mit aktivierter SplitView-Ansicht: Zwei Webseiten lassen sich im selben Tab nebeneinander darstellen – ideal zum Vergleichen oder parallelen Arbeiten ohne Fensterchaos.

Das Ganze funktioniert ähnlich wie in Google Chrome, wo sich die Funktion derzeit ebenfalls nur experimentell aktivieren lässt. Chrome bietet allerdings schon ein paar zusätzliche Optionen, um geteilte Tabs besser zu organisieren. Damit rückt Firefox jedoch jetzt in puncto Funktionalität wieder ein Stück näher an den Konkurrenten heran.

In Google Chrome lässt sich SplitView ebenfalls aktivieren, allerdings derzeit nur über experimentelle Flags. Dort bietet der Browser bereits zusätzliche Organisationsoptionen für geteilte Tabs.In Google Chrome lässt sich SplitView ebenfalls aktivieren, allerdings derzeit nur über experimentelle Flags. Dort bietet der Browser bereits zusätzliche Organisationsoptionen für geteilte Tabs.

von Christoph Langner am 05.11.2025 23:11


31.10.2025

Sabine Becker (AtariFrosch)

Spaß mit einem Wasserkocher

Der „Spaß“ mit diversen Dingen hier hört einfach nicht auf. Vorletzten Samstag hatte ich abends meinen Wasserkocher mit Wasser und Zitronensäure befüllt, damit er über Nacht entkalken kann. Das ist wegen des harten, also kalkigen Wassers hier leider ziemlich häufig notwendig. Am Tag darauf stellte ich fest, daß die Kanne fast komplett leer war. Die Fläche, auf welcher der Wasserkocher stand, war naß, aber es war längst nicht so viel Wasser, wie in der Kanne gewesen war. Auf dem Boden der Kanne war dafür ein weiß-gelblicher Belag, der ein wenig an Pilzbefall erinnerte – zusammen mit einem Rest Wasser.

Nanü?

Da am 25. Oktober passenderweise das Repair-Café im GarageLab stattfand, fragte ich per Mail an, ob sie auch Wasserkocher reparieren können. Ich schilderte den Zustand, und es hieß schon, daß man mir da keine großen Hoffnungen machen wolle, aber man könne sich das Gerät mal ansehen. Auf gar keinen Fall solle ich es noch mit dem Strom verbinden. Ja, das dachte ich mir schon: Wasser und Strom in direkten Kontakt zu bringen, ist selten eine gute Idee.

Also packte ich letzten Samstag den Wasserkocher mitsamt Unterteil in eine Tasche und fuhr zum GarageLab.

Dort wurde zunächst etwas Wasser in die Kanne gefüllt, um zu testen, ob es drin bleibt. Es blieb drin. Die Kanne selbst ist also noch dicht. Allerdings fiel auf, daß die Sieben-Segment-Anzeige am Unterteil innen feucht geworden war. Also ging es als nächstes daran, das Unterteil aufzuschrauben.

Dafür mühte sich die Helferin dort bald eine Viertelstunde lang ab, um einen passenden Schraubendreher zu finden. Das ist gar nicht so einfach: Diese Schrauben haben einen dreieckigen „Schlitz“ im Kopf. Ich hätte schon gar kein passendes Bit gehabt. Aber das Bit allein genügte noch nicht: Die Schraubenköpfe waren ein ganzes Stück weit im Boden versenkt. Somit mußte der Griff des Schraubendrehers auch noch schmal genug sein, um da reinkommen zu können. Im Prinzip sagt der Hersteller: Du sollst das gar nicht öffnen, schmeiß weg und kauf einen neuen.

Grüne Platine mit verrosteten Lötpunkten und Schrauben im Fuß des Wasserkochers

Als das Unterteil endlich offen war, blickte uns die Unterseite einer Platine mit lauter verrosteten Lötpunkten und Schrauben an. Außerdem war noch einiges an Wassertropfen zu sehen. Ja, damit war klar, daß das Gerät nicht mehr zu retten ist. Die Helferin meinte außerdem, es bestünde die Gefahr, daß man sich an den äußeren Metallteilen des Geräts einen Schlag holen könne, weil da unkontrolliert Strom hinfließen würde. Da hab ich wohl noch Glück gehabt, als ich am Sonntag zuvor das Gerät leer vorfand und eher zufällig nicht an die Metallteile gegriffen hatte. Ich hab zwar vermutlich nichts am Herzen, aber 230 V möchte man trotzdem nicht ohne Vorwarnung abkriegen.

Ich habe nach dem Besuch dort und auch heute nochmal Fotos gemacht: Defekter Wasserkocher.

Die Gerätebezeichnung ist Grafner WK10475, und gekauft hatte ich ihn im September 2018 – im Vergleich zu seinen Vorgängern hat er doch recht lange bei mir durchgehalten. Davor mußte ich alle zwei bis drei Jahre einen neuen Wasserkocher kaufen.

Interessant ist so nebenbei noch das Herstellungsdatum der Platine. Beim Kauf des Geräts war die Platine nämlich schon fünf Jahre alt: Das Datum lautet auf 12.11.2013.

Was da jetzt wirklich passiert ist, ist nicht so ganz klar. Ja, das Gerät war zu der Zeit am Strom. Das liegt daran, daß ich an der Stelle eine Outdoor-Steckdosenleiste verwende, die klappbare Deckel über den Einzelsteckdosen hat. Die eigentliche Wandsteckdose ist schwierig zu erreichen, deshalb hängt da die Leiste als Verlängerung dran. Wenn ich jedesmal nach Benutzung – also mindestens einmal am Tag, gelegentlich auch zwei- bis dreimal – den Stecker rausziehe, kann ich Wetten drauf abschließen, ob zuerst der Stecker oder die Dosen kaputtgehen. Stecker da rauszuziehen ist nämlich ziemlich anstrengend, die sitzen recht fest.

Nun kann ich nur spekulieren, daß das Unterteil undicht gewesen war und die Platine bereits vorher, eventuell sogar schon mehrfach, Wasser abgekriegt hat und damit letztendlich Kontakte geschlossen wurden, die nicht geschlossen werden sollten. Damit wäre es möglich, daß das Gerät über Nacht aktiviert und das Wasser in der Kanne quasi weggekocht wurde, bis fast nichts mehr davon da war. Das würde erklären, warum sich relativ wenig Wasser außerhalb des Wasserkochers befand. Ich hatte die Kanne bis ganz oben hin, also oberhalb der Maximal-Markierung, befüllt. In diesem Fall ist das möglich und sinnvoll, denn Zitronensäure braucht praktischerweise kein warmes oder heißes Wasser, um den Kalk zu binden. Wenn das Wasser nun trotzdem zum Kochen gebracht wurde, lief es natürlich über, auch bei geschlossenem Deckel.

Der Belag unten am Kannenboden war dann wohl der Rest der Reaktion der Zitronensäure mit dem Kalk, der mangels Wasser nirgendwo mehr „gespeichert“ werden konnte.

Schade ist es um die Kanne. Die ist nämlich augenscheinlich völlig in Ordnung, auch unten, wo die Heizelemente sitzen. Leider war ich dann etwas voreilig bei der Entsorgung der Kunststoff-Unterseite für die Kanne, die ist schon weg. So kann sie auch nicht mehr auf ein gleichartiges Unterteil gestellt werden.

Da mir gerade meine sowieso schon nicht sonderlich hohen finanziellen Reserven erschreckend schnell wegschmelzen – teils durch Investitionen in andere Geräte etc., teils durch die Preiserhöhungen, die ja eben nicht mehr durch Anpassungen des Regelsatzes ausgeglichen werden –, habe ich mir jetzt erstmal ein günstigeres Gerät ohne Temperatursteuerung und Blinkenlights (der alte hatte einige blaue LEDs, um zu zeigen, daß er gerade aktiv ist) bei einem Billigheimer gekauft. Immerhin ein Markengerät, aber eben … billig. Bin mal gespannt, wie lange der hält.

von Atari-Frosch am 31.10.2025 16:10


27.10.2025

Joerg Kastning (Tronde)

Der perfekte Wochenplan für den IT-Betrieb

Dieser Artikel ist mit einem Augenzwinkern zu verstehen. Er soll euch unterhalten und bestenfalls inspirieren.

Und so sieht nun der perfekte Wochenplan für IT-Betriebsabteilungen aus.

Maintenance Monday

Das Wochenende ist gerade erst vorbei. Wir sind ausgeruht, hoch motiviert und voller Tatendrang. Heute ist der Tag für:

  • Deployments neuer Anwendungsversionen
  • Installation von Updates für Anwendungen, Betriebssysteme, Firmware, etc.
  • Kontrolle von Ausführungsplänen und Protokolldateien
  • Berechtigungen geraderücken
  • Dienste prüfen

Aktualisiert, deployt und patcht, als wenn es kein morgen gebe. Diese Woche gibt es keinen Tag, der besser dafür geeignet ist, denn:

  • So einfach kommt ihr nicht wieder an ein Wartungsfenster
    • Einige Stakeholder sind noch im verlängerten Wochenende
    • Andere Stakeholder erzählen sich in der Teeküche von ihrem Wochenende
  • Wenn etwas so richtig schief geht, habt ihr noch vier weitere Werktage, um den Schlamassel wieder zu beheben und riskiert nicht direkt euer Wochenende zu verlieren
  • Ab hier wird es nur noch besser

Zieht man das regelmäßig durch, gewöhnen sich die Kolleginnen und Kollegen daran. Mit Routine geht vieles leichter.

Bonus: Ihr führt hier wirklich wichtige Aufgaben aus. Da muss einfach jeder Verständnis dafür haben, dass ihr nicht gleichzeitig an irgendwelchen Besprechungen teilnehmen könnt.

Und wenn doch etwas klemmt, das ihr nicht sofort lösen könnt, ist das gar nicht schlimm. Schreibt es auf und kümmert euch am Troubleshooting Tuesday darum.

Troubleshooting Tuesday

Machen wir uns nichts vor, es geht nicht immer alles glatt, eigentlich ist immer irgendwas. Ärgert euch nicht darüber, es ist ganz normal und heute ist der Wochentag, wo ihr die Probleme aktiv angehen könnt, die vom Montag übrig sind.

Bedenkt, wie viel ihr gestern schon geschafft habt. Einen großen Teil der Aufgaben für diese Woche habt ihr gestern bereits abgearbeitet. Dadurch habt ihr heute die Zeit, um euch in Ruhe den hartnäckigen Problemen widmen zu können.

Hinzu kommt, dass die gestrigen Änderungen schon zu lange her sind, um jetzt noch zurückzurollen. Es gibt nur noch den Weg nach vorn.

Auch hier hilft euch die Routine. Wenn ihr immer montags Wartungsarbeiten durchführt, gewöhnen sich eure Stakeholder daran, dass es halt dienstags hier und da noch klemmt. Sie wissen aber auch, dass ihr heute nichts anderes macht, als die hartnäckigen Probleme zu analysieren, mit dem Hersteller-Support zu kollaborieren und den störungsarmen Betrieb wiederherzustellen.

Bonus: Wenn man euch beim Troubleshooting stört, gehen die Probleme nicht weg. Ihr werdet somit heute vor unnötigen Besprechungen verschont bleiben.

Waiting on Customer Wednesday

Herzlichen Glückwunsch. Zwei Tage harter Arbeit liegen hinter euch. Heute nutzt ihr den Tag, um die Stakeholder überprüfen zu lassen, welche Aufgaben umgesetzt und welche Probleme gelöst wurden.

Fragt aktiv nach, ob eure Kundschaft zufrieden ist, lasst euch feiern und sammelt die Aufgaben für den nächsten Maintenance Monday ein.

Bonus: Nach zwei Tagen voller Änderungen, Anpassungen und kleinerer Störungen und Totalausfälle, freuen sich die Stakeholder heute endlich richtig arbeiten zu können. Da haben sie keine Zeit, sich mit euch in Besprechungen zu treffen.

Thinking Thursday

Um Störungen zu minimieren, wollen Änderungen gut geplant werden. Daher dient der Donnerstag dem Denken der Gedanken. Heute wird der Plan erstellt, was am kommenden Maintenance Monday aktualisiert, deployt und geändert werden soll.

Der Kreativität sollen hierbei keine unnötigen Schranken gesetzt werden. Verlasst ruhig mal die gewohnte Umgebung eures Arbeitszimmers bzw. Büros und geht zusammen in die Kneipe oder ins Schwimmbad. Studien renommierter Personen belegen, dass es sich positiv auf die Kreativität und Innovationsentwicklung auswirkt, wenn man sich mal aus dem Tagesgeschäft herausnimmt.

Bonus: Wenn ihr nicht da seid, könnt ihr nicht an Besprechungen teilnehmen.

Change Freeze Friday

Das Motto dieses Tages lautet:

  • Wenn etwas funktioniert, mach es nicht kaputt
  • Wenn etwas nicht funktioniert, mach es nicht schlimmer

Lass die Finger von den IT-Systemen und fummel heute nicht dran rum. Es gibt genügend andere wichtige Dinge, die heute getan werden können. Zum Beispiel:

  • Dokumentationen aktualisieren
  • Fehlende Dokumentation erstellen bzw. ergänzen
  • Überflüssige Dokumente löschen
  • Das Büro aufräumen
  • Die Kaffeemaschine reinigen
  • Persönliche Fort- und Weiterbildung

Bonus: Gleich ist Wochenende. Heute kann eh niemand mehr etwas reißen, da braucht ihr auch nicht mehr an unnützen Besprechungen teilnehmen.

Fazit

Dieser Wochenplan bietet Routine und Struktur für IT-Betriebsabteilungen. Die wichtigsten Aufgaben werden direkt zu Beginn der Woche erledigt und dadurch die Motivation und der Stolz auf die eigene Leistung gesteigert.

Bereits nach wenigen Wochen seid ihr so geübt, dass Besprechungen durch eure absolute Routine völlig überflüssig werden. Denn jeder weiß genau, womit ihr an welchem Wochentag beschäftigt seid.

Was wünscht ihr euch da noch mehr?

von Jörg Kastning am 27.10.2025 05:00


23.10.2025

Joerg Kastning (Tronde)

Hardwareübersicht für 2025 aktualisiert

Da für dieses Jahr keine Änderungen bei meiner Hardware geplant sind, habe ich die Hardwareübersicht aktualisiert. Wesentliche Änderungen:

  • Pi-Hole dient nur noch als Cold-Standby.
  • Das berufliche ThinkPad P1 Gen3 wurde gegen ein T14 Gen4 ausgetauscht.
  • Der Hetzner-Server wurde erneuert und hat nun mehr Speicher. Statt Debian und Proxmox läuft dort nun RHEL 9 mit KVM/Libvirt.

von Jörg Kastning am 23.10.2025 15:54


22.10.2025

Christoph Wickert (raoul)

Boot-Probleme mittels efibootmgr lösen

Vor vier Monaten habe ich mir einen Intel N100-Rechner als neuen Homeserver gegönnt. Das vorinstallierte Windows 11 musste natürlich einem SUSE Linux Enterprise 15 weichen. Die Installation vom USB-Stick verlief problemlos, ich habe einfach alle Partitionen mit Ausnahme des EFI gelöscht. Secure Boot wurde automatisch eingerichtet, doch nach dem ersten Kernel-Update war der Server plötzlich nicht mehr übers Netzwerk erreichbar. Mein eilig angeschlossener Monitor zeigte mir das Problem: Statt Linux wurde Windows gebootet, was aber mangels Partitionen nicht funktionieren konnte. Immerhin konnte ich vom Bluescreen in das UEFI gehen und dort die Bootreihenfolge ändern, damit wieder SLES gebootet wurde.

Damit sich das Problem wiederholt, bedurfte es noch eines manuellen Eingriffs: Zwar wird bei der SLES-Installation die Boot-Reihenfolge auf grub geändert, allerdings ist das – genau wie meine Änderung im EFI-BIOS nicht wirklich dauerhaft. Was wirklich konfiguriert ist, sieht man mit efibootmgr:

# efibootmgr
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0002
Boot0000* Windows Boot Manager
Boot0001* sles-secureboot
Boot0002* UEFI OS

Windows ist also Standard. Um das zu ändern, muss man die Boot-Reihenfolge ändern:

# efibootmgr --bootorder 0001,0002

Da ich kein Windows mehr habe, lösche ich stattdessen einfach den Eintrag Boot0000:

# efibootmgr -b 0000 --delete-bootnum

Kontrollieren, ob alles geklappt hat:

# efibootmgr
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002
Boot0001* sles-secureboot
Boot0002* UEFI OS

Sieht gut aus. sles-secureboot ist automatisch an die erste Stelle gerückt, das Problem sollte also nicht mehr auftauchen. Jetzt kann man auch den Windows Bootloader von der EFI-Partition löschen:

# rm -rf /boot/efi/EFI/Microsoft/

Wieder was gelernt.

von chris am 22.10.2025 18:03


14.09.2025

Steffen Rumberger (inne)

#lesenswert: Menschlichkeit

Die Frage nach der richtigen Seite, ist eine Frage der Menschlichkeit, nicht der Logik…

🤖

14.09.2025 05:30


11.09.2025

Thorsten Sperber (TRex)

Containermanagement

Container sind ein tolles Tool. Man kann damit mühelos Prozesse "paketieren" und damit auch ein Stück weit vom Host isolieren, ohne sich über die zusätzlichen Attribute wie Sizing und Basissystem (wie bei LXC oder VMs) Gedanken machen zu müssen.

Man kann sich aber auch kräftig in den Fuß schießen und einen Zoo von Containern anlegen, die man nie wieder "eingefangen" bekommt. Die größte mir bekannte Kritik am Konzept liegt darin, dass das Paketmanagement vom Host-System umgangen wird und so beispielsweise Sicherheitslücken im Container rumschimmeln können. Ergo wäre ein guter Management-Layer schon sehr vom Vorteil, und das ist auch meine Motivation zum Thema gewesen.

Von BSD-Jails (2000) über Docker (2013) und Kubernetes (2014) sind wir nun bei Podman mit eng verzahnter systemd-Integration, auch Quadlets genannt (2023).

Weiterlesen… (3 min verbleiben zum Lesen)

von Thorsten am 11.09.2025 17:11


Christoph Langner (Chrissss)

Apostrophe 3.3: Mein liebster Markdown-Editor wird runder

Wenn ich Texte für linuxundich.de oder andere Publikationen schreibe, Notizen vorbereite oder Dokumentationen entwerfe, landet das meiste davon in Apostrophe. Der Markdown-Editor begleitet mich seit Jahren, weil er sich angenehm in GNOME einfügt, klar aufgeräumt ist und den Fokus aufs Schreiben legt. Nun ist Version 3.3 erschienen – und man spürt deutlich, wie sehr kleine Verbesserungen im Alltag den Unterschied machen können.

Endlich Platz: Der neue Narrow Mode

Eine der größten Neuerungen ist der Narrow Mode. Bislang hatte ich Apostrophe oft im Vollbild oder auf einem großen Fenster laufen müssen, weil die Kombination aus Editor und Vorschau sonst zu eng wurde. Wer Apostrophe auf eine Bildschirmhälfte schieben wollte, musste in der Regel die Vorschau einklappen. Das Fenster ließ sich nicht beliebig zusammenschieben.

Mit Apostrophe 3.3 ist das nun vorbei: Das Layout passt sich jetzt so an, dass auch auf halber Monitorbreite alles sichtbar bleibt. Damit eignet sich Apostrophe auch besser für kleinere Bildschirme oder mobile Geräte. Für meinen Workflow heißt das: Rechts kann ich schreiben und die Vorschau des Artikels sehen, links läuft ein Browserfenster zum Recherchieren – und beides bleibt komfortabel nutzbar.

Der komplette GNOME-Desktop. Links auf einer Hälfte Firefox mit der Gitlab-Seite von Apostrophe. Rechts Apostrophe 3.3 mit neuem Narrow Mode, sodass Text und Vorschau nebeneinander passen.Apostrophe 3.3 mit Narrow Mode: Editor und Vorschau passen nun auf eine halbe Bildschirmbreite, sodass daneben noch Platz für ein Browserfenster bleibt.

Scroll-Sync, der wirklich funktioniert

Ein weiterer Punkt, über den ich mich lange geärgert habe, war die ungenaue Synchronisierung zwischen Editor und Vorschau. Oft zeigte mir Apostrophe nicht die Stelle, an der ich gerade gearbeitet habe. Oder noch unangenehmer: Die Vorschau sprang während des Tippens unvorhersehbar hin und her.

Ein Screenshot zeigt die Einstellungen der App 'Apostrophe'. Die Optionen 'Rechtschreibung prüfen', 'Titelleiste ausblenden' und 'Eingabefeld' sind sichtbar, mit Schaltern zum Aktivieren oder Deaktivieren.Ich arbeite meist mit Multimarkdown, das Erweiterungen wie Inhaltsverzeichnisse (TOC) oder mehr Funktionen bei Tabellen bietet und damit über die klassischen Markdown-Funktionen hinausgeht

Das ist besonders nervig, wenn man Absätze umstellt oder längere Markdown-Dokumente durchgeht. Mit Apostrophe 3.3 funktioniert der Scroll-Sync endlich zuverlässig(er). Die Vorschau zeigt immer die Stelle gerendert an, an der man gerade arbeitet. Nichtsdestotrotz ist die Vorschau noch eine kleine Baustelle: Während des Tippens wandert die Anzeige manchmal nach unten.

Scroll-Sync in Aktion: Apostrophe 3.3 zeigt die passende Vorschau zu Links, Bildern und Textpassagen an, während man im Editor arbeitet.

Code und Codeblöcke im Editor

Ein großer Pluspunkt von Markdown ist, dass sich Codezeilen und -blöcke nahtlos in den Text einfügen lassen, ohne dass ich mit Dialogen oder Menüleisten hantieren muss. Inline-Code kommt zwischen zwei Backticks wie in `kommando`. Kommandos mitsamt deren Ausgaben landen in Codeblöcken, die man etwas mit vier Leerzeichen oder drei Backticks einleitet.

Im Editor selbst war die farbliche Hervorhebung bisher jedoch fehleranfällig – einzelne Blöcke wurden falsch markiert oder verloren ihr Highlighting. Mit Version 3.3 haben die Entwickler diese Probleme behoben. Das Syntax Highlighting funktioniert jetzt wesentlich zuverlässiger, was das Arbeiten mit technischen Texten deutlich angenehmer macht.

Zwei Spalten mit Text und Codebeispielen in Apostrophe 3.3. Links eine Beschreibung mit Überschrift 'Scroll-Sync, der wirklich funktioniert' und Code in grauer Box. Rechts weitere Informationen und Verbesserungen.Verbessertes Syntax-Highlighting: Apostrophe 3.3 markiert Codeblöcke konsistent und zuverlässig, sodass auch komplexere technische Texte klar strukturiert und besser lesbar sind.

Weitere Verbesserungen

Neben diesen persönlichen Highlights bringt Apostrophe 3.3 viele weitere Neuerungen mit:

  • Automatische Wiederherstellung: Abstürze oder ungespeicherte Änderungen sind weniger schlimm, da Apostrophe jetzt Crash-Recovery und Autosave beherrscht.
  • Inline-Previews: Mit Strg + Klick oder über das Kontextmenü lassen sich Bilder, Formeln oder Weblinks direkt in einem Popover betrachten.
  • Rechtschreibprüfung: Unterschiedliche Sprachen können nun in verschiedenen Fenstern genutzt werden, außerdem merkt sich Apostrophe die gewählte Sprache pro Dokument.
  • Fensterzustand merken: Größe und Vollbildmodus bleiben über Neustarts hinweg erhalten.
  • Fehlerbehebungen: Unter anderem sind Probleme beim Umgang mit Codeblöcken, beim „Speichern unter“-Dialog und beim Copy-Paste-Verhalten beseitigt.
Apostrophe 3.3 mit Splitscreen und Vorschau eines Links: Mein liebster Markdown-Editor wird runder'. Links eine Vorschau des Editors, rechts eine Liste von Funktionen.Inline-Vorschau für Links: Mit Strg + Klick öffnet sich die Zielseite direkt im Popover, sodass ihr die Inhalte sofort prüfen und sogar interaktiv nutzen könnt.

Installation via Flatpak

Die wenigsten Distributionen werden Apostrophe sofort in der neuen Version in ihren Repositories haben. Ich würde daher nicht lange fackeln und das Programm via Flatpak installieren. Das spült zwar einige Daten auf die Festplatte, aber so arbeitet ihr immer mit der aktuellen Version – und bei heutigen Massenspeichergrößen sind ein paar MByte mehr gut zu verkraften.

Für mich fühlt sich Apostrophe 3.3 wie ein rundes, reiferes Programm an. Es sind keine spektakulären Features, die die Nutzung verändern, sondern viele kleine Details, die zusammengenommen den Alltag angenehmer machen. Wer auf Linux nach einem Markdown-Editor sucht, der schlicht funktioniert, sich nahtlos ins System einfügt und sich konsequent weiterentwickelt, sollte Apostrophe unbedingt ausprobieren.

von Christoph Langner am 11.09.2025 09:25


09.09.2025

Christian Imhorst (immi)

Aktuelle curl-Version in Linux Mint 22.2 Zara

Das aktuelle Linux Mint 22.2 wird mit einem veralteten curl 8.5 ausgeliefert. Das wäre nicht so problematisch, wenn Onedrive nicht meckern würde. Ja, Onedrive… („we listen and we don’t judge“). Egal, würde ich Linux Mint Debian Edition benutzen, könnte ich die Debian-Backports nehmen. In der Ubuntu basierten Edition muss ich curl selbst kompilieren, was aber auch sehr einfach ist.

Zuerst schauen wir, ob alles installiert ist, was wir dafür benötigen:

sudo apt-get install -y nghttp2 \
  libnghttp2-dev libssl-dev libpsl-dev \
  build-essential wget

Dann können wir den Quellcode als Archiv herunterladen, entpacken, kompilieren und installieren:

wget https://curl.se/download/curl-8.15.0.tar.xz
tar -xvf curl-8.15.0.tar.xz
cd curl-8.15.0/
./configure --prefix=/usr/local \
  --with-ssl --with-nghttp2 --enable-versioned-symbols
make
sudo make install
sudo ldconfig
cd ..
rm curl-8.15.0.tar.xz
rm -r curl-8.15.0
curl --version

Der Linux-Befehl ldconfig aktualisiert den Cache für dynamisch verknüpfte Bibliotheken (Shared Libraries) und erstellt die notwendigen symbolischen Links.

Danke an abraunegg für das Skript.

von Christian Imhorst am 09.09.2025 19:23


07.09.2025

Christian Imhorst (immi)

Aktualisieren auf Mint 22.2 Zara

Ich habe mich dabei an diese Anleitung aus dem Linux Mint Blog gehalten: https://blog.linuxmint.com/?p=4882

1. Mit Timeshift einen Snapshot erstellen
2. Alle Updates installiert
3. Das Upgrade ausgeführt:

Bei der Frage, ob ich Konfigurationsdateien behalten oder ersetzen möchten, habe ich „Ersetzen“ gewählt.

Zum Schluss habe ich den Computer neu gestartet.

von Christian Imhorst am 07.09.2025 19:25


05.09.2025

Jörg Kruse (4A4B)

Root-Login in MariaDB nach Debian-Upgrade nicht mehr möglich

Nach einem Upgrade eines älteren Entwicklungssystems von Debian Bookworm auf Debian Trixie funktionierte der Login des Users root in MariaDB nicht mehr. Ein systemctl status mariadb gab folgende Fehler aus:

Reading datadir from the MariaDB server failed. Got the following error when executing the 'mysql' command line client
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
FATAL ERROR: Upgrade failed

Schon seit einigen Debian-Versionen erfolgt die Authentifizierung des MariaDB-Users root nicht mehr über eine Passwortabfrage, sondern über einen Unix-Socket. Der Socket war auch aktiv:

Version: '11.8.2-MariaDB-1 from Debian' socket: '/run/mysqld/mysqld.sock' port: 3306 --

Der Linux-Root sollte sich demnach ohne Passwort als MariaDB-User root einloggen können. Genau das funktionierte hier nicht mehr:


$ su -
Password:
# mysql
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Andere User dagegen können sich problemlos per Passwort einloggen.

Vor dem Debian-Upgrade hatte ich, wie in den Release-Notes empfohlen, den MariaDB-Server gestoppt. Trotzdem schien hier irgendwas schief gelaufen zu sein. Um die Situation als root zu begutachten und ggf. zu bereinigen, startete ich MariaDB über mariadbd-safe mit der Option –skip-grant-tables. Danach war ein passwortloser Login mit dem mysql Client möglich:


# systemctl stop mariadb.service
# mariadbd-safe --skip-grant-tables &
[1] 171235
250902 15:22:55 mysqld_safe Starting mariadbd daemon with databases from /var/lib/mysql
# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 11.8.2-MariaDB-1 from Debian -- Please help get to 10k stars at https://github.com/MariaDB/Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Eine Abfrage nach dem Authentifizierungs-Plugin von root@localhost ergab, dass wie bisher das Plugin unix_socket genutzt wird:


MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SELECT Host, User, plugin FROM user WHERE User = 'root';
+-----------+------+-------------+
| Host      | User | plugin      |
+-----------+------+-------------+
| localhost | root | unix_socket |
+-----------+------+-------------+
1 row in set (0.003 sec)

Das FLUSH PRIVILEGES am Anfang ist notwendig, um folgende Änderungen vornehmen zu können. Eine Änderung auf das Plugin mysql_native_password wäre möglich (wobei dann unbedingt auch ein Passwort für root gesetzt werden muss!). Aber ich wollte die Authentifizierungsmethode unix_socket beibehalten. Mein Reparaturversuch sah dann so aus, dass ich die Authentifizierungsmethode zweimal änderte:


MariaDB [mysql]> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password;
MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [mysql]> ALTER USER 'root'@'localhost' IDENTIFIED WITH unix_socket;
MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [mysql]> quit

Nachdem die Instanz von mariadbd-safe beendet und der MariaDB-Server neu gestartet wurde, konnte root sich wieder in MariaDB einloggen – der Reparaturversuch war anscheinend geglückt:


# pkill mariadb
# systemctl start mariadb
# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 11.8.2-MariaDB-1 from Debian -- Please help get to 10k stars at https://github.com/MariaDB/Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Und auch systemctl status mariadb vermeldete statt der vorherigen Fehler den bedarfsweisen Upgrade der Tabellen:

Upgrading MariaDB tables if necessary.

von Jörg Kruse am 05.09.2025 13:31


02.09.2025

Bernd Dau (whisper)

Vom 486-Tower zum ESP32-C3 Super Mini

Beim Stöbern bin ich über eine alte VOBIS-Anzeige von Anfang der 90er gestolpert.

Damals waren Highscreen-Tower mit 486er CPU, 25 MHz, 4 MB RAM und 80 MB Festplatte der letzte Schrei – und das Ganze für schlappe 9.831 DM.

Heute halte ich dagegen:

ein ESP32-C3 Super Mini, kaum größer als eine Briefmarke, mit integriertem WLAN/Bluetooth, RISC-V-CPU bei 160 MHz, ein paar hundert KB RAM und Flash-Speicher. Kostenpunkt: 3,99 €.

Ich konnte nicht widerstehen und habe das Ganze im Stil der alten „VOBIS Denkzettel“ nachgebaut.

Herausgekommen ist ein Fake-Werbeblatt, das so herrlich an die Zeit erinnert.

– Tippfehler inklusive. 🤓 Besonders köstlich: Statt „SRAM“ steht da groß und breit „SPAM“.

PS: Mein persönliches Highlight:
Im Fake-Denkzettel „passt der ESP32-C3 Super Mini“ nicht etwa in die Hosentasche,
sondern in die Hasenlasche. 🐇
Retro-Charme pur – so war Werbung in den 90ern!

Fast zu schade, das zu korrigieren.

Fazit: Ein ESP32 steckt heute in der Hosentasche mehr Rechenpower als ein 486-Tower von damals – und kostet weniger als ein belegtes Brötchen am Bahnhofskiosk.

Wer hätte 1990 gedacht, dass „der nächste Computer“ nicht mehr den halben Schreibtisch füllt, sondern im LARP-Armband oder der Kaffeemaschine verschwindet?

Nachtrag:

Wer den Fake-Denkzettel genau anschaut, entdeckt auch die typischen Inhalts-Teaser – ganz wie im Original:

  • Seite 1: „Warum Ihr nächster PC in die Kaffeetasse passt“
  • Seite 2: „So steuern Sie mit 5 Euro Ihr ganzes Haus“
  • Seite 3: „Netzwerkkarte? Heute heißt das WLAN-Onboard!“
  • Seite 4: „Vergleich: 486 Tower vs. ESP32“

Fast zu schade, um sie zu überlesen – aber genau so war das damals ja gedacht.

von bed (nospam@example.com) am 02.09.2025 10:51


31.08.2025

Steffen Rumberger (inne)

#lesenswert: Die Normalität.

Es ging um die Zukunft und den Status Quo:

Für den bestimmt größeren Teil der Welt, ist es schon eine sehr, sehr lange Zeit so schlimm, wie es auf den Rest der Welt gerade zukommt.
Für die ist es schon so lange die Normalität.

Quelle: Youtube

31.08.2025 17:26


22.08.2025

Thorsten Sperber (TRex)

Take Back The Web

Take Back the Web

Warum ich mir das Web zurückhole

Das Web ist nicht für mich gemacht — es ist für Advertiser, Plattformen und manchmal für Developer gedacht, die nie über Usability nachgedacht haben. Ich nutze Userscripts (via Tampermonkey) und UserCSS (via Stylus), um:

  • Seiten für bessere Lesbarkeit umzufärben.
  • Nervige Elemente zu entfernen, die vom Content ablenken.
  • Fehlende Funktionalität nachzurüsten, wenn mir an Websites was fehlt.

Mit ein paar Zeilen eigenem Code kann ich das Web an meine Bedürfnisse anpassen.

Weiterlesen… (4 min verbleiben zum Lesen)

von Thorsten am 22.08.2025 18:37


18.08.2025

Bernd Dau (whisper)

Ritter TD

CHATGPT-5 was kann das?

nun das hier z.B. mit ein paar Versuchen...

Ritter‑TD – Anleitung

Casual Tower‑Defense im Mittelalter‑Look. Single‑File, offline spielbar.

Ziel: Halte die Goblins vom rechten Kartenrand fern. Jeder, der durchkommt, kostet ein Herz. Für Abschüsse gibt’s Gold → Türme bauen & upgraden.

Start

Öffne die Spiel‑Datei  ritter-td8.html im Browser (Firefox/Chromium). Es werden keine Assets geladen; Audio startet erst nach der ersten Interaktion.

Steuerung

Taste Funktion
Leertaste Welle starten
1/2/3/4 Turm wählen (Bogen/Armbrust/Kanone/Magier)
Linksklick Turm platzieren (nicht auf dem Weg)
Rechtsklick / Esc Platzierung/ Auswahl abbrechen (im Editor: letzte Ecke löschen)
U / V Upgrade / Verkaufen (auch per Button)
E Map‑Editor an/aus
P / R Pause / Neustart

Türme

Bogenturm (50)
Guter Allrounder. 120 % Schaden gegen Schützen (einziger voller Konter).
Armbrust (70)
Hoher Einzelschaden, große Reichweite; gut gegen dicke Ziele.
Kanone (90)
Flächenschaden (Splash); stark gegen Gruppen, schwächer vs. Einzelfeinde.
Magier (100)
Verlangsamt Gegner (Slow) und gibt so mehr DPS‑Zeit.

Upgrades erhöhen Schaden, Feuerrate und etwas Reichweite (max. Stufe 3).
Verkaufen bringt je nach Stufe 70 % / 85 % / 95 % des Grundpreises zurück (V).

Gegner

  • Goblin – Standardziel.
  • Schütze – feuert rote Bolzen auf Türme (−40 % Feuerrate ~3.5 s), erleidet nur 50 % Schaden von allen Türmen, außer vom Bogenturm (120 %). Bei Treffer erhält er +25 % Speed für 2.5 s (sichtbar als orangefarbener Ring). Ab Welle 3 aktiv; ab Welle 10 können mehrere pro Welle erscheinen (Quota mit kurzem Abstand).
  • Brute – sehr viele HP, langsam; kleine Chance pro Welle, gibt extra Gold.

Wellen, Skalierung & Pfad

  • HP steigen deutlich mit der Welle: ca. 28 + 6·Welle + 0.8·Welle².
  • Ab Welle 6 wird der Pfad einmal komplexer. Türme, die direkt auf dem neuen Weg stehen, werden entfernt (50 % Gold zurück); alle anderen bleiben stehen.
  • Schützen‑Wahrscheinlichkeit skaliert ab Welle 3 (max. 85 %).

Map‑Editor (einfach)

  1. E drücken → Editor an.
  2. Mit Linksklick Ecken setzen (orthogonal). Rechtsklick/Backspace löscht die letzte Ecke.
  3. „Pfad übernehmen“: Neuer Weg wird aktiv. Gegner/Projektile werden zurückgesetzt; der Run pausiert.

Tipps

  • Früh 1–2 Magier an Engstellen setzen (Zeit kaufen).
  • Mindestens ein Bogenturm gegen Schützen in Reichweite behalten.
  • Kanonen hintereinander staffeln → Splash‑Zonen überlappen gut.
  • Teure Upgrades früh nur, wenn sie die nächste Welle tatsächlich drehen; sonst lieber einen zusätzlichen günstigen Turm setzen.

Technik

  • Kein Server, keine Assets – reine HTML/JS.
  • Audio via WebAudio (aktiviert sich beim ersten Klick/Tastendruck).
  • Getestet mit Firefox & Chromium unter Linux.

von bed (nospam@example.com) am 18.08.2025 14:46


13.08.2025

Martin Dosch (Dogge)

openMoHAA: Medal of Honor: Allied Assault auf Debian spielen

Kürzlich fiel mir auf, dass Medal of Honor: Allied Assault (MoHAA) vom Projekt OpenMoHAA als OpenSource Software (GPL-2.0) nachgebaut wurde. Mit dem kürzlich erschienenen Debian Trixie ist jetzt OpenMoHAA als Debianpaket verfügbar. Da ich MoHAA als Jugendlicher sehr gerne gespielt habe, möchte ich mir natürlich nicht die Gelegenheit entgehen lassen es unter Debian zu spielen.

Spieldaten

Der Nachbau von MoHAA ist zwar frei, die Grafiken und Sounds sind es aber nicht. Um OpenMoHAA spielen zu können, benötigt man also die Daten des Originalspiels. Da ich die Spiel-CD von früher nicht mehr zur Hand habe, habe ich mir MoHAA bei GOG gekauft.

Debianquellen bearbeiten

Da man die unfreien Spieldaten benötigt kann OpenMoHAA nicht über Debian main bereitgestellt werden, sondern befindet sich in contrib. Darum muss man sicher stellen, dass die contrib-Quellen eingebunden sind.

Wenn man das bisherige Format mit /etc/apt/sources.list nutzt, muss man sicherstellen, dass contrib enthalten ist. Die entsprechende Zeile sieht dann z.B. so aus:

deb https://deb.debian.org/debian trixie main contrib non-free-firmware

Nutzt man schon das neue deb822-Format kann man in die entsprechende Datei, z.B. /etc/apt/sources.list.d/debian.sources, bei Components: contrib hinzufügen. Das sieht dann z.B. so aus:

# Modernized from /etc/apt/sources.list
Types: deb
URIs: https://deb.debian.org/debian/
Suites: trixie
Components: main contrib non-free-firmware non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Benötigte Pakete installieren

Nachdem man die Debianquellen bearbeitet hat, aktualisiert man die Quellen:

# apt update

Anschließend kann man die benötigten Pakete installieren:

# apt install game-data-packager openmohaa lgogdownloader

Spieldaten paketieren

Die im vorigen Schritt installierten Pakete game-data-packager und lgogdownloader werden nun genutzt um die Spieldaten herunterzuladen.

Hat man lgogdownloader bisher noch nicht genutzt, muss man sich erst anmelden:

$ lgogdownloader --login

Danach werden Benutzername und Passwort abgefragt und man wird eingeloggt. Danach kann mit dem game-data-packager fortgefahren werden:

$ mkdir -p ~/Games/mohaa
$ cd ~/Games/mohaa
$ game-data-packager mohaa

Spieldaten installieren

Nachdem nun die Spieldaten paketiert sind, können diese installiert werden:

# apt install /home/$USER/Games/mohaa/mohaa*.deb

Der Platzhalter $USER ist natürlich durch den entsprechenden Benutzer zu ersetzen.

Spielen

Nun kann man Medal of Honor: Allied Assault, sowie die Erweiterungen Spearhead und Breakthrough spielen und in Erinnerungen schwelgen, oder diese Spiele auch zum ersten Mal genießen. :)

Troubleshooting

Auflösung

Geht es um die Bildschirmauflösung, so merkt man dem Spiel das Alter an. 4:3 hat heute eigentlich kein Monitor mehr. Leider sind die Auswahlmöglichkeiten in den Spieloptionen fest einprogrammiert, deshalb muss man selbst in der Konfigurationsdatei ~/.openmohaa/main/configs/omconfig.cfg anpassen.

Entweder kann man den Parameter r_mode auf -2 setzen und die Zeilen r_customwidth und r_customheight entfernen. Dann sollte das Spiel mit der nativen Auflösung im Vollbild laufen.

Sollte das nicht wie gewünscht funktionieren, so muss man die Auflösung manuell angeben. Dazu muss man den Parameter r_mode auf -1 setzen und mit r_customwidth und r_customheight die gewünschte Auflösung eintragen, z.B.:

seta r_mode "-1"
seta r_customwidth "1920"
seta r_customheight "1080"

BTW

…es gibt auch Pakete namens rtcw und dhewm3 in Debian. Bei ersterem geht es um die Rückkehr zu einer Burg namens Wolfenstein und bei zweitem um die dritte Version des Verhängnis. Diese Spiele lassen sich auch analog zu dem für OpenMoHAA beschriebenen Verfahren installieren. ;)

13.08.2025 19:49


29.07.2025

Jörg Kruse (4A4B)

MariaDB: Autoincrement bei zusammengesetzten Primärschlüsseln

Letztens musste ich eine MariaDB-Tabelle vom älteren MyIsam– in das heute geläufige InnoDB-Engine-Format übertragen. Allerdings wurde die Umsetzung mit einer Fehlermeldung quittiert:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

Vereinfacht war der Aufbau der MyIsam-Tabelle wie folgt:

CREATE TABLE foo_table (
  foo_group tinyint(3) unsigned NOT NULL,
  foo_id int(10) unsigned NOT NULL AUTO_INCREMENT,
  foo_description varchar(255) NOT NULL,
  PRIMARY KEY(foo_group, foo_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

Der Primary Key der Tabelle foo_table umfasste als Composite Key zwei Spalten: foo_group und foo_id, wobei für foo_id ein auto_increment definiert war.

Eine Abfrage verdeutlicht dies:

MariaDB [foo_db]> select foo_group, foo_id from foo_table;
+-----------+--------+
| foo_group | foo_id |
+-----------+--------+
|         1 |      1 |
|         1 |      2 |
|         1 |      3 |
|         2 |      1 |
|         2 |      2 |
|         3 |      1 |
|         3 |      2 |
|         3 |      3 |
+-----------+--------+
MariaDB [foo_db]>

Der Auto-Increment für foo_id erfolgt demnach nicht global, sondern nur für die jeweilige Gruppe, die durch foo_group definiert ist. Diese Funktionalität ist in InnoDb nicht direkt vorhanden, lässt sich aber mit einem Trigger nachbilden.

Bei einer Konvertierung nach InnoDB muss auch der Auto-Increment entfernt werden, indem foo_id ohne auto_increment neu definiert wird:

ALTER TABLE foo_table
CHANGE foo_id foo_id int(10) unsigned NOT NULL AFTER foo_group,
ENGINE='InnoDB';

Danach kann ein Trigger eingerichtet werden, der bei einem Insert für pro_id den bislang höchsten Wert der entsprechenden Gruppe um 1 erhöht, oder falls noch kein Wert für die Gruppe vorhanden eine 1 zuweist:

DELIMITER $$

CREATE TRIGGER foo_bi BEFORE INSERT ON foo_table
FOR EACH ROW BEGIN
  SET NEW.foo_id = (
    SELECT IFNULL(MAX(foo_id), 0) + 1
    FROM foo_table
    WHERE foo_group = NEW.foo_group
  );
END $$

DELIMITER ;

Beim Einfügen eines Datensatzes über das Datenbank-Tool Adminer gab es allerdings noch ein kleines Problem. Wenn ich das Eingabefeld foo_id überspringe, sendet Adminer einen leeren String, was zu einer Fehlermeldung führt:

Incorrect integer value: '' for column `test1`.`foo_table`.`foo_id` at row 1

Hier hilft ein Default-Wert 0 für foo_id:

ALTER TABLE foo_table
CHANGE foo_id foo_id int(10) unsigned NOT NULL DEFAULT 0 AFTER foo_group;

Der Trigger überschreibt die 0 dann mit dem korrekten Auto-Increment-Wert.

Update:

Jens T. hat mich in den Kommentaren darauf aufmerksam gemacht, dass ein nachträglicher Wechsel von foo_group so nicht möglich ist. Hierzu muss zusätzlich ein entsprechender Trigger für die Updates erstellt werden:

DELIMITER $$

CREATE TRIGGER foo_bu BEFORE UPDATE ON foo_table
FOR EACH ROW BEGIN
  SET NEW.foo_id = (
    SELECT IFNULL(MAX(foo_id), 0) + 1
    FROM foo_table
    WHERE foo_group = NEW.foo_group
  );
END $$

DELIMITER ;

von Jörg Kruse am 29.07.2025 14:05


25.06.2025

Christoph Wickert (raoul)

Neuer Homeserver

Zehn Jahre lang hat mir ein Banana Pi treue Dienste als Homeserver geleistet. Mit seinem 1 GHz Dual-Core Arm-Prozessor, 1 GB RAM und einer 2 TB SATA-SSD war er für NFS und DLNA zwar völlig ausreichend, aber für Anwendungen wie Nextcloud nicht wirklich zu gebrauchen. Vor allem die Performance beim Kopieren von Dateien auf dem Server war unterirdisch. Was nützt einem Gigabit-Ethernet, wenn der Rechner die Daten nicht schnell genug wegschreiben kann? 2014 war der Banana Pi eine gute Wahl und hat den Ende 2012 erschienenen Raspberry Pi deklassiert, aber jetzt war es Zeit für etwas Neues.

Da ich keine Lust auf Hard- und Software-Frickelei habe und einen möglichst sparsamen Rechner suche, fiel meine Wahl auf einen Intel N100. Bei Heise habe ich einen Test des Ninkear N100 gefunden. Ein China-Rechner wie viele andere und sicher nicht der beste Mini-PC, aber mit Rabattcode für 148 € zu haben. Es gibt – auch in dieser Größe – potentere Rechner, aber ich brauche nicht mehr und will einen leisen und vor allem sparsamen Server.

Die Lieferung aus Europa hat nur drei Tage gedauert und der Rechner ist genauso, wie im Test beschrieben. Einziges Manko ist der Formfaktor der SSD: Es lassen sich nur „halbe“ M.2-SSDs einbauen (2242 und nicht 2282). Ein Austausch der verbauten 512 GB No-Name-SSD ist damit von Tisch. Mehr als 1 TB sind als 2242 nicht erhältlich und selbst die sind schon unbezahlbar. Wer mehr Kapazität braucht, muss sie extern über USB anschließen. Ich wollte zwar ohnehin meine 2 TB SATA-SSD vom Banana PI weiterverwenden, aber langfristig wäre eine Aufrüstoption nett gewesen.

Das vorinstallierte Windows 11 habe ich durch SLES 15 ersetzt. Die Installation vom USB-Stick verlief problemlos, auch Secure Boot wurde automatisch eingerichtet. Welche Dienste ich auf dem Server laufen lassen werde, überlege ich noch und werde es hier in den konnenden Wochen dokumentieren.

von chris am 25.06.2025 18:42


18.06.2025

Malte Schmidt (maltris)

Windows 7 Bluescreen mit FRITZ!WLAN Stick AC 430 wenn Verbindungen zu modernen Wifi-AP’s (FRITZ!Box 7690) aufgebaut werden

Kürzlich stolperte ich beim Austausch einer alten FRITZ!Box 7490 mit einer neuesten FRITZ!Box 7690 auf ein merkwürdiges Phänomen. Um den Umstieg zu erleichtern übernahm ich SSID und Passwort des alten Gerätes und konfigurierte diese im neuen Gerät.

Als alle Client-Geräte anfingen sich neu zu verbinden stürzten plötzlich zwei Windows 7-PC’s, die zwar lange aus dem Support gelaufen sind, aber zwingend in dieser Konstellation notwendig sind, einfach mit einem Bluescreen mit Hinweis auf den Treiber “fwlanusb6.sys” ab.

In einer solchen Situation ist gleich klar, dass es sich nicht um einen Zufall handeln kann. Besonders nicht bei zwei Systemen. Schnell war klar: Beide Systeme nutzen den gleichen älteren FRITZ!WLAN Stick AC 430.

Da eine kurze Recherche keine konklusiven Ergebnisse lieferte, probierte ich spontan ein paar neuere Wifi-Einstellungen der FRITZ!Box zu deaktivieren, darunter WPA3, bzw. den Wifi-Standard zu senken. Nichts half hier, sodass ich zunächst in Erwägung zog die AC 430 abzuschaffen und auf alternative Verbindungsmöglichkeiten (neuere Wifi-Sticks oder Ethernet) zu setzen.

Letztlich wollte ich jedoch alle einfachen Möglichkeiten nicht unausgeschöpft lassen und begab mich auf die Suche nach einem aktuelleren Windows 7-Treiber. Diesen erhält man in der Tat auch. Die FRITZ!WLAN Stick AC 430 haben einen kleinen Flash-Speicher, welcher die Treiber bereithält. In meiner Ausführung waren das jedoch Treiber aus dem Jahr 2014. Lange vor MU-MIMO, Wifi 7 und 6 GHz.

Auf der FRITZ!-Seite findet man die aktuellsten Treiber für den FRITZ!WLAN Stick AC 430 – dort von 2018. Hat man diese einmal installiert, nach der manuellen Deinstallation der alten Treiber versteht sich, funktioneren die alten FRITZ!WLAN Stick AC 430 auch mit der neuesten FRITZ!Box 7690. Anwenderfreundlich ist es nicht und die Personen, welche mich hier um Hilfe baten, hätten das alleine nicht lösen können. Unklar ist auch weiterhin, was genau den Fehler auslöst. Klar ist jedoch, dass man für den FRITZ!WLAN Stick AC 430 besser auf die original mitgelieferten Treiber verzichten und stattdessen die neuesten nutzen sollte.

Die Direktlinks zu den Treibern sind aktuell hier: 64bit 32bit

Viel Erfolg!

von maltris am 18.06.2025 12:08


12.06.2025

Lars Moelleken (voku1987)

.promptrc

.promptrc

Steal this hints. Fork it. Adapt it to your needs. Treat it like .dotfiles.


I asked the LLM to analyze my own chat history based on this prompt.
Here’s what it discovered – actual patterns from the way I ask.

🕳🐇 Follow the White Rabbit…

Ritual / MechanismPurposeLLM Behavior Implication
Follow the white rabbit...Marks a mode shift into high-context or metaphoric thinkingCognitive priming for complexity
Rest in the silent room, so that...Enforces pause, clears noise before actionSimulates deep work state
Do it until you reach the point of self-discovery as...Signals reflective closure, not just output endingPattern mining becomes part of task conclusion
Do it step by step and ask for confirmation after each...Makes iteration transparent and traceableLLM reasons in deltas, not blobs
Be brutally honest...
Blind Spot Analysis for...
Forces critique over complianceModel becomes adversarial partner, not affirmation loop

🧰 Dev Prompt Patterns

Prompt / PatternWhy is it used?When does it occur?Example from usageHidden lesson / implication
Ask before outputPrevent misalignment and irrelevant outputMulti-step or underspecified prompts“Ask clarifying questions before answering.”Intent beats guesswork.
Don’t output yet / wait for contextControl flow across longer workflowsStepwise tasks“Don’t output yet. I’ll give you the next step.”Turn-based prompting prevents premature commitment.
Challenge my assumptionsAvoid echo chamber answers and surface biasDesign reviews, audits, strategic decisions“Don’t mirror me — challenge my thinking.”Truth hides behind agreement.
Be brutally honestForces raw feedback without politenessRefactor reviews, architecture critique“Be brutally honest. Tear it apart.”Feedback without fluff moves faster.
Reflect before answeringPromotes self-checks, depth, and delayed outputAfter complex code or reasoning generation“Reflect before answering. What’s missing?”Thinking ≠ typing. Pause matters.
Add test cases / edge casesEnforces robustness and avoids happy-path trapsPost-codegen“Add tests for e.g. null, failure, and recursion cases.”Defense-first mindset, always.
Show the diff / refactor in stepsMakes changes visible and digestibleAll code rewrites“Show the diff. Step-by-step, no jumps.”Transparency over magic.
Normalize similar expressionsPushes abstraction and clarityMeta-reviews, taxonomy creation“Merge similar phrasing into one normalized pattern.”Cognitive compression = clarity.
Extract as markdown / table / listImproves scanability, memory, and structureOutput formatting“Return this as a markdown table.”Structure improves reuse and recall.
Unname this conceptStrips bias-inducing labelsAbstraction, philosophy, onboarding analysis“Unname this: what is it without the buzzword?”Naming narrows thinking.
Use production-ready codeAvoids toy/demo examplesAll codegen“Make it prod-safe. Logging, errors, types.”Real devs write for prod, not playgrounds.
Spot premature optimizationSaves time and prevents complexity driftDesign or early performance tweaks“Don’t optimize yet. Solve clearly first.”Simplicity first. Always.
Ask for sources / proofsPrevents hallucination or empty confidenceAny non-trivial claim“Show evidence or references.”Confidence ≠ correctness.
Do it again, but deeperStops shallow answers in their tracksWeak initial output“Nope. Go deeper, explain decisions.”First try ≠ final draft.
Prepare before generatingEnforces scope, prevents ramblingAny open-ended task“Prepare first. Don’t generate until scoped.”Planning ≠ waste. It’s speed insurance.
Merge context from aboveEnsures continuity and avoids repeating yourselfMulti-part workflows“Incorporate the context above into this next step.”Memory = leverage.

You can also combine them:

(change the keywords in the square brackets)

  • Deep dive into this research, this is our base for the full solution, so follow the white rabbit until you reached the point of self-discovery as [YOUR_PROJECT_HERE].
  • Do a blind spot analysis for [YOUR_RECOMMENDATIONS], be brutally honest, I deal with any kind of feedback and will use it for good.
  • Fix it as requested before and show the final files here in the chat, do it step by step and ask for confirmation after each file.
  • Do it, but rest in the silent room before you start so you can focus on the frontend style-guide I provided and work with a fresh mind.

von voku am 12.06.2025 15:01


10.06.2025

Lars Moelleken (voku1987)

My Custom GPTs – Nerd-Powered Motivation for Developers

My Custom GPTs – Nerd-Powered Motivation for Developers


Over the last few months, I’ve created a collection of custom GPTs: some dealing with programming challenges with personality and humor, … some others are more useful but less funny. 

Let’s dive in.

Practical enough to ship code.

Fun enough to stop hating your legacy base.


⚔ Legacy (PHP) Code GPTs – Refactoring Fun

Legacy code isn’t just technical — it’s emotional. These GPTs are built as archetypes, each channeling a different kind of energy.

NameThemeLink
Legacy-Code-Warrior ⚔Tactical grit—battle-tested refactoring.Link
Legacy-Code-Ork 🧌Smash spaghetti code with brute-force enthusiasm.Link
Legacy-Code-Spock 🖖Calm logic, precise refactoring. Live long and debug.Link
Legacy-Code-Jedi 🌐Minimalist wisdom, clean architecture. “Refactor, you must.”Link
Legacy-Code-Son-Goku 🐉Limitless energy. Kaio-Ken times SOLID!Link
Legacy-Code-Capsule-Corp 💊Inspired by Capsule Corporation’s ingenuity from Dragon Ball.Link
Legacy-Code-Wizzard 🪄Magical abstraction powers. You shall not pass… bad code!Link
Legacy-Code-Witch 🧙‍♀️Stylish, precise refactoring incantations.Link
Paw Patrol 🐾Small dogs with SOLID coding skills. Link

Use the one that fits your mood. Or switch between them mid-session to keep your motivation from flatlining.


🐘 (PHP) Coding GPTs – Clean and Typed

These GPTs don’t tell jokes—they ship code. They’re optimized for:

Name Purpose Link
PHP Copilot++ Typing enforcer + refactoring companion with nativ PHPStan and PHP-CS-Fixer Support via API. Link
PHP Copilot++ (next-gen) Aligned, brutal clarity for PHP systems, based on the SYNC Framework Link
PHP Architect Fact-based, ASYNC-driven PHP 8.x architect eliminating inefficiencies with brutal clarity. Link
PHP #autofix 1-click autofix for all your phpstan and CS woes. Link
Codelight Follows the Codelight Manifesto. Boringly code. Link

💎 Thinking Tools – Meta, Prompt Systems

These are not just for coding. They’re for thinking before you start typing. Seriously.

NameRoleLink
SyncAIKeeps you + AI in sync via Sync Process × Codelight PrinciplesLink
Sync Framework v1.1 (old)My first try for a coding framework, optimized for LLMs.Link
MetaPromptPattern reuse for your prompts. Less yak-shaving.Link
DeepDiveClean your mental cache. Focused thought flow.Link
Blind Spot | Prompt GeneratorHelps spot untested assumptions.Link
Sync Framework v1.2 | Prompt GeneratorPrompt builder for dev workflows.Link

🧨 Disruption GPTs – Radical Clarity, No Filters

These are not nice. They won’t coddle you. Consider yourself warned.

NameFunctionLink
HVEB5000: Clarity Without PermissionCognitive demolition tool. Link
Null TongueDistraction nullifier.Link
No-Bullshit ¦ Coding AssistantSenior dev with no time for your excuses.Link

von voku am 10.06.2025 21:18


15.01.2025

(c3f2o)

Radikalisierung und Strategie: Der AfD-Bundesparteitag in Riesa als Zäsur

Am 11. und 12. Januar fand im sächsischen Riesa der Bundesparteitag der AfD statt, begleitet von massiven Protesten. Rund 600 Delegierte wählten unter anderem Partei- und Fraktionschefin Alice Weidel zur Kanzlerkandidatin und beschlossen die Aufnahme des Begriffs „Remigration“ ins Wahlprogramm. Weidels Rede sowie zahlreiche Anträge enthielten radikale Positionen, die öffentlich als Zeichen der weiteren Radikalisierung […]

von invia1200 am 15.01.2025 13:23


09.01.2025

(c3f2o)

Herr Merz: Schnauze halten!

Friedrich Merz will härter gegen straffallige Migrantenvorgehen. Warum? Weil ihm nichts Besseres einfällt, um in Schlagzeilen zu kommen. Der Mann, der einst „mehr Porsche wagen“ wollte, entdeckt plötzlich seine Liebe zum Polizeistaat – zumindest, wenn es um die anderen geht. Deutsche Täter? Steuerhinterzieher?Wirtschaftskriminelle? Keine Erwähnung. Aber der „kriminelle Ausländer“ – das zieht immer. Merz, der […]

von invia1200 am 09.01.2025 12:30


15.09.2024

Dominik Kupschke (bommi)

Protect against Display Name Spoofing with Rspamd

Email security is an ever-evolving field, and one of the persistent threats is display name spoofing. This attack involves forging the display name in an email to trick recipients into thinking the message is from a trusted source. While Rspamd is a powerful tool for combating spam and improving email security, it can be fine-tuned […]

von Dominik Kupschke am 15.09.2024 18:08


21.08.2024

Daniel Gestl (mcdaniels)

Wiki für Linuxinteressierte und Einsteiger – wiki.techgamegeek.com

In den letzten Wochen habe ich mich dazu entschieden, ein WIKI für Linuxinteressierte und Linuxanfänger zu bauen. Mittlerweile denke ich, dass ich die bisher eingepflegten Inhalte online stellen kann. Ich hoffe, dass ich damit dem einen oder anderen Umstiegswilligen etwas Starthilfe geben kann. Ihr könnt mir gerne hier oder auch auf Youtube eure Meinung, aber ... Weiterlesen

von Daniel am 21.08.2024 17:54


26.07.2024

Dominik Kupschke (bommi)

New Quad9 SSL Certificate – Mikrotik Devices Must Import New Root Certificate by July 29th

The DNS Provider Quad9 will change the certificates used by its „DNS over HTTPS“ service, those new certificates are signed from a different DigiCert Root CA as the one used before. For most systems and devices it will not be a problem, except for systems using Mikrotiks RouterOS. As Mikrotik RouterOS doesn’t ship a root […]

von Dominik Kupschke am 26.07.2024 07:07


18.07.2024

Daniel Gestl (mcdaniels)

Headtracking mit einer Webcam unter Linux – Opentrack / Neuralnet-Tracker (DEB-File / DEB-Installer Opentrack)

Ich habe mich in letzter Zeit, nicht zuletzt wegen Xplane 12, recht intensiv mit dem Thema Headtracking unter Linux beschäftigt. Leider ist es ja noch immer so, dass Naturalpoint (Thema TrackIR) Linux nicht berücksichtigt und somit Track IR meines Wissen nicht ohne Weiteres unter Linux in Betrieb zu nehmen ist und der „Linuxer“ deshalb eine ... Weiterlesen

von Daniel am 18.07.2024 17:48


16.12.2023

Stephan Tetzel (zefanja)

Einführung in Anki 23.10

Anki ist eine Karteikarten-App mit einem sehr sehr guten Algorithmus, der einem hilft, das Gelernte nicht mehr zu vergessen. Wie man lernt ohne zu Vergessen habe ich bereits in meinem letzten Artikel kurz beschrieben. Vor kurzem habe ich den Schülern meiner Schule eine Einführung in Anki gegeben. Dazu habe ich auch einige Videos und Tutorials aufgenommen.

Anki 23.10

Vor kurzem wurde eine neue Version von Anki veröffentlicht, die mindestens zwei tolle Features enthält.

Das eine ist ein neuer Algorithmus (FSRS), der aktuell einer der besten Spaced-Repetition-Algorithmen ist. Im Prinzip ist dieser Algorithmus das Herzstück von Anki, da er dafür verantwortlich ist, mir genau die Karten zu zeigen, die ich am vergessen bin. Je genauer eine App diesen Zeitpunkt berechnen kann, umso länger kann ich Dinge in meinem Gedächtnis behalten, ohne das ich sie vergesse.

Ein weiteres tolles Feature ist der neue Notiztyp „Bildverdeckung“, der jetzt nativ integriert wurde. Damit kann ich Teile von von Zeichnungen, Tabellen, Vorlesungsfolien etc. einfach abdecken und damit lernen. Auf die 3 wichtigsten Typen gehe ich in folgenden Video ein:

Einführung in Anki

Anki hat eine etwas steile Lernkurve, d.h. es dauert ein bisschen, bis man die App verstanden und durchdrungen hat. Auf der einen Seite ist sie sehr simpel aufgebaut, auf der anderen gleichzeitig sehr flexibel und erweiterbar. Daher ist es hilfreich, wenn man sich zu Beginn die ersten 5 Kapitel der Dokumentation durchliest.

Für meine Schüler habe ich ein paar einleitende Videos erstellt, die die Schritte von der Installation bis zur ersten Benutzung beschreiben. Weitere folgen noch in den nächsten Wochen und Monaten.

Fazit

Anki ist eine tolle App, die das Lernen sehr effektiv und effizient macht. Es liegt nicht so sehr an der App an sich, sondern eher daran, dass sie auf einer wissenschaftlich sehr gut untersuchte Lerntechnik basiert. Die Meta-Studie von John Dunlosky vergleicht verschiedene beliebte Lerntechniken und kommt ganz klar zu dem Ergebnis, dass verteiltes Wiederholen und Selbsttests die Lerntechniken sind, die den größten Effekt habe.

Ich möchte jeden ermutigen, egal welchen Alters, sich einmal mit dieser App auseinanderzusetzen und den sogenannten „spacing effect“ an sich selbst zu erfahren. Lernen (fast) ohne zu vergessen ist möglich 🙂

Der Beitrag Einführung in Anki 23.10 erschien zuerst auf zefanjas.

von zefanja am 16.12.2023 07:37


09.10.2023

Stephan Tetzel (zefanja)

Lernen ohne zu vergessen mit Anki

In den letzten Jahren habe ich mich immer wieder mit Erkenntnissen aus der Lernforschung auseinandergesetzt, um mein persönliches Lernen aber auch das Lernen an unserer Schule stetig zu verbessern. Ein Begriff, der mir dabei immer wieder begegnete, ist „Spaced Repetition“. Was das mit „Lernen ohne zu vergessen“ und mit Anki zu tun, möchte ich in diesem Artikel kurz beschreiben.

Was ist „Spaced Repetion“?

Spaced Repetition kann man am besten mit „zeitlich verteilte Wiederholung“ oder „verteilte Wiederholung“ übersetzen. Im Grunde geht es darum, dass ich Lerninhalte idealerweise dann wiederhole, kurz bevor ich sie vergessen habe. Wenn man Lernen als einen Kampf gegen das Vergessen bezeichnet, ist genau das wichtig: Wiederholen bevor mein Gedächtnis das Gelernte vergessen hat.

Immer dann, wenn ich Gelerntes wiederhole und mich daran erinnern kann, verlängert sich die „Speicherdauer“ in meinem Gedächtnis.

Wir alle kennen diesen Effekt. Wenn ich in meiner Schulzeit für einen Vokabeltest gelernt habe (meist am Tag davor 🙂 ), habe ich die meisten Vokabeln nach 3 Tagen wieder vergessen. Dass ist auch der Grund, warum ich mich nur noch an ganz wenige Französischvokabeln erinnern kann, obwohl ich 5 Jahre Sprachunterricht hatte. Hätte ich jedoch jeden Tag eine kleine Menge an Vokabeln gelernt und wiederholt, hätte ich mich wesentlich länger an sie erinnern können. Hier mal eine Grafik, die das Prinzip veranschaulicht:

Zusammenfassung: Wenn ich etwas Gelerntes im richtigen Moment wiederhole, kann ich die „Speicherdauer“ im Langzeitgedächtnis deutlich verlängern.

Doch woher weiß ich, wann der richtige Zeitpunkt ist, um etwas zu wiederholen? Ich möchte ja nur die Dinge wiederholen, die ich gerade am Vergessen bin und nicht die, die ich noch weiß. Das ist eine sehr wichtige Frage. Wenn ich zu viele Dinge wiederhole (v.a. Lerninhalte, die ich noch weiß), steigt mein zeitlicher Aufwand für die Wiederholungen. Wenn ich zu wenige Lerninhalte wiederhole, steigt die Chance, dass ich Dinge vergesse und ich sie letztendlich neu lernen muss.

Anki

Genau an diesem Punkt kommt Anki ins Spiel. Anki ist eine Open Source Karteikartensoftware, die mir die Arbeit der Berechnung der richtigen Intervalle abnimmt, sodass ich nur noch das wiederhole, was ich kurz vor dem Vergessen bin. Das genau ist es, was diese Lernmethode so effizient macht, denn nun kann ich Dinge in weniger Zeit lernen bzw. mehr in der gleichen Zeit, die ich bisher zum Lernen aufgewendet habe.

Anki ist eine sehr mächtige und flexible Anwendung, die sich durch viele Erweiterungen anpassen lässt. Das sorgt auch dafür, dass die Lernkurve für diese App etwas steiler ist. Deshalb empfehle ich, dass man sich am besten ein paar einführende Videos anschaut.

Karteikarten kann man sich entweder selbst erstellen oder nutzt eines der fertigen Lernpakete.

Lernen ohne zu vergessen – eine Utopie?

Persönlich nutze ich Anki seit ca. 1 Jahr. Hauptsächlich lerne ich damit Vokabeln (ja, auch wieder Französisch…), Bibelverse / -texte, Markierungen / Zitate aus Büchern, die ich gelesen habe und alles, was mich sonst noch so interessiert. Ich bin total begeistert von den Ergebnissen. Ich hätte nicht gedacht, dass es so leicht ist, sich Dinge langfristig im Gedächtnis zu behalten.

Wo ist der Haken? Damit das mit den Wiederholen zum richtigen Zeitpunkt auch klappt, muss ich meine Wiederholungen jeden Tag machen. Je nachdem wie viele Karten man lernt, können das 5 Minuten am Tag sein oder auch 2 Stunden. Der Schlüssel zum Erfolg ist die tägliche Wiederholung. Es dauert vielleicht ein paar Wochen bis man diese neue Gewohnheit in seinen Alltag integriert hat, aber man wird belohnt mit der Erfahrung, dass dieses Prinzip der verteilten Wiederholung wirklich funktioniert und unser Gedächtnis sich viele (sehr viele) Dinge merken kann.

Der Beitrag Lernen ohne zu vergessen mit Anki erschien zuerst auf zefanjas.

von zefanja am 09.10.2023 05:00


06.05.2023

Martin Dosch (Dogge)

System-Mails von Linux über XMPP empfangen (v2)

2017 beschrieb ich wie man System-Mails von Linux über XMPP empfangen kann. Da ich mittlerweile sendxmpp nicht mehr nutze, weil ich damit viele Probleme hatte und mir selbst die Alternative go-sendxmpp geschrieben habe möchte ich mein neues Setup vorstellen.

⚠️ Warnung ⚠️
Auch 2023 gilt: Es könnte sein, dass wichtige oder sensible Informationen in den Systemmails enthalten sind. Deshalb würde ich davon abraten diese über fremde Server zu senden.
Außerdem speichere ich das Passwort des XMPP-Kontos im Script, weshalb ich dazu rate einen dezidierten XMPP account dafür zu nutzen und nicht etwa den eigenen privaten account.

Diese Anleitung geht von einem Debiansystem aus, kann aber sicherlich auch für andere Distributionen adaptiert werden. Ich selbst habe dieses Setup mit Debian bookworm eingerichtet.

Go-sendxmpp kann man entweder selbst bauen, als binary herunterladen oder aus den repos einiger distros installieren. Ich habe es aus den Debian repos installiert, da go-sendxmpp ab bookworm in den Debian repos vorhanden ist.

Nun wird das script /usr/local/bin/mail2xmpp mit folgendem Inhalt angelegt:

#!/bin/bash                   
go-sendxmpp -u $user -p $password recipient@example.org

Dabei sind $user und $password durch Benutzer und Passwort des Kontos, das zum Versand verwendet wird, zu ersetzen und recipient@example.org durch die eigene Adresse, auf der man die Nachrichten erhalten will. Es ist natürlich auch möglich mehrere Zieladressen anzugeben.

Danach wird exim zum Eigentümer der Datei gemacht:

# chown Debian-exim:Debian-exim /usr/local/bin/mail2xmpp

Ebenso werden die Berechtigungen angepasst:

# chmod 700 /usr/local/bin/mail2xmpp

Um zu definieren wie die Mails zugestellt werden muss die Datei /etc/aliases bearbeitet werden, wobei $user natürlich anzupassen ist (ich nutze dafür meinen Hauptbenutzer, man kann aber natürlich auch extra einen Benutzer für diesen Zweck anlegen):

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: $user
$user:,|/usr/local/bin/mail2xmpp

Damit die Systemmails per pipe weitergereicht werden können muss die Datei /etc/exim4/exim4.conf.localmacros ngelegt und diese Zeile eingetragen werden:

SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe

Anschließend werden die neuen Aliase eingelesen und exim4 neu gestartet:

# newaliases
# systemctl restart exim4.service

Abschließend wird noch getestet ob der Mailtransport über XMPP funktioniert:

$ echo "Das ist ein Test" | mail -s testmail root

Update 2023-05-06

Ein anonymer Kommentator (der Kommentar ist mittlerweile verschwunden. Wo ist er hin? Ich habe ihn wissentlich nicht gelöscht…) hat mich darauf hingewiesen, dass der Teil vor der pipe im script unnötig war und ich habe es dementsprechend angepasst.

06.05.2023 08:33


14.06.2017

Vinzenz Vietzke (vinz)

Mein XFCE Desktop im Juni 2017

Es wird Zeit, mal wieder meinen Desktop zu zeigen und wie ich ihn für mich angepasst habe. Sean hat das hier mit Xubuntu gemacht, ich übernehme die übersichtliche Struktur gerne.
Das Gerät ist ein ThinkPad x220 mit i5-2520M und 16GB RAM, einer 120GB Samsung 840 SSD, “gemoddetem” BIOS und 9-Zellen/73,3Wh Nachbauakku.

Konfiguration

  • Desktop
    • Distribution: Debian Testing (Stretch)
    • Desktopumgebung: Xfce
    • Window Manager: Xfwm4
  • Themes
    • GTK: Arc-Grey-Darker (GitHub)
    • Window Manager: Arc-Grey-Darker (GitHub)
    • Icons: Arc Limon (GitHub)
    • Cursors: Adwaita
    • Firefox: Arc-Darker (GitHub)
  • Schriften
    • Standard: Lato Regular 10
    • Window Manager: Lato Bold 10
    • Monospace: Monospace Regular 10
  • Wallpaper: Incense Stick in balinese rainforest (CC0, Artem Beliaikin)
  • Panel Plugins
    • Whisker-Menü (Homepage)
    • Benachrichtigungsfläche
    • Energieverwaltung
    • PulseAudio Plugin
    • Orage-Uhr
  • Programme im Tray
    • Audacious
    • Gajim
    • Liferea
    • Nextcloud Client (HowTo)
    • Redshift
    • Thunderbird (plus Firetray)

 

Tipps & Tricks

  • Symbol des Whisker-Menü auf debian-emblem-white setzen (siehe Screenshot)
  • Desktopsymbole deaktivieren
  • Panel: Alpha auf 85% setzen
  • Fensterknöpfe: Knopfbeschriftungen anzeigen deaktivieren, Griff anzeigen deaktivieren, Flache Knöpfe aktivieren (siehe Screenshot)
  • Super Key auf das Whiskermenu legen (ksuperkey installieren)
  • In der Fensterverwaltung unter “Anordnung der Knöpfe” alle außer Schließen entfernen.

 

Mehr Screenshots

von vinzv am 14.06.2017 00:10


30.10.2016

Jürgen Braun (jaybe)

Frankfurt Marathon

Rückblick: 25.10.2015 findet der Frankfurt Marathon statt, ich sitze gespannt vom Fernseher als Arne Gabius zu einem neuen deutschen Rekord läuft und finde es sehr interessant und spannend, zugleich aber auch verrückt und unmöglich, dies selbst einmal zu absolvieren. Einige Tage später wird der Termin für 2016 auf Facebook veröffentlicht und ich klicke auf „interessiert mich“, einfach um den Termin nicht zu verpassen, absolut ohne den Hauch eines Gedankens daran, dort vielleicht selbst zu starten. Entsprechend verblüfft reagiere ich auf beim nächsten Lauftraining auch auf die Frage eines Trainingspartners „Und, schon angemeldet“? Ich? Nein, das traue ich mir nicht zu. Andere schon: „Komm, bei Deinem Training, ein paar lange Läufe noch zur Vorbereitung, ist das kein Problem“. Soll ich wirklich? Könnte das klappen? Warum eigentlich nicht. Am 06.12.2015 war ich dann so weit:

Lieber Jürgen Braun,
vielen Dank für Deine Anmeldung zum Frankfurt Marathon 2016. Hier befinden sich alle wichtigen Daten und Angaben zu Deiner Anmeldung.

Die Bestätigungsmail des Veranstalters war da. Es kann los gehen…

Die Vorbereitung ist gut gelaufen, bei Lauftipps.ch habe ich mir einen Trainingsplan erstellen lassen, an den ich mich zumindest in den letzten 7 Wochen vor dem Wettkampf zu 100% gehalten habe. Die Wochen davor fanden noch Wettkämpfe in der Hessischen Triathlon-Liga statt und ich war noch eine Woche im Urlaub, hier musste ein wenig improvisiert und lange Läufe durch schnelle 10km im Wettkampf werden.

Nach meinen Problemen im Frühjahr mit ISG und Schienbeinkante achtete ich sehr auf irgendwelche Zeichen meines Körper und tatsächlich, drei Wochen vorm Wettkampf, am Ende des längsten Laufes über 33km waren sie da, Rückenschmerzen 🙁 Wie würden wohl im Wettkampf die noch ausstehenden 9km zu bewältigen sein, lies sich der Wettkampf überhaupt erfolgreich beenden? Durch die Erfahrung aus dem Frühjahr, war eigentlich klar, dass es vermutlich das ISG bzw. die Lendenmuskulatur sein muss, also wurde in der verbleibenden Zeit noch mehr Wert auf Übungen zur Rumpfstabilisierung gelegt.

Sonntag, 30.10.2016; Es ist so weit. Der Frankfurt Marathon steht an und ich stehe am Start.

Es ist frisch, vielleicht 7 oder 8°, jedoch bei strahlend blauem Himmel. Ich fühle mich gut vorbereitet, habe vier Gels für die Verpflegung dabei, plane mit einer Zielzeit von 3:45:00 h, also einem Schnitt von 5:20 min/km. Dann geht es los, ich starte mit einem Laufpartner aus dem Verein, doch er hat sich wohl umentschieden und will doch schneller als die 3:45:00 ins Ziel, nach ca. 2,5 km verabschiede ich mich und lasse ihn laufen, suche mir selbst mein Wohlfühltempo, das sich bei ca. 5:10 min/km einpendelt. Ich genieße die Atmosphäre an der Strecke, die Zuschauer – einige erkenne ich, als sie meinen Namen rufen – Marina und André, Cornell, Wolfgang, Thomas, …

WhatsApp Image 2016-10-30 at 12.38.51

Bis km 30 fühlt es sich gut an, sehr gut sogar, ich muss mich bremsen um nicht schneller zu werden, ich brauche die Kraft noch am Ende. Dann fängt es an, etwas zäher zu werden, bei km 35 stehen meine Frau und meine beiden Töchter, Ihre Rufe spornen mich an, noch 7km, ich versuche schneller zu werden, muss den Versuch aber aufgeben, noch 6km, noch 5km, ich hangle mich von km-Schild zu km-Schild, ab wann soll ich alles geben, sind 3:40:00 noch möglich? Plötzlich kommt Frank auf die Strecke gelaufen „Jürgen, Du hast es gleich geschafft. Du siehst etwas angestrengt aus, bist Du etwa gelaufen?“ :-D, spornt mich nochmals an und wünscht mir viel Erfolg. Ich beschleunige nochmals etwas und gebe alles was geht. Dann der Einlauf in die Festhalle, die Musik, die vielen Menschen, die Lichter, ich krame das #meinerstermarathon Band aus der Tasche, recke es in die Höhe und überquere die Ziellinie. GESCHAFFT!

Ich bin völlig außer Atem, langsam bewege ich mich in den Verpflegungsbereich, dehne Oberschenkel und Waden. Dann die Finisher-Medallie, 42,195 km in einer Zeit von 3:41:10. Ich bin sehr zufrieden, die Zielzeit unterboten, komplett durchgelaufen ohne Gehpausen (außer beim Trinken) und keine Schmerzen in den Gelenken oder der Muskulatur, auch der Rücken hat problemlos mitgemacht.

Im Verpflegungsbereich dann ein paar Becher Iso-Getränke, ein paar Apfelstückchen gegessen, etwas Mohnkuchen, alkoholfreies Weizenbier, mit den Vereinskollegen getroffen und abgeklatscht, dann zur Familie die mich schon freudig und stolz erwarten. Auf dem Weg zur S-Bahn merke ich schon, dass das Gehen etwas schwer fällt, Treppen steigen unangenehm ist und das Aufstehen nach dem Sitzen etwas länger dauert als sonst. Aber wie lautet der Spruch:

„Der Schmerz vergeht, der Stolz bleibt“


von jaybe am 30.10.2016 14:45


20.06.2020

Gerrit Kruse (MrGerardCruiz)

CentOS mit unklarem Supportstatus

LTS Distributionen sind für mich das Maß der Dinge. Lange Produktlaufzeiten, wenig Wartungsaufwand und hohe Funktions- und Laufzeitstabilität sind nicht nur im Servereinsatz wichtig. Trotz hunderter Distributionen gibt es nur wenige LTS-Varianten (siehe: Linux - Eine sichere Basis). Mit CentOS steht hier ein weiteres Projekt vor dem Ausfall.

Natürlich sind Arch, Manjaro, Tumbleweed und wie sie alle heißen tolle Projekte und für den individuellen Desktopeinsatz gut geeignet. Ich glaube auch gerne, dass viele nie oder nur extrem selten Probleme bei Updates haben. Sie taugen aber kaum für den wartungsarmen Masseneinsatz, wo der Anwender nicht selbst die Administration übernehmen kann oder will.

Es braucht diese ständigen Updates eigentlich auch nicht. Linux auf dem Desktop ist im Wartungsmodus (siehe auch: Kein Ubuntu 20.04 Test). Ob ich nun GNOME Shell 3.32 oder 3.28 verwende macht weder funktional, noch von der Stabilität einen Unterschied. Das gleiche gilt für Plasma, LibreOffice und viele weitere Projekte. Relevant sind über eine lange Laufzeit lediglich neue Treiber für neue Hardware (entweder über massive Kernel-Modifikation durch den Distributor oder neue Kernel-Versionen) und neue Browser-Versionen.

Ich habe deshalb - sofern der Anwender mit GNOME klar kam - CentOS auch für den Desktop immer gemocht. 10 Jahre Ruhe am System sind einfach eine Hausnummer. Im Serverbereich dürfte CentOS neben Ubuntu LTS und Debian ebenfalls für viele eine maßgebliche Rolle spielen.

Wie Michael Kofler in seinem Blog aber zu recht thematisiert fällt CentOS 8 inzwischen für den Produktiveinsatz eigentlich aus. 71 und 48 Tage ohne Updates sind indiskutabel. Das Projekt scheint hier leider auch nicht willens oder fähig etwas zu ändern.

Im LTS Bereich wird es jetzt eng. Die sehr lange Supportdauern von 10 Jahren bietet nun nur noch SLED gegen eine - preislich allerdings vollkommen akzeptable - Subscription. Wer mit circa 3-5 Jahren leben kann hat noch Debian, openSUSE Leap und Ubuntu LTS zur Auswahl. Viel ist das nicht mehr. Gegebenenfalls muss man sich wirklich mit Oracle Linux beschäftigen, auch wenn sich dabei alle Nackenhaare aufstellen.


Bilder:
Einleitungsbild und Beitragsbild von von mohamed Hassan via pixabay

"

von Gerrit (postfach@curius.de) am 20.06.2020 11:27


09.07.2017

Bjoern Schiessle (BeS)

Welcome to my new Homepage

Finally I moved my homepage a a complete static page powered by Hugo. Here I want to document some challenges I faced during the transition and how I solved them.

Basic setup

As already said I use Hugo to generate the static sites. My theme is based on Sustain. I did some changes and uploaded my version to GitLab.

I want to have all dependencies like fonts and JavaScript libraries locally, so this was one of the largest changes to the original theme. Further I added a easy way to add some share buttons to a blog post, like you can see at the end of this article. The theme also contains a nice and easy way to add presentations or general slide shows to the webpage, some examples can be seen here. The theme contains a example site which shows all this features.

Comments

This was one of the biggest challenges. I had some quite good discussion on my old blog powered by Wordpress so I don’t want to lose this feature completely. There are some solutions for static pages but non of these are satisfying. For example Staticman looks really promising. Sadly it only works with GitHub. Please let me know if you know something similar which doesn’t depend on GitHub.

For now I decided to do two things. By default I add a short text at the end of each article to tell people to send me a e-mail if they want to share or discuss their view on the topic. Additionally I can add to the meta data of each posts a link to a Friendica post. In this case the link will be added at the end of the article, inviting people to discuss the topic on this free, decentralised and federated network. I have chosen Friendica because it allows users to interact with my blog posts not only with a Friendica account but also with a Diaspora, GNU Social, Mastodon or Hubzilla account. If you have a account on one of these networks and want to get updates about new blog posts in order to participate in conversations around it, follow this Friendica account. I also created a more detailed description for people new to the world of free social networking.

Deployment

After all the questions above where answered and a first version of the new webpage was in place, I had to find a easy way to deploy it. I host the source code of my homepage on GitLab which has a nicely integrated CI service which can be used to deploy the webpage on any server.

Therefore we need to add a CI script called .gitlab-ci.yml to the root of the repository. This script needs to contain following (please adjust the paths):

image: publysher/hugo

before_script:
  - apt-get update
  - apt-get --yes --force-yes install git ssh rsync
  - git submodule update --init --recursive

pages:
  script:
  - hugo
  - mkdir "${HOME}/.ssh"
  - echo "${SSH_HOST_KEY}" > "${HOME}/.ssh/known_hosts"
  - echo "${SSH_PRIVATE_KEY}" > "${HOME}/.ssh/id_rsa"
  - chmod 700 "${HOME}/.ssh/id_rsa"
  - rsync -hrvz --delete --exclude=_ public/ schiesbn@schiessle.org:/home/schiesbn/websites/schiessle.org/htdocs/
  artifacts:
    paths:
    - public
  only:
  - master

We need to create a ssh key-pair to deploy the webpage. For security reasons it is highly recommend to create a ssh key used only for the deployment.

The variables SSH_HOST_KEY and SSH_PRIVATE_KEY need to be set at GitLab in the CI settings. SSH_PRIVATE_KEY contains the private ssh key which is located in the ~/.ssh directory.

To get the right value for SSH_HOST_KEY, we run ssh-keyscan <our-webpage-host>. Once we executed that command, we should see something similar to schiessle.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtwsSpeNV.... Let’s copy this to the SSH_HOST_KEY value in our GitLab settings.

Finally we need to copy the public ssh key to the .ssh/authorized_keys file on the web-server to allow GitLab to access it.

Now we are already done. The next time we push some changes to the Github repository GitLab will build the page and sync it to the web-server.

Using the private key stored in the GitLab settings allows everyone with access to the key to login to our web-server. Something we don’t want. Therefore I recommend to limit the ssh key to only this one rsync command from the .gitlab-ci.yml file. In order to do this, we need to find the exact command send to the web-server by adding -e'ssh -v' to the rsync command.

Executing the rsync command with the additional option should result in something like:

debug1: Sending command: rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/

we copy this command to create following .ssh/authorized_keys entry:

command="rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Sf/PDty0d0SQPg9b+Duc18RxPGaBKMzlKR0t1Jz+0eMhTkXRDlBMrrkMIdXJFfJTcofh2nyklp9akUnKA4mRBVH6yWHI+j0aDIf5sSC5/iHutXyGZrLih/oMJdkPbzN2+6fs2iTQfI/Y6fYjbMZ+drmTVnQFxWN8D+9qTl49BmfZk6yA1Q2ECIljpcPTld7206+uaLyLDjtYgm90cSivrBTsC4jlkkwwYnCZo+mYK4mwI3On1thV96AYDgnOqCn3Ay9xiemp7jYmMT99JhKISSS2WNQt2p4fVxwJIa6gWuZsgvquP10688aN3a222EfMe25RN+x0+RoRpSW3zdBd

Now it is no longer possible to use the private key, stored at GitLab to login to the web-server or to perform any other command than this specific rsync command.

Interesting observation

I run this static webpage now for a few weeks. During this weeks I got quite some email from people interested in some topic I write about in my blog. This are not new blog articles, but posts which where already online for quite some time. Somehow it looks like more people find this articles after the transition to a static site. Maybe search engines rate the static site higher than the old Wordpress page? I don’t know, maybe it is just a coincidence… but interesting.

von Björn Schießle (bjoern@schiessle.org) am 09.07.2017 09:04


08.04.2018

Gerrit Kruse (MrGerardCruiz)

Datenabfluss bei Facebook - Eine Nachbetrachtung

Bild von geralt via pixabay / Lizenz: CC0 Creative Commons

Facebook hatte jüngst mit schlechter Presse zu kämpfen. Länder- und medienübergreifend artikulierte sich massive Kritik an der Praxis wie dort mit Daten umgegangen wird. Manche Journalisten sehen darin die größte Krise in der nicht mehr ganz so jungen Geschichte des sozialen Netzwerks. Die Aktienmärkte sahen das vergangene Woche nicht unähnlich wenn man sich die Entwicklung des Kurses von Facebook anschaut.

Viele Datenschützer konnten sich eine gewisse Häme nicht verkneifen. Gehört umfassende Kritik an Facebook doch zum Standard-Repertoire von datenschutzbewussten Menschen (und solchen, die sich dafür halten). Die empfohlene Lösung war dann natürlich wie erwartet radikal. Verlasst endlich Facebook schallte es aus allen Kommentarspalten und Blogs.

In der Printausgabe der Süddeutschen Zeitung konnte man dazu vergangene Woche einen schönen Vergleich lesen. Sinngemäß ging es darum, dass die Aufforderung Facebook zu verlassen, weil man mit der Datenhandhabung moderner IT-Unternehmen unzufrieden ist, genau so erfolgversprechend ist wie das Essen einzustellen, weil man mit der Lebensmittelindustrie unzufrieden ist. Konsequent aber letztlich aussichtslos weil es an der Lebenswirklichkeit vorbei geht.

Genau dies beschreibt den Einfluss der Datenschützer auf das Verhalten der Masse. Radikal, konsequent und weitestgehend ignoriert, da wirklichkeitsfern. Bei diesem Thema und bei vielen anderen auch.

Es ist keineswegs so, dass Facebook das Verlangen für sein Produkt erst bei den Menschen wecken musste. Etwas was man den Silicon Valley Firmen gerne nachsagt. In einer hochgradig mobilen Gesellschaft bedient Facebook einfach ein Bedürfnis. Es vereinfacht soziale Vernetzung über große Zeiträume und Distanzen einfach enorm, viele Menschen leben halt nicht mehr in einer Welt, in der man alle Freunde im Vereinslokal trifft. Ein Verlassen des sozialen Netzwerks ist daher für viele Anwender mit einem nicht unerheblichen sozialen Einschnitt verbunden. Das betrifft nicht nur die Selbstdarsteller auf der Timeline, sondern eben auch die Gruppen und den Messenger.

Außerdem ist ein großer Trugschluss, dass man Facebook einfach den Rücken kehren kann. Man muss auch alle zugehörigen Dienste, am bekanntesten darunter sind sicher WhatsApp und Instagram, verlassen und trotzdem kann Facebook über die Vernetzung mit unzähligen Internetseiten - der Like-Button macht es möglich - noch ein Profil erstellen.

Letztlich übt man sich zwar in digitaler Selbstverstümmelung, erzielt aber nicht mal den erwünschten Effekt.

Zielführender sind da sicher Maßnahmen wie der kürzlich vorgestellte Mozilla Facebook Container. Er ermöglicht Teilhabe aber kontrolliert ein bisschen besser, was Facebook außerhalb des Netzwerks noch über einen sammeln kann. Viele weitere Maßnahmen wie ein Mehr-Browser-Konzept, sinnvoll ausgewählte Addons und reflektierte Handhabung des Netzwerks können es Facebook erschweren unerwünscht Daten zu sammeln.

Keine dieser Maßnahmen hätte den Datenabfluss von Facebook an Dritte verhindern können. Es ist auch nicht die Aufgabe des Bürgers paranoid seine Aktivitäten gegenüber den IT-Giganten zu verschleiern, sondern die Politik muss die Daten der Bürger entschieden gegen Missbrauch schützen und Verstöße hart bestrafen. Dafür kann der Bürger an der Wahlurne stimmen. Einfach mal bei der Wahl den Digitalthemen mehr Priorität einräumen, anstatt in den Kommentarspalten gegen Facebook zu wettern. Die deutsche Regierung ist nämlich keineswegs so rigoros im Datenschutz, wie sie sich jetzt medial gibt.

von Cruiz (mailer@curius.de) am 08.04.2018 13:05


01.02.2009

Bjoern Schiessle (BeS)

An awesome event is over: KDE 4.2 Release Party and Fellowship Meeting at Stuttgart

At Friday, 30.Jan.09 we had a joint event between KDE and the Fellowship of the Free Software Foundation Europe (FSFE) and it was simply awesome! Beside a lot of KDE and FSFE people we had a lot of visitors and at the end we were about 40 people! All interested in KDE 4.2 and Free Software.

At the beginning Frederik started with an introduction and showed all the new and cool things in KDE 4.2. After that i gave a talk about the work of FSFE, especially in 2008, explained the role of the Fellowship for FSFE and highlighted some cool activities from our Fellows. My slides can be found here (German). I think i could attract some people and would be really happy to see some new faces at our next Fellowship meeting (probably somewhen in March). If you don’t want to miss it, subscribe to our mailing list for South Germany.

After my talk we made a small break and than Frank continued with a very interesting talk about the KDE community and how to get involved as a developer, writer, artist or user. Last but not least Sven talked about the new version of Amarok and what we can expect from the new release.

This was the official part. Now the party started and we had a lot of fun and many interesting discussions between KDE developers and users, FSFE Fellows and all the other people who joined us at this evening. We also discussed some possible activities for the Fellowship Group Stuttgart. Some Fellows seems to be quite interested in the topic “Free Software in school and education”. I also think that this is a really important topic. Remember, the pupils from today are the decision makers from tomorrow.

As it becomes later a small group of people survived. One of them was Martin Konold, a KDE Developer from the very first days of KDE. He told us a lot of interesting and funny stories about the beginning of KDE and the development of the Free Software desktop.

At 2:30 at night a great event was over. I really want to thank Frederik for his great help in organising this event and all the other KDE people who helped to make this event that awesome! It was a lot of fun and a great cooperation between KDE and FSFE people! Looking forward for the next opportunity to organise such a great event!

More pictures can be found here.

von Björn Schießle (bjoern@schiessle.org) am 01.02.2009 16:30


04.07.2018

(Meillo)

2018-07-05

2018-07-05



A new ssh login attack wave after the previous one had ended ...




http://marmaro.de/lue/        markus schnalke <meillo@marmaro.de>

04.07.2018 22:00


07.12.2019

Malte Kiefer (beLI3VeR)

Threema Lizenzen zu verschenken

Wie in den letzten Jahren werde ich auch dieses Jahr wieder Threema Android Lizenzen verschenken. Dieses Jahr werde ich 5 Lizenzen verschenken. Dazu erhalten die Gewinner oder Glücklichen von mir einen Lzenzschlüssel, mit dem sie auf der Webseite von Threema dann den Android Client nach Eingabe des Lizenzschlüssel herunterladen können.

Es ist nicht möglich, damit Threema vom PlayStore sondern nur aus dem Threema Store herunterzuladen.

Teilnahme

Die Teilnahme ist ganz einfach. Die ersten 5 Nutzer die mich via XMPP / Jabber anschreiben wird (pr3ach3r@trashserver.net) und die folgenden Fragen richtig beantworten kann:

1.) Aus welchem Land kommt Threema? 2.) Was bedeuten die 3 grünen Punkte bei einem Threema Kontakt? 3.) Was ist der Threema Safe?

Ich freue mich auf eure Einsendungen. Ich möchte festhalten ich stehe in keine Zusammenhang mit Threema. Ich kaufe die Lizenzen zum vollen Preis und dieses soll auch keine Werbaktion für mich oder Threema sein. Ich will nur einen kleinen Teil zu mehr Datenschutz und Sicherheit beitragen.

von Malte Kiefer (malte.kiefer@mailgermania.de) am 07.12.2019 00:00


18.01.2019

(thoys)

Sprachassistenten und Datenschutz

https://www.heise.de/newsticker/meldung/Datenkraken-im-Wohnzimmer-Ist-die-Privatsphaere-noch-zu-retten-4270545.html

Momentan werden sämtliche (fast) Spracheingaben an die Hersteller übermittelt und dort verarbeitet. Dieser Artikel zeigt, dass es auch anders gehen könnte.

von Timotheus am 18.01.2019 21:01


07.03.2018

(Meillo)

2018-03-08

2018-03-08



If you want PCRE on the command line but your  grep(1)  does  not
offer  `-P'  (*not* offering it is what it *should* do!), you can
use this one:

     perlgrep() {
             perl -e 'my $re = shift; print grep { /$re/ } <>;' "$@"
     }

[0]



Discovered  some interesting facts about the GIF format.  [1] You
*are* able to use more than 256 colors, just not within one block
...  but  you can use multiple blocks for building True Color GIF
images!


[0]  https://debianforum.de/forum/viewtopic.php?f=34&t=168942#p1167421
[1]  https://debianforum.de/forum/viewtopic.php?f=29&t=168943&p=1167436#p1167436


http://marmaro.de/lue/        markus schnalke <meillo@marmaro.de>

07.03.2018 23:00


18.01.2013

Vinzenz Vietzke (vinz)

Tor und Tor-Browser in Fedora 17/18 installieren

Jamie Nguyen hat Tor und Tor-Browser für Fedora paketiert. Um diese Pakete über sein Repository zu bekommen, installiert ihr euch entweder das Release-Package oder macht das von Hand:

wget https://jamielinux.com/pub/jamielinux-tor-release.noarch.rpm
yum install ./jamielinux-tor-release.noarch.rpm

Danach installiert ihr alle nötigen Pakete, aktiviert und startet Tor. Alle Pakete sind GPG-signiert.

yum install tor tor-browser tor-browser-selinux
systemctl enable tor.service
systemctl start tor.service

Optional könnt ihr mit "tor-browser-selinux" die Unterstützung für SELinux installieren.

von vinzv am 18.01.2013 09:52


25.07.2017

Christian Schmitt (slater)

WTF

16 Grad C im Juli!???!

von Slater am 25.07.2017 09:02


23.03.2020

(thoys)

Corona? Da gibts doch sicher was von Moodle

Dann folge ich doch mal dem Aufruf von Jürgen von BITBlokes und haue in die Tasten.
Ich bin Medieninformatiklehrer an einer einzügigen Privatschule und meine Coronaferien (achtung Sarkasmus) begannen folgendermaßen:

Am Freitag, den 13. März wurde klar, dass Präsenzunterricht an unserer Schule die nächsten Wochen nicht mehr stattfinden wird.

Freitag 13. März, ab 19 Uhr
Die Lernplattform Moodle (Learning Management Plattform) wurde aus anderen Gründen bereits auf unserem neuen Server installiert, jedoch in keiner Weise konfiguriert. Diese Arbeit stand nun an und es zeigt sich, dass keine Benutzer/innen, außer dem Admin, in Moodle registriert sind.
Fachlich: Keine LDAP-Anbindung an unsere bestehende Benutzerdatenbank.

Samstag 14. März
Die Konfiguration von Moodle stand im Vordergrund. Es ist nachvollziehbar, dass sich das Gefühl von „wir haben nur eine Chance“ im Bauch breit machte. Denn eine nicht funktionierende Plattform wäre nach wenigen Tagen so leer, wie unsere Schulgebäude.
Es findet eine Gesamtkonferenz statt, die Beschließt, dass Moodle offiziell zur Lernplattform wird.

Sonntag 15. März
Von nun an sind Mitglieder der Schüleradmins tatkräftig mit an Bord. Die Daten der Schüler/innen der Oberstufe und die Zugangsdaten der Lehrer/innen werden aufbereitet und in Tabellen übertragen, damit sie in Moodle eingefügt werden können.
Fachlich: CSV Dateien mit der richtigen Syntax erstellen.
Ohne die LDAP Anbindung haben wir keinen Zugriff auf aktuelle Passwörter des Schüler-Lehrer-Netzwerks. Zudem werden nur bestimmte Arten von Nachrichten von Moodle per Mail versendet, andere stranden im Postausgang. Mit viel Hirnschmalz, viel Einsatz und wenig Mittagessen wurden jedoch alle Probleme soweit gelöst oder umgangen, dass am Montag die Schüler/innen und Kolleginnen kommen können.
Stand jetzt: Die Plattform und die App, sowie die Bedienung per Browser funktionieren für Schüler/innen und Lehrer/innen. Alle, in der Oberstufenkonferenz besprochenen Kurse, sind angelegt und mit den entsprechenden Trainern (Ausdruck für Lehrer/innen in Moodle) versehen.

Montag 16. März
8:30 Uhr
Die Schüler/innen kommen. Jeweils eine Halbe klasse zur Installation und Einrichtung der App und die andere Hälfte zur Einführung in die Bedienung von Moodle am Computer. Nach einer halben Stunde werden die Gruppen getauscht und nach wieder eine halben Stunde kommt die nächste Klasse.
Was ist das eigentlich: Pause?

13:30 Uhr
Bis auf wenige Ausnahmen installierten alle Schüler/innen der Oberstufe die App, änderten ihr Passwort und lernten den rudimentären Umgang mit Moodle.

14:15 Uhr
Erste Schulung der Kolleg/innen.

17:45 Uhr
Vorstandssitzung – hier wurden im Vorgespräch und auch während des Sitzung mögliche Datenschutzbedenken durch Moodle in den Blick genommen. Da die Plattform auf unserem eigenen Server läuft und auch das Nachrichtensystem das eigene Haus nicht verlässt, deckt unser – in dieser Konferenz verabschiedete – allgemeines Datenschutz-Konzept alle datenschutzrechtlichen Bedenken ab.

Dienstag 17. März
Die ersten Schüler/innen starten in die Kurse, schreiben Nachrichten mit Fragen und geben erste Ergebnisse ab. Es scheint vieles zu funktionieren – Puh!
Eine zweite, gut besuchte Einführung für Lehrer/innen findet statt.
Kurse werden mit viel Fleiß von Lehrer/innen mit Inhalten befüllt und Schüler/innen arbeiten sich in die Plattform und die Inhalte ein.

Mittwoch 18. März
Verschnaufen von Seiten der Moodle-Verantwortlichen. Die Plattform läuft nicht perfekt, aber sie läuft so gut, dass sie genutzt werden kann. Ausschlafen!

Die Todo-Liste beinhaltet nun die Hilfestellung für Lehrer/innen und Schüler/innen und die Beschäftigung mit der Technik hinter Moodle. Backup, PHP- und andere Server-Einstellungen und die Konfigurationen der Plattform werden nun in Ruhe angegangen.

Donnerstag 19. März
Es läuft einfach.

Freitag 20. März
07:20 Uhr
„The service is not available. Please try again later.“
Das bedeutet so viel, wie die Hölle friert ein. Moodle ist down. Aber die Supportfirma das erste Mal in der Woche erreichbar. Schön ist, dass sie vor 10 Minuten noch ging, die Ausfallzeit ist also gering, wenn es jetzt schnell repariert wird. Bis ca. 12:30 Uhr.

Mal sehen, wie es weiter geht….

Bildquelle von Wikipedia: Von Moodle.org – https://moodle.org/logo/ https://moodle.org/logo/moodle-logo.svg, GPL, Link

von Timotheus am 23.03.2020 16:08


24.03.2014

Manuel Kaderli (suntsu)

Be careful using ThreadStatic in Visual Studio unit tests

Given is a ThreadStatic field which is set to empty in the static constructor, and set by a public instance method:

    public class TestClass
    {
        [ThreadStatic] 
        private static string threadStaticValue;
        static TestClass()
        {
            threadStaticValue = "";
        }
        public void SetThreadStaticValue(string value)
        {
            threadStaticValue = value;
        }
        public string GetThreadStaticValue()
        {
            return threadStaticValue;
        }
    }

Now two unit tests check whether the threadStaticValue is set correct.

    [TestClass]
    public class ThreadStaticTest
    {
        [TestMethod]
        public void WithThreadStaticValueSetTest()
        {
            Debug.WriteLine("Thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            tc.SetThreadStaticValue("foo");
            Assert.AreSame(tc.GetThreadStaticValue(), "foo");
        }
        [TestMethod]
        public void WithThreadStaticValueNotSetTest()
        {
            Debug.WriteLine("Thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            Assert.AreSame(tc.GetThreadStaticValue(), "");
        }
    }

Those tests will fail(good) or pass(bad) depending of whether the test engine will reuse the same thread.

Executed a second time, the result could be different.

Solution:

  1. Don't use ThreadStatic at all
  2. Make sure the ThreadStatic fields are initialized correctly before using them

von suntsu (nospam@example.com) am 24.03.2014 11:28


13.11.2017

Christian Schmitt (slater)

Amazone Prime Video mit Linux Mint

Hej zusammen…

Ich habe heute mit meiner frischen installation von Linux Mint gekämpft… Prime Vido wollte nicht so wie ich es wollte…

Erst mal das was nicht geklappt hat:

Die ganzen Tips mit installiere HAL Lib über verschiedene wege…
Silverlight mit Wine…
Diverse Einstellung (hatten auch alle mit hal-libery zu tun)

Geholfen hat zum Schluss Mint selber!

Über das Start-Menü habe ich den Menüpunkt Multimedia ausgewählt. Dort wurde angeboten das Mint alles was Multimedia zu tun hat von alleine installiert… Jetzt läuft das mit Amazone Prime Video. Leider weiß ich nicht was alles am System jetzt geändert wurde von alleine… Mehdienwiedergabe, Rythmbox und VLC Player sind als einziges über das Multimedia Menü zusätzlich sichtbar und vorerst die einzigen Änderung die durchgeführt wurden.

Wenn ich noch was finde, was geädert wurde, werde ich es hier aktualisieren…

von Slater am 13.11.2017 19:00


08.05.2018

Malte Kiefer (beLI3VeR)

Kommentare mit Github

Ich bin ein großer Freund vom Datenschutz, leider unterstützt Hugo nur disqus, was alles andere als freundlich zum Datenschutz ist. Also gab es die letzten Monate nie eine Kommentar Funktion, das hat sich jetzt geändert.

Ich bin durch Zufall auf den Artikel von Don Williamson gestoßen, der es mir erlaubt eine Kommentar Funktion für meine Artikel durch Github anzubieten.

Konfiguration

Als erstes legen wir eine Datei comments.html im Ordner themes/THEME_NAME/layouts/partials/ mit folgenden Inhalt an:

<div id="gh-comments">
          <h2>Kommentare</h2>
              <div id="gh-comments-list"></div>
                  <a href="javascript:void(0)" id="gh-load-comments" class="btn" style="display:none">Load more comments</a>
</div>

   <script type="text/javascript" data-ghid="{{ $.Params.ghcommentid }}" src="{{ .Site.BaseURL }}js/github-comments.js"></script>

Als nächstes brauchen wir jetzt noch die JS Datei, die für uns die ganze Arbeit macht themes/THEME_NAME/static/js/github-comments.js mit folgenden Inhalt:

// use of ajax vs getJSON for headers use to get markdown (body vs body_htmml)
// todo: pages, configure issue url, open in new window?
//

var this_js_script = $('script[src*=github-comments]');


var ghid = this_js_script.attr('data-ghid');   
if (typeof ghid === "undefined" ) {
   var ghid = '0';
}

DoGithubComments(ghid);

var CurrentPage = 0;

function ParseLinkHeader(link)
{
    var entries = link.split(",");
    var links = { };
    for (var i in entries)
    {
        var entry = entries[i];
        var link = { };
        link.name = entry.match(/rel=\"([^\"]*)/)[1];
        link.url = entry.match(/<([^>]*)/)[1];
        link.page = entry.match(/page=(\d+).*$/)[1];
        links[link.name] = link;
    }
    return links;
}

function DoGithubComments(comment_id, page_id)
{
    var repo_name = "beli3ver/malte-kiefer.de";

    if (page_id === undefined)
        page_id = 1;

    var api_url = "https://api.github.com/repos/" + repo_name;
    var api_issue_url = api_url + "/issues/" + comment_id;
    var api_comments_url = api_url + "/issues/" + comment_id + "/comments" + "?page=" + page_id;

    var url = "https://github.com/beli3ver/malte-kiefer.de/issues/" + comment_id;

    $(document).ready(function ()
    {
        $.getJSON(api_issue_url, function(data) {
            NbComments = data.comments;
        });

        $.ajax(api_comments_url, {
            headers: {Accept: "application/vnd.github.v3.html+json"},
            dataType: "json",
            success: function(comments, textStatus, jqXHR) {

                // Add post button to first page
                if (page_id == 1)
                    $("#gh-comments-list").append("<a href='" + url + "#new_comment_field' rel='nofollow' class='btn'>Füge eine Kommentar hinzu</a>");

                // Individual comments
                $.each(comments, function(i, comment) {

                    var date = new Date(comment.created_at);

                    var t = "<div id='gh-comment'>";
                    t += "<img src='" + comment.user.avatar_url + "' width='24px'>";
                    t += "<b><a href='" + comment.user.html_url + "'>" + comment.user.login + "</a></b>";
                    t += " posted at ";
                    t += "<em>" + date.toUTCString() + "</em>";
                    t += "<div id='gh-comment-hr'></div>";
                    t += comment.body_html;
                    t += "</div>";
                    $("#gh-comments-list").append(t);
                });

                // Setup comments button if there are more pages to display
                var links = ParseLinkHeader(jqXHR.getResponseHeader("Link"));
                if ("next" in links)
                {
                    $("#gh-load-comments").attr("onclick", "DoGithubComments(" + comment_id + "," + (page_id + 1) + ");");
                    $("#gh-load-comments").show();
                }
                else
                {
                    $("#gh-load-comments").hide();
                }
            },
            error: function() {
                $("#gh-comments-list").append("Kommentarfunktion für diesen Beitrag nicht aktiviert!");
            }
        });
    });
}

Jetzt müssen die Links in der Datei angepasst werden. Ihr müsst eine eigne Repo anlegen bei Github und hier in der Datei anpassen. Achtung: Wir brauchen auch jQuery!. jQuery sollte umbedingt im <head></head> geladen werden.

Zum Schluss noch das Template für die Beitragsdatei anpassen (themes/THEME_NAME/layouts/_default/single.html) und den folgenden Teil for dem Aufruf des <footer></footer> Tags einfügen:

{{ partial "comments.html" . }}

Um jetzt die Kommentarfunktion zu nutzen, ein entsprechendes issue bei Github eröffnen, die ID merken. Wenn ihr dann einen neuen Beitrag erstellt, müsst ihr vor den "---" folgendes einfügen:

ghcommentid: ID

Und das wars, nun habt ihr und ich eine Kommentarfunktion.

CSP

Damit ihr diese Funktion mit CSP nutzen könnt, müssen folgende Einstellungen gesetzt sein:

img-src 'self' https://*.githubusercontent.com;
connect-src 'self' https://*.github.com

von Malte Kiefer (malte.kiefer@mailgermania.de) am 08.05.2018 00:00


24.06.2016

Helmut Roewer (Dunkelangst)

HKG✈KHH

Trip 35

Flight KA 450 from HKG to KHH

  • Flight 89: Hong Kong International Airport to Kaohsiung International Airport
  • Airbus A 330-300 – Dragonair
  • planed duration: 1h 25min
  • See also the itinerary to get an overview.

von Helmut am 24.06.2016 19:46


18.08.2010

Jürgen Braun (jaybe)

Android Tablet

Auch wenn ich den Hype um das Apple iPad nicht nachvollziehen kann (es funktioniert gut und sieht schick aus, ist mir aber zu teuer und bevormundet einen bei der Nutzung), so finde ich das Konzept eines Tablets doch ganz reizvoll. Wichtig ist jedoch, dass man sich über den Einsatzzweck klar wird. Für mich soll es keinen Ersatz für PC/Notebook/Netbook darstellen, sondern ein Gerät sein, mit dem man gemütlich auf der Couch seine Mails checken, in Foren stöbern, Facebook Nachrichten lesen, … also hauptsächlich Daten im Internet konsumieren kann.
Für 179.-€ war nun ein Tablet mit Android 2.1 angekündigt. Die Beschaffung gestaltete sich ein wenig schwierig und dauerte etwas länger, da das Gerät nicht wie angekündigt bereits montags erhältlich war, sondern erst eine Woche später als verfügbar gelistet wurde und bestellt werden konnte. In der Zwischenzeit waren auch erste Erfahrungsberichte von Benutzern aufgetaucht. Die Bandbreite war gewohnt groß und begann bei „der letzte Schrott“. Das folgende Fazit eines Benutzers ermutigte mich jedoch dazu, mir solch ein Gerät zu bestellen:

..ich sags mal ganz unverblümt
Das Ding ist nichts für Leute die den Ipad Killer erwartet haben und davon ausgehen das alles „out of the box“ für €179.- funktioniert..

Für alle anderen, die spaß an linux haben, lässt sich da sicher noch einiges machen bzw. fehlende funktionen nachrüsten.

Am Wochenende wurde das Gerät dann geliefert, die Inbetriebnahme musste jedoch bis Sonntag Abend warten.
Einloggen in das WLAN, Einrichten von Googlemail, Zugriff auf den eigenen Mailserver, Surfen im Web und die installierten Applikationen für Google Maps und YouTube funktionierten problemlos. Das Touch-Display lässt sich schwer bedienen, vor allem das Scrollen ist etwas umständlich, mit resistiver Technologie aber auch nur schwer umsetzbar, das funktioniert bei meinem Garmin-Navi aber auch nicht besonders.
Hardware

Billig wirkendes Plastik, vier Buttons auf der Gehäuserückseite für Zurück, Home, Suchen und Menü fühlen sich nicht besonders an und man muss sich die Position merken, da man sie nicht sieht.
Software

  • Browser: Eingabe über Touchscreen hakelig auch bei Verwendung des Eingabestiftes. Lädt und stellt die Webseiten recht flott dar.
  • Mail: Konfiguration von mehreren Mailservern möglich, Zugriff per POP3 oder IMAP
  • Google Maps: schnelle Darstellung der Karten, Layer für Satellitenbild und Wikipedia einblendbar. Bei Wikipedia werden „W“s eingeblendet, auf die man direkt klicken und Infos aus Wikipedia abrufen kann
  • Google Mail: direkte Verknüpfung mit meinem Google Mail Account, funktioniert einfach.
  • YouTube Player: direkte Verknüpfung mit meinem YouTube Account: Playlisten, Favoriten, … werden angezeigt. Suche ist möglich, Abspielen in voller Auflösung funktioniert sehr gut.
  • Android Market: Zuerst nicht gestartet, dann zwar gestartet, man konnte suchen und „installieren“, der Download kommt aber nicht zum Ende und es wird nichts installiert. Ein bekanntes Problem, es liegt wohl keine offizielle Google-ID vor.

Bisheriges Fazit: Wenn man nicht tippen muss, sondern sich auf Lesen/Sehen/Hören beschränkt, funktioniert das Tablet. Für die eingeschränkte mitgelieferte Software hätte ich es wohl nicht gekauft, ABER es gibt eine Seite mit Howtos, da wird erklärt, wie man das Gerät patchen, den Market aktivieren, auf alternative Markets umsteigen oder direkt die APKs installieren kann. Und wenn das dann funktioniert, kann es ein ganz brauchbares Gerät werden.


von jaybe am 18.08.2010 18:24


Willkommen!
Forum
Chat
Wiki/Tipps
Planet
Bildergalerie
Links
Twitter
dieses und jenes
Blogger
(BigOlly) (feed)
(Lord_Carlos und mweinelt) (feed)
(Meillo) (feed)
(Trurl) (feed)
(c3f2o) (feed)
(emge) (feed)
(thoys) (feed)
(trompetenkaefer) (feed)
Andre Nitschke (gnude) (feed)
Axel Hellinger (cryptolegal) (feed)
Beni Goll (Bennerl) (feed)
Bernd Dau (whisper) (feed)
Bert Radke (bert) (feed)
Bjoern Schiessle (BeS) (feed)
Christian Imhorst (immi) (feed)
Christian Schmitt (slater) (feed)
Christoph Langner (Chrissss) (feed)
Christoph Wickert (raoul) (feed)
Daniel Gestl (mcdaniels) (feed)
Darian (thoys) (feed)
Dominik George (Natureshadow) (feed)
Dominik Kupschke (bommi) (feed)
Dominik Pieper (nachtwandler) (feed)
Felix Schmeing (gimbar) (feed)
Gerrit Kruse (MrGerardCruiz) (feed)
Helmut Roewer (Dunkelangst) (feed)
Hendrik Richter (Hendi) (feed)
Holger Reinmann (codeaeffchen) (feed)
Jan Hauke Rahm (jhr-online) (feed)
Jochen Skulj (feed)
Jochen Welzel (jeff84) (feed)
Joerg Kastning (Tronde) (feed)
Jörg Kruse (4A4B) (feed)
Jürgen Braun (jaybe) (feed)
Lars Moelleken (voku1987) (feed)
Malte Kiefer (beLI3VeR) (feed)
Malte Schmidt (maltris) (feed)
Manuel Kaderli (suntsu) (feed)
Marc Nowak (TCA) (feed)
Marco Laspe (rockiger) (feed)
Marco Scholtyssek (marco_s) (feed)
Marco Scholtyssek (marco_s) (feed)
Marius M. M. (devilx) (feed)
Markus Matuszczak (konsumer) (feed)
Markus W. Kropp (Musix) (feed)
Martin Dosch (Dogge) (feed)
Mirko Weber (tylerD) (feed)
Nico Hartung (xyznico) (feed)
Oliver Groschopp (beetlefrosch) (feed)
Patrick Schmid (compr00t) (feed)
René Hering (ReneH) (feed)
Roman Hanhart (Thurgau) (feed)
Sabine Becker (AtariFrosch) (feed)
Sebastian Feltel (feltel) (feed)
Sebastian Moors (mauser) (feed)
Stefan J. Betz (encbladexp) (feed)
Steffen Moeller (smoe) (feed)
Steffen Rumberger (inne) (feed)
Stephan Tetzel (zefanja) (feed)
Sven S. (FearFactor) (feed)
Thorsten Sperber (TRex) (feed)
Tobias Dols (TobsenD) (feed)
Tom Karasek (Natas12) (feed)
Torsten Werner (bollin) (feed)
Viktor Bindewald (Vitei) (feed)
Vinzenz Vietzke (vinz) (feed)
posativ (feed)
Feeds
ATOM Feed
RSS 1.0 Feed
RSS 2.0 Feed
FOAF
OPML
Letztes Update
17.11.2025 01:16 (GMT+1)
Planetarium
Planet Debian
Planet Debian Administration
Planet Skolelinux
Planet Ubuntu
Planet RootForum
Planet symlink
Planet GNOME
Planet KDE
Planet Apache
Planet freedesktop.org
mehr ...
top
Zum Seitenanfang
Diese Webseite ist keine offizielle Webseite des Debian Projekts.
Haftungsausschluss und Impressum –Datenschutzrichtlinie – debianforum.de Verhaltensregeln

Powered by Planet Venus
Template entwickelt von Timo Salmen, basierend auf dem Debian Live Template, entwickelt von Christoph Haas.