Quantcast
Channel: Continous Integration – Seite 3 – mynethome.de

RegExp in Aktion: Suffix als Filterkriterium

$
0
0

Immer mal wieder bin ich froh, das es RegularExpressions gibt. Sie helfen sehr dabei, schnell Änderungen in umfangreichen, strukturierten Texten (z.B. Quellcode ;-) ) vorzunehmen.

Ab und zu passiert es mir, das ich mir einen regulären Ausdruck erarbeite und 2 Wochen später einen ähnlichen Fall habe, den RegExp aber nicht dokumentiert habe – und mir nochmal erarbeite. Das hilft zwar, das Schreiben regulärer Ausdrückezu üben, ist aber nicht unbedingt effizient ;-)

Daher fange ich mal an den Ausdruck, der mir heute geholfen hat festzuhalten:

Es geht darum, alle vorkommen von „document“ mit „documents“ zu ersetzen. Natürlich sollen dabei die Vorkommen, bei denen das „s“ bereits angehängt ist, nicht ersetzt werden um nicht mit einem „documentss“ zu enden. Zum Testen als die Varianten:

document
documentReader
documentsFolla
Document

Des Rätsels Lösung ist der Ausdruck

(document)(?!s)

Den man z.B. im Sublime Editor oder in IntelliJ IDEA problemlos verwenden kann, wie im Screenshot zu sehen.

Bei dem ?! handelt es sich um ein sogenanntes „negative lookahead“, mehr dazu unter regular-expressions.info

Have fun! :)


Kubernetes on a RaspberryPi cluster

$
0
0

Recently, I decided to revive the raspberry pi cluster I used for Kubernetes-Experiments a while ago.

The re-install based on the Hypriot images and installation manual was pretty much straight forward.
Even though I encountered two strange things:

  1. Two of my RaspberryPi don’t want to connect via wifi. They have the very same config set as all others. Seems like they have brokern wifi chips.
  2. The sample configuration for the Ingress object that uses Traefik a a load balancer didn’t work as described – it just says „404 page not found“ instead of showing the acual sample page.
    Reason here is the Error

    ERROR: logging before flag.Parse: E0824 11:36:50.295344 1 reflector.go:199] github.com/containous/traefik/vendor/k8s.io/client-go/tools/cache/reflector.go:94: Failed to list *v1beta1.Ingress: ingresses.extensions is forbidden: User „system:serviceaccount:kube-system:default“ cannot list ingresses.extensions at the cluster scope

    which I couldn’t fix right away and decided to learn on that at a later stage.

Before really starting to use the cluster, the first bullet point to me was to set up a registry that is used to pull the images from. First thing, to set up a registry, is faily easy with the registry docker image. On top of that, QNAP provides an „app“ (which is, in their context, a docker-compose to wire a set of containers together) that bundles the registry with an nginx and an redis cache.

Now, the actually point was how to tell the nodes to pull from that registry. First I thought I need to tell kubernetes. But as kubernetes delegates the docker commands to the docker instance running on each node, it’s a docker config setting.

By the way: To execute commands on all nodes at the same time, tmux-cssh has become a good friend of mine ;-)
Now, to configure my NAS as a trusted registry, I have to install the ca of the self-signed certificate on my nodes:

sudo -i
mkdir -p /etc/docker/certs.d/192.168.100.201:6088
ln -s /etc/docker/certs.d/192.168.100.201:6088 /etc/docker/certs.d/NAShostname:6088
scp admin@192.168.100.201:/etc/docker/tls/ca.pem /etc/docker/certs.d/192.168.100.201:6088/ca.crt

The link set using the „NAShostname“ is so that I can also use the name instead of the IP.

After that I’m able to push and pull images from & to my local private registry.

Let’s say I’d build a little application and pushed an image for that application based on a arm32v7 base image to my registry at „NAShostname:6088/armhf/application“. (Remember: CPU architecture matters! So you can’t use images build and running on your x86 or amd64 machine an a ARM based RaspberryPi!)
To run that application on my kubernetes cluster I have to:

Create a deployment

kubectl run demo --image=NAShostname:6088/armhf/application:latest --replicas=3 --port 8080

Expose that deployment to the outside world

kubectl expose deployment demo --type=LoadBalancer

The thing now is that the service created to expose the deployment never gets an IP address assigned. Status reads like:

$ kubectl get services demo
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
demo         LoadBalancer   10.98.4.191   <pending>     8080:32390/TCP   26m

To solve this, we need to define an external IP manually. THe tricky part is to know what valid external IPs are. It turns out that only thos from node that are running one of the deployments pods are working.

Lets find out waht these are:

$ kubectl get pods -o=wide
NAME                          READY     STATUS    RESTARTS   AGE       IP           NODE      NOMINATED NODE
demo                          1/1       Running   0          1h        10.244.2.3   node04    none
demo                          1/1       Running   0          1h        10.244.1.3   node05    none
demo                          1/1       Running   0          1h        10.244.4.3   node02    none
$ kubectl get nodes --output=wide
NAME      STATUS    ROLES     AGE  VERSION   INTERNAL-IP     EXTERNAL-IP  OS-IMAGE                        KERNEL-VERSION         CONTAINER-RUNTIME
node02    Ready     none    11d  v1.11.2   192.168.100.105   none       Raspbian GNU/Linux 9 (stretch)  4.14.34-hypriotos-v7+  docker://18.6.0
node03    Ready     none    11d  v1.11.2   192.168.100.103   none       Raspbian GNU/Linux 9 (stretch)  4.14.34-hypriotos-v7+  docker://18.6.0
node04    Ready     none    11d  v1.11.2   192.168.100.100   none       Raspbian GNU/Linux 9 (stretch)  4.14.34-hypriotos-v7+  docker://18.6.0
node05    Ready     none    11d  v1.11.2   192.168.100.101   none       Raspbian GNU/Linux 9 (stretch)  4.14.34-hypriotos-v7+  docker://18.6.0
node06    Ready     master    11d  v1.11.2   192.168.100.102   none       Raspbian GNU/Linux 9 (stretch)  4.14.34-hypriotos-v7+  docker://18.6.0

Thus, we can use .105, .101 and .100 to expose our service:

$ kubectl edit services demo

Add the list „externalIPs:“:

apiVersion: v1 
kind: Service 
metadata: 
  creationTimestamp: 2018-08-19T08:20:03Z 
  labels: 
    run: demo 
  name: demo 
  namespace: default 
  resourceVersion: "1585558" 
  selfLink: /api/v1/namespaces/default/services/jetty-demo 
  uid: 804d3b3a-a776-11e8-a44f-b827eb388bbf 
spec: 
  clusterIP: 10.103.151.206 
  externalIPs: 
  - 192.168.100.105 
  - 192.168.100.102 
  - 192.168.100.100 
  externalTrafficPolicy: Cluster 
  ports: 
  - nodePort: 31285 
    port: 8080 
    protocol: TCP 
    targetPort: 8080 
  selector: 
    run: demo 
  sessionAffinity: None 
  type: LoadBalancer 
status: 
  loadBalancer: {}

After saving, we can finally access the application via one of the IPs on port 8080.

For me, that feels somewhat unstatifying as by the binding of the pod ip to access the application the flexibility promised by kubernetes is vanished. Thus I suspect the cluster is not working as expected at this point and there is a lot of stuff to learn – if you actually want to setup your own kubernetes.
Most of the times, I’ve been working with it as a hosted solution or in context of OpenShift – and thats probably also the reason why setting up and running k8s ist not so well documented that acutally using it afterwards.

If someone comes along these lines and has some suggestions or questions – I’d be very happy to see your comment ;-)

More interesting stuff:
* Build containers faster with Jib, a Google image build tool for Java applications
* Setup k8s on pi using Ansible

JPG with OpenJDK

$
0
0

Some articles in the web (e.g. on stack overflow) claim that OpenJDK does not have support to write JPG images.

Looking into it, I foudn that there is a JPEGImageWriter and a com.sun.imageio.plugins.jpeg.JPEG included with OpenJDK 11 (looking at version 11.0.1).

But this code does not produce an JPG as expeced:

BufferedImage bufferedImage = generateImage(new Date());

String fileName = "SampleFile";

if(!ImageIO.write(bufferedImage, "jpeg", new File(fileName + ".jpg"))){
    System.out.println("No writer for JPG found!");
}

It rather claims „No writer for JPG found!“ :(

Debugging a bit shows, that the JPEG ImageWriter ist available but not loaded due to the test image data I create in the generateImage() method above.

There, BufferedImage is created using

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB)

But,  the type TYPE_INT_ARGB is not supported with JEPG and thus, the JPEGWriter not selected as a valid writer.

Changing the type to

BufferedImage.TYPE_3BYTE_BGR

fixes this and I’m able to write JPG with OpenJDK – hooray! ;-)

Thus, the claim that OpenJDK is not able to write JPG is not true (anymore), one just need to be aware to the implications the various ImageTypes have.

That also mean that I’ve been wrong last night when I repeated what I read about OpenJDK being incapable of writing JPG in Binärgewitter Podcast, Episode 214 (yet to be released, will update the link as soon as possible). Sorry for that!

Have fun and keep coding! ;-)

Wochenschau – Was ist in KW 3 passiert?

$
0
0

Released

Anfang der Woche haben wir zu Rico, einem OpenSource Projekt bei Karakun, Rico-Angular released:

  • https://www.npmjs.com/package/rico-angular
  • https://github.com/rico-projects/rico-angular

 Dabei handelt es sich um einen Adapter, der den JavaScript client für Rico, rico-js bequem unter Angular nutzbar macht.

Binärgewitter Folge 221 wurde am Donnerstag Abend aufgenommen und kurz darauf veröffentlicht.

Missing

Ein Mapping zwischen den Download-Keys für den Download der Android Commandline Tools („3859397“ in https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip) und den API / SDK Versionen. Die gehen nicht im gleichen Takt, aber die Zahlen aus dem DL Key sind doch auch keine Version? Verknüpfung und Übersicht fehlen mir.
Ein Ansatz könnte sein, in den Sourcs des Gradle Android Plugin zu suchen: https://stackoverflow.com/questions/41379103/source-code-of-googles-gradle-plugin-for-building-android – leider bin ich nicht mehr dazu gekommen, dem im Detail nachzugehen.

Issues

Der Issue in GitLab, der verhindert das man das iPad external Keyboard nutzen kann um unterwegs in der WebIDE zu programmieren, ist leider immer noch (reported beim Hackergarten in Dortmund im Sommer 2018) offen.

Mit NativeScript kann man zur Zeit keine Kotlin-Plugins verwenden, die Companion objekte verwenden:
https://github.com/NativeScript/android-runtime/issues/1178

Initiatives

Ein kleiner Erfolg im Sinne von PublicMoney? PublicCode! Die Tagesschau App ist auch auf dem alternativen/Freien F-Droid Store verfügbar: https://service.tagesschau.de/app/repo/ – Jetzt müsste sie nur noch OpenSource werden ;-)

Der Widerstand gegen Artikel 11 (Leistungsschutzrecht) und 13 (Upload-Filter, Zensur) der Urheberrechtsreform der EU braucht immernoch dringend Untersützung:
Germany, help save the Internet from the Copyright directive!
Bringt die Petition über 4,5 Mio Unterzeichner*Innen! 
https://savetheinternet.info/

Media

Gilette versucht mit einem Spot das Bild von „Mann“ das sie in ihrer Rasierer-Werbung verbreiten zu korrigieren.

Ich wurde Zitiert! Dank der Recherche von Timo wurde mir bekannt, das ich mit meinem Paper zu Android (lang ists her ;-) ) in dem Buch „Bring your own Device: Einsatz von privaten Endgeräten im beruflichen Umfeld – Chancen, Risiken und Möglichkeiten“ zitiert wurde. Yay! :P

Tools

Node Version Manager „nvm“

setzen der per default genutzten Version:

nvm alias default 10.15.0

Wo landen global installierte Module wenn man NVM verwendet?

~/.nvm/versions/node/<genutzte Version>/lib/node_modules/

list open ports on Linux

Man kann es nicht oft genug irgendwo hinschreiben ;-

netstat -tulpn

WiFi

WiFi / WLAN Netze über Ihre SSID lokalisieren? Mit https://wigle.net ! :-)

MySQL client für MacOSX

Mit SequelPro gibt es einen open source Client mit graphischer Oberfläche für MacOS X.

Matomo / Piwik

Für die Web-Traffic-Analyse Suite Matomo (früher Piwik) gibt es ein kostenpflichtiges Plugin, mit dem man die „Keywords not defined“ von Google wieder in sichtbare Suchebegriffe auflösen kann: Search Engine Keywords Performance

Wochenschau – Notizen aus KW 4

$
0
0

Tools

TeamCity Builds können BuildSteps nicht Abhängig von Begebenheiten ausführen („Conditional“). Das bedeutet zum Beispiel, das man nicht sagen kann „bau das, und wenn das der master branch ist, deploy es mit diesem Schritt“. Entweder, man packt das ins Buildsystem – wo es dann aber auch auf Systemen die nicht das CI System sind, zum Beispiel dem Rechner des Entwicklers, ausgeführt wird. Oder man richtet eine eigene Build-Config ein, die dann in Abhängigkeit, also „conditional“, ausgeführt werden kann. Es gibt einen Issue dazu bei Jetbrains (und den kann man auch „UpVoten“ … ;-) )

TravisCI wurde gekauft!

Communication

Interessantes Slidedeck: 10 Golden Social Media Rules for Developer Relations Manager

Neu entdeckt: NSFW YouTube YouTube nutzen ohne einen Account zu nutzen (und damit der Datenkrake weniger Daten zu liefern als sie gerne hätte). Mit ausführlicher FAQ.

Transportation

Deutschland regt sich über Gedankenspiele zum „Temo 130“ auf – und die CDU entlarvt sich dabei als „Partei der Automobilindustrie“. Tempo 130 würde nicht schaden – auch wenn ich gerne mal richtig schnell fahre, in der Regel lässt der Verkehrt es dann doch nicht zu und die Geschwindigkeitsdifferenz zwischen denen die auch in dichtem Verkehr versuchen schnell zu fahren und denen die mit Richtgeschwindigkeit (oder langsamer) fahren, macht das fahren sehr viel stressiger als nötig. Ein Vergleich mit Autobahnfahrten in unseren Nachbarländern wie der Schweiz, den Niederlanden oder Österreich lohnt sich. Ein Problem, was ich sehe ist, das eine Einführung des Tempolimits daran geknüpft ist, das es auch durchgesetzt werden muss. Sonst kommt man sich evtl. veräppelt vor, wenn man ordnungsgemäß fährt und doch weiter von Rasern gestresst wird ;-) Und diese Durchsetzung könnte dann wieder in lauteren Rufen nach Überwachungstechnologie münden, die wir nicht haben wollen…..

Food

Die Bahn hat die Vollkornschnitte aus dem Menü der ICE Bistros getrichen. Eine Fehlentscheidung – so hat die Speisekarte an Bord jetzt nix mehr was auf der Preis/Leistung/Geschmacksskala aktzeptabel ist. (Das sehen auch andere so ;-) ). Und die als Alternative angebotenen „Mediterranen Stullen“ sind ein graus. Völlig überladen mit Belag (irgendeine Creme mit Gemüse) und völlig überwürzt. Vielleicht kann man das ja im Rahmen der Qualitätsoffensive der Bahn korrigieren?

Hardware

Das MacBook hat seit 2006 laut einem Reperatur-Dienstleister einen Designfehler. Ich bin gespannt, ob Apple darauf wirklich mit einem Austauschprogramm reagiert und ob das bedeutet, das mein MBP zum 5ten Mal in die Werkstatt muss… 🙄🙈

Initiatives

Upload- und Urheberrechtsreform

In Ergänzung zum Post von letzter Woche habe ich als Kommentar schon angemerkt, das die Gesetzesnovelle auf Eis liegt .

Erstmal eine Gute Nachricht, doch muss der Druck und die Aufmerksamkeit noch steigen, um die Kuh final vom Eis zu bekommen. Julia Reda betont daher nochmal in einem Beitrag beim Deutschlandfunk: „Es wäre in jedermanns Interesse den #Artikel13 komplett zu entfernen“. Insgesamt ein hörenswerter Beitrag, auch über das erwähnte Statement hinaus. Viel Spaß beim Nachhören :)

Public Money – public Code!

Die FSFE hat eine neue Broschüre zum Thema!

Connectivity

Dieser Beitrag wurde fertiggestellt, während ich im Zug saß und mich einmal mehr daran erfreuen konnt, das weder das Wifi im ICE, noch die Mobilfunknetze von T-Mobile oder Telefonica eine stabile Datenverbindungs-Grundversorgung, die die Übertragung von mehr als ein paar Zeichen pro Sekunde erlauben würde, gewährleisten können. Insbesondere südlich von Karlsruhe… :-/

Wochenschau – Notizen aus KW 5

$
0
0

Security

Öffentlich gewordene Passwörter sind nach wie vor ein großes Ärgernis, nicht zuletzt ins Bewusstsein gerufen durch den Collection #1 Leak, der 22 Milliarden(!) offengelegt hat.

Einen sehenswerten Auftritt zum Thema hat Linus Neumann (CCC, LogbuchNetzpolitik) am 08.01. bei Markus Lanz gehabt. War zwar nicht in KW5, ist aber immernoch einen Link wert. Schliesslich war am Freitag der #StarkePasswörterTag. Er erklärt docht auch anschaulich, was 2-Faktor-Authentifizierung eigentlich ist und andere wissenswerte Dinge. Eignet sich auch gut, um es weniger IT-affinen Menschen zu zeigen, um etwas mehr awareness zu schaffen :)

Eine schöne Veranschaulichung dazu hat dann extra3 gebracht.

Und in den letzten beiden Folgen Logbuch Netzpolitik LNP283 und LNP284 wird der Themenkreis auch nochmal ausführlich behandelt.

Weitere nützliche Webseiten sind:

Transportation

Und es ging in der vergangenen Woche fröhlich weiter mit den Diskussionen rund um Tempo 130. Die Bundesregierung erteilt der Idee eine Absage, der Verkrehrsminister Scheuer bezeichnet die Möglichkeit, Unfallzahlen zu senken und Leben zu retten als „gegen jeden Menschenverstand“ und behauptet falsch, Deutschland hätte die sichersten Straßen der Welt.

Abgeordnetenwatch hat mal nachgefragt wie welche Abgeordneten dazu stehen – so kann man schön nachschauen, wie der im eigenen Bezirk gewählte Vertreter steht ;-)

Bei der Deutschen Bahn gibt es wieder fleissig Diskussionen, wo Geld für die weitere Sanierung herkommen kann und Stimmen, das man in der Regierung wohl nicht so recht weiss, wo hin man will. Erschrocken hat mich dabei, das die Chose mit der Privatisierung immer noch in vielen Köpfen zu sein scheint – obwohl ja gerade der Quatsch Schuld an einem Großteil der Misere ist (Kaputtsparen, um eine augenscheinlich attraktive Rendite für potentielle Investoren zu generieren.). Geld aus der Autobahnmaut und der Reduktion von Dieselfahrzeugen zu nehmen, klingt da doch viel plausibler.

Tooling

Awaitility

Zu meinem Lieblingsthema „End-To-End Test für Webapplikationen mit Geb“ hat Michael Kutz einen Artikel geschrieben.

Homebrew ist in Version 2.0 erschienen – und funktioniert jetzt auch unter Linux und Windows.

Oracle Java 8 wird nicht mehr gepflegt. Zeit auf OpenJDK umzusteigen und sich genau anzusehen, welche Schritte man benötigt um schnell auf eine aktuelle Version zu kommen (Java 9 und 10 kann man getrost überspringen, 11 muss das Ziel sein!) und sich einen Plan zurecht zu legen, wie man zukünftige Upgrade schnell umsetzt. Es ändert sich viel im Java Universum, nicht nur beim Release Zyklus.

Marketing & Food

Reparatur Fatboy Edison the Petit

$
0
0

Ich habe ein älteres Modell der Fatboy Edison the Petit Lampe.

Leider habe ich mir dieser kürzlich 2 Probleme gehabt: Zum einen war das mitgelieferte Netzteil nicht auffindbar, zum anderen funktionierte der Akku nicht mehr. Ersteres ist bei dem Modell ärgerlicher als bei den aktuellen Modellen, weil es noch nicht über einen USB Anschluss zum Laden verfügt.

Zu erstem Problem habe ich mich an den Fatboy Support gewandt. Leider konnte man dort meiner Bitte, mit die techn. Daten des Netzteil mitzuteilen nicht nachkommen, sondern mir nur ein Angebot für ein Ersatznetzteil über 20 € machen.

1/3 des aktuellen Neupreises der Lampe für ein Netzteil auszugeben, während ich so viele Netzteile bereits habe das die Wahrscheinlichkeit sehr sehr groß ist, das sich darunter ein kompatibles finden würde, habe ich nicht eingesehen.

Zum Glück, denn kurze Zeit später fand sich das Netzteil wieder. Falls jemand diesen Artikel auf der Suche nach genau dieser Information findet: Ausgangswerte sind 0.5A bei 5V.

Das zweite Problem erklärte sich direkt nach dem Aufschrauben der Lampe: Der Akku hatte sich aufgebläht.
Er trägt die Bezeichnung „ZH103048“, zu der das Internet die Werte 3.7V und 1500mAh liefert. Zum Glück hab ich noch einen Akku mit gleicher Spannung und etwas niedriger Kapazität greifbar gehabt, so dass die Lampe jetzt auch wieder bei Bedarf ohne Kabel eine Weile leuchtet :)

KW 6 in Stichpunkten

$
0
0

Die vergangene Woche war so ereignisreich, das ich nur wenige Stichpunkte habe – der Wesentlichste ist jedoch der zur Achterbahnfahrt des Artikel 13 der Urheberrechtsreform der EU.

Upload- und Urheberrechtsreform

Am 05. Februar kam die News von Julia Reda, das der Artikel wieder auf der Zielgeraden ist, und schlimmer als zuvor – kommt einem schon so vor als wenn die Ruhe davor ein Täuschungsmnöver gewesen wäre.

Am 08.02. gabs dann noch den Paukenschlag, das die Bundesregierung ihren Koalitionsvertrag bricht und sich voll hinter Artikel 13 und Uploadfilter stellt – ein Jammer, das die SPD unfähig und/oder unwillens ist, das auszuschlachten. Ihrerseits wird sie ja bei jedem unliebigen Kommentar mit Verweis auf den Koalitionsvertrag zum Schweigen verdonnert…

Hilfe zum Aktivismus liefert #saveYourInternet

Weiteres…

In Frankfurt fährt jetzt ein elektrisch angetriebenes Müllfahrzeug rum.

Holgi hat mit WR909 eine sehr hörenswerte WRINT Folge zur polistischen Landschaft in Deutschland im allgemeinen und der SPD im speziellen veröffentlicht.


KW 7: Einige Eckpunkte

$
0
0

Papierkorb ist kein Backup!

Die „Papierkorb“ Funktion von Nextcloud ist zwar praktisch, insbesondere weil dort auch von anderen in einem geteiltem Verzeichnis gelöschte Daten zwischengelagert werden – zu sehr sollte man sich dennoch nicht darauf verlassen. Denn es gibt eine Größenbeschränkung für selbigen. Das bedeutet dann in der Praxis, das man aus dem Papierkorb nur 80% eines Verzeichnisinhaltes wiederbekommt, weil die anderen Dateien über dem Grenzwert lagen.

Also doch lieber ein richtiges Backup, zum Beispiel mit Borg. Differentiell und De-Duplizierend und Restore funktioniert auch schnell. ;-)

Music

Einfach mal wieder Musik hören – ohne Streaming. Zum Glück gibt es immer noch einen vom guten alten Amarok Player abstammendes Projekt: Clementine.  Die Website wirkt frisch, aber es täuscht: das letzte Release ist von 2016 :(
Das zugehörige Github Projekt verzeichnet allerdings durchaus einige Aktivität und auf dem Buildsystem gibt es auch aktuelle Builds. Das Projekt hat eine aktive Buildbot Instanz die auch eine ansehnliche Matrix der Cross-Plattform builds produziert.

Security

Es gibt mal wieder einen Leak – diesmal bei 500px.

Politik

Die Kanzlerin rückt die Proteste für Klimaschutz von Schülern in den Kontext hybrider Kriegsführung.

Nazis in der Bundeswehr

Die Bundeswehr hat einen Skandal, der geflissentlich kleingehalten wird. Vor einigen Wochen habe ich das erste mal (Focus, Taz) davon gelesen, jetzt bestätigt es sich Berichten zufolge immer mehr: Es gibt eine Gruppe, die sich aus ehem. Spezial- und Elitesoldaten zusammensetzt und mit rechter Gesinnung einen Umsturz in der Bundesrepublik anstrebt.

Vor dem Hintergrund lässt mich der Artikel zum ersten Landesregiment für den Heimatschutz erschaudern. Bis 2026 soll dann „in jedem Bundesland ein Landesregiment mit einem charismatischen Kommandeur, einer Truppenfahne und einem Verband zwischen 800 und 2000 Reservisten zur Unterstützung von Polizei und Bundeswehr in Notlagen vorhanden ist.“

Zunächst einmal ist aber wirklich absurd, das es nicht mehr Aufruhr zu dem Thema „Gruppe Hannibal“ gibt. (Seite bei bento)

Urheberrechtsreform

Und doch beschlossen – zumindest als Ergebnis der Trilogverhandlungen.

https://www.sueddeutsche.de/digital/uploadfilter-ergebnis-eu-urheberrecht-1.4329775

Erstmal schockierend, aber was seit Mittwoch dann im Netz und auf der Straßein Köln betonen tausende, das sie keine Bots und gegen die Reform sind- los ist, ist schon beeindruckend. Weiter so!

Die Geschichte mit den Bots rührt übrigens daher, das man bei der CDU der Meinung ist, das alle von GMail Konten gesendete Mails von Bots stammen würden. Begründung ist, das sich die verabschiedete Reform ja gegen Google richten würde.
Schade nur, das man nicht bemerkt, das das komplett falsch ist. Google ist Anbieter der Technologie, die mit Umsetzung der Reform verpflichtend würde und zudem ein so großer Fisch das sie den Anforderungen – im Gegensatz zu vielen kleinen Konkurrenten – problemlos nachkommen könnten.

Tools

https://www.nsfwyoutube.com/ – YouTube anschauen ohne sich mit einem Google Konto anmelden zu müssen und ohne umfangreich getrackt zu werden.

Released

Binärgewitter 223 wurde aufgenommen (es gab auch einen Livestream ,-) ) und veröffentlicht.

KW 9: Worte

$
0
0

Politik

Urherberrechtsreform

Zur Urheberrechtsreform will ich daher eigentlich nicht viel schreiben, nur das Wichtigste: Ruft die Abgeordneten an und geht zu den Demos! (DANKE an die 3500 die gestern schon in Berlin aktiv waren!)
Wer noch nicht im Bilde ist: savetheinternet.info und Logbuch Netzpolitik 288

Eine gute Zusammenfassung findet sich auch im Twitter-Thread von Enno Park – eigentlich ist alles noch viel schlimmer. Es geht nicht nur im Artikel 13 und die Uploadfilter. Es geht auch um die Implementierung des in Neutschland und in anderen Ländern gescheiterten Leistungsschutzrechts für die ganze EU – ohne vorher evaluiert zu haben, was es bewirkt. Es geht um eine Umverteilung von Urhebern hin zu Rechteverwertern. Und um eine Entrechtung von Urhebern. (Es gibt einen Unroll dazu, für bessere Lesbarkeit)

Es bleibt als beim Aufruf, Aktiv zu werden: Haltet euch den 23. März frei und geht zu einer Demo! Und ruft Abgeordnete an!

Als wenn das nicht reichen würde, sind bereits weitere Schritte geplant, auf den aus der Urheberunrechtsreform resultierenden Vorschriften aufbauend die Zensurmaschine zu vervöllständigen:

Zum einen die automatische Erkennung und Unterdrückung „terroristischer Inhalte“als Link der Entwurf der Richtlinie (wurde bei mir mit falschem MIME-Type und ohne Dateinamen ausgeliefert, zum Lesen in .pdf umbenennen).

Und zum anderen der Vorschlag für ein Verbot von Tor, dem Netz im Netz das der anonymen Kommunikation verschrieben ist. Das lesenswerte Editorial der aktuellen c’t  fasst es zusammen.

Technologie

PDF Libraries

Möchte man PDFs erzeugen, landet man im Kontext von Java sehr schnell bei iText. Aber es gibt interessante Alternativen, zwei davon sind:

Tooling

Schnell einen regulären Ausdruck erzeugen? https://regexr.com/

Keynote, das Programm zum erstellen von Präsentationen von Apple, kann keine SVG Graphiken einbetten.
Der Workaround ist, ähnlich zum seltsam anmutenden Weg, PDF zu nehmen, um SVGs als Icons in iOS Apps zu verwenden, das SVG mit Safari in ein PDF zu setzen und dieses PDF dann in Keynote zu benutzen.
Jedoch nicht, wie es vielleicht naheliegend wäre über „export as PDF“, sondern über den Druckdialog und „Speichern als PDF“. Konturen gehen verloren und man kann zunächst auch keine Schlagschatten anwenden, aber man bekommt es zumindest „irgendwie“ hinüber.
Und Keynote hat noch ein As zu seiner Ehrenrettung im Ärmel: Man kann bei Bildern eine Transparenzfarbe wählen und so den weissen Hintergrund transparent setzen – und schon wird der Schlagschatten auch auf die Kontur des eigentlichen Bildes angewandt.

Released

Binärgewitter 224: Urheberunrecht

Es ist Karneval 🎉Alaaf!