ubuntuusers.de

🛈 Aktuell gibt es im Wiki ca. 300 Artikel, die nur für Xenial getestet sind. Dies entspricht ca. 3,8 % aller Wikiartikel. Damit diese im Frühjahr nicht alle archiviert werden müssen, ist eure Mithilfe gefragt!

Neueste Artikel

heute

Programmstarter und die meisten Symbole auf dem Desktop unter Linux sind eigentlich einfache Textdateien. Diese Textdateien enden mit der Dateiendung “.desktop” und heißen dementsprechend auch .desktop-Dateien. Diese kann man entweder mit grafischen Programmen oder in einem Texteditor der Wahl erstellen. Die systemweiten Programmstarter liegen unter /usr/share/applications und selbst Erstellte legt man am Besten unter ~/.local/share/applications ab. Aber natürlich kann man auch selbst solche Dateien schreiben und abspeichern - sei es weil man gerade ein Programm schreibt.

Um das Verfassen solcher Dateien soll es hier aber nicht gehen, sondern darum, wie man .desktop-Dateien validiert, also auf Richtigkeit überprüft; denn wie für so vieles gibt es auch für diese Dateien eine Spezifikation auf freedesktop.org Dafür gibt es in dem Paket desktop-file-utils, ein Programm mit dem Namen “desktop-file-validate”.

Die Anwendung des Programmes ist denkbar einfach:

desktop-file-validate /PFAD/ZUR/DATEI

Hiermit kann man dann u.a. eigene .desktop-Dateien auf Richtigkeit überprüfen und bekommt recht exakte Fehlermeldungen angezeigt, wenn etwas nicht stimmt und wie man das korrigieren kann.

gestern

Mozilla hat Firefox 88 für Windows, Apple macOS und Linux veröffentlicht. Dieser Artikel fasst die wichtigsten Neuerungen zusammen – wie immer auf diesem Blog weit ausführlicher als auf anderen Websites.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Privatsphäre: Firefox schützt vor window.name-Leak

Websites steht mit window.name eine Eigenschaft zur Verfügung, in welcher diese Daten speichern können, welche auch dann noch zur Verfügung stehen, wenn der Benutzer im gleichen Tab auf eine andere Seite navigiert. Tracking-Unternehmen missbrauchen diesen Mechanismus, Mozilla schiebt dem mit Firefox 88 einen Riegel vor.

Ab sofort setzt Firefox die Eigenschaft window.name zurück, wenn der Benutzer im gleichen Tab auf eine andere Seite navigiert. Navigiert der Nutzer zurück, wird der Wert wieder auf ihren eigentlichen Wert gesetzt. In seinem Sicherheits-Blog hat Mozilla ausführlich darüber geschrieben (engl.).

Mozilla zieht hier mit Apple gleich, die einen vergleichbaren Schutz in Safari bereits vor längerer Zeit implementiert haben. Während Google dies für Chromium-basierte Browser ebenfalls plant, sind Browser wie Google Chrome und Microsoft Edge nach heutigem Stand weiterhin anfällig für den window.name-Leak.

Interaktive PDF-Dateien

Seit Firefox 83 unterstützt Mozillas Browser das Ausfüllen von PDF-Formularen. Mit Firefox 88 kommt die Unterstützung von Scripts dazu. Dies ermöglicht die Validierung von PDF-Formularen und andere interaktive Features in PDF-Dateien.

Verbesserungen der Entwicklerwerkzeuge und Webplattform

Das Antwort-Panel des Netzwerkanalyse-Werkzeugs besitzt nun einen Toggle-Button, um zwischen formatierter und Code-Ansicht zu wechseln.

Auf Webstandard-Seite ist die Unterstützung der zwei neuen CSS-Pseudoklassen :user-valid und :user-invalid erwähnenswert, welche im Gegensatz zu :valid und :invalid erst dann aktiv werden, wenn der Benutzer den Fokus auf ein anderes Element setzt.

Neu ist auch die Unterstützung von image-set() in CSS für responsive Bilder oder unterschiedliche Bilder in Abhängigkeit von der Pixeldichte des Bildschirms, ähnlich zum srcset-Attribut in HTML.

Die Standard-Schrift für monospace-Schriften auf macOS wurde in Menlo geändert. Die outline-Eigenschaft in CSS wurde dahingehend geändert, dass die Kontur nun dem border-radius folgt.

Auf JavaScript-Seite erwähnt sei die Unterstützung von indicies sowie hasIndices bei regulären Ausdrücken.

Eine Übersicht über Verbesserungen der Webplattform wie neue unterstützte Webstandards gibt es wie immer in den MDN web docs.

Geschlossene Sicherheitslücken

Natürlich hat Mozilla auch in Firefox 88 wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 88 daher für alle Nutzer dringend empfohlen.

Sonstige Neuerungen in Firefox 88

Die seit Firefox 86 neue Drucken-Oberfläche unterstützt nun lokalisierte Einheiten für die Ränder, so dass Firefox hier Millimeter- statt Zoll-Angaben anzeigen kann.

In Vorbereitung auf das kommende Proton-Design von Firefox, welches mit Firefox 89 ausgeliefert werden wird, gab es bereits in Firefox 88 diverse Textänderungen in Dialogen und Umstrukturierungen von Kontextmenüs.

Im Kontextmenü von Tabs gab es bereits die Optionen, entweder alle anderen Tabs oder alle Tabs rechts vom ausgewählten Tab zu schließen. Mit der Option, alle Tabs links vom ausgewählten Tab zu schließen, folgte eine logische Erweiterung.

Im Kontextmenü von Textfeldern gibt es neben einer Rückgängig-Aktion jetzt auch eine Wiederherstellen-Option. Die Optionen Ausschneiden und Kopieren sind nun ausgegraut, wenn kein Text markiert ist. Der Kontextmenü-Eintrag zum Anzeigen einer Grafik öffnet diese nun standardmäßig in einem neuen Tab.

Die Screenshot-Funktion steht nicht länger über das Dreipunkte-Menü in der Adressleiste zur Verfügung, kann aber nach wie vor über das Kontextmenü aufgerufen werden. Außerdem gibt es unter Menü > Symbolleiste anpassen eine neue Screenshot-Schaltfläche, welche optional wie alle anderen Buttons auch in die Benutzeroberfläche gezogen werden kann.

Bei Mikrofon- und Kamera-Anfragen bittet Firefox nicht länger erneut um Erlaubnis, wenn schon einmal innerhalb der letzten 50 Sekunden auf dem gleichen Gerät im gleichen Tab die Erlaubnis für die jeweilige Website erteilt worden ist.

Sanftes Pinch-Zooming mit einem Touchpad wird jetzt auch unter Linux unterstützt.

Die Unterstützung für das unverschlüsselte und unsichere FTP-Protokoll wurde standardmäßig deaktiviert und wird voraussichtlich mit Firefox 90 komplett entfern werden. WebExtensions können sich ab sofort als Protokoll-Handler für FTP registrieren.

Die Erkennung von eingegebenen Zugangsdaten zum Speichern eben jener wurde bei bestimmten Script-basierten Implementierungen verbessert.

Bislang zeigte Firefox beim Start, wenn das genutzte Firefox-Profil älter als 90 Tage und der Durchschnit der letzten fünf Starts bei mehr als 20 Sekunden liegt, eine Hinweisleiste an, welche die Erneuerung des Profils nahelegte. Diese wurde entfernt. Die Hinweisleiste, welche auf nicht reagierende Scripts hinweist, wurde von einer auffälligen gelben Leiste in eine weniger auffällige Farbe geändert und erscheint nur noch, wenn mit der Seite interagiert worden ist. Außerdem gibt es hier keinen „Warten“-Button mehr.

Auf der Seite about:processes ist es jetzt möglich, eine Zeile zu markieren, so dass man diese bei Änderungen besser verfolgen kann.

Der neue Grafik-Renderer WebRender wurde für weitere Linux-Nutzer aktiviert. Für Nutzer von Windows ohne D3D11-Compositing und mit kleinem Bildschirm wird nun eine Software-Implementierung von WebRender ausgeliefert, ebenso für einen kleinen Teil der Linux-Nutzer, der ansonsten kein WebRender erhalten würde.

Ist der Import von gespeicherten Zugangsdaten via CSV-Datei aktiviert (signon.management.page.fileImport.enabled in about:config) wird am Ende nun ein Abschlussbericht angezeigt, der Aufschluss über mögliche Fehler gibt.

Natürlich kamen auch in Firefox 88 wieder Fehlerbehebungen und sonstige Verbesserungen unter der Haube wie auch Verbesserungen der Barrierefreiheit dazu. Auch die Unterstützung weiterer Unternehmensrichtlinien kam wieder dazu.

Der Beitrag Mozilla veröffentlicht Firefox 88 erschien zuerst auf soeren-hentzschel.at.

17. April 2021

Google hat zentrale Bestandteile seiner Dienste nicht direkt in Android implementiert, sondern in den so genannten Play Services. Dazu gehören viele Sachen wie Push-Benachrichtigungen, Ortung ohne GPS und vieles mehr. Einen Teil davon implementiert microG als freie Software. Aber bringt das wirklich was für den Datenschutz?

Das Thema kam in der Diskussion zum Artikel über Custom ROMs auf. Quelloffene Software ist ja schön und gut, aber sie ist nicht automatisch Datenschutz-freundlich.

MicroG ist so ein Ansatz, bei dem ich mich schon länger frage, ob der funktioniert. Projekte wie /e/ machen da ja ordentlich Werbung mit und versprechen das Blaue vom Himmel.

Laut der Projekt-Dokumentation reimplementiert microG Sachen wie die Maps-API, die Push–Benachrichtigung und die Ortung via Wifi- und Funkzellenabfrage.

Der springende Punkt: Hinter all diesen Diensten steht letztlich immer noch die Google-Infrastruktur. MicroG muss letztlich häufig Verbindungen zu dieser aufbauen. Das geschieht über einen generischen Account (man kann aber wohl auch einen individuellen Account festlegen).

Selbst wenn wir den Spezialfall eines individuellen Accounts weglassen (der Datenschutz-Gewinn dürfte dann sehr gering sein). Übertragt man nicht genug Informationen für eine Profilbildung trotz generischem Account? Die Zuordnung zu einem Google-Account ist ja leider wirklich keine Notwendigkeit für Profilbildung. Wenn dem so wäre, dann wäre Datenschutz ja viel zu einfach. (Schade eigentlich!)

Hat sich irgendjemand mal dieses Konzept genauer angesehen und ggf. den Datenverkehr analyisiert?

Ich habe versucht dazu zu recherchieren, aber nicht viel belastbares gefunden, außer der Verweis auf Open Source. Was ja erst mal nur sagt, dass man sich den Code ansehen kann. Hat das aber überhaupt mal jemand unabhängig gemacht?

Über Kommentare dazu würde ich mich sehr freuen.

Der Artikel Was bringt microG für den Datenschutz? erschien zuerst auf [Mer]Curius

16. April 2021

Linux ist per se Datenschutz-freundlich? Nein, es kommt drauf an, was der Anwender daraus macht. Eine Anleitung für eine Reise mit Linux in die Datenschutz-Hölle.

In mehreren Artikeln habe ich schon mal abstrakt geschrieben, dass man auch mit Linux seine Privatsphäre und seinen Datenschutz massiv verletzten kann. Zuletzt in den abstrakten Überlegungen zu Open Source und Überwachung. Ich möchte diesen Artikel nutzen, um das mal ein wenig praktisch auszuführen. Unternehmen wir eine kleine Reise in die Hölle. Diese Szenarien sind nicht weit entfernt.

Eine Reise mit Linux in den Datenschutz-Albtraum

Die Wahl der Distribution

Zuerst benötigen wir eine passende Basis. Warum nicht Fedora nehmen. Fedora gehört zu den größten verfügbaren Distributionen, wird seit Jahren aktiv entwickelt, hat Hunderte beitragende Maintainer und eine sehr große Nutzerbasis.

Gleich beim Besuch der Fedora Homepage weiß Google, dass ich mich dafür interessiere. Echt nett. Aber schöne Schriften müssen halt sein und das selbst technisch einzubinden ist ja so aufwendig.

Fedora wird maßgeblich von Red Hat vorangetrieben (und gehört inzwischen zu IBM, aber das lassen wir mal beiseite). Red Hat ist einer der größten, finanzstärksten und wichtigsten Akteure im Open Source Umfeld. Fedora wirbt auf der deutschsprachigen Homepage mit folgendem Satz:

Fedora ist frei verfügbar, um von Jedermann benutzt, verändert und weitergegeben zu werden.

Fedora (getfedora.org)

Möchte ich die Distribution herunterladen, lese ich unten folgenden Hinweis:

Indem Sie Fedora Software herunterladen, bestätigen Sie, dass Sie das Folgende verstehen: Fedora Software und technische Informationen kann Exportkontrollvorschriften der USA (U.S. Export Administration Regulations, “EAR”) und weiteren Gesetzen der USA und anderer Länder unterliegen und darf nicht ausgeführt, wieder ausgeführt oder weitergeleitet werden (a) in irgendein Land, das in Ländergruppe E:1 des Supplement No. 1 zu EAR Part 740 aufgeführt ist (momentan Kuba, Iran, Nordkorea, Sudan und Syrien); (b) an irgendein Ziel oder irgendeinen Endbenutzer, dem die Teilnahme an US Exporttransaktionen durch irgendeine Bundesbehörde der US Regierung untersagt ist; oder (c) zum Gebrauch in Verbindung mit der Konstruktion, der Entwicklung oder Herstellung von nuklearen, chemischen oder biologischen Waffen oder Raketensystemen, Trägerraketensystemen oder Höhenforschungsraketen oder unbemannten Luftfahrzeugsystemen. Sie dürfen Fedora Software oder technische Informationen nicht herunterladen, wenn Sie sich in einem der genannten Länder befinden oder auf eine andere Weise diesen Einschränkungen unterliegen. Sie dürfen Fedora Software oder technische Informationen weder Personen noch Einrichtungen zur Verfügung stellen, die sich in einem dieser Länder befinden oder auf eine andere Weise diesen Einschränkungen unterliegen. Weiterhin sind Sie für die Einhaltung rechtlicher Anforderungen anderer Länder bezüglich Einfuhr, Ausfuhr und Benutzung von Fedora Software und technischer Informationen verantwortlich.

Fedora Workstation herunterladen (getfedora.org)

Oh nein! Ist eine Distribution denn nicht staatenlos? Ganz so frei ist die weltweite Distribution dann wohl doch nicht.

Datenschützer werfen bei Produkten, die aus den USA kommen ja gerne mit den Schlagworten PATRIOT und PRISM um sich. Bin ich davor bei Fedora eigentlich geschützt? Sucht man nach Reproducible Builds stößt man auf diesen Wiki-Eintrag, aber da hat sich lange nichts getan. Der aktuelle Stand ist undurchsichtig. Kann ich wirklich darauf vertrauen, dass Fedora das ausliefert, was die Quelltexte hergeben?

Die Fahrt in die Hölle hat begonnen.

Hab ich SELinux gehört?

Fedora setzt auf SELinux. Das ist eine Entwicklung der NSA, die erstmals bei Fedora standardmäßig einzog. War ja klar, wenn man sieht wie abhängig Fedora von den USA ist. Der Quellcode wurde zig mal überprüft? Nun, Apple behauptet auch, sie würden die Daten ihrer Nutzer schützen. Ich glaube denen kein Wort. Ich kann ja nicht darauf vertrauen, dass der offen einsehbare Quelltext wirklich unverändert auf meinem System läuft.

Vielleicht sollte ich doch ein russisches Linux verwenden? Putin ist ein solider Mann und Russland total vertrauenswürdig. Immerhin haben sie Snowden aufgenommen und mein antiamerikanischer Kompass ist da ganz zuverlässig.

NTP-Server, Paketquellen, Tracking

Meine Systeme greifen auf viele Server zu. Updates müssen gesucht und die Zeit abgeglichen werden. Dazu greift mein System auf riesige Mirrorlisten zu. Was speichern diese Server eigentlich für Zugriffsdaten? Bestimmt nichts schlimmes, ist ja alles Open Source und die Community ist ganz sensibel für Datenschutz.

Cloud-Speicher – OneDrive, Dropbox, GDrive

Meine SSD hat nicht genug Speicherplatz für alle meine Dateien. Zum Glück gibt es viele Cloud-Speicher und alle bieten Clients für Linux an. Super! Ich habe keine Lust Geld auszugeben, also habe ich mir viele Free- und Billigangebote gesucht und kombiniere die. Warum nur einen Cloud-Speicher nutzen?

Ohne Chrome – ohne mich

Fedora liefert zwar Firefox aus, aber der ist so langsam und überhaupt nicht attraktiv. Außerdem mag ich keine sterbenden Projekte. Ich will am Zahn der Zeit sein und der heißt: Chrome von Google. Außerdem kann ich damit leicht meinen Google Account einbinden und Favoriten, Verlauf, Tabs usw. synchronisieren. So praktisch!

Außerdem macht Google ja ganz viel für Open Source. Google Summer of Code, AOSP. Warum also nicht Google-Produkte nutzen. Die wissen schließlich wie Linux tickt.

Glaubt ihr nicht? Schaut euch in den Supportforen um und lest mal auf den Planeten der Softwareentwickler bei Planet GNOME oder Planet KDE und guckt auch die dortigen Screenshots an. Chrome begegnet euch oft.

Mails und PIM natürlich mit GMail

Ich nutze natürlich einen Mailclient, weil die ganzen Mailinglisten etc. sich im Web-Interface so schlecht verwalten lassen.

Als E-Mail-Anbieter binde ich Google Mail ein. Es gibt andere Mailanbieter als GMail? Ernsthaft! AOL oder was? Natürlich nutze ich GMail. Da bin ich vor 15 Jahren drauf gestoßen und die Features und der Speicherplatz überzeugen.

Meine Kalender und ToDos verwalte natürlich auch mit Google. Bietet sich ja an, wenn ich eh schon dabei bin.

Glaubt ihr nicht? Schaut euch in den Supportforen um und lest mal auf den Planeten der Softwareentwickler bei Planet GNOME oder Planet KDE an und guckt, was dort so verwendet wird. Probleme bei der Authentifizierung mit Google werden bei Kontact, Evolution & Co immer schnell gefixt.

Zoom, Teams, Slack – ich brauch alles

Kann ich ja nichts für, mein Arbeitgeber schreibt das vor. Außerdem klappen die Videokonferenzen mit Zoom so gut. Die Software gibt es ja alles auch für Linux, da muss ich das böse Windows ja nicht nutzen.

Dank der ganzen Webclients kann ich von meinem Linux-Desktop auch WhatsApps schreiben. Dateien und Bilder verschicke ich damit auch gleich mit. Geht schneller als via Mail.

Frei rauschen die Daten um den Globus bzw. ins AWS Datencenter.

Spotify, Netflix, YouTube – Streaming ist King

Inhalte kaufen? In welchem Jahrhundert leben wir denn? Ich streame alles und das geht mit Linux und Chrome auch super. Warum also nicht nutzen. Wen interessiert schon was ich wann gucke und wie oft ich auf Pause drücke?

Ich bin ein Nerd: Telegram

Aber ich bin ja kein Mainstream-Typ, sondern ein Nerd. Deshalb nutze ich auch diese super Lösung für sichere und nerdige Communitys: Telegram. Ganz viele Softwareprojekte haben dort jetzt Chatgruppen und da kriege ich schnell und unkompliziert Hilfe. Dafür gibt es außerdem ganz viele tolle Open Source Clients.

Firmensitz war Dubei? Keine Ahnung, ein Impressum hat der Dienst nicht. Es sind halt coole digitale Nomaden.

Aber mit Linux bin ich auf der sicheren Seite. Privatsphäre und Datenschutz – darum sollen sich Leute mit Windows und macOS Gedanken machen. Deren Firmen sitzen schließlich in den USA und die überwachen uns alle!

Oder vielleicht doch nicht?

Der Artikel Mit Linux in die Datenschutz-Hölle erschien zuerst auf [Mer]Curius

Als Edward Snowden 2013 mit seinen Enthüllungen die Globale Spionage- und Überwachungsaffäre auslöste, gelang es der Open Source-Bewegung irgendwie auf diesen Zug aufzuspringen und sich als Lösung zu präsentieren. Was für ein Mythos!

Ich hatte das Thema schon wieder ein bisschen aus dem Blickfeld verloren. Dankenswerterweise brachte mich eine Ergänzung unter meinem Artikel zu Custom ROMs wieder darauf. Ein paar Grundgedanken habe anschließend schon in der Empfehlung zu einer privaten Risikoanalyse festgehalten. Wer wirklich glaubt, staatliche Überwachung wäre sein größtes Problem, hat eine verkürzte Risikoanalyse betrieben. In diesem Artikel möchte ich mich trotzdem vor allem auf den Aspekt Überwachung konzentrieren.

Das Thema ist gewaltig und füllt ganze Handbücher. Hier können nur einige Aspekte angerissen werden und diese stehen vielleicht etwas inkonsistent nebeneinander. Trotzdem wollte ich das hier mal thematisieren, um mit dieser Grundannahme „Open Source schützt vor Überwachung“ aufzuräumen.

Tracking durch Firmen ungleich staatliche Überwachung

Es ist schon extrem schwer, Datenschutz gegenüber den global agierenden IT-Konzernen mit ihrer umfassenden (Telemetrie-)Datenerhebung durchzusetzen. Das liegt einfach daran, dass man diesen Konzernen nicht so einfach aus dem Weg gehen kann. Dazu gibt es am Beispiel Google eine sehr empfehlenswerte Analyse.

Konzerne wie Google arbeiten aber nur im Rahmen ihrer Möglichkeiten. Manchmal vielleicht in rechtlichen Graubereichen, aber sicher nie offen illegal. Sie können Daten erheben, sie können Dritte dazu bewegen, Daten für sie zu erheben, sie können Firmen aufkaufen, um an Daten zu kommen oder sie können sich am schnöden Datenhandel beteiligen. Nutze ich die Dienste einer Firma nicht und bewege mich sehr umsichtig im Netz, habe ich gute Chancen, mein digitales Profil bei dieser Firma klein zu halten. Wie klein, ist wieder abhängig von der Firma. Google und Facebook haben vermutlich trotzdem Daten. Kleinere Unternehmen vielleicht tatsächlich nicht.

Wirklich interessant ist aber der Irrglaube, dass man mit Open Source den Überwachungsprogrammen der Geheimdienste entgehen kann. Die Grunde für diesen Irrglauben bildet das PRISM-Programm. Denn Teil der durch Snowden offen gelegten Dokumente Überwachung war auch PRISM und wir wissen, dass US-Firmen in einem gewissen Maße Daten an die Geheimdienste weitergeben (müssen). Open Source Software wie Linux ist mit diesen Firmen weniger verwoben als beispielsweise Windows oder macOS. Das war es aber schon.

Datenerhebung durch Firmen ist nicht das gleiche wie staatliche (Massen-)Überwachung und sollte auch nicht argumentativ vermischt werden.

Operationen zur Massenüberwachung

Jeder, der irgendwie im Jahr 2013 dem Mythos „Open Source hilft gegen Überwachung“ aufgesessen ist, sollte sich noch einmal den entsprechenden Wikipedia-Artikel zu den Enthüllungen von 2013 (ist auch schon wieder eine Weile her!) durchlesen. Wir wissen dadurch, dass die Geheimdienste mehrerer Staaten unter anderem folgende Maßnahmen zur Überwachung durchführen:

  • Die NSA betreiben ein Rechenzentrum, das theoretisch groß genug ist um die Kommunikation der Weltbevölkerung zu speichern. Es gibt bekannte Programme um den Telefonverkehr kompletter Länder mitzuschneiden.
  • Die Geheimdienste der Five Eyes schneiden den Datenverkehr direkt an den Seekabeln mit.
  • Mehrere Daten wie z. B. Frankreich oder Brasilien speichern in großem Umfang die Metadaten der Internetnutzung und Kommunikation der Bevölkerung.
  • In Deutschland lauscht der BND am Frankfurt Internetknoten DE-CIX.
  • Die NSA nutzt hortet Sicherheitslücken und nutzt diese gezielt aus. WannaCry war sicher nur ein Beispiel von vielen.

Diese Liste ließe sich fast endlos fortführen. Und das ist mehrheitlich der Stand von vor 2013, also mittlerweile mindestens 8 Jahre her. Eine Ewigkeit bei dem Tempo der aktuellen Entwicklung. Es umfasst auch nicht die chinesischen und russischen (semi-)staatlicher Cyberoperationen und deren Überwachungsprogramme. Es handelt sich dabei auch nur um die automatisierte Massenüberwachung der Menschheit und keine gezielten Aktivitäten gegen einzelne Individuen, bei denen – nach allem was wir an Informationen haben – Aufwand und Möglichkeiten noch einmal deutlich ansteigen.

Die alleinige Fokussierung auf PRISM ist also eine extreme Verkürzung.

Und diesem allumfassenden Überwachungsprogramm der besten Geheimdienste der Welt entgehe ich wirklich, indem ich ein Open Source-Betriebssystem nutze? Ernsthaft? Wer das glaubt, hat die Fähigkeit der Dienste und Dimension dieser Programme nicht ansatzweise begriffen. Er hat zudem ein idealisiertes Bild freier Software, das einem Realitätscheck nicht stand hält.

Warum sollte quelloffene Software vor Überwachung schützen? Die Argumentation dafür basiert auf ideologischen Scheuklappen und Fehlannahmen.

Allgemeine (Fehl-)Annahmen

1. Es geht nicht um dein Gerät

Automatisierte Massenüberwachung bedeutet nicht, dass Tausende Mitarbeiter sich händisch auf jedes Gerät einloggen und dort Kamera und Mikrofon aktivieren wie in einem schlechten Film. Dein Gerät interessiert niemanden. Folglich interessiert dein System auch niemanden. Es ist egal, ob du Linux, FreeBSD, macOS oder Windows nutzt.

Die Datenströme sind interessant und hier gibt es Unterschiede zwischen den Systemen. Das hängt aber massiv von der individuellen Konfiguration ab. Auch macOS oder Windows lassen eine erhebliche Reduktion des Datenabflusses zu und auch Linux lässt sich als wahre Datenschleuder betreiben.

2. Daten fallen bei den Diensten an

Wirkliche Datenmengen fallen bei den genutzten Diensten an. E-Mail, Videokommunikation, Cloud-Dienstleister – die Liste ließe sich endlos fortführen. Diese Datenströme sind auch im Fokus der automatisierten Überwachung. Es ist streng genommen egal was diese Dienste für Software vorgeben zu nutzen. Wir können es nicht nachvollziehen.

Wir kennen auch nicht die internen Qualitätsstandards, die politische Ausrichtung des Dienstes und ob das Land, in dem der Dienst betrieben wird, über irgendwelche legalen oder illegalen Maßnahmen Druck auf den Dienstbetreiber ausüben. Selbst deutsche Gesetze haben hier Überraschungen, als Stichwort sei hier die Vorgaben zur Ausleitung von Daten für E-Mail Anbieter genannt.

Der kleine Anbieter mit primär Open Source Software im Einsatz ist hier in keiner stärkeren Position gegenüber den staatlichen Behörden als Microsoft oder Apple. Er ist bestenfalls nicht so sehr im Fokus, aber das kann sich auch schnell ändern.

Die Reduktion der genutzten Dienste und die Reduktion der erzeugten Daten sind hier die Lösung.

3. Verschlüsselung, Verschlüsselung, Verschlüsselung

Wirklich relevant ist gute und aktuelle Verschlüsselung. Das war 2013 so und ist 2021 so. Zumindest sofern man noch nicht gänzlich der pessimistischen Sicht verfallen ist, dass besonders fähige Geheimdienste wie die NSA auch diese schon längst knacken können.

Verschlüsselung ist kein exklusives Vorrecht von Open Source und die wirkliche Gefahr geht hier nicht von fehlender Verschlüsselung, sondern durch schlechte Umsetzung aus. Zentrale Bibliotheken des Open Source-Ökosystems haben hier in der Vergangenheit nicht geglänzt. Es gibt auch genug Mischsysteme, wo grundsätzlich proprietäre Dienste auf quelloffene Krypto-Bestandteile setzen.

Es gibt somit keinen belastbaren Grund, dass freie Betriebssysteme hier prinzipiell im Vorteil wären.

Mythen über Open Source

1. Die Einsehbarkeit des Codes sagt nichts über die Qualität

Offen einsehbarer Quellcode gilt in vielen Kreisen als Synonym für sicher und vertrauenswürdig. Im Zuge der Debatte um Projekte wie die Corona Tracing App oder die Luca App hat sich das vermutlich nochmal verstärkt.

Freie quelloffene Software und ihre Entwicklungsprinzipien sind ganz sicher nett für einen vertrauenswürdigen und integren Code. Es können halt mehr Leute rein gucken und man vermeidet dadurch vielleicht doofe Fehler und schlechte Sicherheitskonzepte. Also durchaus Punkte, an denen Geheimdienste ansetzen könnten. Das ist ein Pluspunkt für quelloffene Software, den man nicht leugnen kann.

Guter Code und gute Sicherheitskonzepte sind aber kein Exklusivrecht von freier Software, auch Entwickler proprietärer Software können das. Das sollte man nicht pauschal in Abrede stellen. Es sind ja sogar oft die gleichen Menschen, die mal für freie Software beisteuern und mal für ein proprietäres Projekt arbeiten.

2. Es geht nicht um Hintertüren

Das Kernproblem ist hier aber ein Mythos. Warum sollte die Code-Einsicht denn bei der Frage staatlicher Überwachung so zentral sein? Wer glaubt, freie Software hilft gegen die Geheimdienste, sitzt der alten Verschwörungserzählung auf, diese würden heimlich Hintertüren in Software einbauen. Nach allem was wir an Informationen haben, ist das für die Dienste aber überhaupt nicht notwendig.

Denn wie wir oben bei den Überwachungsprogrammen gesehen haben, geht es primär um Infrastrukturen und diese unterliegen sowieso staatlicher Regulierung. Hier spielt Überwachung durchaus eine Rolle. Es geht also selten um die Betriebssysteme selbst.

Auf Ebene der Betriebssysteme und Software nutzen die Geheimdienste genaue Kenntnisse der Systeme und insbesondere das Horten von Sicherheitslücken. Für Letzteres hatten wir in den vergangenen Jahren genug Belege. Sicherheitslücken machen nicht halt vor freier Software.

Die Verschwörungserzählung der Hintertür befeuert letztlich den Mythos „Open Source hilft gegen Überwachung“ und schafft damit einen weiteren Mythos.

3. Die Grenzen der Transparenz

An dem Punkt kommt immer jemand, der sagt, dass man halt bei proprietärer Software nicht nachvollziehen kann, wie diese funktioniert und nur freie Projekte wären unabhängig. Argumentativ stehen dahinter zwei riesige Illusionen und eine Unterschlagung: Es ist die Illusion des einsehbaren Quellcodes, der Weltgemeinschaft „Open Source Community“ und die Behauptung der totalen Intransparenz proprietärer Software.

Die Einsehbarkeit freier Software beschränkt sich auf den zur Verfügung gestellten Code. Niemand kann mit Sicherheit sagen ob dieser auch wirklich zum Einsatz kommt, oder ob der Dienst nicht eine modifizierte Variante verwendet. Das gilt für den großen Konzern ebenso wie für den Wohnzimmer-Admin. Denn – wie oben schon gesagt – die Daten fallen bei den Diensten an.

Die Weltgemeinschaft „Open Source Community“ existiert zudem nicht oder nur als Idee. Jeder Entwickler hat eine Staatsangehörigkeit und viele Projekte haben festgelegte Rechtsformen und Registrierungen. Sie müssen sich ebenso den Gesetzen ihrer Herkunftsstaaten unterwerfen wie jede andere proprietäre Firma auch.

Diese beiden Illusionen ergänzt eine Unterschlagung. Befürworter freier Software zeichnen ein besonders negatives Bild der Analysemöglichkeiten proprietärer Software. Diese ist zwar sicherlich nicht so gut wie bei quelloffener Software, aber es ist ein Mythos, dass proprietäre Software alles machen könnte.

Zusammengefasst

Natürlich gibt es Software mit guten Sicherheitskonzepten und es gilt auch weiterhin, Daten, die nicht anfallen, können nicht abgegriffen werden. Es ist auch keine schlechte Idee Daten nicht frei Haus ins Internet zu stellen, weil die automatisierte Massenüberwachung primär auf den weltweiten Datenverkehr abzielt. Angriffe auf den einzelnen Anwender und seine Daten sind natürlich nicht die Regel.

Weil viele Anbieter proprietärer Software gleichzeitig massiv Datenerhebung betreiben (siehe oben) und diese quasi „auf die Reise“ schicken, sind diese oftmals keine gute Idee.

Das bedeutet aber nicht, dass proprietäre Software zwangsläufig schlechte Konzepte hat und durchweg nicht datensparsam funktioniert. Es bedeutet auch nicht, dass jeder Dienst im Umfeld der „Open Source Community“ automatisch super wären. Es kommt immer auf den Einzelfall an.

Noch mal zur Erinnerung: Wir haben es mit den größten jemals da gewesenen Überwachungsprogrammen zu tun, die von finanzstarken und fähigen Geheimdiensten verwirklicht werden. Wer wirklich glaubt, er könne sich davor mit dem Einsatz von Open Source Software und freien Systemen wie Linux oder AOSP-Android schützen belügt sich selbst.

Es gibt sicherlich hundert gute Gründe für freie Software und freie Systeme wie Linux oder AOSP. Den Schutz vor staatlicher Überwachung sollte man aber lieber aus der Liste streichen.

Eine gute Nachricht zum Schluss: Man steht sicher auch nicht schlechter da, wenn man Linux oder ein freies Android nutzt.

Der Artikel Open Source gegen Überwachung? erschien zuerst auf [Mer]Curius

14. April 2021

Wenn es um den sicheren Einsatz von Smartphones geht, kommen immer vermeintliche Experten um die Ecke, die in Customs ROMS auf AOSP-Basis die Lösung erblicken, weil sie als einzige nicht von einer großen Firma dominiert werden. Im Alltag ist das ein ziemlich mühseliges Unterfangen. Eine Wahrheit, die gerne unterschlagen wird.

Ich verwende Custom ROMs schon fast seit es sie gibt. Ursprünglich als primäres System, dann bin ich mit meinem Hauptgerät über ein BlackBerry Classic zum iPhone gekommen. Androids mit Custom ROM gab es dann nur noch als Zweitgerät. Dieses habe ich kürzlich ersetzt und dazu schon ein wenig geschrieben. Nach ein paar Monaten möchte ich hier das eher düstere Bild bestätigen. Es gibt Szenarien, da kann man ein Android mit Custom ROM nutzen. Es hat aber Limitationen und es ist nichts für die Allgemeinheit – noch nicht mal für eine technik-affine Zielgruppe. Die sinkenden Nutzungszahlen haben schon ihre Gründe.

Um diesen Artikel jetzt nicht unnötig kompliziert zu machen, lassen wir den kompletten Bereich des Hardware-Kaufs mal weg. Custom ROM-Support ist nämlich eine wackelige Geschichte geworden. Die von LineageOS offiziell unterstützte Geräteliste könnte in weiten Teilen auch der Bestellkatalog eines Technikmuseums sein.

Natürlich kann man auch direkt bei Google ein Pixel kaufen und bekommt an GrapheneOS mit Support von maximal drei Jahren, weil GrapheneOS nur für den Zeitraum des offiziellen Herstellersupports unterstützt wird. GrapheneOS ist zudem eine One-Man-Show, die jederzeit enden könnte. Die Lösung „Ich kaufe ein überteuertes Gerät von Google mit zu kurzem Supportzeitraum, weil ich die Politik des Konzerns falsch finde.“ stimmig zu finden fällt mir persönlich eher schwer.

Aber lassen wir das wirklich beiseite und nehmen wir mal an, man hat ein halbwegs aktuelles Gerät, das nicht von Google stammt und eine lebhafte Entwickler-Community vorweisen kann. In meinem Fall ist das ein Samsung Galaxy S10. Es gibt da aber noch ein paar andere Modelle (allerdings mit stetig abnehmender Tendenz).

Offiziellen LineageOS-Support gibt es nicht und selbst wenn es ihn gäbe, kann der jederzeit spontan enden. Das funktioniert nicht wie bei Debian, wo der Support für ein einmal veröffentlichtes Release garantiert ist, sondern Maintainer können jederzeit abspringen. Das S9 ist beispielsweise gerade einfach so aus der Liste verschwunden. Zusammen mit vielen anderen Geräten.

Auf XDA-Developers gibt es zwar viele Custom ROMs, aber fast alle kann man vergessen. XDA-Developer finden nämlich mehrheitlich SELinux und Geräteverschlüsselung ein Hindernis für das hemmungslose Basteln am System (oder ihnen fehlt das Knowhow). Das ist absolut legitim, wenn mein Fokus auf der Modifizierbarkeit liegt, aber die Stoßrichtung vieler Empfehlungen für Custom ROMs kommt aus der Reihe der Google-Gegner und Datenschützer. Hier muss der Aluhut irgendwelche Funktionen des Gehirns beeinträchtigen, wenn man es als einen Gewinn an Sicherheit betrachtet, ein Gerät mit sich rumzutragen, das jederzeit bei Verlust von einem Dritten ohne spezielles Knowhow ausgelesen werden kann.

Natürlich gibt es auch tolle und fähige Entwickler, die gute Custom ROMs (meist auf LineageOS-Basis) veröffentlichen. Nur meistens sind das Projekte eines einzelnen Entwicklers oder bestenfalls ganz kleiner Entwicklerteams. Die verfügbare Zeit bei so einem ehrenamtlich betreuten Projekt schwankt halt stark – was niemand den Entwicklern zum Vorwurf machen kann – oder die Entwickler verlieren plötzlich das Interesse, weil sie privat ein neues Gerät nutzen. Andere ROMs suggerieren mehr offiziell unterstützte Geräte, aber guckt man da mal unter die Haube, ist das meistens eine ähnlich halbseidene Basis. Und plötzlich verwendet man dann als Anwender ein Custom ROM, dessen Sicherheitspatch-Level auf Dezember 2020 steht. Ich spare mir jetzt das Bild mit dem Aluhut, es sollte jedem klar sein, dass das nicht gut ist.

Wenn es gut läuft, springt ein anderer Entwickler in die Bresche. Ein Wechsel von einem Projekt zum Nächsten ist aber nicht einfach so möglich, sondern Android muss komplett neu installiert und alle Daten neu eingespielt werden. Als Nutzer kann man hier nur hoffen, dass der neue Entwickler lange am Ball bleibt, weil man ansonsten in wenigen Monaten wieder neu installieren darf.

Nun ist eine aktuelle ROM nicht alles. Moderne Smartphones haben viel Firmware und auch hier gibt es (bei guten Herstellern) Fehlerbehebungen und Sicherheitsaktualisierungen. Anwender der Herstellerbetriebssysteme aktualisieren diese einfach über die normalen Updates mit, aber das geht bei Custom ROMs nicht. Wenn man als Anwender also eine aktuelle Firmware haben will (Achtung erst einmal natürlich umfassend recherchieren, ob das sich überhaupt mit den Custom ROMs verträgt) darf man mehr oder minder vertrauenswürdige Distributoren bemühen. Das variiert je nach Hersteller, bei Samsung greifen viele auf Sammobile zurück.

Dort lädt man ein Archiv für die eigene Version herunter. Entweder mit dubiosen Downloadtools, dem langsamen Free-Download oder man zahlt für Premium. Im ganzen Wust an unterschiedlichen Versionen (die meisten Hersteller werfen zig Varianten ihrer Smartphones mit Dutzend Marketing-Namen auf den Markt) muss man natürlich die richtige Variante finden. Das Archiv muss man entpacken, weil man ja keine ganze Hersteller-ROM flashen will. Die einzelnen Dateien mit den richtigen Befehlen via Tools wie heimdal oder adb dann im richtigen Modus auf das Smartphone flashen. Nicht vergessen natürlich drei Kreuze, ein Ave Maria und fünf Mal um die eigene Achse drehen, um das Gerät auch wieder starten zu lassen.

Das Prozedere wiederholt man dann alle paar Monate und erzählt fröhlich im Freundeskreis, dass Custom ROMs die Lösung aller Probleme sind. Wer dieses Nutzungsverhalten normal findet, hat aber schon lange nicht mehr über den Tellerrand geblickt.

Denn dann empfiehlt man für sicherheitsbewusste Anwender als Daily Driver ein iPhone. Das kriegt nämlich auch so Updates, hat einen Hersteller, der nicht sein Geld mit hemmungsloser Datensammlung/-auswertung verdient und ist hinsichtlich der Sicherheit den Geräten der meisten Android-Anwendern meilenweit voraus. Denn realistischerweise ist wegen oben geschilderte Problem selbst ein Custom ROM meist veraltet oder hat irgendwelche Sicherheitsdefizite, weil man als Anwender eben doch nicht immer Zeit für die umfassende Pflege hat. Dann ist der Sicherheitsgewinn eher marginal.

Custom ROMs sind nett als Zweitgerät, für den IT-Spieltrieb oder für eng begrenzte Nutzungsszenarien. Wer aber ernsthaft glaubt, dass sie in ihrer jetzigen Form eine Alternative für eine breitere Öffentlichkeit (und damit meine ich alles was über den XDA-Anwenderkreis hinaus geht) hat den Bezug zum Nutzungsverhalten der Mehrheit schon lange verloren.

Der Artikel Custom ROMs im Alltag – Installieren und flashen in Dauerschleife erschien zuerst auf [Mer]Curius

13. April 2021

Mit Common Voice stellt Mozilla den weltweit größten öffentlichen Datensatz menschlicher Stimmen bereit – kostenlos und für jeden nutzbar. Zum Datensatz beitragen kann jeder. Nun hat Mozilla eine Partnerschaft mit Nvidia angekündigt, in deren Rahmen Nvidia 1,5 Millionen Dollar in Common Voice investieren wird.

Der Markt für Spracherkennung wird von den ganz großen Namen kommerzieller Anbieter dominiert: Amazon, Apple, Google, Microsoft. Darum hat Mozilla im Jahr 2017 das Projekt Common Voice gestartet. Mit Common Voice versucht Mozilla, eine kostenlose Alternative zu etablieren, zu der jeder beitragen kann und die jedem zur Verfügung steht. Denn nach Ansicht von Mozilla sollte diese Technologie für jeden zugänglich sein und nicht den großen Anbietern vorbehalten sein. Mehr als 164.000 Menschen weltweit haben bereits zu Common Voice beigetragen. Das Ergebnis sind über 9.000 Stunden Sprach-Daten in 60 verschiedenen Sprachen.

Mozilla hat nun eine Partnerschaft mit Nvidia bekannt gegeben, in deren Rahmen Nvidia 1,5 Millionen Dollar in Common Voice investieren wird. Erklärtes Ziel ist die Demokratisierung und Diversifizierung der Entwicklung von Sprachtechnologie.

Die Investition soll das Wachstum von Common Voice beschleunigen, die Einbindung von mehr Gemeinschaften und Freiwilligen fördern sowie die Anstellung neuer Mitarbeiter ermöglichen. Nvidia möchte Common Voice zum Entwickeln vortrainierter Sprachmodelle nutzen, welche die Vielfalt an Menschen und Stimmen widerspiegeln soll, die das Internet ausmachen, und diese Sprachmodelle wiederum kostenfrei zur Verfügung stellen.

Der Beitrag Nvidia investiert in Mozilla Common Voice erschien zuerst auf soeren-hentzschel.at.

Für mich war lange ein großer Nachteil an WeeChat, dass ich im Gegensatz zu Thunderbird keine Desktop-Benachrichtigungen erhalten habe, wenn ich angepingt wurde. Eine Lösung dazu habe ich im ArchWiki gefunden.

Ich habe mich gegen die Lösung mit einem Plugin entschieden, da dass die Sache doch kompliziert hätte, was in diesem Punkt nicht nötig ist. Beide Lösungen benötigen libnotify um die Benachrichtigungen anzuzeigen.

Also sprach Zarathustra:

sudo apt-get install libnotify-bin

bzw.

pacman -S libnotify

Danach öffnet man WeeChat und gibt folgenden “Befehl” in WeeChat ein:

/set trigger.trigger.beep.command "/print -beep;/exec -bg notify-send -i '/usr/share/icons/hicolor/32x32/apps/weechat.png' 'IRC Notification' "${tg_tag_nick}: ${tg_message_nocolor}""

Bei Laptops mit weniger Arbeitsspeicher kann Zram Wunder bewirken. Zram erstellt einen komprimierten Arbeitsspeicher. Wenn man will, dass sich ZRam perfekt in Systemd integriert, ist Systemd-Zram ein guter Fork, der sich auch sehr einfach unter Arch (AUR) und unter Debian, Ubuntu etc. installieren lässt.

Installation

Installation unter ArchLinux

Die Installation erfolgt unter Arch am Besten mithilfe des AURs, kann allerdings auch manueller erfolgen Click!. Ich will hier allerdings nur die Installation mithilfe des AURs beschreiben. (Ohne AUR-Helfer, wie z.B. yay oder trizen)

mkdir -p ~/aur && cd ~/aur
git clone https://aur.archlinux.org/systemd-zram.git && cd systemd-zram

Nun erfolgt das Bauen des Paketes:

makepkg -s

Danach kann mit su in den Root-Account gewechselt werden und das Paket mit folgendem Befehl installiert werden:

pacman -U $PWD/systemd-zram-*.pkg.tar.zst

Dieser Schritt weicht natürlich ab, wenn man sudo installiert hat oder su als Alias su -l hat. Aber dann sollte man auch wissen, wie man das macht.

WICHTIG: Bei der Installation über das AUR wird man (genauso wie bei allen folgenden Methoden) nicht automatisch über Updates informiert!!

Installation unter Debian

Unter Debian, Ubuntu etc. kann systemd-zram auch installiert werden.

Man klont das Git-Repo (git clone https://github.com/mdomlop/systemd-zram.git) und führt danach folgende Befehle aus:

make debian_pkg
sudo dpkg -i systemd-zram_*.deb

Installation unter anderen Systemen

Die Installation kann natürlich auch mithilfe des klassischen make && make install erfolgen.

Benutzung

Der Service kann wie gewohnt mit

systemctl enable systemd-zram --now

aktiviert werden und mit systemctl gestartet bzw. beendet werden.

Wie gesagt, komprimiert zRam einen Teil des Arbeitsspeichers und erledigt dies mit unterschiedlichen Algorithmen. Der aktuell verwendete Algorithmus wird, wird durch den Inhalt der Datei /sys/block/zram0/comp_algorithm angezeigt. In dieser stehen auch alle anderen möglichen Algorithmen.

cat /sys/block/zram0/comp_algorithm

ergibt dann zum Beispiel

[lzo] lzo-rle lz4 lz4hc 842 zstd 

Der aktuell verwendete Algorithmus steht also in [] und ist im Moment lzo. Einen Vergleich der möglichen Algorithmen findet man unter https://github.com/mavam/compbench.

Einen anderen Algorithmus kann man in der Datei /lib/systemd/system/systemd-zram.service einstellen - dort muss der Wert Environment=COMP_ALGORITHM=lzo angepasst werden.

Wann nützt zRam?

Wenn man 64GB RAM hat, bringt zRAM wahrscheinlich keinen großen, merkbaren Unterschied. Je weniger RAM man aber hat, umso größer sind die Vorteile von zRAM. Allerdings kann zRAM auch bei viel Arbeitsspeicher Vorteile bringen, wenn man zum Beispiel gerade sehr arbeitsspeicherintensive Sachen wie Virtualisierung macht.

Mehr Swap?

Wenn man zRAM nutzt, wird dieser als Swap-Speicher angezeigt, weshalb man auch mithilfe von

swapon -s

überprüfen kann, ob der zRAM aktiviert ist. Den “alten” Swap jedoch nicht entfernen, er wird zum Beispiel noch für den Ruhezustand benutzt!

12. April 2021

Nach dem Update auf Nextcloud 21 gab es das Problem, dass die CRON Jobs nicht mehr liefen und der OCC Befehl “sudo -u www-data ./occ db:add-missing-indices” zur Erstellung der fehlenden Indizes auch nicht mehr funktionierte. Ein Aufruf brachte lediglich das Ergebnis “killed” bzw “Getötet". Was so viel heißt wie: Abgebrochen und nicht durchgeführt.

Lösung
Wenn eine Nextcloud mit APCU konfiguriert ist, dann benötigt Nextcloud 21 in der PHP Konfiguration unter /etc/php/7.4/cli/conf.d/20-apcu.ini oder /etc/php/8.0/cli/conf.d/20-apcu.ini eine weitere Zeile, die einfach unten angehängt wird, die folgendermaßen aussieht

apc.enable_cli=1

 

Die Lösung des Problems stammt von  hier.

 

 

 

 

11. April 2021

  1. Proprietäre Softwareperlen für Linux Teil I: SoftMaker Office
  2. Proprietäre Softwareperlen für Linux Teil II: moneyplex
  3. Proprietäre Softwareperlen für Linux Teil III: Master PDF Editor
  4. Proprietäre Softwareperlen für Linux Teil IV: VueScan

Linux und die Idee der freien Software sind eng verwoben. Proprietäre Software kann zwar theoretisch für Linux vertrieben werden, das ideologische Umfeld und die geringe Verbreitung haben hier aber kein großes Ökosystem entstehen lassen. Einige prominente Ausnahmen möchte ich hier kurz vorstellen. Im vierten Teil: VueScan von Hamrick.

Ich habe bereits 2014 meine Arbeitsweise komplett digitalisiert. Sowohl was den privaten Papierkram betrifft als auch meine wissenschaftliche Tätigkeit. Das Prinzip ist denkbar einfach: Alles was an Papier reinkommt, jage ich durch einen Einzugscanner (immer noch der gleiche Brother Dokumentenscanner) und speichere es auf meinem System in einer simplen Dateistruktur. Auf eine umfangreiche DMS-Lösung verzichte ich bewusst, weil man sich damit einem gewaltigen Vendor-Lock-in-Risiko aussetzt. Eine gute Dateistruktur, PDF + OCR und eine mächtige Suchfunktion auf dem Desktop (Spotlight und Baloo machen einen guten Job) reichen völlig aus.

2020 war ich für diesen Ansatz aus zweierlei Gründen unglaublich dankbar. Im April schlossen im ersten Lockdown auch alle wissenschaftlichen Bibliotheken und seitdem ist der Besuch in Bibliotheken je nach Bundesland erheblich eingeschränkt. Ich hatte alle relevante Literatur privat gescannt und konnte einfach weiterarbeiten. Im Oktober ging ich dann unter die Berufspendler und bei zwei Wohnsitzen ist es sehr praktisch, wenn man alle relevanten Unterlagen immer auf dem Notebook dabei hat (umso mehr braucht es starke Verschlüsselung).

VueScan

Schwache Alternativen

Scannen unter Linux ist insgesamt einfacher als 2014. Manuelle Bearbeitung irgendwelcher udev-Richtlinien und ständige Treiberprobleme sind nicht mehr so an der Tagesordnung wie damals. Ansonsten sind die Fortschritte aber marginal.

Mancher mag sich jetzt denken: Wozu braucht es noch eine Scanner-Software für Linux? Und ja, der Sachverhalt ist auf gewisse Art sehr traurig. Linux hat alles, was es für eine gute Scan-Lösung braucht. Eine ungewöhnlich einheitliche Grundlage (sane), tolle freie Lösungen wie tesseract für OCR und gute Werkzeuge für Grafikmanipulation.

Nur bleibt es eben bei diesen Einzellösungen. Die KDE-Lösung Skanlite ist im letzten Jahrtausend stecken geblieben, das gilt ebenso für xsane und die GNOME-Alternative SimpleScan folgt der GNOME-Philosophie (hält den Nutzer also für einen Idioten, den man nicht mit Optionen überfordern darf). GScan2PDF ist zwar theoretisch sehr mächtig, aber ich habe es nie geschafft, damit gute OCR-Ausgaben hinzubekommen. Gleiches gilt für Paperwork.

Um mit Linux zu scannen, braucht man also mehrere Tools. Sane und Treiber, eine Scan-Anwendung, eine OCR-Lösung, eine PDF-Bearbeitung. Das ist nicht unmöglich, aber für den täglichen Einsatz viel zu kompliziert und zeitaufwendig. Oder man nimmt eben VueScan von Hamrick.

Manche mögen mir wieder eine negative Sicht auf die Möglichkeiten freier Software vorwerfen, aber mit dieser Meinung scheine ich nicht alleine zu sein:

Leider sind Scannerprogramme unter Linux nicht vergleichbar zu den Programmen, die man unter Windows kennt. Es fehlen durchweg wichtige – professionelle – Funktionen (z.B. Entrastern oder Staub/Fleckenentfernung).

ubuntuusers Wiki – Scanner

Funktionen

VueScan spielt seine Stärken gleich doppelt aus. Es ist von Sane unabhängig und unterstützt unfassbar viele Geräte. VueScan wird deshalb gerne beworben, wenn es um die Unterstützung von Geräten geht, die schon lange keinen Hersteller-Support mehr bekommen und für die keine Treiber mehr zur Verfügung gestellt werden.

VueScan hat aber auch sehr viele Funktionen. Die Professional Edition unterstützt als Kernfunktionen:

  • Flachbett und Dokumenteneinzug.
  • Duplex
  • OCR
  • Optimierung für Fotos

Hinzu kommen ungeahnte Möglichkeiten zur Feinjustrierung. Als Beispiel kann hier ein Screenshot der erweiterten Einstellungen dienen:

Diese muss man aber nicht nutzen, da VueScan bereits bei Standardeinstellungen sehr gute Ausgaben liefert.

VueScan nutzt für die Oberfläche Gtk2, wodurch es sich leidlich gut in moderne Desktopumgebungen integriert.

Ähnlich wie bei den anderen proprietären Softwarelösungen, die in dieser Serie vorgestellt werden, bin ich froh, VueScan nutzen zu dürfen. Ich mag Linux und arbeite gerne damit, aber wenn es in den semi-professionellen Office-Bereich geht, ist freie Software einfach oft unzureichend. Für Office, Scannen, Banking bin ich einfach dankbar, auf professionelle Software zurückgreifen zu können, die ein funktionierendes Geschäftsmodell haben und deren Entwickler diese langfristig pflegen.

Der Artikel Proprietäre Softwareperlen für Linux Teil IV: VueScan erschien zuerst auf [Mer]Curius

10. April 2021

Die MZLA Technologies Corporation hat mit Thunderbird 78.9.1 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.9.1

Mit Thunderbird 78.9.1 hat die MZLA Technologies Corporation ein Update für seinen E-Mail-Client veröffentlicht. Dieses beinhaltet neben kleineren Fehlerbehebungen auch die Behebung von drei Sicherheitslücken in Zusammenhang mit OpenPGP.

Der Beitrag Thunderbird 78.9.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

1 Einleitung

Ich nutze RMarkdown und RStudio schon seit längerem für statistische Auswertungen und Beispielrechnungen in der Lehre. Für meine Briefe und Rechnungen habe ich immer LaTeX verwendet.

Im Dezember habe ich dann dieses Video von Rob Hyndman gesehen:

https://www.youtube.com/watch?v=_D-ux3MqGug

…und dachte mir: das will ich auch!

Zu dieser Anleitung gibt es ein Github-Repo mit dem Template-Paket und der Rmd-Datei dieser Anleitung:
https://github.com/produnis/RMarkdownMyStyle.

Außerdem ist der Arikel bei RPubs.com veröffentlicht, und dort etwas „hübscher“ dargestellt, siehe https://rpubs.com/produnis/RMarkdownTemplates.

1.1 Vorwarnung

Diese Anleitung setzt voraus, dass Sie Ihre Briefe und Rechnungen bereits in LaTeX schreiben, bzw, dass eine Brief- oder Rechnungsvorlage in LaTeX vorliegt. In diesem Tutorial möchte ich zeigen, wie Sie Ihre LaTeX-Vorlagen als Templates in RMarkdown verfügbar machen können, um die Briefe im PDF-Format zu erzeugen. Das heisst, dass letztendlich Ihr RMarkdown wieder über LaTeX nach PDF kompiliert wird. LaTeX muss also installiert sein, und Sie müssen das gewünschte Layout bereits in LaTeX erstellt haben.
Ebenso muss das bookdown-Paket installiert sein.

install.packages("bookdown")

Die Überführung nach Rmarkdowngeht am einfachsten, indem man sie als Templates in einem eigenen R-Paket abpeichert.

2 Ein eigenes R-Paket anlegen

Klicke in RStudio auf File \(\rightarrow\) New Project...

Wählen Sie R Package aus.


Figure 2.1: R-Package wählen

Geben Sie dem Paket einen Namen, z.B. MyStyle, und klicken Sie auf Create Project...


Figure 2.2: Packagenamen wählen

Im Arbeitsverzeichnis des neuen Projekts liegen nun die notwendigen Dateien und grundlegenden Paketordner, wobei wir das meister ignorieren können.

In DESCRIPTION können Sie eine Beschreibung des Pakets vornehmen. Wenn Sie das Paket eh nie veröffentlichen, können Sie sich diesen Schritt sparen.

Im Verzeichnis R werden alle Scriptdateien automatisch ausgeführt, sobald das Paket aktiviert wird. Dort hat RStudio bereits die Dummy-Datei hello.R angelegt. Die dort hinterlegte Funktion hello() steht also nach Aktivierung des Pakets zur Verfügung.

Das können wir direkt testen, indem wir das Paket “bauen und installieren”.

Klicken Sie im Datenfenster (rechter oberer Bereich) auf den Reiter Build.


Figure 2.3: Reiter Build

In diesem Bereich können Sie auf den Knopf Install and Restart klicken.


Figure 2.4: Paket installieren

Dadurch wird Ihr neues Paket installiert und automatisch per library(MyStyle) geladen. Sie können nun alle Funktionen Ihres Pakets in der R-Konsole aufrufen. Probieren wir also die Dummy-Funktion hello() aus, die in der Datei R/hello.R hinterlegt ist:

hello()
## [1] "Hello, world!"

Immer dann, wenn Sie dem Paket neue Funktionen (oder Templates) hinzugefügt haben, können Sie es durch Klick auf Install and Restart aktualisieren.

2.1 Ein Template für Briefe anlegen

Templates fürRMarkdown müssen innerhalb des Pakets im Ordner inst/rmardown/templates/ vorliegen.
Jedes Template erhält einen eigenen Unterordner, in welchem die erforderlichen Dateien abgelegt sind. Auch hier folgend die Dateien einer gewissen Struktur.

Mit der Funktion use_rmarkdown_template() aus dem Paket usethis können wir das “Skelett” des neuen Templates erzeugen.
Beginnen wir mit der Briefvorlage. Das Template soll meinBrief heissen.

install.packages("usethis", dependencies = T)
usethis::use_rmarkdown_template(
  template_name = "meinBrief",
  template_dir = NULL,
  template_description = "Meine private Briefvorlage",
  template_create_dir = FALSE
)

Wie Sie sehen, wurden die Unterordner inst/rmardown/templates/meinbrief angelegt.
Hier liegt die Datei template.yaml. Sie enthält die Informationen, die wir der use_rmarkdown_template()-Funktion übergeben haben.

name: meinBrief
description: >
   Meine private Briefvorlage
create_dir: FALSE

Hier müssen wir nichts ändern.

Im Unterordner skeleton liegt die Datei skeleton.Rmd. In ihr werden Beispieltexte und -code hinterlegt, die später beim Aufruf des Templates als Starttext erzeugt werden. Wir benutzen diese Datei, um unser Template zu testen und die benötigten Variablen zu hinterlegen.
Wenn wir unser Template später in RStudio aus den Vorlagen auswählen, dann werden alle Dateien, die im Unterorder skeleton liegen, in das neu erstellte Projekt kopiert.

2.1.1 LaTeX Vorlage

Nehmen wir als Beispiel die folgende LaTeX-Vorlage für einen Brief.
Das Beispiel ist lauffähig, wenn Sie eine Bilddatei mit dem Namen Unterschrift.png im selben Verzeichnis liegen haben.

\documentclass[DIN,
    fontsize=11pt,          % fontsize
    paper=a4,               % page size a4
    firsthead=on,           % display header on first page
    firstfoot=on,           % display footer on first page
    pagenumber=off,         % position of the page number
    parskip=half,           % Use indent instead of skip, half, false
    enlargefirstpage=on,    % more space on first page
    fromalign=locationright, % placement of name in letter head
    addrfield=on,           % address field for envelope with window, on or true
    subject=titled,         % placement of subject, beforeopening or titled
    foldmarks=on,          % print foldmarks
    numericaldate=off,      % display date in numbers only
    KOMAold]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[dvips]{graphicx}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage[utf8]{inputenc}
\usepackage{times}
% \usepackage{lmodern}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{lastpage}
\usepackage[rgb]{xcolor}
\usepackage{hyperref}
\hypersetup{%
    pdfborder=0 0 0,
    pdfauthor={},
    pdftitle={},
    pdfsubject={},
    pdfkeywords={},
    pdfpagemode={UseOutlines},
    bookmarksopen,
    pdfstartview={FitH},
    colorlinks,
    linkcolor={black},
    citecolor={black},
    urlcolor={blue}
  }
\urlstyle{same}

% Randbereiche mit geometry
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=20mm}

\usepackage{lastpage} % letzte Seite anzeigen
\usepackage{marvosym}   
\usepackage{blindtext}

% speichere eigene Variablen für Werte, die häufig drankommen
\newcommand{\myFirstname}{Timm}
\newcommand{\myFamilyname}{Thaler}
\newcommand{\myStreet}{Absenderstr. 7}
\newcommand{\myTown}{47325 Schickensen}

% ---Angaben für das Absenderfeld--------
\setkomavar{fromname}{\flushright\normalfont\textbf{\myFirstname\ \myFamilyname}}
\setkomavar{signature}{\myFirstname\ \myFamilyname}
\setkomavar{fromaddress}{\flushright\normalfont\scriptsize%
Prof. Dr. \myFirstname\ \myFamilyname\\
\myStreet\\\myTown\\%
+49 176 555 984 66\\%
timm@thaler.de\\[2mm]
ING DiBa\\
DE06 505 165 55 5555 4312 64\\[2mm]
Aktenzeichen:\quad\ 2021-4\\
\setkomavar{date}{\today} %datum im Absenderfeld 
Datum:\quad \today}
%---------------------------------------
\renewcommand*\familydefault{\sfdefault}

% Anordnung im Absenderfeld
\setkomavar{firsthead}{}
\setkomavar{location}{%
  \raggedleft
  \usekomavar{fromname}\\
  \usekomavar{fromaddress}
}

% Absender auch über dem Empfängeradressfeld
\setkomavar{backaddress}{\myFamilyname\ | \myStreet\ | \myTown}

% signatur mit Unterschrift
\setkomavar{signature}{\includegraphics[width=25mm]{Unterschrift.png}\\\myFirstname\ \myFamilyname} 
%
% --------------kopf/fusszeile----------------
\usepackage{scrlayer-scrpage}
\clearmainofpairofpagestyles
\cfoot{\flushright\scriptsize\normalfont Seite \thepage\ von \pageref{LastPage} }
\RedeclarePageStyleAlias{empty}{scrheadings}
%----------------------------------------------
%
\setkomavar{date}{} % Datum wieder löschen
\setkomavar{subject}{Dies ist der Betreff}
\setlength{\parindent}{0pt}

% positionierung von Absender und Empfängerboxen
\makeatletter
  \@setplength{backaddrheight}{0pt}% because backaddress=off
  \@setplength{toaddrhpos}{2.5cm}%distance from left
  \@setplength{toaddrvpos}{5cm}%distance from top
  \@setplength{toaddrheight}{3.5cm}%height of the addressbox
  \@setplength{toaddrwidth}{10cm}% width of the addressbox
  \@addtoplength{locwidth}{45mm} % width of ABSENDERbox
  \@setplength{lochpos}{2cm}%distance from top
  \@setplength{locvpos}{32mm}%distance from top
  \@setplength{refvpos}{11cm}% Abstand des Haupttextes von top
\makeatother
%------------------------------------------------------------------------------------

\begin{document}
%
\begin{letter}{Andrea Empfängerin\\
Schloss Schalkenstein\\ 
Adressatenstr. 23\\
22204 Briefkasten
}
%
\opening{Sehr geehrte Frau Empfängerin,}
%
\blindtext[1]

\closing{Mit freundlichen Grüßen,
}
\end{letter}
\end{document}  

Die Datei erzeugt folgendes PDF:


Figure 2.5: PDF-Version des Briefs

Den LaTeX-Code übertragen wir nun in unser Template. Hierfür muss im Ordner inst/markdown/templates/meinbrief der Unterordner
resources angelegt werden. In diesem erzeugen wir die Datei meinbrief.tex und kopieren den LaTeX-Code hinein.

file.edit("inst/markdown/templates/meinbrief/resources/meinbrief.tex")
# kopiere nun den LaTeX Code hierhin.

Als nächstes kopieren wir die Bilddatei für die Unterschrift in den skeleton-Ordner. In unserem Beispiel heisst sie Unterschrift.png.


Figure 2.6: Datei Unterschrift.png

Ab jetzt wechseln wir immer zwischen den Dateien skeleton.Rmd und meinbrief.tex hin und her.

2.1.2 skeleton.Rmd und LaTeX-Datei anpassen

Schauen wir uns zunächst die Datei skeleton.Rmd an.

Hier löschen wir den Beispieltext und belassen nur die Kopfzeile

---
title: "Template Title"
author: "Your Name"
date: "The Date"
output: output_format
---

In der Kopfzeile werden Variablen vergeben. So hat z.B. Variable title derzeit den Wert Template Title,
und date hat den Wert The Date.

Wir können uns dies zu nutze machen. In unserem LaTeX-Code sind all diese Variablen referenzierbar, wenn wir ihren Namen in Dollarzeichen einrahmen, also z.B. $title$.
Wir können im Kopfbereich beliebige neue Variablen erzeugen und diese dann innerhalb der LaTeX-Vorlage nutzen.

Wir gehen also in die Datei meinbrief.tex, und ändern dort alle hardgecodeten Angaben (Name, Adresse, Telefonnummer, usw) in Variablen um. Diese Variablen tragen wir ebenfalls in die Datei skeleton.Rmd ein und hinterlegen dort die Werte.

Die Datei meinbrief.tex sieht danach z.B. so aus:

\documentclass[DIN,
    fontsize=11pt,          % fontsize
    paper=a4,               % page size a4
    firsthead=on,           % display header on first page
    firstfoot=on,           % display footer on first page
    pagenumber=off,         % position of the page number
    parskip=half,           % Use indent instead of skip, half, false
    enlargefirstpage=on,    % more space on first page
    fromalign=locationright, % placement of name in letter head
    addrfield=on,           % address field for envelope with window, on or true
    subject=titled,         % placement of subject, beforeopening or titled
    foldmarks=on,          % print foldmarks
    numericaldate=off,      % display date in numbers only
    KOMAold]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[dvips]{graphicx}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage[utf8]{inputenc}
\usepackage{times}
% \usepackage{lmodern}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{lastpage}
\usepackage[rgb]{xcolor}
\usepackage{hyperref}
\hypersetup{%
    pdfborder=0 0 0,
    pdfauthor={},
    pdftitle={},
    pdfsubject={},
    pdfkeywords={},
    pdfpagemode={UseOutlines},
    bookmarksopen,
    pdfstartview={FitH},
    colorlinks,
    linkcolor={black},
    citecolor={black},
    urlcolor={blue}
  }

\urlstyle{same}

% Randbereiche mit geometry
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=20mm}

\usepackage{lastpage} % letzte Seite anzeigen
\usepackage{marvosym}
\usepackage{blindtext}

% speichere eigene Variablen für Werte, die häufig drankommen
\newcommand{\myFirstname}{$myFirstname$}
\newcommand{\myFamilyname}{$myFamilyname$}
\newcommand{\myStreet}{$myStreet$}
\newcommand{\myTown}{$myTown$}

% ---Angaben für das Absenderfeld--------
\setkomavar{fromname}{\flushright\normalfont\textbf{\myFirstname\ \myFamilyname}}
\setkomavar{signature}{\myFirstname\ \myFamilyname}
\setkomavar{fromaddress}{\flushright\normalfont\scriptsize%
$myGrade$ \myFirstname\ \myFamilyname\\
\myStreet\\\myTown\\%
$myTelefon$\\%
$myMail$\\[2mm]
$myBank$\\
$myIBAN$\\[2mm]
Aktenzeichen:\quad\ $myAktenzeichen$\\
\setkomavar{date}{\today} %datum im Absenderfeld
Datum:\quad \today}
%---------------------------------------
\renewcommand*\familydefault{\sfdefault}

% Anordnung im Absenderfeld
\setkomavar{firsthead}{}
\setkomavar{location}{%
  \raggedleft
  \usekomavar{fromname}\\
  \usekomavar{fromaddress}
}

% Absender auch über dem Empfängeradressfeld
\setkomavar{backaddress}{\myFamilyname\ | \myStreet\ | \myTown}

% signatur mit Unterschrift
\setkomavar{signature}{\includegraphics[width=25mm]{Unterschrift.png}\\\myFirstname\ \myFamilyname}
%
% --------------kopf/fusszeile----------------
\usepackage{scrlayer-scrpage}
\clearmainofpairofpagestyles
\cfoot{\flushright\scriptsize\normalfont Seite \thepage\ von \pageref{LastPage} }
\RedeclarePageStyleAlias{empty}{scrheadings}
%----------------------------------------------
%
\setkomavar{date}{} % Datum wieder löschen
\setkomavar{subject}{$Betreff$}
\setlength{\parindent}{0pt}

% positionierung von Absender und Empfängerboxen
\makeatletter
  \@setplength{backaddrheight}{0pt}% because backaddress=off
  \@setplength{toaddrhpos}{2.5cm}%distance from left
  \@setplength{toaddrvpos}{5cm}%distance from top
  \@setplength{toaddrheight}{3.5cm}%height of the addressbox
  \@setplength{toaddrwidth}{10cm}% width of the addressbox
  \@addtoplength{locwidth}{45mm} % width of ABSENDERbox
  \@setplength{lochpos}{2cm}%distance from top
  \@setplength{locvpos}{32mm}%distance from top
  \@setplength{refvpos}{11cm}% Abstand des Haupttextes von top
\makeatother
%------------------------------------------------------------------------------------

\begin{document}
%
\begin{letter}{$anName$\\
$anZusatz$\\
$anStrasse$\\
$anOrt$
}
%
\opening{$opening$,}
%
$body$

\closing{$closing$,
}
\end{letter}
\end{document}

Alle Angaben wurden durch Variablen ersetzt. Die Variable $body$ beinhaltet den gesamten Text des Markdown-Dokuments.

In der Datei skeleton.Rmd wurden die Variablen ebenfalls angelegt, und die Werte entsprechend zugeordnet:

---
title: "Template Title"
author: "Your Name"
date: "The Date"
myFirstname: Timm
myFamilyname: Thaler
myStreet: Absenderstr. 7
myTown: 47325 Schickensen
myGrade: Prof. Dr.
myTelefon: +49 176 555 984 66
myMail: timm@thaler.de
myBank: ING DiBa
myIBAN: DE06 505 165 55 5555 4312 64
Betreff: Dies ist der Betreff
myAktenzeichen: 2021-4
anName: Andrea Empfängerin
anZusatz: Schloss Schalkenstein
anStrasse: Adressatenstr. 23
anOrt: 22204 Briefkasten
opening: Sehr geehrte Frau Empfängerin
closing: Mit freundlichen Grüßen
output: MyStyle::meinbrief
---

dies ist ein Testbrief, um zu schauen, ob es auch in `RMarkdown` funktioniert.

Als letzte Angabe im Kopfbereich wird der output auf unser Template meinbrief im Paket MyStyle gesetzt.

2.1.3 Ausgabeformat bereitstellen

Jetzt sind wir fast schon fertig. Wir müssen noch das eben angegebene Ausgabeformat MyStyle::meinbrief verfügbar machen.
Hierzu erstellen wir im Paketordner “R” die Datei formats.R. Sie wird bei der Aktivierung des Paketes automatisch ausgeführt und soll das Ausgabgeformat bereitstellen.

# erstelle Datei R/formats.R
file.edit("R/formats.R")

Sie erhält folgenden Inhalt:

# mache output "meinbrief" verfügbar
meinbrief <- function(...) {
  template <- system.file("rmarkdown/templates/meinbrief/resources/meinbrief.tex",
                          package="MyStyle")
  bookdown::pdf_document2(...,
                          template = template
  )
}

Wie Sie sehen, verwenden wir letztendlich bookdown::pdf_document2 als Ausgabe.

2.1.4 Ausgabe kontrollieren

Jetzt können wir das Paket neu bauen und installieren, indem wir
Install and Restart klicken.


Figure 2.7: Reiter Build

Wenn alles korrekt eingetragen wurde, können wir nun unsere Beispieldatei skeleton.Rmd knitten. Das erzeugt eine PDF-Datei
im Unterordner skeleton (weil skeleton.Rmd dort liegt). Überprüfen Sie, ob alles so aussieht, wie Sie möchten. Ist alles gut, entfernen Sie die PDF-Datei und bauen Sie das Paket nocheinmal neu.

Fertig.

3 Paket als Vorlage nutzen

Ist das Paket installiert, steht das Template in RStudio zur Auswahl. Klicken Sie auf File \(\rightarrow\) New File \(\rightarrow\) RMarkdown und wählen Sie “From Template”.


Figure 3.1: Template auswählen

Dort steht nun meinBrief zur Auswahl. Wenn Sie auf OK klicken, erhalten Sie den Beispielcode aus skeleton.Rmd sowie die Datei Unterschrift.png. Wenn Sie vergessen haben, die PDF-Datei Ihrer Testreihen zu entfernen, wird diese ebenfalls erzeugt.

4 weitere Templates erstellen

Auf diese Weise können wir beliebig weiterte Templates erstellen. Rob Hyndman hat für seine Fakultät z.B. Vorlagen für Abschlussarbeiten, Berichte und Klausuren erstellt, siehe https://github.com/robjhyndman/MonashEBSTemplates

Wir erzeugen in dieser Anleitung noch eine Vorlage für Rechnungen.

4.1 Vorlage für Rechnungen erzeugen

Für die Rechnungen-Vorlage bedienen wir uns bei unserem Brief und passen einige wenige Felder an.

Zunächst erzeugen wir wieder die Grundstruktur des Templates, welches diesmal meineRechnung heissen soll.

usethis::use_rmarkdown_template(
  template_name = "meineRechnung",
  template_dir = NULL,
  template_description = "Meine private Rechnungsvorlage",
  template_create_dir = FALSE
)

In den Ordner inst/markdown/templates/meinerechnung/skeleton/ kopieren wir zunächst die Datei Unterschrift.png. Dann öffnen wir die Datei skeleton.Rmd und entfernen alles bis auf den Kopfbereich.

---
title: "Template Title"
author: "Your Name"
date: "The Date"
output: output_format
---

Jetzt erstellen wir den Unterordner inst/markdown/templates/meinerechnung/resources/ und darin die Datei meinerechnung.tex.

Die Datei öffnen wir nun, und kopieren den Inhalt unserer Brief-Vorlage hinein.

file.edit("inst/markdown/templates/meinerechnung/resources/meinerechnung.tex")
# kopiere nun den LaTeX Code hierhin.

Jetzt nehmen wir einige Anpassungen vor, z.B. ersetzen wir das alte Aktenzeichen durch eine Rechnungsnummer. Auch fügen wir unsere Steuernummer hinzu.

Die LaTeX-Datei sieht danach so aus:

\documentclass[DIN,
    fontsize=11pt,          % fontsize
    paper=a4,               % page size a4
    firsthead=on,           % display header on first page
    firstfoot=on,           % display footer on first page
    pagenumber=off,         % position of the page number
    parskip=half,           % Use indent instead of skip, half, false
    enlargefirstpage=on,    % more space on first page
    fromalign=locationright, % placement of name in letter head
    addrfield=on,           % address field for envelope with window, on or true
    subject=titled,         % placement of subject, beforeopening or titled
    foldmarks=on,          % print foldmarks
    numericaldate=off,      % display date in numbers only
    KOMAold]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[dvips]{graphicx}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage[utf8]{inputenc}
\usepackage{times}
% \usepackage{lmodern}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{lastpage}
\usepackage[rgb]{xcolor}
\usepackage{hyperref}
\hypersetup{%
    pdfborder=0 0 0,
    pdfauthor={},
    pdftitle={},
    pdfsubject={},
    pdfkeywords={},
    pdfpagemode={UseOutlines},
    bookmarksopen,
    pdfstartview={FitH},
    colorlinks,
    linkcolor={black},
    citecolor={black},
    urlcolor={blue}
  }

\urlstyle{same}

% Randbereiche mit geometry
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=20mm}

\usepackage{lastpage} % letzte Seite anzeigen
\usepackage{marvosym}
\usepackage{blindtext}

% speichere eigene Variablen für Werte, die häufig drankommen
\newcommand{\myFirstname}{$myFirstname$}
\newcommand{\myFamilyname}{$myFamilyname$}
\newcommand{\myStreet}{$myStreet$}
\newcommand{\myTown}{$myTown$}

% ---Angaben für das Absenderfeld--------
\setkomavar{fromname}{\flushright\normalfont\textbf{\myFirstname\ \myFamilyname}}
\setkomavar{signature}{\myFirstname\ \myFamilyname}
\setkomavar{fromaddress}{\flushright\normalfont\scriptsize%
$myGrade$ \myFirstname\ \myFamilyname\\
\myStreet\\\myTown\\%
$myTelefon$\\%
$myMail$\\[2mm]
$myBank$\\
$myIBAN$\\
Str-Nr. $myStrNr$\\[2mm]
Rechnungsnummer:\quad\ $myRechnungsnummer$\\
\setkomavar{date}{\today} %datum im Absenderfeld
Datum:\quad \today}
%---------------------------------------
\renewcommand*\familydefault{\sfdefault}

% Anordnung im Absenderfeld
\setkomavar{firsthead}{}
\setkomavar{location}{%
  \raggedleft
  \usekomavar{fromname}\\
  \usekomavar{fromaddress}
}

% Absender auch über dem Empfängeradressfeld
\setkomavar{backaddress}{\myFamilyname\ | \myStreet\ | \myTown}

% signatur mit Unterschrift
\setkomavar{signature}{\includegraphics[width=25mm]{Unterschrift.png}\\\myFirstname\ \myFamilyname}
%
% --------------kopf/fusszeile----------------
\usepackage{scrlayer-scrpage}
\clearmainofpairofpagestyles
\cfoot{\flushright\scriptsize\normalfont Seite \thepage\ von \pageref{LastPage} }
\RedeclarePageStyleAlias{empty}{scrheadings}
%----------------------------------------------
%
\setkomavar{date}{} % Datum wieder löschen
\setkomavar{subject}{$Betreff$}
\setlength{\parindent}{0pt}

% positionierung von Absender und Empfängerboxen
\makeatletter
  \@setplength{backaddrheight}{0pt}% because backaddress=off
  \@setplength{toaddrhpos}{2.5cm}%distance from left
  \@setplength{toaddrvpos}{5cm}%distance from top
  \@setplength{toaddrheight}{3.5cm}%height of the addressbox
  \@setplength{toaddrwidth}{10cm}% width of the addressbox
  \@addtoplength{locwidth}{45mm} % width of ABSENDERbox
  \@setplength{lochpos}{2cm}%distance from top
  \@setplength{locvpos}{32mm}%distance from top
  \@setplength{refvpos}{9cm}% Abstand des Haupttextes von top
\makeatother
%------------------------------------------------------------------------------------

\begin{document}
%
\begin{letter}{$anName$\\
$anZusatz$\\
$anStrasse$\\
$anOrt$
}
%
\opening{$opening$,}
%
$body$

\closing{$closing$,
}
\end{letter}
\end{document}

Die Variablen übertragen wir in die Datei skeleton.Rmd, die dann so aussieht:

---
title: "Template Title"
author: "Your Name"
date: "The Date"
myFirstname: Timm
myFamilyname: Thaler
myStreet: Absenderstr. 7
myTown: 47325 Schickensen
myGrade: Prof. Dr.
myTelefon: +49 176 555 984 66
myMail: timm@thaler.de
myBank: ING DiBa
myIBAN: DE06 505 165 55 5555 4312 64
myStrNr: 313/5555/123
Betreff: RECHNUNG
myRechnungsnummer: 2021-4
anName: Andrea Empfängerin
anZusatz: Schloss Schalkenstein
anStrasse: Adressatenstr. 23
anOrt: 22204 Briefkasten
opening: Sehr geehrte Frau Empfängerin
closing: Mit freundlichen Grüßen
output: MyStyle::meinerechnung
---

Um das Ergebnis testen zu können, müssen wir das Ausgabeformat MyStyle::meinerechnung verfügbar machen.
Hierfür ergänzen wir im Unterordner R in der Datei formats.R wie folgt:

# mache output "meinbrief" verfügbar
meinbrief <- function(...) {
  template <- system.file("rmarkdown/templates/meinbrief/resources/meinbrief.tex",
                          package="MyStyle")
  bookdown::pdf_document2(...,
                          template = template
  )
}

# mache output "meinerechnung" verfügbar
meinerechnung <- function(...) {
  template <- system.file("rmarkdown/templates/meinerechnung/resources/meinerechnung.tex",
                          package="MyStyle")
  bookdown::pdf_document2(...,
                          template = template
  )
}

Wenn Sie jetzt das Paket neu bauen und installieren, sollte das knitten der Datei skeleton.Rmd schon funktionieren, und eine PDF-Datei ausspucken.

Die Rechnungsvorlage kann nun wie folgt erweitert werden:

---
title: "Template Title"
author: "Your Name"
date: "The Date"
myFirstname: Timm
myFamilyname: Thaler
myStreet: Absenderstr. 7
myTown: 47325 Schickensen
myGrade: Prof. Dr.
myTelefon: +49 176 555 984 66
myMail: timm@thaler.de
myBank: ING DiBa
myIBAN: DE06 505 165 55 5555 4312 64
myStrNr: 313/5555/123
Betreff: RECHNUNG
myRechnungsnummer: 2021-4
anName: Andrea Empfängerin
anZusatz: Schloss Schalkenstein
anStrasse: Adressatenstr. 23
anOrt: 22204 Briefkasten
opening: Sehr geehrte Frau Empfängerin
closing: Mit freundlichen Grüßen
output: MyStyle::meinerechnung
---


für die erbrachten Leistungen erlaube ich mir wie folgt in Rechnung zu stellen:



|  **Datum** |                 **Posten**                          | **Betrag**|
|------------|-----------------------------------------------------|----------:|
| 29.06.2021 | Zauberschow für Kinder in der KiTa Regenbogenland   |     300,01|
|            |                                                     |           |
|            |                                         Nettobetrag |     300,01|
|            |                      Umsatzsteuerfrei gem. §19 UstG |       0,00|
|            |                                    **Gesamtbetrag**:| **300,01**|




Bitte überweisen Sie den Betrag unter Angabe der Rechnungsnummer auf mein Konto bei der ING DiBa
mit der IBAN *DE06 505 165 55 5555 4312 64*.

Ich bedanke mich für Ihren Auftrag und verbleibe

Wenn Sie jetzt knitten, sieht die PDF-Datei skeleton.pdf so aus:


Figure 4.1: fertiges PDF-Dokument

Jetzt können Sie noch weitere Anpassungen vornehmen. Wenn Sie fertig sind, entfernen Sie die PDF-Datei skeleton.pdf und bauen und installieren Sie das Paket neu. Ab jetzt steht es in RStudio als Vorlage zur Verfügung.

Klicken Sie auf File \(\rightarrow\) New File \(\rightarrow\) RMarkdown und wählen Sie “From Template”.


Figure 4.2: Vorlagen

5 noch mehr Templates

Noch weitere Templates bietet unter anderem das R-Paket rticles.

install.packages("rticles")

Nach einem Neustart von RStudio stehen die Templates bereit.

6 Weiterführende Links






















share this

Anfang der Woche wurde das Webframework Django in Version 3.2 veröffentlicht. Der LTS-Release bringt einige Neuerungen, Breaking Changes und Abkündigungen von Funktionen mit.

Neuerungen

Die AppConfig ist seit vielen Versionen ein wichtiger Bestandteil von Django, um Projekte in Apps zu strukturieren. Die apps.py tritt in der normalen Entwicklung normalerweise eher in den Hintergrund, übernimmt aber entscheidende Aufgaben. Dies trifft insbesondere auf besonders austauschbare Applikationen zu. Wer eine default_app_config gesetzt hat, sollte allerdings bei Django 3.2 aufhorchen: Django 3.2 kann automatisch die AppConfig ermitteln, wenn in der App eine apps.py mit einer einzigen AppConfig existiert. Damit wird die nun veraltete Variable default_app_config nicht mehr benötigt.

Weiterhin lässt sich der standardmäßige Typ des Primärschlüssels ab sofort zentral anpassen. Ein Primarschlüssel wird automatisch mit dem Typ AutoField immer dann angelegt, wenn kein Feld mit primary_key=True in einem Model vorhanden ist. Sollte der Typ über die ganze App oder gar das ganze Projekt verändert werden, musste bisher jedes Model einzeln einen benutzerdefinierten Typ bereitstellen. Mit der globalen Einstellung DEFAULT_AUTO_FIELD sowie der anwendungsweiten Einstellung AppConfig.default_auto_field lässt sich das nun zentral ändern. Weiterhin wird für neu erstellte Projekte als automatischer Primärschlüsseltyp BigAutoField eingestellt, sodass die Primärschlüssel 64-bit statt bisher 32-bit große Integer speichern. Das ist besonders dann hilfreich, wenn von einem Model mehr als 2 Milliarden Instanzen abgespeichert werden sollen.

Die dritte große Änderung betrifft ebenfalls die Models: so ist es nun möglich, funktionelle Indizes über den positionsabhängigen Parameter *expressions anzulegen.

Der @admin.display-Dekorator ermöglicht es nun, für Property-Funktionen wie is_published direkt aus dem Model heraus die Darstellung auf der Adminoberfläche, die nun ein Dark Theme unterstützt, zu definieren. Weiterhin leitet die Adminoberfläche in jedem Fall unangemeldete Benutzer auf die Anmeldeseite weiter, um nicht durch Statusmeldungen (z. B. Not Found) Aufschluss über die Existenz von Objekten zu geben.

pymemcache wird nun ebenfalls unterstützt, sofern es in Version 3.4.0 installiert ist.

Das in Django 3.1 eingeführte JSONField besitzt nun auch mit JSONObject ein Pendant für Datenbankoperationen.

Wer einen Blog betreibt, kann mit Django besonders einfach RSS-Feeds für Models, hier konkret Artikel, erstellen, indem er auf das mitgelieferte django.contrib.syndication zurückgreift. Nun ist es möglich, mit item_comments direkt einen Link auf eine Kommentarsektion von Models zu spezifizieren, was in einigen RSS-Readern wie Tiny Tiny RSS an gesonderter Stelle angezeigt wird, um schneller in die Kommentare zu springen. Auf diese Änderung bin ich besonders stolz, weil ich sie selber beigetragen habe. ;)

Inkompatibilitäten

Die neue DatabaseFeatures.introspected_field_types ersetzt eine Reihe alter Features wie can_introspect_autofield, etc.

In der Adminoberfläche wird nun bei den Seiten ab 1 statt wie bisher ab 0 gezählt.

Abkündigungen

Die Unterstützung von PostgreSQL 9.5, MySQL 5.6 sowie PostGIS 2.2 wurde entfernt.

Verfügbarkeit

Django 3.2 unterstützt Python 3.9 bis 3.6. Die Unterstützung ist mindestens drei Jahre ab Veröffentlichung gewährleistet. Der vorherige LTS-Release 2.2 wird die Unterstützung nächstes Jahr im April 2022 verlieren.

Die Auflistung aller Änderungen samt Verweise und Codebeispiele ist in den Django 3.2 release notes verfügbar.

Der Raspberry Pi ist schon längere Zeit in Version 4 verfügbar, Raspbian heißt nun Raspberry Pi OS und der dazugehörige Imager hat mehr Optionen erhalten (Strg + Shift +X).

Dies sind allerdings nicht die einzigen Neuerungen. Denn eine oft gestellte Frage hat nun ebenfalls eine andere Antwort.

Wie deaktiviere ich den Bildschirmschoner unter Raspberry Pi OS

Um den Bildschirmschoner zu deaktivieren, konnten bisher in einigen Dateien Hand angelegt werden.

So mussten in der Vergangenheit diverse Werte im Autostart eingetragen werden:

/home/pi/.config/lxsession/LXDE-pi/autostart

Beziehungsweise unter:

/etc/xdg/lxsession/LXDE-pi/autostart 

Details dazu findet ihr in einem alten Artikel.

Mit der neuen OS Version, welche auf Debian Buster basiert, ist dies nicht mehr nötig.

Der Hersteller hat diese Option nun direkt im Konfigurationstool versteckt. 

sudo raspi-config

[Menu] --> [Preferences] --> [Screen Blanking]

raspberrypi4-screensaveDie alten Methoden funktionieren nicht mehr.

Ein weiterer Workaround wäre die Installation eines extra Screensavers ( sudo apt-get install xscreensaver ), welcher dann deaktiviert wird. Dieser Schritt sollte im Normalfall allerdings nicht nötig sein.

 

9. April 2021

Unter dem Namen Proton arbeitet Mozilla an einem neuen Design für Firefox. Mozilla hat die ersten – jedoch noch nicht alle! – Änderungen nun in der Nightly-Version von Firefox standardmäßig aktiviert.

Proton ist das neue Firefox-Design

Unter dem internen Projektnamen Proton arbeitet Mozilla an einem neuen Design seines Desktop-Browsers, welches mit Firefox 89 das Licht der Welt erblicken soll. Über Proton wurde auf diesem Blog weltweit als erstes berichtet.

Die Veröffentlichung von Firefox 89 ist derzeit für den 1. Juni 2021 geplant.

Standardmäßige Aktivierung in Firefox Nightly

Wer eine Nightly-Version von Firefox nutzt, wird schnell feststellen, dass Firefox anders als gewohnt aussieht. Dies liegt daran, dass Mozilla das neue Proton-Design standardmäßig aktiviert hat – zumindest teilweise. Was in der Berichterstattung anderer Websites fast vollständig untergeht, ist die Tatsache, dass Mozilla zwar den Schalter browser.proton.enabled aktiviert hat, Proton aber noch hinter weiteren Schaltern entwickelt wird, welche in einem gesonderten Artikel ausführlich behandelt werden. Beispielsweise sind die neuen Kontextmenüs für Windows 10 sowie Apple macOS und auch die neuen Tooltips für Tabs und Lesezeichen nach heutigem Stand noch nicht standardmäßig aktiviert. Im Laufe der kommenden Tage und Wochen werden auch die restlichen Teile von Proton aktiviert werden.

Erwähnt sei an dieser Stelle auch, dass selbst bei manueller Aktivierung aller Proton-Optionen das Design noch nicht dem finalen Ergebnis entspricht. So fehlen aktuell vor allem noch die neuen Icons, was natürlich einen wesentlichen Anteil am Design hat. Ab dem kommenden Nightly-Build, welcher heute erscheinen wird, werden die ersten neuen Icons Teil von Firefox Nightly sein. Aber auch hier gilt: Die Arbeiten sind noch nicht abgeschlossen. So sind erst einmal zwei Icon-Stile gemischt, was so natürlich nicht bleiben wird. Beispielsweise sind das Icon für den Tracking-Schutz oder zum Neuladen der Website noch alt, aber das Schloss-Symbol in der Adressleiste, die Zurück- und Vorwärtspfeile oder das Menü-Icon bereits neu. Auch hier werden die nächsten Tage und Wochen das Bild komplettieren.

Firefox Nightly: Proton-Design

Der Beitrag Proton-Design in Firefox Nightly (teilweise) aktiviert erschien zuerst auf soeren-hentzschel.at.

Die Veröffentlichung von Firefox 89 war ursprünglich für den 18. Mai 2021 vorgesehen. Nun hat Mozilla den Veröffentlichungstermin von Firefox 89 und allen nachfolgenden Versionen verschoben.

Mit Firefox 89 steht ein großes Update bevor. Zumindest optisch wird sich Firefox stark verändern, denn mit Proton steht ein neues Firefox-Design in den Startlöchern. Wer bereits darauf wartet, muss sich allerdings noch etwas länger gedulden als bisher angenommen.

Mozilla wird wie geplant am 20. April 2021 Firefox 88 veröffentlichen und Firefox 89 dann die Beta-Phase erreichen. Statt wie üblich vier Wochen wird die Beta-Phase von Firefox 89 allerdings sechs Wochen dauern.

Als Termin ausgedrückt bedeutet dies, dass Firefox 89 nun aller Voraussicht nach am 1. Juni 2021 erscheinen wird. Alle weiteren Firefox-Versionen werden ebenfalls um zwei Wochen nach hinten geschoben. Der Release-Kalender dieser Seite ist bereits an die neuen Daten angepasst.

Der Beitrag Mozilla verschiebt Firefox 89 erschien zuerst auf soeren-hentzschel.at.

7. April 2021

Um die digitale Privatsphäre ist es schlecht bestellt. Auf kleine Fortschritte folgen meist viele Rückschritte. Doch wie wäre die Lösung? An dieser Frage scheiden sich die Geister und man sollte berücksichtigen, was zwischen den Zeilen mitschwingt.

Um den Datenschutz im Internet und die digitale Privatsphäre ist es schlecht bestellt. Die Aussage würde in Deutschland wohl nahezu jeder unterschreiben. Die einen stört es mehr, die anderen weniger, manche denken, sie haben nichts zu verbergen oder machen sich weniger Gedanken. Aber kaum jemand würde sich ernsthaft hinstellen und sagen: Alles perfekt!

Doch in der Frage der Lösungen scheiden sich die Geister. Das wird nur selten offen kommuniziert. Es ist der alte Widerspruch zwischen einer Reform des Systems und einem revolutionären Bruch.

Diejenigen auf der Reform-Seite glauben, dass man mit Gesetzen und einem Wandel der Unternehmenskulturen eine grundlegende Verbesserung erreichen kann. Sie sehen in Vorhaben, wie sie beispielsweise Apple zahlreich umsetzt, den Weg in eine Datenschutz-freundlichere Zukunft. Für Reformer kann auch ein Saulus zum Paulus werden, wenn er sein Geschäftsmodell umstellt. Staatliche Leitplanken und die Erkenntnis, dass immer größere Datenberge nicht zu mehr Gewinnen führen, sollten hier Besserung bringen.

Radikale Revolutionäre lehnen die Struktur des Internets, der digitalen Dienste und die dort agierenden Firmen, wie wir es aktuell vorfinden, radikal ab. Die meisten Revolutionäre halten die gegenwärtige zentrale Dienste-Struktur und App-Ökonomie für ein Grundübel, ohne deren Überwindung keine nachhaltige Privatsphäre möglich ist. Oftmals schwingt eine gehörige Portion Kapitalismuskritik mit (die Ironie wenn hoch bezahlte Informatiker Kapitalismuskritik üben lassen wir hier mal beiseite).

Ein kleines Beispiel dazu: Man konnte diesen Gegensatz sehr schön in den Artikeln rund um Signal in den letzten Wochen lesen. Signal ist ein erfolgreicher (der erfolgreichste?) sicherer Messenger. Er ist aber strukturell gewissermaßen ein Klon erfolgreicher proprietärer Messenger. Es nimmt was gut ist am bisherigen System und ersetzt die problematischen Bestandteile. Zentral konzipiert, mit einer geschlossenen Entwicklergruppe und ggf. wäre irgendwann sogar eine Kapitalisierung des Geschäftsmodells denkbar. Dummerweise (aus Sicht der Revolutionäre) war Signal aber immer sehr gut, sehr sicher und vor allem sehr erfolgreich. Vermutlich hat die App auch viele alten Diensten wie XMPP & Co Benutzer weggenommen. Aber die Fakten sprachen für die App und viele Revolutionäre mussten zähneknirschend Empfehlungen für Signal aussprechen.

Nach der Episode um den zeitweilig nicht verfügbaren Quellcode des Serverparts schießen sich manche nun mit komischen Argumenten auf Signal ein und verstärken die Empfehlungen für dezentrale, wirklich freie Alternativen. Der Revolutionär lässt gewissermaßen die Maske des Reformers fallen. Dies ist nur ein kleines Beispiel, aber es soll verdeutlichen wie sich der Unterschied in den Ansätzen in realen Empfehlungen und Perspektiven auswirkt.

Beide Seiten haben ihre Argumente. Ich persönliche stehe eher bei den Reformern, weil mir reale Erfolge wichtiger als die reine Lehre sind. Plakativ gesagt: Mit Debian würden wir meiner Meinung nach heute mit Linux heute noch da stehen, wo wir 2005 standen, Ubuntu hat uns dahin gebracht wo wir heute sind. Ich akzeptiere aber auch revolutionärere Ansätze, zumal solche in abgeschwächter Form manchmal als Reform zurückkommen. Ohne die Aufmerksamkeit für Datenschutz und digitale Privatsphäre, den viele Aktivisten ertrommelt haben, hätte Apple das schließlich kaum als Geschäftsmodell erkannt.

Wichtig ist, diese grundlegenden Annahmen zu berücksichtigen, wenn man sich zu den Themen Datenschutz und digitale Privatsphäre informiert. Sie prägen Empfehlungen, Sichtweisen und manchmal auch Bewertungen. Das ist menschlich, denn bei Konzepten, denen man wohlwollend gegenübersteht, drückt man lieber mal ein Auge zu und beim Gegenteil versucht man jedes Problem zu finden.

Der Artikel Reform oder Revolution – Wie ist die digitale Welt zu retten? erschien zuerst auf [Mer]Curius

6. April 2021

Wie ich bereits vor einigen Wochen berichtet habe, wurde Qt in Version 6 veröffentlicht. Dies hat auch Signalwirkung für eines der wichtigsten in Qt umgesetzten Projekte, KDE. Auch hier wird in den nächsten Monaten auf Qt 6 umgestellt.

Offene Fragen gab es bisher beim Support des auslaufenden Qt 5-Versionsstrangs, der die Grundlage für alle aktuellen KDE-Projekte bildet. Hier hat The Qt Company die Daumenschrauben angezogen (LinuxNews und ich berichteten) und den LTS-Support, der jetzt für die letzten Qt 5-Version 5.15 relevant werden würde, für die kommerziellen Kunden vorbehalten.

KDE kündigte heute nun an, eine eigene Qt 5 Patch Collection bereitzustellen, um den Übergang abzusichern.

Mit dieser Patch Collection werden Sicherheitsprobleme, Abstürze und Funktionsdefekte gelöst. Für die Entwicklung gelten gesonderte Bedingungen im Bezug auf die Verfahrensweisen für die Aufnahme von Patches, veröffentlicht wird aber weiterhin unter der gleichen Lizenz wie der von der Qt Open Source Edition. Releases wird es von dieser Patch Collection allerdings nicht geben. Die Repositories für die Patch Collection sind im KDE-eigenen GitLab verfügbar.

Ist man selber Entwickler von Qt 5-Anwendungen, sollte man im Hinterkopf haben, dass diese Patch Collection speziell auf KDE zugeschnitten ist. Ist der Umstieg auf Qt 6 bei KDE abgeschlossen, wird diese Patch Collection auch eingestellt. Wie aus der Pressemitteilung hervorgeht, zeigt der Hersteller von Qt Verständnis bei den Bemühungen. Man kann davon ausgehen, dass KDE trotz des Lizenztrubels in den letzten Monaten weiterhin gut im Kontakt mit The Qt Company steht. KDE betreibt eine spezielle Intermediärsorganisation mit der The Qt Company: die KDE Free Qt Foundation. Sie kümmert sich um Lizenzbelange und stellt sicher, dass weiterhin eine frei verfügbare Version von Qt für das KDE-Projekt zur Verfügung steht.

5. April 2021

Heute ist es nun soweit: das lang erwartete Urteil im Verfahren zwischen Google und Oracle ist gefallen. Im Kern ging es um die Einordnung von Application Programming Interfaces (API) und Copyright (hier: Fair Use) in einem speziellen Fall.

Google hat für Android in früheren Versionen auf Java-APIs zurückgegriffen, die von Sun Microsystems entwickelt wurden, das von Oracle 2009 aufgekauft wurde. Oracle sah sich in seinen Rechten verletzt, Google argumentiert, dass die ursprüngliche Nutzung unter Fair Use fällt. Zwischenzeitlich hat Google auf eine rechtlich sicherere Variante umgestellt und nutzt nicht mehr das originale API.

Die Frage, inwiefern APIs urheberrechtlich geschützt werden können, ging schon durch mehrere Gerichtsinstanzen. Während zwei District-Gerichte für Google urteilten, hat der Federal Circuit beide Urteile aufgehoben. Der Supreme Court hat nun als letzte Instanz die finale Entscheidung getroffen. In einer 6:2-Entscheidung wurde heute mitgeteilt, dass Googles Nutzung der APIs unter Fair Use fiel.

Die heutige Entscheidung ist wegweisend für Open Source-Projekte, weil eine Entscheidung für Oracle einschneidende Konsequenzen im Bezug auf Interoperabilität von Programmen hätte – einer Gefahr, der sich die Richter bewusst waren, wie aus dem Statement hervorgeht. Wired hat sich dies vor einigen Jahren schon einmal angesehen und angeführt, dass auch Linux mit der POSIX-API Probleme bekommen hätte. Diese Entscheidung ist allerdings auch kein Freifahrtschein, da es in dieser Instanz nicht mehr um die Schutzfähigkeit von APIs generell ging, sondern eher um die Zugänglichkeit von Fair Use in diesem speziellen Fall. Das Fair Use-Prinzip beschränkt sich auf das US-Urheberrecht.

Wer sich weiter zu dem Thema informieren möchte, kann sich das Dokument vom Supreme Court, die Nachricht von CNN sowie den Artikel von Wikipedia zu dem gesamten Fall in allen Facetten durchlesen.

4. April 2021

In diesem Tutorial stelle ich einen einfachen Leitfaden für Meetings vor, dann gehe dann mit euch einmal quer durch die Opensource Webkonferenz Software Big Blue Button und erzähle ein wenig Etwas zu den verschiedenen Optionen und Möglichkeiten.

 

 

LibreOffice findest du hier https://de.libreoffice.org/

Einfacher Leitfaden für Online Meetings & Schulungen

Vorbereitung

  1. Agenda und Ablauf festlegen

  2. Zeit bestimmen

  3. Informative Einladungen verschicken

  4. Hinweise auf die Regeln des Meetings wie z.B. Bitte Headsets benutzen, bitte stumm schalten, wer nicht spricht, Kameras nicht notwendig, Telefone bitte aus, bitte pünktlich sein.



Meeting Vorbereitung

  1. 5-10 Minuten vorher online sein

  2. Benötigte Materialien (Präsentationen) hochladen

  3. Eventuell benötigter Text in die gemeinsamen Notizen kopieren

  4. Einstellungen für den Raum nochmal überprüfen



Meeting Start

  1. Präsent sein, mit den Teilnehmern reden (Smalltalk)

  2. z.B. nach 5 Minuten mit dem Meeting starten / Teilnehmerliste runter laden

  3. Wer schreibt das Protokoll in den gemeinsamen Notizen? Oder alle?

  4. Noch mal der Hinweis auf die Regeln und dann die Agenda abarbeiten



Meeting Ende

  1. Notizen speichern / runter laden

  2. Meetingprotokoll an alle Teilnehmer verschicken

  3. Ergebnisse dokumentieren

 

 

 

 

 

3. April 2021

Im Rahmen des von der Europäischen Union geförderten Bergamot Projects arbeitet Mozilla daran, eine Übersetzungsfunktion für den Browser zu entwickeln – und das vollständig ohne Online-Komponente wie Google Translate. Die Bergamot-Erweiterung für Firefox kann nun getestet werden.

Bergamot Project: Website-Übersetzung im Browser

Bereits im Oktober 2019 berichtete ich über das Bergamot Project. Zur Erinnerung:

Hintergrund des Ganzen ist das von der Europäischen Union geförderte Bergamot Project, in dessen Rahmen Mozilla mit der University of Tartu (Estland), der University of Sheffield (England), der University of Edinburgh (Schottland) und der Charles University (Tschechien) kollaboriert, um eine vollständig clientseitige Funktion zur maschinellen Übersetzung von Websites für den Browser zu entwickeln.

Die clientseitige Durchführung der Übersetzung soll einerseits der Privatsphäre dienen, da kein Datenriese wie Google involviert ist, andererseits aber auch die Verbreitung von Sprachtechnologie in Europa fördern, und zwar in Bereichen, welche Vertraulichkeit erfordern und wo es dementsprechend keine Option ist, die Übersetzung in der Cloud durchzuführen.

Das Bergamot Project ist mit drei Millionen Euro durch die Europäische Union gefördert und auf drei Jahre ausgelegt. Damit das Projekt auch über die drei Jahre hinaus einen langfristigen Effekt hat, wird die Übersetzungsfunktion in Firefox integriert und alle Technologien, welche im Rahmen des Bergamot Projects entstehen, als Open Source veröffentlicht.

Bergamot-Erweiterung 0.3 für Firefox

Wer neugierig ist, kann die aktuelle Version 0.3 der Firefox-Erweiterung testen. Diese Version erlaubt Übersetzungen aus dem Spanischen sowie aus dem Estnischen ins Englische und umgekehrt, sowie vom Englischen ins Deutsche (allerdings nicht umgekehrt). Weitere Sprachen werden bisher nicht unterstützt und da die entsprechenden Sprach-Modelle derzeit noch direkt mit der Erweiterung gebündelt sind statt zur Laufzeit heruntergeladen zu werden, kommt die Erweiterung in der aktuellen Version auf eine Dateigröße von 124 MB.

Das Laden der Sprachmodelle kann beim ersten Mal noch zwischen zehn und 30 Sekunden dauern, weitere Übersetzungen in die Zielsprache sind dann wesentlich schneller. Bei der Übersetzung selbst schafft Bergamot aktuell zwischen 500 und 600 Wörter pro Sekunde.

Bergamot 0.3 für Firefox

Installation der Bergamot-Erweiterung für Firefox

Derzeit benötigt es noch einige Vorbereitungen, um die Bergamot-Erweiterung für Firefox testen zu können. Dies ist dem frühen Entwicklungs-Stand geschuldet und wird in der Zukunft natürlich weniger kompliziert werden.

Zur Installation wird momentan noch eine Nightly-Version von Firefox benötigt. In dieser Nightly-Version müssen mehrere Einstellungen in about:config vorgenommen werden:

  • xpinstall.signatures.dev-root – Dieser Schalter muss manuell als Boolean-Schalter angelegt werden, falls noch nicht vorhanden, und auf true gesetzt werden.
  • xpinstall.signatures.required – Wer noch weitere Erweiterungen installiert hat, muss diesen Schalter auf false und die Signatur-Pflicht für Erweiterungen damit deaktivieren, weil xpinstall.signatures.dev-root auf true ansonsten verursacht, dass alle anderen installierten Erweiterungen deaktiviert werden.
  • browser.proton.enabled – Dieser Schalter muss auf true gesetzt werden, da die Bergamot-Erweiterung für das kommende Proton-Design von Firefox gestaltet ist. Dieser Schalter ist seit dem Nightly-Builld vom 08.04.2021 standardmäßig aktiviert und muss nicht länger von Hand aktiviert werden.
  • browser.proton.infobars.enabled – Wer das Proton-Design bereits testet und diesen Schalter angelegt hat, muss sicherstellen, dass dieser auf false steht, weil die Übersetzungs-Leiste in der aktuellen Nightly-Version mit diesem Schalter auf true nicht funktional ist. Wer diesen Schalter gar nicht erst angelegt hatte, kann diesen Schritt komplett überspringen. Diese Anpassung ist seit dem Nightly-Build vom 06.04.2021 nicht länger notwendig.
  • dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled – Dieser Schalter muss auf true gesetzt werden. Das ist eine temporäre Maßnahme und wird in Zukunft nicht mehr notwendig sein.

Nach diesen Vorbereitungen und einem Neustart von Firefox, damit die soeben durchgeführten Änderungen wirksam sind, kann die Erweiterung über diesen Link installiert werden. Anschließend muss noch sichergestellt werden, dass die Ausgangs-Sprache in den Spracheinstellungen von Firefox nicht auftaucht. Wenn in einem deutschsprachigen Firefox beispielsweise sowohl Deutsch als auch Englisch angegeben sind, erscheint auf einer englischsprachigen Website auch keine Übersetzungs-Leiste. Hierfür muss Englisch zunächst entfernt werden.

Spracheinstellungen Firefox

Fazit

Auch wenn die einmalige Einrichtung derzeit noch etwas kompliziert ist, zeigt Bergamot bereits beeindruckende Ergebnisse. Zur Erinnerung: Für die Übersetzung von Websites findet keinerlei Datenübertragung an Google oder einen anderen Übersetzungs-Dienst statt, die Übersetzung erfolgt vollständig im Browser. Ausgehend von den großen Fortschritten in den letzten Wochen kann man gespannt sein, welche Verbesserungen die nächsten Versionen bringen werden. Auch eine Version für andere Browser ist geplant, der Fokus der Entwicklung liegt derzeit aber vollständig auf der Version für die native Integration in Firefox. Feedback zur Erweiterung kann den Entwicklern auf GitHub mitgeteilt werden.

Der Beitrag Maschinelle Übersetzungen ohne Cloud: Bergamot-Erweiterung für Firefox kann getestet werden erschien zuerst auf soeren-hentzschel.at.

Für viele Entwickler ist der CPU-intensivste Prozess das Kompilieren großer Projekte. Für mich als Autor ist es die Umwandlung von Markdown-Dateien zuerst in die LaTeX-Syntax (Pandoc) und dann in ein PDF-Dokument (latex, dvips, ps2pdf). Seit ein paar Tagen verfüge ich über einen Mac Mini M1 als zusätzlichen Testrechner. Natürlich war ich neugierig, wie schnell das Ding nun wirklich ist — im einzigen Real-World-Test, der für mich relevant ist: Beim Erzeugen von PDFs aus LaTeX-Dateien.

Setup

Mein voll wissenschaftliches ;-) Benchmark-Setup sah so aus:

  • Rechner 1: Lenovo P1 Notebook mit i7-8750H-CPU, 32 GB RAM, Ubuntu 20.04 LTS
  • Rechner 2: Mac Mini M1: 16 GB RAM, M1-CPU, macOS 11.2

Die zu übersetzende LaTeX-Datei ist 1,3 MByte groß (das ergibt ca. 550 Seiten Text), die einzubettenden EPS-Dateien umfassen 80 MByte, die resultierende PDF-Datei ist dann ca. 18 MByte groß. Überschaubare Datenmengen also.

Sämtliche Werkzeuge (latex, dvips, ps2pdf) sind single-threaded, profitieren also leider nicht von vielen CPU-Cores.

Linux plus Docker

Unter Linux verwende ich für Pandoc und LaTeX einen Docker-Container, der sämtliche Werkzeuge in einer unveränderlichen Version enthält. Die Verwendung von Docker hat sich sehr bewährt, erstens weil ich ohne viel Installationsarbeiten ein ganzes Buch schnell auf einen anderen Rechner »übersiedeln« kann und alles weiter funktioniert, und zweites, weil nicht irgendwelche LaTeX- oder Pandoc-Updates die Kompatibilität zu meinen handgestrickten Scripts zerstören.

Wenn mein Notebook im ‚Leise-Modus‘ läuft (CPU-Takt auf 80% = 2,2GHz limitiert, kein Turbomodus), dann dauert die PDF-Erzeugung (zuerst pandoc, dann 2x latex, dvips und ps2pdf) ca. 2:09 min, also 129 Sekunden.

Wenn ich es eilig habe und die CPU auf ‚Performance‘ stelle (volle Taktfrequenz, mit Turbomodus), verdoppelt sich die Geschwindigkeit nahezu, Laufzeit 1:14 min. Allerdings heult dann der Lüfter wie ein Düsenjäger, was ich hasse und die Konzentration mindert.

macOS plus Docker

Docker für den Mac Mini M1 hat in den letzten Wochen massive Fortschritte gemacht und läuft inzwischen ziemlich gut. Ich habe mit RC3 vom 1. April gearbeitet. Viele weit verbreitete Images stehen bereits nativ für ARM zur Verfügung. Mein LaTeX-Script läuft in 1:12 min, also im Rahmen der Messungenauigkeit gleich schnell wie auf dem Lenovo-Notebook bei voller CPU-Leistung. Allerdings ist der Mac Mini dabei absolut lautlos. (Es gibt einen Lüfter. Dieser läuft dauerhaft mit 1700 RPM, ist aber für meine Ohren unhörbar. Wenn man nicht gerade synthetische Benchmark-Tests oder das Xcode-Image auspackt ausführt, wird der Lüfter nie hörbar.)

PS: Alle (und speziell die heise.de-Autoren), die meinen, Docker sei angesichts der Container-Konkurrenz durch Podman und Co. obsolet, sollen einmal versuchen, mit Containern auf nicht Intel-kompatiblen Systemen bzw. außerhalb der Linux-Welt zu arbeiten :-)

macOS nativ mit MacTeX 2021

Die ersten Versionen von Docker für die ARM-CPU von Apple litten unter massiven Performance-Problemen, besonders bei I/O-Operationen. Massiv betroffen waren Datenbanksysteme. Mittlerweile scheinen dieses Probleme weitgehend behoben zu sein, aber ich wollte doch wissen, ob Docker in meinem Setup nicht ein Bremsklotz ist.

Also habe ich MacTeX 2021 installiert (erst seit wenigen Tagen verfügbar, unterstützt die ARM-Architektur nativ) und meinen Test damit wiederholt. Ergebnis: 1:05 min. (Pandoc habe ich auch bei diesem Test unter Docker ausgeführt, weil es die von mir benötigte Pandoc-Version nicht als nativen ARM-Download gibt. Ich habe mir deswegen die schon etwas ältere Pandoc-Version 2.7.3 aus den Quellen selbst in ein Ubuntu-Docker-Image kompiliert.)

Zusammenfassung

Laufzeiten für pandoc sowie für 2x latex, dvips, ps2pdf

                                Zeit              Geräuschkulisse
------------------------------- ----------------  --------------------
Lenovo P1 8750H@2,2 GHz         49 + 80 = 129 s    zumeist lautlos
Lenovo P1 8750H@4 GHz           29 + 45 =  74 s    störend
Mac Mini M1 (LaTeX in Docker)   28 + 44 =  72 s    lautlos
Mac Mini M1 (LaTeX nativ)       28 + 37 =  65 s    lautlos

Alles in allem ist die Performance der M1-CPU eindrucksvoll — insbesondere, wenn man nicht nur die Geschwindigkeit, sondern auch die Leistungsaufnahme berücksichtigt. Ich weiß natürlich, dass ich Äpfel mit Birnen vergleiche: Die Intel-CPU ist ca. zwei Jahre älter als die M1-CPU. Der Mac ist ein (kleiner) Desktop-Rechner, als Vergleichsrechner musste ein Notebook herhalten. Ein Desktop-System mit einer aktuellen Intel- oder AMD-CPU ist natürlich schneller als beide Testkandidaten, und bei geeigneter Kühlung für meine Aufgabenstellung ebenfalls (nahezu) lautlos.

Andererseits: So flüssig sich macOS auf einem M1-Rechner anfühlt — auch Apple kocht nur mit Wasser. Synthetische Tests (z.B. GeekBench) lassen den M1 schneller erscheinen, als er bei Real-World-Aufgaben tatsächlich ist. Nach dem Mediengetöse seit der M1-Vorstellung hatte ich eigentlich erwartet, dass der Mac Mini mein Notebook meilenweit abhängen würde. Das ist definitiv nicht der Fall. (Ich kann natürlich nicht ausschließen, dass Apple mit dem M1X oder M2 oder wie auch immer der M1-Nachfolger heißen wird, noch einmal ordentlich nachlegt. Aber die CPU-Entwicklung bleibt ja auch bei Intel und AMD nicht stehen. Speziell bei Intel erwarte ich, dass die Firma jetzt aus dem Dornröschenschlaf der letzten Jahre erwacht. Nichts motiviert besser als gute Konkurrenz.)

Links

Vergangenes Jahr habe ich meinen Tower-PC generalüberholt und mit frischer Hardware bestückt. Dieses Jahr möchte ich meine beiden ThinkPads (T410 und X201) durch aktuelle Hardware ablösen.

Das neue Gerät soll folgende Anforderungen erfüllen:

  • 100% Linux-Kompatibilität – Ich möchte auf dem Gerät Debian, RHEL, Fedora, Ubuntu LTS oder evtl. auch mal ganz was neues betreiben. Da möchte ich natürlich nicht für Hardware bezahlen, die ich anschließend nicht nutzen kann.
  • Lange Akkulaufzeit >7 Std. – Damit ich mit dem Gerät auf dem Sofa, im Garten, im Büro oder auch mal im Auto arbeiten kann, ohne nach wenigen Stunden an eine Steckdose gefesselt zu sein.
  • Gute Tastatur – Dies ist ein sehr subjektiver Punkt. Ich liebe die ThinkPad-Tastaturen. Die alten mehr, als die neuen. Ich hasse hingegen die Tastaturen aus der Dell Latitude Reihe.
  • Leise Lüfter – Wenn mehrere Prozesse schwere Arbeit verrichten, muss die Hardware selbstverständlich gekühlt werden. Wenn mich das Gerät allerdings bei der Internetrecherche und dem Schreiben von Texten bereits permanent anbläst und die Lüfter heulen lässt, nervt mich dies extrem.
  • Virtualisierung – Ich arbeite viel mit virtuellen Maschinen und zukünftig auch vermehrt mit Containern. Das neue Gerät soll nicht meinen Hypervisor ersetzen, aber für Testzwecke schon mal 2-3 VMs parallel starten können. Daher sind 8 Threads und mindestens 32 GB RAM Pflicht.
  • 1 TB Festplattenspeicher – Denn darunter wird der Platz nur wieder erschreckend schnell knapp.

Bisher habe ich mich in den Online-Shops von TUXEDO Computers und Lenovo umgesehen und die beiden folgenden Geräte ins Auge gefasst

TUXEDO Pulse 14

Ich hab das TUXEDO Pulse 14 Gen 1 wie folgt konfiguriert:

  • Display: Full-HD (1920×1080) IPS matt | 100% sRGB
  • RAM: 64 GB (2x 32 GB) 3200 MHz CL22 Samsung
  • CPU: AMD Ryzen 7 4800H (8x 2,9-4,2 GHz, 8 Cores, 16 Threads, 12 MB Cache, 45 W TDP)
  • Festplatte: 1 TB Samsung 980 Pro (NVMe PCIe 4.0)
  • WLAN & Bluetooth: Intel Wifi AX200 & Bluetooth 5.1
  • LAN: 1x Gigabit LAN/Netzwerk RJ45
  • Weitere Anschlüsse
    • 1x USB 3.2 Gen1 Typ-C (DisplayPort: nein; Power Delivery/DC-IN: ja, mind. 20V/4.5A)
    • 2x USB 3.2 Gen1 Typ-A
    • 1x USB 2.0 Typ-A
    • 1x HDMI 2.0 inkl. HDCP (4k UHD@60Hz / 2k FHD@120Hz)
    • 1x 2-in-1 Kopfhörer/Headset (Kopfhörer & Mikrofon)
    • 1x HD Webcam / Kamera inkl. Mikrofon
  • Preis: ca. 1489 EUR

Das ist in meinen Augen bereits eine gute Ausstattung zu einem fairen Preis. Nur bin ich skeptisch, ob mir die Tastatur gefallen wird und ich mich daran gewöhnen kann, keinen TrackPoint mehr zu haben.

Ist unter euch evtl. ein ehemaliger ThinkPad-User, welcher nun ein TUXEDO sein Eigen nennt und etwas zur Tastatur und dem Touchpad sagen mag? Und auch wenn ihr kein ThinkPad-User seid, freue ich mich über euer Feedback.

ThinkPad P14s Gen 1

Das ThinkPad P14s Gen 1 käme mit folgender Konfiguration in Frage:

  • Display: 35,6 cm (14,0″) FHD (1.920 x 1.080), IPS, entspiegelt, 300 cd/m², Multitouch, schmale Ränder
  • RAM: 32 GB DDR4 3.200 MHz (16 GB verlötet + 1 x 16 GB SODIMM gesteckt)
  • CPU: AMD Ryzen 7 PRO 4750U Prozessor (8 Kerne, 16 Threads, 8 MB Cache, bis zu 4,10 GHz)
  • Festplatte: 1 TB SSD, M.2 2280, PCIe 3.0 x4/PCIe 4.0 x4, NVMe, OPAL 2.0-fähig, TLC
  • WLAN & Bluetooth: Intel Wi-Fi 6 AX200 (2×2) WLAN, Bluetooth 5
  • LAN: 1x Gigabit LAN/Netzwerk RJ45
  • Weitere Anschlüsse
    • 2 x USB-A 3.2* (Gen 1) (1 Always-on)
    • 2 x USB-C 3.2 (Gen 2)
    • 1x HDMI 2.0
    • 1x 2-in-1 Kopfhörer/Headset (Kopfhörer & Mikrofon)
    • MicroSD-Kartenleser (UHS-II)
    • 1x Infrarot- und 720p-HD-Kamera mit Mikrofon
  • Sonstiges: Das System ist Red Hat Linux zertifiziert und das Gehäuse ist spritzwassergeschützt
  • Preis: ca. 1459 EUR

Die Akkulaufzeit beträgt nach MobileMark 2014 bis zu 13,25 Std. und nach MobileMark 2018 bis zu 10,5 Std. Das sagt mir persönlich erstmal gar nichts, da ich beide Benchmarks nicht kenne. Davon ab mag sich die reale Laufzeit im Wirkbetrieb, gerade unter Linux, völlig anders darstellen. Wie sind eure Erfahrungen mit der Akkulaufzeit von aktuellen ThinkPads unter Linux? Weicht diese stark von den Angaben ab?

Wer die Wahl hat, hat die Qual

Da sitze ich nun vor meinem altgedienten T410 und kann mich nicht entscheiden. Die Preise beider Geräte liegen sehr nahe beieinander. Bei TUXEDO bekomme ich die doppelte Menge RAM fürs Geld. Bei Lenovo bekomme ich eine gute Tastatur und meinen geliebten TrackPoint.

Bevor ich mich entscheide, werde ich das Web wohl noch nach ein paar Testberichten umgraben. Falls ihr welche kennt, freue ich mich über eure Hinweise.

Für welches Gerät würdet ihr euch denn entscheiden? Und warum?

Wenn ihr Geräte von anderen Herstellern kennt, die obige Anforderungen erfüllen und eine vergleichbare Ausstattung bieten, freue ich mich ebenfalls, wenn ihr Hinweise darauf in den Kommentaren verlinkt.

Euch allen noch ein frohes Osterfest.