PDFs unter Windows komprimieren - Free PDF Compressor

Mit Free PDF Compressor können zu groß geratene PDF nachträglich komprimieren werden. Ein Vorteil des Programms ist es das die PDF-Datei lokal verkleinern wird und keine Cloud-Dienste eingebunden sind. Bei einem Test konnte PDF Compressor eine 4 MB Datei auf ca. 400 KB verkleinern. Dazu werde die im PDF eingebundenen Bilder herunterskaliert. Bei reinen TEXT-PDFs ist keine komprimierung zu erwarten.

Free PDF Compressor kann für Windows kostenlos unter freepdfcompressor.com heruntergeladen werden.

Browser Erweiterungen für viele Gelegenheiten

Alle hier vorgestellten Chrome-Erweiterungen können kostenlos über den Chrome Web Store heruntergeladen werden, oft sind auch Versionen für andere Chrome basierte Browser oder Firefox vorhanden:

Allgemeine Erweiterungen

  • uBlockOrigin
    OpenSource und ohne Firma im Hintergrund. Es sollte immer auf den Namen des Plugins geachtet werden. Es sind bereits mit Spyware verseuchte Versionen des Plugins unter ähnlichen Namen im Chrome Web Store aufgetaucht.

  • JoplinWebCliper
    Speichert Websites als Notiz in Joplin.

  • Video Downloader Prime
    Ermöglicht das Speichern von Videos von vielen Seiten.

  • CloseTabsByDomain
    Schließt alle geöffneten Tabs einer Domain mit einem klick. Kann Tabs nach Domain sortieren.

Erweiterungen für Web-Entwickler

  • WhatRuns
    Zeigt Informationen über das Tech-Stack der aktuell besuchten Seite an. Erkennt viele JavaScript-Frameworks und analysiert Server-Responses und Header.

  • retire.js
    Zeigt ob veraltete JavaScript-Libraries verwendet werden und ob bekannte Sicherheitslücken existieren.

  • jsonv
    Formatiert JSON-Responses so das diese einfacher zu lesen sind.

  • EditThisCookie
    Einfaches und vor allem komfortables editieren von Cookie-Daten.

  • ReactDeveloperTools
    Tools für das debuggen von React-Anwendungen. Nur für React-Entwickler Interessant.

Von Evernote zu Joplin - Eine Open-Source Notizverwaltung

Nachdem Evernote inzwischen in der kostenlosen Basic Variante immer weitere Beschränkungen eingeführt hat war es an der Zeit sich nach einer Alternative umzusehen. 59,99 € im Jahr die "Premium"-Version sind für eine Notizanwendung zu teuer. Wenn man nicht seine gesamten Notizen nicht manuell (einzeln) in ein neues Tool kopieren will, gestaltet sich der Wechsel allerdings alles andere als einfach. Da es nicht im Interesse von Evernote ist das man mit allen Notizen zu einen anderen Anbieter wechselt ist das transferieren bzw. das exportieren stark eingeschränkt. Eine ganz besondere art der Kundenbindung. Lediglich in der Desktop-Version ist ein Export im proprietären Enex-Format möglich. Der von Microsoft angebotene Importer für One Note führte bei mir zu kaputten und unbrauchbaren Notizen. Außerdem erscheint es nicht sinnvoll von einer proprietären Anwendung zu einer anderen zu wechseln. Je nachdem was Microsoft mit One Note in Zukunft vorhat kann es schnell passieren das für die Nutzung von One Note auch zur Kasse gebeten wird.

Mit Joplin existiert inzwischen eine brauchbare Alternative zu Evernote. Die Anwendung ist eindeutig von Evernote inspiriert und sieht dem Programm sehr ähnlich. Vor allem ermöglicht sie aber den direkten Import von Evernote-Notizen via Enex-Dateien. Dieser ist zwar auch nicht perfekt (es gehen einige Formatierungen verloren) aber wenigsten möglich. In Joplin speichert seine Notizen und To-Do im Markdown-Format. Es können Bilder eingebettet werden und Notizen in unterschiedlichen Kategorien abgelegt werden. Durch die integrierte Suche ist es einfach möglich seine Notizen wieder zu finden. Es existieren auch Clipboard-Plug-ins für Chrome und Firefox die es ermöglichen komplette Websites als Notiz zu speichern. Notizen werden auch in Markdown geschrieben. Es existiert kein WYSIWYG-Texteditor. Da es sich bei Joplin um eine kostenlose Open-Source Anwendungen handelt muss man sich selbst um die Speicherung seiner Notizen kümmern. Dafür können unterschiedliche Cloud-Dienste wie Nextcloud, Dropbox oder OneDrive verwendet werden. Durch die Nutzung von NextCloud oder WebDav kann man seine Notizen auch komplett selbst verwalten. Joplin erstellt beim gewählten Cloud-Service einen Ordner den es zur Synchronisierung zwischen mehreren Geräten nutzt. Natürlich kann Joplin auch komplett offline genutzt werden. Joplin hat Anwendungen für Windows, MacOS, Linux, Android und IOS. Für Anwender die bereits über einen bezahlten oder selbstgehosteten Sync-Dienst verfügen ist Joplin eine gute alternative zu Evernote, One Note und Google Notizen auch wenn es nicht mit deren ausgefeilten Design und Funktionsumfang mithalten kann.

Pkg – Node.js Kommandozeilenprogramme einfach verteilen

Lange war es umständlich ein in Node.js geschriebenes Script an nicht Node.js-Entwickler weiterzugeben, da auf dem System des Nutzers eine Node.js-Runtime vorhanden sein musste. Das ist außerhalb des Node.js Umfelds fast nie der Fall. Selbst unter Linux gehört Node.js nicht zur Standartinstallation. Mit dem Pkg-Tool von "Zeit" ist es aber inzwischen ein leichtes Scripte als ausführbare Programme zu packen.

Die Installation von Pkg ist mit einem Befehl erledigt.

npm install -g pkg

Danach kann ein beliebiges Node.js-Script über das Kommando:

pkg <filename>.js 

in ein Executable gepackt werden. Beim ersten verwenden von Pkg lädt das Tool automatisch die benötigen Node.js-Runtimes herunter:

$ pkg index.js
> pkg@4.4.9
> Targets not specified. Assuming:
  node12-linux-x64, node12-macos-x64, node12-win-x64
> Fetching base Node.js binaries to PKG_CACHE_PATH
  fetched-v12.18.1-linux-x64   [====================] 100%
  fetched-v12.18.1-win-x64     [====================] 100%
  fetched-v12.18.1-macos-x64   [====================] 100%

Bei einem erneuten Aufruf werden automatisch gecachte Node.js-Runtimes verwendet so das das Paketieren viel schneller durchgeführt wird. Ohne Angabe von Parametern werden automatisch Executables für Windows, MacOS und Linux erstellt. Über zusätzlichen Parameter kann genau spezifiziert werden welche Node.js-Version verwendet und für welche Systeme ein Executable erstellt werden soll. Leider sind die erstellten Executables sehr groß. Für die Version 12 von Node.js bei einem einfachen "Hello World"-Programm mit ca. 40 MB zu rechnen. Durch einfaches zippen kann die Größe auf ca. 12 MB reduziert werden. Die Großen Executables sind der Funktionsweise von Pkg geschuldet: Scripte werden mit einer Runtime zusammen in eine Executable gepackt und nicht etwa kompiliert. Dies ist bei interpretierten Scriptsprachen nicht vorgesehen. Dennoch ist Pkg ein interessantes Tool wenn man mal schnell ein "kleines" Script weitergeben möchte.

LÖVE - Eine Open-Source 2D Lua-Game-Engine

Bei LÖVE oft auch Löve2d oder Love genannt handelt es sich um eine rudimentäre 2D-Game-Engine. LÖVE bringt seine eigene LUA Runtime mit und ermöglicht das Entwickeln unter Windows, MacOS, und Linux. Es existiert auch eine Runtime für Android. Die Installation unter Windows gestaltet sich durch eine Installer sehr einfach. LÖVE Spiele werden wie auch in PICO-8 mit LUA entwickelt, wobei LÖVE aber keinerlei Tools bereit stellt. Für die Entwicklung wird also ein separater Editor/IDE benötigt. Grafiken und Sounds müssen ebenfalls extern erstellt werden. Alle Game-Ressourcen werden einfach in einem Ordner abgelegt. Die einzige Bedingung von LÖVE ist das der Ordner eine main.lua enthält welche als Startpunkt für die Game-Engine dient. LÖVE stellt Grafik, Sound und Eingabe-Funktionen bereit. Es existieren zahlreiche Libraries für LÖVE, leider sind viele nicht mehr kompatibel mit der aktuellsten Version und wurden schon seit Jahren nicht mehr geupdatet. Wenn man mehrerer Libraries verwendet entsteht schnell ein durcheinander, da es anscheinend keine Standards für die Installation gibt, legt jede nicht native Lua-Erweiterung seine DLLs in einem anderen Ordner ab. Einige wenige LÖVE-Libraries können schon über Luarocks installiert werden, hoffentlich vereinfacht sich die Installation in der Zukunft. LÖVE Spiele können in *.love Dateien gepackt werden um sie zu teilen. Dabei handelt es sich lediglich um umbenannte Zip-Dateien. Leider funktionieren viele der LÖVE-Libraries nach dem Packen nicht mehr. Es ist zwar ebenfalls über Umwege möglich eine Executable zu erstellen, diese Plagen aber die selben Probleme wie die Love-Dateien, externe Libraries werden nicht mehr gefunden. Wegen dieser Probleme und des begrenzten Funktionsumfangs von LÖVE bieten sich andere Game-Engine an wenn man nicht alles von Grund auf selbst implementieren will.

LÖVE kann unter love2d.org heruntergeladen werden.

Banana Rider - Ein PICO-8 Spiel

"Banana Rider" ist ein kleines für den PICO-8 Programmiertes Spiel. Ziel des Spieles ist es möglichst viele Münzen einzusammeln. Dabei müssen die Felsen vermieden werden. Bei einer kollision mit einem Felsen verliert man ein Leben. Nach 3 Kollisionen oder einer Minute ist das Spiel automatisch zu Ende und es wird die erreichte Punktuzahl angezeigt.




Hier geht es zum Spiel: Banana Rider

PICO-8

Bei PICO-8 handelt es sich um eine sogenannte "Fantasy Console". Das sind erfundene Konsolen die sich meist an Konsolen in die 8 - 16 Bit Zeit orientieren. Sie ermöglichen das einfache erstellen von eigenen Spielen und richten sich deswegen alle Interessierten denen das Programmieren für echte Konsolen der 8-16 Bit Ära zu aufwendig ist, die aber dennoch etwas vergleichbares erstellen wollen. PICO-8 war eine der ersten dieser "Fantasy Console" und kostet momentan 14.99 $ und ist für Windows, Linux und MacOs verfügbar. Dabei Limitiert PICO-8 Absichtlich die zur Verfügung stehenden Möglichkeiten. So hat PICO-8 eine Auflösung von nur 128x128 Pixeln bei 16 Farben. Der Zeichensatz kennt nur Großbuchstaben. Durch diese Einschränkung ist es für Programmierer aber einfacher eigene Projekte umzusetzen, da man sich besser auf die Grundlegende Spielmechanik konzentrieren kann. PICO-8 ist Emulator und Editor in einem. Wenn man das PICO-8 Programm startet sieht man zuerst eine Startsequenz die an das Booten eines DOS-PCs oder eines Commodore erinnert. Man findet sich danach auf der PICO-8 Konsole wieder. Über diese Konsole kann der Integrierte Appstore gestartet werden oder es kann direkt einen neues Spiel programmiert werden. Über das drücken der Escape-Taste wird die integrierte IDE gestartet. Hier können Code, Grafik und Sounds erstellt bzw. geschrieben werden. So sind ein kleines Grafikprogramm, ein Tile-Editor als auch ein Sound-Editor bereits eingebaut. Spiele für PICO-8 werden in Lua geschrieben und können als virtuelle Cartridge über den integrierten Appstore veröffentlicht werden. Dabei sind alle Kreationen kostenlos und Open-Source. Auch bei über den Appstore geladenen Spielen ist es jederzeit möglich über die Escape-Taste in den Editor-Modus zu wechsel um z.B. Änderungen vorzunehmen oder zu untersuchen wie etwas implementiert ist.

Alternativ zum Appstore können die Virtuellen-Cartridges lokal auch als P8-Datei gespeichert werden. Elegant ist die Möglichkeit Spiele als PNG-Bild zu exportieren. Dabei handelt es ich um ein normales Bild das ein definiertes Logo oder Vorschaubild zeigt. Der eigentliche Programmcode wird in den Metadaten der PNG-Datei gespeichert und kann über die PICO-8-Runtime geladen und gespielt werden.

Die Idee hinter PICO-8 ist wirklich gut. Leider verderben die Einschränkungen des Editor-Modus den Spaß. Auch dieser läuft einer Auflösung von nur 128x128 Pixeln. Dadurch können nie mehr als ein paar Zeilen Code angezeigt werden. Beim Umsetzen etwas größerer Projekte stört das extrem. Natürlich ist auch möglich externe Editoren zu verwenden, allerdings verliert man dadurch das schnelle Testen von Codeänderungen und anderen Integrierten Tools. Nach jeder Codeänderung muss das Programm in PICO-8 neu geladen.

Reines spielen der PICO-8-Cartridges ist auch kostenlos über den Browser möglich. Allerdings können dann keine Änderungen vorgenommen werden und es ist auch nicht möglich den Code einzusehen oder gar neue Spiele zu erstellen.

PICO-8 ist eine interessante Spielerei um erste Spiele-Ideen auszuprobieren. Besonders "Nicht-Programmierer" werden darüber einfach an das Thema herangeführt. Falls man allerdings schon Erfahrung mit dem Programmieren hat und ausgewachsene IDEs kennt wird man sich schwer mit der integrierten 128x128-IDE von PICO-8 tun. Ihnen kann ich z.B das freie LÖVE Game-Engine empfehlen. Allerdings verliert man dadurch leider die intergiereten Tools von PICO-8. Mit Hilfe von PICOLOVE können PICO-8 Spiele zu LÖVE portiert werden. Nichtsdestotrotz wurden viele interessante und witzige kleine Spiele in PICO-8 programmiert. So ist z.B die erste Version des bekannten Spiels "Celest" bei einem Game-Jam auf dem PICO-8 programmiert worden.

Viele zusätzliche Links zu PICO-8 wurden unter awesome-PICO-8 zusammengetragen.

Inzwischen existieren mehrere teilweise auch kostenlose alternativen. Diese haben meist viele Komponenten von PICO-8 eins zu eins nachgebaut, verfügen aber nicht über die in Jahre gewachsene Community von PICO-8. Zu nennen sind hier: TIC-80, PV8, UnicornConsole und LIKO-12.

PureRef

PureRef ist ein kleines aber extrem praktisches Programm für Digital-Künstler. Mit PureRef kann man Inspirationen oder Referenzsammlungen für eine Grafik, ein 3D Model oder ein sonstiges Werk organisieren. Dafür können beliebige Bilder per drag and drop zu einer Sammlung hinzugefügt werden. Die Bilder können dabei in dem PureRef Canvas frei verschoben und skaliert werden. Es besteht die Möglichkeit Gruppen zu Bilden zu benennen und Bilder automatisch anzuordnen. Die Bedienung ist intuitiv und einfach zu erlernen. Das einzig ungewöhnliche ist das das Programmfenster mit gedrückter rechter Maustaste verschoben wird. Das Programm kann so konfiguriert werden das es immer im Vordergrund bleibt, was besonders beim arbeiten mit nur einem Monitor sehr praktisch ist. PureRef kann kostenlos unter www.pureref.com heruntergeladen werden (Spenden sind erwünscht). Es existieren Versionen für Windows, Mac und Linux.

Einfaches Webanwendungs-Management mit Caprover

Bei Caprover, das früher unter dem Namen CaptainDuckDuck bekannt war (IMHO war der alte Name um Klassen besser) handelt es sich um eine Web-Oberfläche zum Verwalten von Webanwendungen. Die Anwendungen werden dabei in Docker-Container gestartet. Dem Anwender werden viele Verwaltungsaufgaben abgenommen. Caprover wirbt mit dem Slogan "Build your own PaaS in a few minutes!" und tatsächlich ist es sehr einfach möglich Webanwendungen mit Caprover zu veröffentlichen. Caprover läuft selbst in einem Docker-Container was die Installation einfach macht. Für Digitalocean existiert ein fertiges Droplet wodurch für die Installation nur wenige Klicks benötigt. Die Installation ist aber auch bei anderen Providern nicht schwierig. Die einzige Anforderung ist ein installiertes Docker. Bei den meisten Server-Anbietern kann bereits eine vorgefertigtes Docker-VM-Image gestartet werden. Danach ist die Installation mit einem Befehl erledigt:

docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

Ein einfacher VServer ist vollkommen ausreichend für mehrere Node.js Anwendungen sowie eine Datenbank. Bei einem VServer ist meist der Arbeitsspeicher das begrenzende Element. Das beste an Caprover ist das einfache Deployment von Webanwendungen. Vor dem ersten Deployment muss nur eine Appname über das Webinterface von Caprover gewählt werden. Die App wird dann automatisch unter einer Subdomain mit dem entsprechenden Namen gestartet. Natürlich kann die zu nutzende Domain auch manuell geändert werden. Caprover kümmert sich dabei falls gewünscht auch um das entsprechende SSL-Zertifikat von Let's encrypt. Alle Webanwendungen laufen hinter einem Nginx-Webserver der auch für das HTTPS zuständig ist. Komplexere Konfigurationen können im Webinterface über die Nginx-Config vorgenommen werden.

Webanwendungen die in NodeJS, Python, PHP, ASP.NET oder Ruby geschrieben können ohne Dockerfile über eine captain-definition-Datei deployed werden. Über die captain-definition wird dabei konfiguriert welche Runtime von der Anwendung benötigt wird, falls notwendig kann auch eine Dockerfile verwendet werden.

Von einem Development-Rechner kann über den Konsolenbefehl:

caprover deploy 

direkt deployed werden, alternativ ist das auch über das Webinterface mittels eines TAR-Archives möglich. Über sogenannte One-Click Apps können gängige Webanwendungen in wenigen Klicks deployed werden.

Hier einige Beispiele:

Datenbanken und Datenbank GUIs

  • MongoDB
  • MongoExpress
  • MsSQL
  • MySQL
  • Redis
  • PhpMyAdmin
  • PostgreSQL
  • Adminer
  • Apache CouchDB
  • Gitea
  • ElasticSearch

Blogging und Content

  • WordPress
  • Ghost
  • Prisma 1
  • Strapi
  • Minio

Dev Tools

  • Jenkins
  • Drone.io
  • Hasura
  • Nexus3

Andere Apps

  • Parse
  • NextCloud
  • Rainloop
  • Thumbor

Visual Studio Code mit Bash unter Windows nutzen

Wer Visual Studio Code unter Linux benutzt wird sich schnell an das Integrierte Terminal gewöhnt haben. Unter Windows steht zwar CMD oder die Powershell zu Verfügung, wer aber unter Linux Bash verwendet und sich nicht immer umgewöhnen will kann Bash über Cygwin auch unter Windows als internes Terminal in Visual Studio Code verwenden. Dafür sind folgende Schritte notwendig:

  1. Cygwin Installieren
    Durch Cygwin stehen viele im Linux Terminal verwendeten Programme auch unter Windows zur Verfügung. Cygwin kann einfach über einen Installer installiert werden. Will man nachträglich Programme zu Cygwin hinzufügen kann man dies über ein erneutes aufrufen des Installers tun. Eleganter direkt aus dem Cygwin Terminal heraus geht es mit apt-cyg. Durch den Aufruf von lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg wird apt-cyg in das aktuelle Verzeichnis heruntergeladen. Für den Download der Datei wird Lynx verwendet. Dabei handelt es sich um einen Terminal-Browser. Lynx sollte in der Standartinstallation von Cygwin bereits installiert sein. Mit install apt-cyg /bin wird apt-cyg installiert. Die Installationsdatei kann nach der Installation über wieder mit dem Befehl rm apt-cyg gelöscht werden, da sie nicht mehr benötigt wird. Durch den Aufruf apt-cyg von wird das Manual angezeigt. Apt-cyg orientiert sich an apt-get, die meisten Befehle sind identisch.

  2. Chere installieren
    Mit apt-cyg install chere installiert man Chere. Über Chere kann ein Rechtsklick-Menü für Cygwin in den Windows Explorer eingebaut werden. Das ermöglicht es ein Terminal im aktuellen Ordner zu öffnen. Chere wird in der Visual Studio Code Konfiguration dafür verwendet um Bash automatisch im aktuell von Visual Studio Code geöffneten Projektordner aufzurufen, dadurch spart man sich das lästige navigieren zum Projektordner.

  3. Terminal konfiguriern
    Um Cygwin mit Bash unter Visual Studio Code zu nutzen muss folgende Konfiguration in der Settings-Datei vorgenommen werden. Die Settings können über das Menu Datei → Einstellungen → Einstellungen aufgerufen werden.

{
    "workbench.colorTheme": "Visual Studio Dark",
    "files.exclude": {
        "**/.git": true,
        "**/node_modules": true
    },
    "terminal.integrated.shell.windows": "C:\\\\Program Files\\\\Cygwin\\\\bin\\\\bash.exe",
    "terminal.integrated.shellArgs.windows": ["/bin/xhere", "/bin/bash"],
    "window.zoomLevel": 0
}

Nach einem Neustart von Visual Studio Code kann das integrierte Terminal über das Menü Anzeigen → Integriertes Terminal oder das Tastenkürzel CTL + ö genutzt werden.