<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog on webman.at</title>
    <link>https://webman.at/cms/post/</link>
    <description>Recent content in Blog on webman.at</description>
    <generator>Hugo</generator>
    <language>de-DE</language>
    <managingEditor>bernd@webman.at (Bernd Öggl)</managingEditor>
    <webMaster>bernd@webman.at (Bernd Öggl)</webMaster>
    <lastBuildDate>Mon, 02 Oct 2023 11:53:25 +0000</lastBuildDate>
    <atom:link href="https://webman.at/cms/post/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Docker, 4. Auflage</title>
      <link>https://webman.at/cms/post/2023-10-02_dockerv4/</link>
      <pubDate>Mon, 02 Oct 2023 11:53:25 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2023-10-02_dockerv4/</guid>
      <description>&lt;h2 id=&#34;docker-4-auflage&#34;&gt;Docker, 4. Auflage&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;Das Praxisbuch für Entwickler und DevOps-Teams&lt;/em&gt;,&#xA;von Bernd Öggl und &lt;a href=&#34;https://kofler.info&#34;&gt;Michael Kofler&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mastodon, here we go!</title>
      <link>https://webman.at/cms/post/2022-11-mastodon/</link>
      <pubDate>Mon, 09 Jan 2023 17:44:46 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2022-11-mastodon/</guid>
      <description>Wieso bei Mastodon einsteigen? Nur weil ein wild gewordener Turbo-Kapitalist die Micro-Blogging-Plattform Nummer eins (Twitter) gekauft hat und am besten Weg ist diese zu zerstören? Nein. Mastodon verfolgt einen technisch sehr spannenden Ansatz, der Unabhängigkeit von großen Firmen garantiert.</description>
    </item>
    <item>
      <title>Pimp your Web-App mit Alpine.js</title>
      <link>https://webman.at/cms/post/2022-05-alpinejs/</link>
      <pubDate>Fri, 13 May 2022 07:05:48 +0200</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2022-05-alpinejs/</guid>
      <description>&lt;h2 id=&#34;das-problem&#34;&gt;Das Problem&lt;/h2&gt;&#xA;&lt;p&gt;Wer Anfang der 2010er Jahre (oder gar noch früher) Web-Applikationen entwickelt&#xA;hat, kam wohl um die Programmiersprache PHP nicht ganz herum. So verwendeten&#xA;auch &lt;a href=&#34;https://iprot.info/cms/ueber-uns/&#34;&gt;wir&lt;/a&gt; zu dieser Zeit PHP bei der&#xA;Erstellung des neuen Projekts &lt;a href=&#34;https://iprot.info/&#34;&gt;&lt;strong&gt;iPROT&lt;/strong&gt;&lt;/a&gt;. Erste Frontend&#xA;Frameworks wie &lt;a href=&#34;http://backbonejs.org/&#34;&gt;Backbone.js&lt;/a&gt; oder&#xA;&lt;a href=&#34;https://angularjs.org/&#34;&gt;Angularjs&lt;/a&gt; waren zwar gerade entstanden, wir&#xA;vertrauten aber auf Bewährtes und bauten die Logik hauptsächlich auf der&#xA;Server-Seite in PHP.&lt;/p&gt;&#xA;&lt;p&gt;Natürlich kam auch &lt;a href=&#34;https://jquery.com&#34;&gt;jQuery&lt;/a&gt; zum Einsatz. Es war in dieser&#xA;Zeit, in der sich nicht alle Browser an den HTML-Standard hielten (sprich&#xA;&lt;strong&gt;IE&lt;/strong&gt;), eine Riesenerleichterung für die Frontend-Entwicklung. Ja es&#xA;funktionierte so gut, dass wir immer mehr jQuery-Code ergänzten, was die Sache&#xA;irgendwann unübersichtlich werden ließ.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android rsync</title>
      <link>https://webman.at/cms/post/2021-11-android-ssh/</link>
      <pubDate>Fri, 05 Nov 2021 18:59:34 +0100</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2021-11-android-ssh/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;tl;dr&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;termux&lt;/code&gt; App unter Android installieren&lt;/li&gt;&#xA;&lt;li&gt;App starten openssh installieren und &lt;code&gt;sshd&lt;/code&gt; aufrufen&lt;/li&gt;&#xA;&lt;li&gt;am PC &lt;code&gt;adb&lt;/code&gt; mit Port-forwarding aktivieren&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;rsync&lt;/code&gt; am PC aufrufen&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;warum&#34;&gt;Warum&lt;/h2&gt;&#xA;&lt;p&gt;Vor vielen Jahren (7.5 um genau zu sein) habe ich ein Blogpost zum Thema &lt;a href=&#34;https://webman.at/cms/cms/2013/04/datentransfer-mit-rsync-openssh-und-cyanogenmod-am-galaxy-nexus/&#34;&gt;Datentransfer zwischen Android und PC&lt;/a&gt;&#xA;geschrieben. Ich bin damals schier verzweifelt mit den nicht vorhandenen&#xA;Möglichkeiten Daten effizient zwischen Android und meinem Linux PC zu&#xA;transferieren (&lt;code&gt;adb pull&lt;/code&gt; geht, kann aber keine &lt;em&gt;Wildcards&lt;/em&gt;, ich möchte die&#xA;Möglichkeiten die &lt;code&gt;rsync&lt;/code&gt; bietet).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker Buch, 3. Auflage</title>
      <link>https://webman.at/cms/post/2021-09-docker-buch/</link>
      <pubDate>Fri, 24 Sep 2021 12:42:21 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2021-09-docker-buch/</guid>
      <description>&lt;h2 id=&#34;docker&#34;&gt;Docker&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;Das Praxisbuch für Entwickler und DevOps-Teams&lt;/em&gt;,&#xA;von Bernd Öggl und &lt;a href=&#34;https://kofler.info&#34;&gt;Michael Kofler&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git Buch erschienen</title>
      <link>https://webman.at/cms/post/2020-09-git-buch/</link>
      <pubDate>Wed, 16 Sep 2020 13:33:51 +0200</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2020-09-git-buch/</guid>
      <description>&lt;p&gt;Es ist zwar schon seit zwei Wochen im Handel erhältlich, aber ein aktuelles&#xA;Projekt ließ mir nicht einmal die Zeit den kurzen Blog-Eintrag dazu zu&#xA;verfassen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android SSH-App mit Yubikey Support</title>
      <link>https://webman.at/cms/post/android-ssh-yubikey/</link>
      <pubDate>Thu, 16 Jul 2020 08:06:10 +0200</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/android-ssh-yubikey/</guid>
      <description>&lt;p&gt;Da der anstehende Urlaub der erste seit langer Zeit ohne Laptop sein wird (die&#xA;Fahrradtaschen bieten nur begrenzt Speicherplatz), suchte ich nach einem&#xA;seriösen SSH-Client für das Android Mobiltelefon. Da die Zugänge auf meinen&#xA;Servern inzwischen ausschließlich mit den SSH-Keys auf meinen beiden Yubikeys&#xA;abgesichert sind, war die Anforderung, dass der Client die Schlüssel von dem&#xA;Hardware-Token verwenden kann.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Alles neu</title>
      <link>https://webman.at/cms/post/webman/</link>
      <pubDate>Mon, 13 Jul 2020 16:04:03 +0200</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/webman/</guid>
      <description>&lt;p&gt;Nach ziemlich genau 19,5  Jahren wird aus komplett.cc&#xA;webman.at.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker 2. Auflage</title>
      <link>https://webman.at/cms/post/docker_v2/</link>
      <pubDate>Wed, 12 Feb 2020 08:43:43 +0100</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/docker_v2/</guid>
      <description>&lt;p&gt;Auch wenn es derzeit &lt;a href=&#34;https://www.heise.de/developer/meldung/Kommentar-Docker-hat-s-vergeigt-4586232.html&#34;&gt;nicht nur positive&#xA;Entwicklungen&lt;/a&gt;&#xA;für die Firma Docker Inc. gibt, so ist die Container-Technologie doch gekommen&#xA;um zu bleiben. Lesen Sie in der 2. Auflage unseres Docker Buches unter anderem über&#xA;&lt;strong&gt;podman&lt;/strong&gt;, eine Alternative zum Docker Kommandozeilenprogramm.  Außerdem wurde&#xA;der Text und alle Beispiele für die 2. Auflage vollständig aktualisiert.&lt;/p&gt;&#xA;&lt;p&gt;Den Quellcode für alle Beispiele können Sie von&#xA;&lt;a href=&#34;https://github.com/docbuc/dockerbuch&#34;&gt;github.com/docbuc&lt;/a&gt; laden.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://webman.at/cms/cms/images/docker_v2.png&#34; alt=&#34;Docker&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker</title>
      <link>https://webman.at/cms/post/2018-10-docker-buch/</link>
      <pubDate>Tue, 02 Oct 2018 20:14:47 +0200</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/post/2018-10-docker-buch/</guid>
      <description>&lt;h2 id=&#34;out-now&#34;&gt;Out now&lt;/h2&gt;&#xA;&lt;p&gt;Unser &lt;a href=&#34;https://webman.at/cms/cms/buecher/docker&#34;&gt;Docker-Buch&lt;/a&gt; gibt es zwar schon seit über einen&#xA;Monat zu kaufen, aber bislang fehlten mir für einen Blog-Eintrag eigene Bilder&#xA;von Docker Containern. Das Wochenende in Hamburg konnte hier Abhilfe schaffen&#xA;:-)&lt;/p&gt;&#xA;&lt;p&gt;Das Buch richtet sich an Entwickler und DevOps, die die faszinierende Docker&#xA;Technologie gerne &lt;em&gt;hands-on&lt;/em&gt; ausprobieren möchten. Wir stellen viele Beispiele&#xA;vor, die weit über das Hello-World Niveau hinausgehen und einen Einblick geben&#xA;sollen, wo Docker bei der täglichen Arbeit helfen kann.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WMTS Tilestore von PNG nach JPEG konvertieren</title>
      <link>https://webman.at/cms/2018/03/wmts-tiles-von-png-nach-jpg/</link>
      <pubDate>Fri, 23 Mar 2018 09:50:31 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2018/03/wmts-tiles-von-png-nach-jpg/</guid>
      <description>&lt;p&gt;Die Karten bei &lt;a href=&#34;https://snowhow.info/map&#34;&gt;snowhow-maps&lt;/a&gt; basieren auf den Daten&#xA;von Openstreetmap und werden um Geländeinformationen ergänzt. Das Ergebnis sind&#xA;über 7 Millionen &lt;em&gt;Karten-Kacheln&lt;/em&gt; im PNG-Format für den Alpenraum, die mit&#xA;Carto-CSS und Mapnik (Kosmtik) erzeugt werden.&lt;/p&gt;&#xA;&lt;p&gt;Da wir unter anderem Felszeichnung und Schummerung in der Karte verwenden, kann&#xA;mit dem JPEG-Format bei relativ geringem Qualitätsverlust einiges an Platz&#xA;gespart werden. Um die mächtige Dateistruktur mit einem &lt;em&gt;Einzeiler&lt;/em&gt; von PNG in&#xA;JPEG zu konvertieren und dabei noch ansprechende Dateinamen zu erhalten, kann&#xA;man folgendes Kommando im Wurzelverzeichnis des Tilestore verwenden:&lt;/p&gt;</description>
    </item>
    <item>
      <title>i3 - Mein neuer Linux Desktop</title>
      <link>https://webman.at/cms/2017/11/mein-neuer-linux-desktop/</link>
      <pubDate>Thu, 23 Nov 2017 15:50:31 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2017/11/mein-neuer-linux-desktop/</guid>
      <description>&lt;p&gt;Mein Desktop-Verhalten ist sicher nicht &lt;em&gt;mehrheitsfähig&lt;/em&gt;: Die meiste Zeit&#xA;meiner Arbeit verbringe ich in Konsole-Fenstern, dann ist da noch&#xA;&lt;a href=&#34;https://www.mozilla.org/de/firefox/&#34;&gt;Firefox&lt;/a&gt; (und manchmal&#xA;&lt;a href=&#34;https://www.chromium.org/&#34;&gt;Chromium&lt;/a&gt;). Statt Thunderbird verwende ich wieder&#xA;Mutt, weil es einfach schneller geht (ein &lt;a href=&#34;https://www.rainloop.net/&#34;&gt;gutes&#xA;Web-Mail&lt;/a&gt; muss manchmal aushelfen).&#xA;&lt;a href=&#34;https://vim.sourceforge.io/&#34;&gt;Vim&lt;/a&gt; ist natürlich der beste Editor der Welt.&#xA;Für manche Projekte verwende ich aber auch &lt;a href=&#34;https://atom.io&#34;&gt;Atom&lt;/a&gt; oder &lt;a href=&#34;https://code.visualstudio.com/&#34;&gt;VSCode&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;früher----mein-hintergrund&#34;&gt;Früher &amp;ndash; mein Hintergrund&lt;/h2&gt;&#xA;&lt;p&gt;Mein erster Kontakt mit Linux reicht in das Jahr 1994 zurück (ja, da war gerade Linux kernel 1.0). Mit den Mailprogrammen &lt;code&gt;elm&lt;/code&gt; und später &lt;code&gt;pine&lt;/code&gt; vergingen die 90er Jahre, ge-chatted wurde mit Unix &lt;code&gt;talk&lt;/code&gt;. &lt;em&gt;NCSA Mosaic&lt;/em&gt; und später &lt;em&gt;Netscape Navigator&lt;/em&gt; waren sowieso grandios. Aber auch die Freude über die aufkommenden Linux Desktops war groß: KDE selbst zu kompilieren war zwar eine große Aufgabe, aber einen Desktop &lt;em&gt;wie Windows&lt;/em&gt; unter Linux zu haben war sensationell.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gitlab Docker registry</title>
      <link>https://webman.at/cms/2017/10/gitlab-docker-container-registry/</link>
      <pubDate>Sun, 01 Oct 2017 15:50:31 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2017/10/gitlab-docker-container-registry/</guid>
      <description>&lt;p&gt;Schon seit längerer Zeit verwende ich eine selbst gehostete &lt;a href=&#34;https://gitlab.com/gitlab-org/gitlab-ce/&#34;&gt;gitlab&lt;/a&gt; Instanz um meine Programmierprojekte zu verwalten. Die Features dieser OpenSource Software sind wirklich sehr beeindruckend.&lt;/p&gt;&#xA;&lt;p&gt;Bei einem closed source Projekt entstand kürzlich die Notwendigkeit &lt;a href=&#34;https://www.docker.com/&#34;&gt;docker images&lt;/a&gt; gemeinsam zu verwenden. Die in gitlab integrierte docker registry macht das ohne große Klimmzüge möglich:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker login gitlab.komplett.cc:4567&#xD;&#xA;docker docker build -t gitlab.komplett.cc:4567/meinegruppe/meinprojekt .&#xD;&#xA;docker push gitlab.komplett.cc:4567/meinegruppe/meinprojekt .&#xA;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>IPv4 1.2.3.4</title>
      <link>https://webman.at/cms/2015/08/ipv4-1-2-3-4/</link>
      <pubDate>Thu, 13 Aug 2015 17:09:31 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2015/08/ipv4-1-2-3-4/</guid>
      <description>&lt;p&gt;Als ich kürzlich die Zeilen&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Waiting for 1.2.3.4&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;und dann noch&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Transferring from 1.2.3.4&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;in der Status-Zeile des Firefox Browser las wurde ich etwas unrund. Die aufgerufene Seite (&lt;a href=&#34;http://snowhow.info/&#34;&gt;http://snowhow.info&lt;/a&gt;) hatte ich selbst entwickelt und ganz sicher keinen Link auf http://1.2.3.4 eingebaut. Irgendwie schaute die Seite auch anders aus, aber nicht wesentlich. Also den Quellcode der Seite studiert und da steht es: Vor der &lt;code&gt;head&lt;/code&gt;-Anweisung hat jemand Javascript-Code aus einer anderen Domain eingeschleust:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nodejs und WordPress mit gemeinsamer Authentifizierung</title>
      <link>https://webman.at/cms/2014/11/nodejs-und-wordpress-mit-gemeinsamer-authentifizierung/</link>
      <pubDate>Wed, 05 Nov 2014 23:20:29 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2014/11/nodejs-und-wordpress-mit-gemeinsamer-authentifizierung/</guid>
      <description>&lt;h2 id=&#34;das-problem&#34;&gt;Das Problem&lt;/h2&gt;&#xA;&lt;p&gt;Bei &lt;a href=&#34;https://snowhow.info/&#34;&gt;snowhow&lt;/a&gt; verwenden wir &lt;a href=&#34;http://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; als Content-Management-System. Die Benutzer-Accounts für die snowhow User werden auch in WordPress verwaltet. Warum? Das System ist sehr weit verbreitet, die User-Verwaltung sollte also ausgereift sein (ge-hashte Passwörter, Passwort per E-Mail zurücksetzen).&lt;/p&gt;&#xA;&lt;p&gt;Außerhalb von WordPress als CMS setzen wir auf &lt;a href=&#34;http://nodejs.org/&#34;&gt;Nodejs&lt;/a&gt; und &lt;a href=&#34;http://mongodb.org&#34;&gt;MongoDB&lt;/a&gt;. Die aufgezeichneten &lt;a href=&#34;http://snowhow.info/map/?tid=514c93dc2675c7e26d7719ec&#34;&gt;Freeride-Tracks&lt;/a&gt; und &lt;a href=&#34;http://snowhow.info/map/?tid=534fdcebede116444cb8c004&#34;&gt;Skitouren&lt;/a&gt; kommen als GeoJSON direkt in die MongoDB und können dort via räumlicher Suche gefunden werden, herrlich unkompliziert. Aber wie kann der Nodejs-Server (&lt;a href=&#34;http://expressjs.com/&#34;&gt;express&lt;/a&gt;) auf die Authentifizierung von WordPress zugreifen?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse ssh tunnel mit autossh</title>
      <link>https://webman.at/cms/2014/09/reverse-ssh-tunnel-mit-autossh/</link>
      <pubDate>Fri, 12 Sep 2014 06:15:12 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2014/09/reverse-ssh-tunnel-mit-autossh/</guid>
      <description>&lt;p&gt;Eigentlich ist das Port-Forwarding im Router so eingestellt, dass der Remote Zugriff auf den Heimserver problemlos funktioniert. Leider hat der Provider aber die Möglichkeit den Router neu zu initialisieren (und damit meine Forward-Regeln zu löschen) und er macht auch massiv Gebrauch davon. Zwar kann der Server dann weiterhin mit dem Internet kommunizieren (und so auch als nagios-Server andere Server überwachen), der Zugriff von außen funktioniert aber nicht mehr.&lt;/p&gt;&#xA;&lt;p&gt;Mit einem Server im Internet lässt sich dem Problem ein Schnippchen schlagen, in dem man den Heimserver anweist einen &lt;em&gt;reverse ssh tunnel&lt;/em&gt; aufzubauen. Über diesen kann man später auf das Heimnetz zugreifen und die Port-Forwarding Regeln neu einspielen. Damit der Tunnel nach der Unterbrechung durch den Provider wieder hergestellt wird hilft &lt;a href=&#34;http://www.harding.motd.ca/autossh/&#34;&gt;autossh&lt;/a&gt;. Mit folgendem Eintrag in &lt;code&gt;/etc/rc.local&lt;/code&gt; (Ubuntu Server):&lt;/p&gt;</description>
    </item>
    <item>
      <title>vsftp mit chroot für sehr eingeschränktes FTP</title>
      <link>https://webman.at/cms/2014/09/vsftp-mit-chroot-fuer-sehr-eingeschraenktes-ftp/</link>
      <pubDate>Thu, 04 Sep 2014 21:20:42 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2014/09/vsftp-mit-chroot-fuer-sehr-eingeschraenktes-ftp/</guid>
      <description>&lt;p&gt;Für verschiedene Dienste bekommen wir stündlich, beziehungsweise täglich Daten von unseren Partnern. Diese Systeme verwenden FTP für den Transfer, weshalb wir einen eigenen FTP-Server (vsftp) betreiben müssen. Der Zugriff wird mehrstufig abgesichert:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Firewall-Regeln, die den Dienst auf das Subnetz des Partners einschränken&lt;/li&gt;&#xA;&lt;li&gt;FTP-Zugriff auf die entsprechenden User einschränken. Dazu wird die &lt;code&gt;vsftp.conf&lt;/code&gt; um folgende Einträge ergänzt:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;userlist_deny&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;NO&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;userlist_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;YES&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;userlist_file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/etc/vsftpd.user_list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Cordova/Phonegap Plugin als Android Service</title>
      <link>https://webman.at/cms/2014/07/cordova-plugin-als-android-service/</link>
      <pubDate>Wed, 30 Jul 2014 08:20:14 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2014/07/cordova-plugin-als-android-service/</guid>
      <description>&lt;h2 id=&#34;das-problem&#34;&gt;Das Problem&lt;/h2&gt;&#xA;&lt;p&gt;App-Entwicklung mit &lt;a href=&#34;https://cordova.apache.org/&#34;&gt;Cordova&lt;/a&gt; funktioniert großartig. Beim Aufzeichnen von GPS Tracks stößt man aber an die Grenzen der Technologie, da es keine Möglichkeit gibt, einen Prozess zu starten, der nicht automatisch vom System beendet werden kann. Dazu benötigt man ein Plugin…&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://webman.at/cms/cms/wp-content/uploads/2014/07/wpid-screenshot_2014-07-30-10-13-30.png&#34;&gt;&lt;img src=&#34;https://webman.at/cms/cms/wp-content/uploads/2014/07/wpid-screenshot_2014-07-30-10-13-30.png&#34; alt=&#34;wpid-screenshot_2014-07-30-10-13-30.png&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;ein-android-service&#34;&gt;Ein Android Service&lt;/h2&gt;&#xA;&lt;p&gt;Mit ein wenig Java Kenntnissen ist es einfach einen Hintergrund-Dienst (&lt;em&gt;Service&lt;/em&gt;) als &lt;a href=&#34;https://github.com/snowhow/cordova-plugin-gpstrack/&#34;&gt;Plugin für Cordova&lt;/a&gt; zu realisieren. Android kann den Service zwar auch beenden, startet ihn aber sofort wieder, wodurch das GPS tracking fortgesetzt wird. Einen Haken gibt es bei der Sache allerdings: Die Kommunikation zwischen Plugin und der Web-app ist schwierig. Die vorhandene Schnittstelle über den Callback-Context funkioniert (nach meinem Wissen) nicht, da der Service abgekoppelt läuft.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Snapshot Backups der virtuellen Maschinen</title>
      <link>https://webman.at/cms/2014/05/snapshot-backups-der-virtuellen-maschinen/</link>
      <pubDate>Thu, 15 May 2014 20:49:54 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2014/05/snapshot-backups-der-virtuellen-maschinen/</guid>
      <description>&lt;p&gt;Nach dem letzten Crash bin ich dazu übergegangen die virtuellen Maschinen jede Nacht per lvm-snapshot mit lzop komprimiert zu sichern. Eine separat eingebaute Festplatte (&lt;code&gt;/mnt/backup&lt;/code&gt;) hält diese backups. Das ultra-kurze Skript dazu sieht so aus:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LVMS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;snowhow komplett root&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;VG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;vg0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;BUP_DST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/mnt/backup/snapshot_vms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NICE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;15&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;VERBOSE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;## cron needs full path to commands&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LVCR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/sbin/lvcreate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LVRM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/sbin/lvremove&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LVS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/sbin/lvs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;VIRSH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/bin/virsh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getopts&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;:vl:&amp;#34;&lt;/span&gt; opt&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$opt&lt;/span&gt; in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    v&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;VERBOSE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    l&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;LVMS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OPTARG&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;esac&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; doBackup &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  logger -t SNAPSHOT_BACKUP &lt;span class=&#34;s2&#34;&gt;&amp;#34;starting backup for &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -f &lt;span class=&#34;nv&#34;&gt;$BUP_DST&lt;/span&gt;/&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;-snap.lzo &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mv &lt;span class=&#34;nv&#34;&gt;$BUP_DST&lt;/span&gt;/&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;-snap.lzo &lt;span class=&#34;nv&#34;&gt;$BUP_DST&lt;/span&gt;/&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;-snap.lzo.old&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$VIRSH&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;suspend&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$LVCR&lt;/span&gt; -L1G -s -n &lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;-snap /dev/&lt;span class=&#34;nv&#34;&gt;$VG&lt;/span&gt;/&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$VIRSH&lt;/span&gt; resume &lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VERBOSE&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$LVS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;SIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LVS&lt;/span&gt; --nosuffix --units b -o lv_size --rows --separator &lt;span class=&#34;s1&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt; /dev/&lt;span class=&#34;nv&#34;&gt;$VG&lt;/span&gt;/&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d&lt;span class=&#34;s1&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt; -f2&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$SIZE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    nice -n &lt;span class=&#34;nv&#34;&gt;$NICE&lt;/span&gt; bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;dd if=/dev/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VG&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-snap bs=4M | pv -s &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SIZE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; | lzop -c | dd of=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$BUP_DST&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-snap.lzo bs=4M&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$LVS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    nice -n &lt;span class=&#34;m&#34;&gt;15&lt;/span&gt; bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;dd if=/dev/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VG&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-snap bs=4M | lzop -c | dd of=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$BUP_DST&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-snap.lzo bs=4M&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$LVRM&lt;/span&gt; -f /dev/&lt;span class=&#34;nv&#34;&gt;$VG&lt;/span&gt;/&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;-snap&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  logger -t SNAPSHOT_BACKUP &lt;span class=&#34;s2&#34;&gt;&amp;#34;done backup for &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$LV&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; i in &lt;span class=&#34;nv&#34;&gt;$LVMS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;LV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  doBackup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Mapnik tiles für einen Ausschnitt neu erzeugen</title>
      <link>https://webman.at/cms/2014/02/mapnik-tiles-fuer-einen-ausschnitt-neu-erzeugen/</link>
      <pubDate>Thu, 06 Feb 2014 13:37:32 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2014/02/mapnik-tiles-fuer-einen-ausschnitt-neu-erzeugen/</guid>
      <description>&lt;p&gt;Unsere &lt;a href=&#34;http://snowhow.info/cms/snowhow-map/&#34;&gt;Basiskarte&lt;/a&gt; wird laufend um Informationen ergänzt (zum Beispiel ein Shapefile mit Skipisten). Nach einer solchen Ergänzung soll nicht der gesamte Karten-Cache (mod_tile/renderd) neu gerechnet werden, sondern nur der Ausschnitt in dem Veränderungen stattgefunden haben.&lt;/p&gt;&#xA;&lt;h2 id=&#34;lösung&#34;&gt;Lösung&lt;/h2&gt;&#xA;&lt;p&gt;Drei Schritte um die Kartenkacheln neu zu erzeugen:&lt;/p&gt;&#xA;&lt;h3 id=&#34;extent-des-shapefiles-ermitteln&#34;&gt;Extent des Shapefiles ermitteln&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ogrinfo -geom&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SUMMARY pp.shp pp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Extent: &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;11.015149, 46.848712&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; - &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;11.085476, 46.911385&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>HTTP requests aus Javascript auf der Entwicklermaschine</title>
      <link>https://webman.at/cms/2013/10/http-requests-aus-javascript/</link>
      <pubDate>Wed, 09 Oct 2013 16:48:53 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/10/http-requests-aus-javascript/</guid>
      <description>&lt;p&gt;Ein Problem, das vermutlich mehrere Entwickler haben, die in einer Web-Applikation mit Javascript auf ein backend zugreifen: Entwicklet wird auf der lokalen Maschine, das backend liegt (zum Entwickeln) auf einem anderen Server.&lt;/p&gt;&#xA;&lt;p&gt;Browser lassen HTTP-Requests in Javascript von &lt;code&gt;localhost&lt;/code&gt; auf eine andere Domain nicht zu (hier gilt die &lt;a href=&#34;https://de.wikipedia.org/wiki/Same-Origin-Policy&#34;&gt;same origin policy&lt;/a&gt;). Auf den Seiten des &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS&#34;&gt;Mozilla Developer Network&lt;/a&gt; wird sehr übersichtlich erklärt, wie man diese Einschränkung sicher umgehen kann. Da wir im content der requests &lt;em&gt;json&lt;/em&gt; verschicken müssten unsere Zugriffe recht aufwändig als &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS#Preflighted_requests&#34;&gt;preflighted requests&lt;/a&gt; behandelt werden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OSMAnd-App</title>
      <link>https://webman.at/cms/2013/08/eigene-kartenebenen-in-osmand/</link>
      <pubDate>Wed, 07 Aug 2013 16:33:47 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/08/eigene-kartenebenen-in-osmand/</guid>
      <description>&lt;p&gt;Die tolle &lt;a href=&#34;https://play.google.com/store/apps/details?id=net.osmand&#34;&gt;OSMAnd-App für Android&lt;/a&gt; bietet ein reichhaltiges Set von Funktionen für mobile Kartenanwendungen. Unter anderem ist es auch möglich, eigene Tile-Layer einzubinden.&lt;/p&gt;&#xA;&lt;p&gt;Hier die einfache Variante für Tiles vom mapnik Server: Im Verzeichnis &lt;code&gt;/sdcard/osmand/tiles&lt;/code&gt; einen Ordner anlegen (hier &lt;code&gt;snowhow&lt;/code&gt;). In diesem Ordner die Datei &lt;code&gt;.metainfo&lt;/code&gt; mit folgendem Inhalt erzeugen:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shell@android:/sdcard/osmand/tiles/snowhow $ cat .metainfo                     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;url_template&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://mein.tileserver.com/osm/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;0&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;2&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;.png&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ext&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.png&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;min_zoom&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_zoom&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;17&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;tile_size&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;256&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;img_density&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;avg_img_size&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;18000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Server-backup mit duplicity auf Amazon S3</title>
      <link>https://webman.at/cms/2013/07/server-backup-mit-duplicity-auf-amazon-s3/</link>
      <pubDate>Fri, 19 Jul 2013 17:32:33 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/07/server-backup-mit-duplicity-auf-amazon-s3/</guid>
      <description>&lt;p&gt;Das Backup für PCs und Laptops macht &lt;a href=&#34;https://komplett.cc/cms/2012/05/backuppc-zum-sichern-von-desktops/&#34; title=&#34;Backuppc zum Sichern von Desktops&#34;&gt;Backuppc sehr fein&lt;/a&gt;, aber für die Root-Server braucht es eine andere Lösung.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://duplicity.nongnu.org/&#34;&gt;Duplicity&lt;/a&gt; macht gpg-verschlüsselte Backups und unterstützt die unterschiedlichsten Endpunkte wie ftp, rsync, scp, ssh, webdav[s] und auch Amazon S3. Hier mein Mini-Bash-Skript mit dem ich meine Server dorthin sichere:&lt;/p&gt;&#xA;&lt;pre class=&#34;brush: bash; auto-links: false; title: ; notranslate&#34; title=&#34;&#34;&gt;#!/bin/bash&#xD;&#xA;&#xD;&#xA;BDIRS=&#34;/etc /home /&#34;&#xD;&#xA;LOGDIR=&#39;/var/log/duplicity&#39;&#xD;&#xA;BAC=&#34;s3+http://ihr_bucket_name.s3.amazonaws.com&#34;&#xD;&#xA;# symmetrische verschluesselung fuer gpg&#xD;&#xA;export PASSPHRASE=&#39;einelangeschwierigepassphrase&#39;&#xD;&#xA;export AWS_SECRET_ACCESS_KEY=&#34;amazon_aws_secret_access_key&#34;&#xD;&#xA;export AWS_ACCESS_KEY_ID=&#34;amazon_aws_access_key&#34;&#xD;&#xA;##### end of config ##########&#xD;&#xA;&#xD;&#xA;BCLIENT=$(hostname);&#xD;&#xA;for FULL_DIR in $BDIRS&#xD;&#xA;do&#xD;&#xA;  DIR=$(basename $FULL_DIR)&#xD;&#xA;  if [ $DIR == &#34;/&#34; ]&#xD;&#xA;  then&#xD;&#xA;    DIR=&#34;root&#34;&#xD;&#xA;  fi&#xD;&#xA;  EXCLUDELIST=&#34;/usr/local/etc/duplicity-exclude-$DIR.conf&#34;&#xD;&#xA;  if [ -f $EXCLUDELIST ]; then&#xD;&#xA;    EXCLUDE=&#34;--exclude-filelist $EXCLUDELIST&#34;&#xD;&#xA;  else&#xD;&#xA;    EXCLUDE=&#39;&#39;&#xD;&#xA;  fi&#xD;&#xA;  duplicity remove-older-than 60D -v3 --force $BAC/$BCLIENT_$DIR &amp;gt;&amp;gt; $LOGDIR/$DIR.log&#xD;&#xA;  duplicity --full-if-older-than 30D -v3 $EXCLUDE $FULL_DIR $BAC/$BCLIENT-$DIR &#xD;&#xA;    &amp;gt;&amp;gt; $LOGDIR/$DIR.log&#xD;&#xA;done&#xD;&#xA;&#xD;&#xA;export PASSPHRASE=&#34;&#34;&#xD;&#xA;export AWS_SECRET_ACCESS_KEY=&#34;&#34;&#xD;&#xA;export AWS_ACCESS_KEY_ID=&#34;&#34;&#xD;&#xA;&#xD;&#xA;exit 0&#xD;&#xA;&lt;/pr</description>
    </item>
    <item>
      <title>No space left on device?</title>
      <link>https://webman.at/cms/2013/07/no-space-left-on-device/</link>
      <pubDate>Thu, 11 Jul 2013 08:07:38 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/07/no-space-left-on-device/</guid>
      <description>&lt;p&gt;Nachdem der Server eigenartige Verhaltensweisen an den Tag legte und im syslog die Meldung „&lt;code&gt;No space left on device&lt;/code&gt;“ erschien, war ich einigermaßen verwundert: Immerhin zeigte &lt;code&gt;df&lt;/code&gt; an, dass alle relevanten Partitionen mehr als 50% freien Speicher haben. Ein Lesefehler auf der (virtuellen) Festplatte? Glücklicherweise nicht. Das Kommando&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tune2fs -l /dev/mapper/vg0-var&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;brachte die entscheidende Information ans Licht:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Filesystem OS type:       Linux&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Inode count:              &lt;span class=&#34;m&#34;&gt;10076160&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Block count:              &lt;span class=&#34;m&#34;&gt;40296448&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Reserved block count:     &lt;span class=&#34;m&#34;&gt;2014822&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Free blocks:              &lt;span class=&#34;m&#34;&gt;12087119&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Free inodes:              &lt;span class=&#34;m&#34;&gt;9&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;First block:              &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Block size:               &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>SSD – Super Speed Disk</title>
      <link>https://webman.at/cms/2013/07/ssd-super-speed-disk/</link>
      <pubDate>Thu, 04 Jul 2013 18:48:28 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/07/ssd-super-speed-disk/</guid>
      <description>&lt;p&gt;Ja, ich weiß, das ist inzwischen ein alter Hut, aber auch mir hing die Kinnlade herunter und die Augen starrten ungläubig auf den Laptop: Boot in 5 Sekunden (mit Apache/MongoDB/MySQL) und Firefox-Start in unter einer Sekunde.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hardware-upgrade&#34;&gt;Hardware-Upgrade&lt;/h2&gt;&#xA;&lt;p&gt;Nach langem Zögern wurde jetzt doch investiert: Der Dell-Laptop L502x (Core i5-2410M) mit 4GB Ram bekommt eine Samsung-SSD und wird auf den maximalen Arbeitsspeicher von 8GB aufgerüstet. Rund 150 EUR kostet die Hardware dafür und der Unterschied ist wie eingangs beschrieben, unbeschreiblich. Einige Hinweise in Foren, dass das Austauschen der Festplatte bei diesem Modell besonders schwierig sei und nur von Fachpersonal durchgefürht werden sollte, hielt mich einige Zeit von dem Upgrade ab, im Nachhinein völlig zu unrecht. Das Abnehmen der Tastatur gelingt auch dem durchschittlichen Heimwerker in wenigen Minuten ohne Hardware-Schäden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Von jqplot Diagrammen zu einer PDF Datei</title>
      <link>https://webman.at/cms/2013/05/von-jqplot-diagrammen-zu-einer-pdf-datei/</link>
      <pubDate>Tue, 14 May 2013 22:36:35 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/05/von-jqplot-diagrammen-zu-einer-pdf-datei/</guid>
      <description>&lt;p&gt;ich sags gleich, ein steiniger Weg.&lt;/p&gt;&#xA;&lt;h2 id=&#34;die-anforderung&#34;&gt;Die Anforderung&lt;/h2&gt;&#xA;&lt;p&gt;Zum Zweck der analogen Archivierung musste ich für ein aktuelles Projekt&#xA;(&lt;a href=&#34;http://ches.at/&#34;&gt;CHES&lt;/a&gt;) eine moderne HTML-Seite (mit mehreren Canvas-Elementen) in eine&#xA;druckbare Form bringen. Mit CSS-Anweisungen ist es mir nicht gelungen, nur in&#xA;zwei modernen Browsern ein halbwegs vergleichbares Layout zu Papier zu bringen.&#xA;Mit viel Javascript ging es eher in diese Richtung, aber im dritten Browser war&#xA;dann auch da wieder alles anders.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Datentransfer mit rsync, openssh und cyanogenmod am Galaxy Nexus</title>
      <link>https://webman.at/cms/2013/04/datentransfer-mit-rsync-openssh-und-cyanogenmod-am-galaxy-nexus/</link>
      <pubDate>Sun, 21 Apr 2013 15:39:53 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/04/datentransfer-mit-rsync-openssh-und-cyanogenmod-am-galaxy-nexus/</guid>
      <description>&lt;h2 id=&#34;datentransfer&#34;&gt;Datentransfer&lt;/h2&gt;&#xA;&lt;p&gt;Um unter Linux Dateien auf das Galaxy Nexus zu kopieren gibt es leider keine einfache und performante Lösung. Mit &lt;a href=&#34;http://airdroid.com&#34;&gt;Airdroid&lt;/a&gt; kann man wunderbar ein, zwei Dateien hin und her kopieren, der Transfer läuft über das Wlan, was von haus aus schon eine Geschwindigkeitsbeschränkung mit sich bringt. Alle meine Versuche mit mtp (auch unter Ubuntu 13.04) brachen regelmäßig ab und waren auch nicht von hohen Geschwindigkeiten gekennzeichnet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cyanogenmod-openssh-rsync&#34;&gt;cyanogenmod, openssh, rsync&lt;/h2&gt;&#xA;&lt;p&gt;Ganz anders verhält es sich mit rsync über ssh, getunnelt durch adb via USB. Hier erreicht man wirklich sehr zufriedenstellende Transferraten (für große Dateien lesend 15 MB/s). Eine ausführliche Anleitung dazu gibt es bei &lt;a href=&#34;http://alainwolf.ch/en/tech-talk/ssh-cyanogenmod/&#34;&gt;alainwolf.ch&lt;/a&gt;. Hier eine Kurzfassung, wie ich den Kopiervorgang starte. Voraussetzungen:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leaflet Vektor Layer mit PostGIS</title>
      <link>https://webman.at/cms/2013/04/leaflet-vektor-layer-mit-postgis/</link>
      <pubDate>Fri, 19 Apr 2013 09:20:22 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/04/leaflet-vektor-layer-mit-postgis/</guid>
      <description>&lt;p&gt;In der &lt;a href=&#34;http://viel-falter.at/cms/karte/&#34;&gt;Karte&lt;/a&gt; im &lt;a href=&#34;https://komplett.cc/cms/viel-falter/&#34; title=&#34;viel-falter&#34;&gt;Viel-Falter&lt;/a&gt; Projekt sollte zu den gekachelten Rasterlayern ein weiterer Layer mit der Biotop-Kartierung von Tirol dazukommen. Da die gesamte Vektor-Geometrie mit über 200 MB im GeoJSON Format zu Buche schlägt, muss der Datensatz auf die Ausmaße aktuellen Ansicht (BoundingBox) eingeschränkt werden. Einigermaßen überrascht stellte ich fest, dass es hierzu (fast) keine fertige Lösung gibt. Hier mein Weg:&lt;/p&gt;&#xA;&lt;h2 id=&#34;postgis&#34;&gt;PostGIS&lt;/h2&gt;&#xA;&lt;p&gt;Da der Vektordatensatz aus vielen kleinen Polygonen besteht eignet er sich wunderbar für Einschränkungen anhand der aktuellen BoundingBox. Postgresql in Kombination mit PostGIS macht diese Berechnungen sehr einfach und mit einem räumlichen Index auch sehr schnell. Also war der erste Schritt den Vektordatensatz im Shapefile Format in die Postgresql Datenbank zu importieren.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Das Galaxy Nexus will nicht schlafen</title>
      <link>https://webman.at/cms/2013/03/das-galaxy-nexus-will-nicht-schlafen/</link>
      <pubDate>Sun, 31 Mar 2013 16:50:52 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/03/das-galaxy-nexus-will-nicht-schlafen/</guid>
      <description>&lt;h2 id=&#34;das-gn&#34;&gt;Das GN&lt;/h2&gt;&#xA;&lt;p&gt;Das Galaxy Nexus ist das coolste Smartphone das ich bisher hatte, was bei meinem zweijährigen Neukaufzyklus nicht weiter verwunderlich ist. Seit fast einem Jahr verwende ich es jetzt schon und bin immer noch sehr zufrieden: Es ist superdünn, hat ein großes Display und einen schnellen Prozessor. Mit cyanogenmod 10.1 experimental ist man auch mit der nicht mehr ganz akutellen Hardware softwaremäßig immer noch am Puls der Zeit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unity Application switcher</title>
      <link>https://webman.at/cms/2013/03/unity-application-switcher/</link>
      <pubDate>Wed, 27 Mar 2013 11:01:23 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/03/unity-application-switcher/</guid>
      <description>&lt;p&gt;Nach langem hin und her bin ich jetzt (Ubuntu 13.04 beta) doch auch bei der Ubuntu Unity Oberfläche gelandet, denn unter xfce (xubuntu) gab es auch so manches Problemchen (ich sag nur Sound, Netzwerkmanager, …). Einige Sachen sind gewöhnungsbedürftig, aber was gar nicht geht ist der Unity-application-switcher. Die &lt;strong&gt;ALT-TAB&lt;/strong&gt; Kombination wurde in ihrem Verhalten verändert, worauf ich mich trotz gutem Willen nicht umstellen kann.&lt;/p&gt;&#xA;&lt;p&gt;Glücklicherweise kann das relativ einfach geändert werden (siehe &lt;a href=&#34;http://askubuntu.com/a/68880&#34;&gt;askubuntu&lt;/a&gt; ). Was in der default Installation von Ubuntu allerdings fehlte war das Paket compiz-plugins, das die rettende Option „Static Application Switcher“ enthält. Also &lt;strong&gt;apt-get install compiz-plugins&lt;/strong&gt; und (fast) alles wird gut.&lt;/p&gt;</description>
    </item>
    <item>
      <title>E-Mails von /var/mail nach ~/Maildir</title>
      <link>https://webman.at/cms/2013/01/e-mails-von-varmail-nach-maildir/</link>
      <pubDate>Fri, 04 Jan 2013 16:15:03 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/01/e-mails-von-varmail-nach-maildir/</guid>
      <description>&lt;p&gt;Eigentlich speichere ich meine E-Mails in &lt;code&gt;$HOME/Maildir&lt;/code&gt; im Maildir Format. Durch eine Fehlkonfiguration im MTA kann es aber passieren, dass die E-Mails in &lt;code&gt;/var/mail/&amp;lt;username&amp;gt;&lt;/code&gt; landen. Um diesen Fehler für alle Benutzer am System nachträglich zu korrigieren reicht der Einzeiler:&lt;/p&gt;&#xA;&lt;pre class=&#34;brush: bash; title: ; notranslate&#34; title=&#34;&#34;&gt;for i in /var/mail/* ; do formail -s procmail -d ${i##*/} &amp;lt; $i ; done&#xD;&#xA;&lt;/pre&gt;&#xA;&lt;p&gt;Dazu muss natürlich das &lt;strong&gt;procmail&lt;/strong&gt; Paket installiert sein und die entsprechenden procmail-Regeln entweder im Benutzerverzeichnis als &lt;code&gt;~/.procmailrc&lt;/code&gt; oder in &lt;code&gt;/etc/procmailrc&lt;/code&gt; liegen. Hier ein Beispiel:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server-Migration</title>
      <link>https://webman.at/cms/2013/01/server-migration/</link>
      <pubDate>Fri, 04 Jan 2013 15:00:24 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2013/01/server-migration/</guid>
      <description>&lt;p&gt;Es hat sich so ergeben, dass ich circa alle zwei Jahre meine Server auf neue Hardware verlege. Bei den gemieteten root-servern kommen dabei immer neue IP-Adressen ins Spiel. Da das Update der DNS-Einträge ein wenig zeitversetzt geschieht und das den Zeitpunkt der Umstellung nicht ganz genau planen lässt, ist es günstig alle Anfragen von der alten IP-Adresse auf die neue umzuleiten. Mit iptables ist das sehr einfach, hier das Skript, das nicht nur Webanfragen, sondern auch Mailserver (SMTP und IMAP/POP) umleitet. Das Skript muss am alten Server ausgeführt werden, wobei 10.0.0.1 hier die IP-Adresse des neuen Servers ist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xfce und xfrun</title>
      <link>https://webman.at/cms/2012/10/xfce-und-xfrun/</link>
      <pubDate>Fri, 19 Oct 2012 08:29:06 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/10/xfce-und-xfrun/</guid>
      <description>&lt;p&gt;Die merkwürdigen Userinterface Änderungen der letzten Ubuntu Versionen (Unity) haben mich bereits vor geraumer Zeit bewogen, auf Xfce als Desktop System umzusteigen. Ich bin äußerst zufrieden, da es eigentlich alles beinhaltet, was ich am Desktop benötige. Leider gibt es in der aktuellen Version (Xfce 4.10 in Ubuntu 12.10) ein Problem mit dem Programm-Starter &lt;code&gt;xfrun4&lt;/code&gt; (das jetzt &lt;code&gt;xfce4-appfinder&lt;/code&gt; heißt und IMO etwas überladen ist), der über &lt;code&gt;ALT-F2&lt;/code&gt; aufgerufen wird (mehrere Bugreports, zum Beispiel &lt;a href=&#34;https://bugs.launchpad.net/ubuntu/+source/xfce4-appfinder/+bug/1058814&#34;&gt;hier&lt;/a&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>/var auf eine andere Partition linken</title>
      <link>https://webman.at/cms/2012/09/var-auf-eine-andere-partition-linken/</link>
      <pubDate>Thu, 06 Sep 2012 11:10:50 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/09/var-auf-eine-andere-partition-linken/</guid>
      <description>&lt;h4 id=&#34;das-problem-kein-platz-mehr-auf-var&#34;&gt;Das Problem: Kein Platz mehr auf /var&lt;/h4&gt;&#xA;&lt;p&gt;Es ist also wieder einmal passiert: Der Heimserver, der eigentlich nie für große Datenbank-Arbeiten gedacht war schlägt sich tapfer als &lt;em&gt;Tileserver&lt;/em&gt; für Openstreetmap Karten. Nachdem das bei der Installation nicht abzusehen war, habe ich &lt;code&gt;/var&lt;/code&gt; nicht auf eine eigene Partition gelegt und die root-Partition ist jetzt natürlich voll.&lt;/p&gt;&#xA;&lt;p&gt;Jetzt könnte man ein bestehendes Logical Volume verkleinern (zuvor natürlich auch das unterliegende Filesystem) und den neu freigegebenen Platz für ein neues LV verwenden und dieses dann unter &lt;code&gt;/var&lt;/code&gt; mounten. Der &lt;em&gt;Quick-and-dirty-workaround&lt;/em&gt; ist &lt;code&gt;/var&lt;/code&gt; einfach auf eine bestehende Partition zu verschieben und dann zu verlinken (softlink). Gesagt, getan, nur apparmor, der Sicherheitsdienst von Ubuntu-Linux ist damit nicht ganz einverstanden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kontaktdaten von Telefonnummern aus dem eigenen Adressbuch</title>
      <link>https://webman.at/cms/2012/08/kontaktdaten-von-telefonnummern-aus-dem-eigenen-adressbuch/</link>
      <pubDate>Thu, 30 Aug 2012 23:11:23 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/08/kontaktdaten-von-telefonnummern-aus-dem-eigenen-adressbuch/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://webman.at/cms/cms/wp-content/uploads/2012/08/contactfromstring2a.png&#34;&gt;&lt;img class=&#34;alignleft size-medium wp-image-414&#34; title=&#34;SMS vom Mobilfunk Provide&#34; src=&#34;https://webman.at/cms/cms/wp-content/uploads/2012/08/contactfromstring2a-300x187.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;Bei manchen Mobilfunk-Anbietern in Österreich bekommt man eine SMS, wenn jemand versucht hat anzurufen und man selbst gerade nicht erreichbar war. Die SMS schaut dann so ähnlich aus wie der erste Screenshot.&lt;/p&gt;&#xA;&lt;p&gt;Aus technischen Gründen kann in der SMS nur die Nummer, nicht aber der Name des Anrufers aus meinem Telfonbuch stehen. Das wäre aber gerade recht spannend, denn ich kann mir leider nicht alle Namen zu den Nummern in meinem Adressbuch merken (dann wäre das Adressbuch ja auch umsonst). Um das so unkompliziert wie möglich zu lösen, habe ich eine winzige App geschrieben, die als Eingabe den Text der SMS nimmt und die dort enthaltenen Nummern im Adressbuch auflöst. Super simpel.&lt;br&gt;&#xA;&lt;a href=&#34;https://webman.at/cms/cms/wp-content/uploads/2012/08/contactfromstring1.png&#34;&gt;&lt;img class=&#34;alignnone  wp-image-402&#34; title=&#34;Suche Telefonnummern im Text und schau im Adressbuch nach&#34; src=&#34;https://webman.at/cms/cms/wp-content/uploads/2012/08/contactfromstring1-576x1024.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;https://webman.at/cms/cms/wp-content/uploads/2012/08/contactfromstring3.png&#34;&gt;&lt;img class=&#34; wp-image-407 alignright&#34; title=&#34;Kontakte von Nummern&#34; src=&#34;https://webman.at/cms/cms/wp-content/uploads/2012/08/contactfromstring3-576x1024.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>owncloud upgrade</title>
      <link>https://webman.at/cms/2012/08/owncloud-upgrade/</link>
      <pubDate>Mon, 20 Aug 2012 09:30:38 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/08/owncloud-upgrade/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://owncloud.org/&#34;&gt;Owncloud&lt;/a&gt; finde ich ein spannendes Projekt, hauptsächlich wegen der Möglichkeit von unterschiedlichen Geräten und mit unterschiedlichen Personen Daten auszutauschen. Für Kalender und Adressen verwende ich andere Systeme. (&lt;strong&gt;Update Aug. 2013:&lt;/strong&gt; Jetzt werden auch der Kalender und die Kontakte von owncloud verwaltet).&lt;/p&gt;&#xA;&lt;p&gt;Installation und upgrade ist eigentlich ganz einfach, dazu gibt es genügend Anleitungen im Netz (&lt;a href=&#34;http://owncloud.org/support/install/&#34;&gt;owncloud Installation&lt;/a&gt;). Zum Upgrade reicht es, das neue Archiv über das alte zu entpacken, Konfigurationsdateien und Daten werden dabei nicht verändert. Hat man jedoch nach der Installation das owncloud Verzeichnis umbenannt, benötigt man einen speziellen switch beim entpacken des Archivs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mongoimport von CSV Dateien mit X/Y Koordinaten</title>
      <link>https://webman.at/cms/2012/08/mongoimport-von-csv-dateien-mit-xy-koordinaten/</link>
      <pubDate>Thu, 16 Aug 2012 17:29:49 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/08/mongoimport-von-csv-dateien-mit-xy-koordinaten/</guid>
      <description>&lt;p&gt;Die Daten von &lt;a href=&#34;http://geonames.org/&#34;&gt;Geonames&lt;/a&gt; können in einem wunderbaren CSV-Format länderweise heruntergeladen werden. Der Import der Daten in mongo ist wirklich einfach. Zuerst benötigen wir eine Header-Datei, in der die Spalten definiert sind (siehe dazu das entsprechende &lt;a href=&#34;http://download.geonames.org/export/dump/readme.txt&#34;&gt;readme&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat header.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;id&#x9;name&#x9;asciiname&#x9;alternatenames&#x9;latitude&#x9;longitude&#x9;featureclass&#x9;featurecode&#x9;countrycode&#x9;cc2&#x9;admin1&#x9;admin2&#x9;admin3&#x9;admin4&#x9;population&#x9;elevation&#x9;dem&#x9;timezone&#x9;modification&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>DigiTab Version 1.2.1</title>
      <link>https://webman.at/cms/2012/07/digitab-version-1-2-1/</link>
      <pubDate>Fri, 27 Jul 2012 16:57:35 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/07/digitab-version-1-2-1/</guid>
      <description>&lt;p&gt;Digitab ist eine App für Android Tablet-PCs (und große Smartphones) zum digitalisieren von geometrischen Formen. Zu den Funktionen von DigiTab zählt unter anderem:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Digitalisieren von Geometrie und speichern im GML-Format&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;Cloud-Speicher&lt;/em&gt; auf komplett.cc wo GML auch gleichzeit in das Shapefile Format konvertiert wird&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;intelligentes&lt;/em&gt; Autovervollständigen für ihre thematischen Informationen (Grundlagen als CSV)&lt;/li&gt;&#xA;&lt;li&gt;Online Karten: OpenStreetMap, Bing-Maps (auf Wunsch weitere)&lt;/li&gt;&#xA;&lt;li&gt;Offline Karten: Raster auf dem Device-Speicher im TMS-Format, Vektoren im GML-Format&lt;/li&gt;&#xA;&lt;li&gt;CSV-Export der thematischen Daten&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Finden Sie alle Informationen zur App auf der &lt;a href=&#34;https://webman.at/cms/cms/digitab/&#34;&gt;eigenen Seite dazu&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Alte Logfiles in Awstats einspielen (Ubuntu)</title>
      <link>https://webman.at/cms/2012/06/awstats-unter-ubuntu-alte-apache-logfiles-einspielen/</link>
      <pubDate>Fri, 22 Jun 2012 13:30:48 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/06/awstats-unter-ubuntu-alte-apache-logfiles-einspielen/</guid>
      <description>&lt;p&gt;Ubuntu legt die Apache Logfiles als gzippte Dateien in &lt;code&gt;/var/log/apache2&lt;/code&gt; ab. Um von alten Logdateien nachträglich eine Statistik zu erstellen kann folgendes Kommando nützlich sein:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; i in &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;ls -tr /var/log/apache2/ssl_meinhost.com*access*gz&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  gunzip -c &lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;gt&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; /tmp/ssl_log.txt&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; /usr/lib/cgi-bin/awstats.pl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -config&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ssl.meinhost.com -LogFile&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/tmp/ssl_log.txt &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Backuppc zum Sichern von Desktops</title>
      <link>https://webman.at/cms/2012/05/backuppc-zum-sichern-von-desktops/</link>
      <pubDate>Wed, 23 May 2012 08:44:27 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2012/05/backuppc-zum-sichern-von-desktops/</guid>
      <description>&lt;p&gt;Dazu gibt es schon viele Anleitungen, aber ein Problem bei meinem Linux-Desktop ließ mich nicht los:&lt;/p&gt;&#xA;&lt;pre class=&#34;brush: plain; title: ; notranslate&#34; title=&#34;&#34;&gt;Remote[1]: rsync: readlink_stat(&#34;/home/bernd/.gvfs&#34;) failed: Permission denied (13)&#xD;&#xA;&lt;/pre&gt;&#xA;&lt;p&gt;Der dritte Eintrag im Thread &lt;a href=&#34;http://ubuntuforums.org/showpost.php?s=e16b12882f026838f0c95f3d16c110d3&amp;amp;p=5474631&amp;amp;postcount=3&#34;&gt;http://ubuntuforums.org/showthread.php?t=767311&lt;/a&gt; half schließlich: Mit &lt;code&gt;--one-file-system&lt;/code&gt; wird rsync angewiesen, das gemountete fuse-Filesystem unter &lt;code&gt;~/.gvfs&lt;/code&gt; nicht zu sichern.&lt;/p&gt;&#xA;&lt;p&gt;Die entsprechende Config-Zeile in /etc/backuppc/&lt;em&gt;hostname&lt;/em&gt;.pl sieht dann bei mir folgendermaßen aus:&lt;/p&gt;&#xA;&lt;pre class=&#34;brush: perl; title: ; notranslate&#34; title=&#34;&#34;&gt;$Conf{RsyncClientCmd} = &#39;$sshPath -q -x -l backuppc --one-file-system $host sudo $rsyncPath $argList+&#39;;&#xD;&#xA;$Conf{RsyncClientRestoreCmd} = &#39;$sshPath -q -x -l backuppc $host sudo $rsyncPath $argList+&#39;;&#xD;&#xA;$Conf{RsyncArgsExtra} = [&#xD;&#xA;  &#39;--one-file-system&#39;&#xD;&#xA;];&#xD;&#xA;&lt;/pr</description>
    </item>
    <item>
      <title>Public Display goes „Nationalpark Hohe Tauern“</title>
      <link>https://webman.at/cms/2011/07/public-display-goes-nationalpark-hohe-tauern/</link>
      <pubDate>Fri, 22 Jul 2011 20:45:12 +0000</pubDate><author>bernd@webman.at (Bernd Öggl)</author>
      <guid>https://webman.at/cms/2011/07/public-display-goes-nationalpark-hohe-tauern/</guid>
      <description>&lt;p&gt;Das von &lt;a href=&#34;http://svg.cc&#34;&gt;Klaus Förster&lt;/a&gt; und Bernd Öggl (beide &lt;a href=&#34;https://komplett.cc&#34;&gt;komplett.cc&lt;/a&gt;) entwickelte, innovative Informationssystem &lt;a href=&#34;https://komplett.cc/cms/pd/&#34; title=&#34;Public Display&#34;&gt;&lt;em&gt;Public Display&lt;/em&gt;&lt;/a&gt; wird jetzt auch vom &lt;a href=&#34;http://www.hohetauern.at/&#34;&gt;Nationalpark Hohe Tauern&lt;/a&gt; eingesetzt. Die Nationalparkverwaltung war auf der Suche nach einem flexiblen und offenen System um die Besucher im Nationalpark über neue Veranstaltungen, Öffnungszeiten und aktuelle Ereignisse im Park zu informieren. Public Display konnte überzeugen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://webman.at/cms/cms/wp-content/uploads/2011/07/npht_gletscherlehrweg.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-123&#34; title=&#34;Gletscherlehrweg&#34; src=&#34;https://webman.at/cms/cms/wp-content/uploads/2011/07/npht_gletscherlehrweg-300x133.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
