<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-CH">
                        <id>https://www.onlime.ch/index.php/blog/feed</id>
                                <link href="https://www.onlime.ch/index.php/blog/feed" rel="self"></link>
                                <title><![CDATA[Onlime Blog]]></title>
                    
                                <subtitle>Neuigkeiten rund um unser Hosting-Angebot.</subtitle>
                                                    <updated>2026-03-15T10:48:08+01:00</updated>
                        <entry>
            <title><![CDATA[Onlime Review 2025]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/onlime-review-2025" />
            <id>https://www.onlime.ch/index.php/blog/onlime-review-2025</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Welch ein Jahr! Viel ist geschehen seit unserem letzten Jahresrückblick. Viel hat sich verändert und Onlime hat viele Hürden überwunden, hat sich weiterentwickelt. Aber worauf wir am meisten stolz sind, ist etwas, das im AI-Zeitalter und unter dem grossen Spardruck nicht mehr ganz so üblich ist:</p>
<p>Wir bieten dir auch heute konstant beste Performance und ein zuverlässiges, sicheres Hosting zu fairen Preisen. Unsere Infrastruktur läuft stabiler denn je und wir konnten im gesamten Jahr 2025 keine nennenswerten Ausfälle verzeichnen.</p>
<h2>Airpane Controlpanel</h2>
<p>Dieses Jahr war für uns ein bedeutendes, da wir endlich den Komplett-Rewrite unseres <a href="https://my.onlime.ch/">Airpane Controlpanels</a> abschliessen konnten. Nach über 5 Jahren Arbeit konnten wir diese Software – seit eh und je das Herzstück von Onlime – <a href="/blog/posts/airpane-next-unser-neues-controlpanel">Ende Februar 2025 endlich veröffentlichen</a>. Das neue Controlpanel basiert auf einem grossartigen Tech-Stack: <a href="https://laravel.com/">Laravel</a> / <a href="https://inertiajs.com/">Inertia.js</a> / <a href="https://vuejs.org/">Vue.js</a> / <a href="https://tailwindcss.com/">Tailwind</a>. Während zwei Jahren hat uns <a href="https://pascalbaljet.dev/">Pascal Baljet</a> aus Amsterdam aktiv in diesem Projekt unterstützt – der fähigste Developer auf diesem Planeten, mit unglaublicher Ausdauer und einem grossen Hang zur Perfektion! Mittlerweile arbeitet er Vollzeit für Laravel und ist der Hauptentwickler von <a href="https://inertiajs.com/">Inertia.js</a>, das sich dank ihm rasant weiterentwickelt.</p>
<p>Wir sind nun wieder viel flexibler und können deutlich einfacher auf Kundenwünsche eingehen. Die Weiterentwicklung unseres <a href="https://my.onlime.ch/">Airpane Controlpanels</a> ist bereits weit vorangeschritten. Das Wichtigste daran: Es macht mächtig Spass! Und wir sehen auch, wie ihr das Tool als Kund:innen aktiv nutzt. Seit der Veröffentlichung hat unser Support-Aufwand massiv abgenommen, weil ihr viel mehr selbst erledigen könnt und alles deutlich intuitiver geworden ist.</p>
<p>Das Projekt umfasst mittlerweile 190'000 Zeilen Code, 4'100 Tests (8200 assertions), und seit Start dieses Komplett-Rewrites im Aug 2020 haben wir insgesamt 1050 Issues (Features, Bugfixes, Refactoring, Performance-Optimierungen usw.) geschlossen. Das aktuelle CHANGELOG seit dem Launch kannst du jederzeit auf den Hilfeseiten unseres Controlpanels verfolgen: <a href="https://my.onlime.ch/help/de/CHANGELOG.html">Airpane CHANGELOG</a></p>
<h2>MySQL 8.4 / Debian Trixie</h2>
<p>Nachdem wir nach dem Launch des neuen Controlpanels noch Monate mit Bugfixing und der Implementierung neuer Features beschäftigt waren, standen im Herbst wieder grössere System-Upgrades an.</p>
<p>Sämtliche Web- und Datenbank-Server haben wir von MySQL 8.0 auf <strong>MySQL 8.4</strong> (<a href="https://www.percona.com/mysql/software/percona-server-for-mysql">Percona for MySQL Server</a> 8.4) upgegradet. Dabei kam es zu keinen Problemen und wir konnten die Upgrades gestaffelt durchführen – jeweils mit Vorankündigung für unsere limeDEDICATED Kund:innen.</p>
<p>Ende Jahr haben wir sämtliche Server auf die neuste Linux-Version <strong>Debian 13 (Trixie)</strong> aktualisiert. Einzig unsere Mail-Infrastruktur musste sich noch gedulden, da hier ein grosses Upgrade auf den IMAP-Server Dovecot 2.4 anstand und wir noch auf Debian-Pakete sowie die ersten zwei Minor-Releases warten mussten. Diese Mailserver-Migration mussten wir also auf Anfang 2026 verschieben.</p>
<h2>PHP 8.5</h2>
<p>Wie bereits lange vorangekündigt wurde die neuste Version <strong>PHP 8.5</strong> am 20. November 2025 veröffentlicht. Bereits am 6. Dezember konnten wir diese für unsere Kunden auf allen Webservern freigeben. Ein grosser Dank geht an Ondřej Surý, der unter <a href="https://deb.sury.org/">DEB.SURY.ORG</a> stets die aktuellsten PHP-Packages für Debian Linux zur Verfügung stellt.</p>
<p>Lies mehr darüber in unserem Blogpost <a href="/blog/posts/php-8-5-out-now">PHP 8.5 Out Now!</a></p>
<h2>Dovecot 2.4</h2>
<p>Bei <a href="https://dovecot.org/">Dovecot</a> handelt es sich um unseren IMAP-Server (Posteingangsserver), der auch für die Authentifizierung beim SMTP-Server (Postausgangsserver) verwendet wird.</p>
<p>So harmlos der Versionssprung von MySQL 8.0 auf 8.4 klingt, könnte man auch beim Umstieg von Dovecot 2.3 auf 2.4 denken, dass es sich nur um ein Minor-Upgrade handelt. <strong>Dovecot 2.4</strong> ist jedoch ein Major Release und die Entwickler haben dabei die Konfigurationsstruktur und -logik komplett umgekrempelt. In den Foren und Mailing-Lists wimmelt es von Systemadministratoren, die es auch nach mehreren Monaten nicht schaffen, auf die neue Version umzusteigen.</p>
<p>Wir waren entsprechend vorbereitet und haben uns die Zeit genommen, dieses Projekt langsam und durchdacht anzugehen. Unsere gesamte Mailserver-Infrastruktur haben wir in Server-Clones nachgebaut und konnten jedes einzelne Feature vorgängig testen. Einzig die neue Konfiguration hat uns mehrere Tage Knochenarbeit gekostet, und wir haben das neue Setup während über zwei Wochen intensiv getestet. Gelohnt hat sich’s jedenfalls, denn die grosse Migration am 24. Februar 2026 verlief ohne Zwischenfälle. In den Folgetagen gab es noch ein paar Probleme auszumerzen, die jedoch unsere E-Mail-Dienste nicht beeinträchtigt haben.</p>
<h2>eBill Integration</h2>
<p>Neu ab 2026 unterstützen wir <strong>eBill als zusätzliche Zahlungsmethode</strong> (neben der Zahlung per Rechnung, Mastercard, VISA und Twint). Unser Billing-Tool bzw. unsere Buchhaltungssoftware Bexio konnte uns dies nicht anbieten, resp. nicht auf die einfache Art, wie wir es uns gewünscht hätten. Einen zusätzlichen Vertrag mit dem Monopolisten Worldline/SIX als Payment-Provider wollten wir definitiv nicht eingehen. Diese Firma bietet nämlich den denkbar schlechtesten Support und kommt sehr altbacken daher.</p>
<p>Bisher konnten wir unseren Kund:innen eBill also nicht anbieten – bis dann <a href="https://www.pingen.ch/">Pingen</a> Ende Jahr auf uns zukam und uns bat, an der Beta-Phase ihrer eBill-Einführung teilzunehmen. Wir sind schon lange ein sehr zufriedener Pingen-Kunde und versenden unsere Rechnungen per Briefpost (für die paar wenigen Kund:innen, die einfach nicht vom Papier wegkommen) via Pingen API. Denkbar einfach! Hinter Pingen stecken echte Techies, die diesen Service mit Herzblut anbieten.</p>
<p>Wir hatten einige Ansprüche und die Pingen-Jungs gingen sofort auf unser Feedback ein und haben alles im Nu umgesetzt. Pingen bietet ein eigenes SDK für ihre API, und für solche Rechnungs-Uploads reicht ein einfacher API-Endpoint. Auch erfolgt die Aktivierung von eBill bei uns im System nun völlig automatisiert, sobald eBill im e-Banking gewählt wird – dank der Webhook-Funktionalität von Pingen. Und dies alles zu einer äusserst fairen Gebühr pro übermittelte eBill-Rechnung (CHF 0.60), die wir unseren Kund:innen gerne schenken.</p>
<h2>Partnerschaften &amp; Coworking</h2>
<p>Auch in diesem Jahr konnten wir auf die aktive Zusammenarbeit mit <a href="https://racerfish.com/">RACERFISH</a>, unserer Partner-Webagentur, zählen – mittlerweile arbeiten wir bereits seit 12 Jahren zusammen!</p>
<p>Martin Wittwer (<a href="https://www.wittwer-it.ch/">Wittwer IT Services</a>) ist weiterhin unterstützend bei Onlime mit dabei, übernimmt das Zepter während meiner Ferien-Abwesenheiten, und wir tauschen uns regelmässig aus. Im Bereich Sysadmin und Netzwerk-Technologie ist er einfach der beste Ansprechpartner!</p>
<p>Onlime betreibt auch weiterhin die gesamte Server-Infrastruktur von <a href="https://www.datenpark.ch/">Datenpark</a> in Form von Managed Services. In den letzten Jahren war Onlime zudem in deren Coworking-Space eingemietet, was Mitte 2025 leider aufgrund eines Umzugs ein Ende nahm.</p>
<p>Ende Jahr starteten wir im Coworking von Spoom (eine der vielen «Brands» von Regus), was sich jedoch rasch als Betrugsmodell herausstellte – Regus verrechnete uns diverse Zusatz-Services, die nie vereinbart waren. Bereits nach einem Monat mussten wir die Notbremse ziehen und wieder kündigen.</p>
<p>Seit März hat sich Onlime nun im Office von <a href="https://gionpfander.ch/">Gion Pfander</a> eingemietet, einem langjährigen Fotografen-Kollegen und treuen Kunden. Direkt an der Limmat, an bester Lage, in einem sehr angenehmen Umfeld mit interessanten und sympathischen Unternehmen im selben Gebäude.</p>
<h2>Ausblick 2026</h2>
<p>Wie geht’s weiter im Jahr 2026? Natürlich entwickeln wir unser Controlpanel stetig weiter – da gehen uns nie die Ideen aus. Als nächstes steht jedoch das Redesign unserer <a href="https://www.onlime.ch/">Onlime.ch</a> Website an, das schon lange geplant ist.</p>
<p>An dieser Stelle möchten wir auch die grösste Umstellung vorankündigen (die offizielle Statusmessage folgt noch):</p>
<p>Wir ziehen mit unserer gesamten Server-Infrastruktur in ein neues Datacenter! Das stand schon längst auf dem Plan und wird nun endlich Realität: Die letzten Abklärungen sind getroffen und der Vertrag ist unterschrieben. <strong>Onlime zieht am 2. Juni 2026 aus dem Rechenzentrum von <a href="https://www.metanet.ch">METANET</a> ins neue Rechenzentrum von <a href="https://nine.ch/">Nine</a> (<a href="http://colozueri.ch">«Colozüri»</a>).</strong> Wir werden unser Hosting also weiterhin auf 100 % eigener Infrastruktur betreiben, im eigenen Rack und weiterhin im Herzen von Züri. Neu also komplett bei Nine – der Firma, die uns schon immer sympathisch war und im Bereich Housing/Colocation höchste Professionalität bietet.</p>
<p>Leider müssen wir uns nach beinahe 20 Jahren im Housing der METANET von dieser Firma verabschieden. Die Qualität von METANET hat in den letzten Jahren stark abgenommen. Man merkt, wie die Motivation der Mitarbeitenden geschwunden ist, seit diese Firma von der Dogado Group übernommen wurde.</p>
<p>Wir freuen uns schon sehr auf die engere Zusammenarbeit mit Nine!</p>
]]>
            </summary>
                                                <published>2026-03-15T10:45:00+01:00</published>
                        <updated>2026-03-15T10:48:08+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 8.5 Out Now!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-8-5-out-now" />
            <id>https://www.onlime.ch/index.php/blog/php-8-5-out-now</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p><strong>PHP 8.5</strong> ist veröffentlicht und bringt wieder einige praktische Neuerungen für den Entwickleralltag. Im Fokus stehen diesmal vor allem die neue <strong>URI-Extension</strong>, der <strong>Pipe-Operator <code>|&gt;</code></strong>, <code>clone()</code> mit direkten Property-Anpassungen sowie das neue Attribut <strong><code>#[\NoDiscard]</code></strong>. Die offiziellen <a href="https://www.php.net/releases/8.5/en.php">Release Notes</a> nennen ausserdem weitere kleinere Sprachverbesserungen, neue Hilfsfunktionen und allgemeines Cleanup.</p>
<p>Ein grosser Dank geht wieder an Ondřej Surý, welcher unter <a href="https://deb.sury.org/">DEB.SURY.ORG</a> stets die aktuellsten PHP-Packages für Debian Linux zur Verfügung stellt. Der beste Debian package maintainer ever!</p>
<p>PHP 8.5 wurde am <strong>20. November 2025</strong> veröffentlicht und am 6. Dezember durch Onlime für alle Kunden freigegeben. Sämtliche Erweiterungen, welche bisher unter PHP 8.4 verfügbar waren, stehen euch auch bereit unter PHP 8.5.</p>
<p>Die neue Version lässt sich in unserem neuen <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP Manager»</strong> konfigurieren und unter <strong>«Subdomains»</strong> kannst du jede Subdomain resp. die Haupt-Domain (www) individuell auf PHP 8.5 upgraden.</p>
<h3>Neuerungen in PHP 8.5</h3>
<p>Die wichtigsten neuen Features:</p>
<ul>
<li><strong>Neue URI-Extension</strong> – URLs und URIs können nun sauberer und standardkonformer verarbeitet werden.</li>
</ul>
<pre><code class="language-php">use Uri\Rfc3986\Uri;

$uri = new Uri('https://www.onlime.ch/blog');
echo $uri-&gt;getHost();
</code></pre>
<ul>
<li><strong>Pipe-Operator <code>|&gt;</code></strong> – Funktionsketten lassen sich nun deutlich lesbarer von links nach rechts schreiben.</li>
</ul>
<pre><code class="language-php">$title = ' PHP 8.5 ';
$slug = $title |&gt; trim(...) |&gt; strtolower(...);
</code></pre>
<ul>
<li><strong><code>clone()</code> mit direkten Anpassungen</strong> – Beim Klonen eines Objekts können Properties jetzt direkt überschrieben werden. Gerade bei <code>readonly</code>-Objekten sehr praktisch.</li>
</ul>
<pre><code class="language-php">$newUser = clone($user, [
    'name' =&gt; 'Alice',
]);
</code></pre>
<ul>
<li><strong>Neues <code>#[\NoDiscard]</code>-Attribut</strong> – Hilft dabei, Rückgabewerte nicht versehentlich zu ignorieren.</li>
</ul>
<pre><code class="language-php">#[\NoDiscard]
function getToken(): string
{
    return 'abc123';
}

getToken(); // Warning: The return value of function getToken() should either be used or intentionally ignored by casting it as (void)
</code></pre>
<ul>
<li><strong>Closures in konstanten Ausdrücken</strong> – Statische Closures und First-Class Callables dürfen nun auch in konstanten Ausdrücken verwendet werden, etwa in Attributen oder Default-Werten.</li>
</ul>
<pre><code class="language-php">#[Check(static fn () =&gt; true)]
class Demo {}
</code></pre>
<ul>
<li><strong>Neue <code>array_first()</code>- und <code>array_last()</code>-Funktionen</strong> – Kleine, aber praktische Ergänzungen für typische Array-Zugriffe.</li>
</ul>
<pre><code class="language-php">$first = array_first($items);
$last = array_last($items);
</code></pre>
<ul>
<li>und einiges mehr... Die komplette Übersicht findet ihr wie gewohnt auf der <a href="https://www.php.net/releases/8.5/en.php">offiziellen Release-Seite von PHP</a>.</li>
</ul>
<p>Für weitere Infos beachte bitte auch die offiziellen Seiten der PHP Group und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/8.5/en.php">PHP 8.5 Release Announcement</a></li>
<li><a href="https://www.php.net/ChangeLog-8.php#PHP_8_5">PHP 8.5 Changelog</a></li>
<li><a href="https://www.php.net/manual/en/migration85.php">PHP 8.5 Migration Guide</a></li>
<li><a href="https://support.onlime.ch/dev/php.html">Onlime Support-Wiki: PHP Version &amp; Upgrade Tipps</a></li>
</ul>
<p>Weitere sehr empfehlenswerte Artikel:</p>
<ul>
<li><a href="https://stitcher.io/blog/new-in-php-85">stitcher.io – What's new in PHP 8.5</a></li>
<li><a href="https://stitcher.io/blog/pipe-operator-in-php-85">stitcher.io – The pipe operator in PHP 8.5</a></li>
</ul>
<h3>Breaking Changes</h3>
<p>PHP 8.5 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Unter anderem wurde der <strong>Backtick-Operator</strong> als Alias für <code>shell_exec()</code> als <strong>deprecated</strong> markiert. Ebenfalls deprecated sind nicht-kanonische Casts wie <code>(boolean)</code>, <code>(integer)</code> oder <code>(double)</code> – künftig sollten stattdessen <code>(bool)</code>, <code>(int)</code> und <code>(float)</code> verwendet werden. Ausserdem wurden <code>__sleep()</code> und <code>__wakeup()</code> soft-deprecated – verwende stattdessen <code>__serialize()</code> und <code>__unserialize()</code>.</p>
<p>Daneben gibt es weitere Deprecations und kleinere Inkompatibilitäten, die du vor dem Einsatz in Produktion testen solltest. Eine Liste mit allen Breaking Changes findest du wie gewohnt auf der <a href="https://www.php.net/manual/en/migration85.php">Upgrade-Seite der PHP Group</a>.</p>
<h3>Bereit für PHP 8.5?</h3>
<p>Aus unserer Sicht gibt es viele gute Gründe für den Wechsel auf PHP 8.5. Die neue Version bringt nicht nur technische Verbesserungen, sondern macht den Code an mehreren Stellen auch angenehmer und moderner. Wie immer empfiehlt es sich, eigene Applikationen, Libraries und Extensions vor dem Umstieg kurz zu testen.</p>
<p>Du kannst ganz einfach testen, ob deine Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«Subdomains»</strong> kannst du die PHP-Version jederzeit up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2025-12-06T17:00:00+01:00</published>
                        <updated>2026-03-14T13:26:14+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Airpane-next – Unser neues Controlpanel!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/airpane-next-unser-neues-controlpanel" />
            <id>https://www.onlime.ch/index.php/blog/airpane-next-unser-neues-controlpanel</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p><strong>«We must ship!»</strong> meinte Mr. Lambo <a href="https://youtu.be/NTMDzGLs8pw">Taylor Otwell an der letzten Laracon EU</a> in Amsterdam und lieferte diesen Montag prompt alles auf einen Schlag, was das <a href="https://laravel.com/">Laravel</a> Entwickler-Herzen begehrt. We must ship! gilt auch für uns. Wir möchten den Moment nun nicht mehr weiter hinauszögern und euch endlich präsentieren, was wir so lange hinter verschlossenen Türen entwickelt haben.</p>
<p>Diesen Mittwochabend 26.2.2025 ist es so weit: Unser <a href="https://my.onlime.ch/">Controlpanel</a> wird abgelöst durch das Neue, das unter dem Codename <strong>«Airpane-next»</strong> von Grund auf neu entwickelt wurde. Das bisherige Controlpanel basierte auf Zend Framework 1. Es wurde all die Jahre stets weiterentwickelt, basierte aber dennoch auf einem veralteten Framework, das uns stark erschwerte, neuen Anforderungen gerecht zu werden.</p>
<p>Bereits im 2019 haben wir als Vorarbeit für dieses Projekt <strong>Airpane-agent</strong> entwickelt, einen auf Python/<a href="https://flask.palletsprojects.com">Flask</a> basierenden Microservice, der für das Deployment unserer Hostings auf die jeweiligen Webserver zuständig ist. Auch heute verrichtet Airpane-agent alle systemnahen Konfigurations-Aufgaben, welche durch den/die KundIn via Controlpanel angekickt werden.</p>
<p>Mitte 2020 starteten wir mit der Neuentwicklung des Airpane Controlpanels. Damals basierend auf Laravel 7 backend-seitig, <a href="https://vuejs.org/">Vue.js</a> mit <a href="https://nuxt.com/">Nuxt</a> und <a href="https://vuetifyjs.com">Vuetify</a> UI-Komponenten frontend-seitig, klassische API-Architektur. Das Projekt war schon weit fortgeschritten, wir konnten aber die Abhängigkeit von Vuetify nicht weiter akzeptieren, da Vuetify stark in Rückstand geraten war und wir längst die neusten Vue 3 Features nutzen wollten. Auch war uns das «Material Design» von Vuetify nie sonderlich sympathisch und wir wollten wieder mehr Freiheit beim Design eigener UI-Komponenten. Ausserdem brachte die API-Architektur mit unzähligen JSON API-Request von frontend ans backend eine ziemlich hohe Komplexität mit sich.</p>
<p>Es war ein Rückschlag, als ich mich Anfang 2021 (nach einer &quot;Erleuchtung&quot; während einer stärkeren Covid-Erkrankung) dazu entschieden habe, erneut einen grösseren Technologie-Wechsel durchzuziehen. Laravel als Backend – daran gab's nie was zu rütteln! Laravel ist definitiv das eleganteste Framework «for web artisans» und erlebt aktuell einen Höhenflug. Auch ist Laravel (und generell Backend-frameworks) mindestens um Faktor 5x langlebiger und robuster als die meisten frontend Frameworks aus der JS-Welt, wo viele Projekte gehyped werden und nach weniger als einem Jahr wieder vom Markt verschwinden.</p>
<p>Die Frage damals war: <a href="https://laravel-livewire.com/">Livewire</a> oder <a href="https://inertiajs.com/">Inertia</a>? Ich habe mich für Inertia.js entschieden, da ich Vue.js auf Frontend-Ebene längst nicht mehr missen möchte und Inertia der ideale «glue» zwischen frontend und backend ist. Airpane-next basiert also auf dem VILT stack: <strong>Vue.js/Inertia.js/Laravel/Tailwind CSS</strong>. Dies war die richtige Wahl, denn mittlerweile hat sich auch Inertia.js stark weiterentwickelt und die letzten Montag vorgestellte Laravel Cloud basiert ebenfalls auf Inertia, sprich: die Zukunft ist gesichert.</p>
<p>Mitgewirkt an diesem Projekt haben (neben mir, Philip Iezzi):</p>
<ul>
<li>Martin Wittwer von <a href="https://www.wittwer-it.ch/">Wittwer IT Services</a> und als Mitarbeiter von Onlime GmbH</li>
<li>Jonas Schwendener von <a href="https://racerfish.com/">RACERFISH</a></li>
<li>Pascal Baljet von <a href="https://protone.media/">Protone Media</a></li>
</ul>
<p>Mitte 2023 kam das Projekt dann richtig in Fahrt und Pascal hat all sein Knowhow eingebracht, seine jahrelange Erfahrung in Web-Entwicklung mit Laravel wie auch Vue.js. Eine bessere Zusammenarbeit hätte ich mir nie wünschen können. Wir beide haben einen Hang zur Perfektion und haben einfach mächtig Spass an diesem Projekt.</p>
<p><strong>But now... We must ship!</strong></p>
<p>Als kleine Vorschau findest du hier ein paar Screenshots. Airpane-next kommt in Deutsch und Englisch, light und dark mode daher, und kann alles, was das bisherige Controlpanel auch konnte: Verwaltung von Subdomains, MySQL-Datenbanken, SSH-Zugang, FTP-Accounts, Mailkonten, E-Mail-Weiterleitungen, PHP Versionen, Addon-Domains, Cronjobs, usw.</p>
<p>Du wirst an vielen Stellen einige neue Features finden, wie z.B. die Möglichkeit, nun endlich die wichtigsten PHP-Settings pro PHP-Version oder die Berechtigungen eines Datenbank-Benutzers individuell pro Datenbank anpassen zu können. Auch ist das ganze Handling mit den SSL-Zertifikaten (I know, es sollte TLS heissen, aber meine Kundschaft will einfach den Begriff SSL nicht aus dem Kopf kriegen) nun bedeutend übersichtlicher.</p>
<p>Airpane-next glänzt aber insbesondere in der Verwaltung von mehreren Kunden resp. Hostings. Es bringt Features mit, welche (hoffentlich) die Herzen von Web-Agenturen höher schlagen lassen:</p>
<ul>
<li>Du brauchst <strong>nur noch ein Login</strong> (deine E-Mail), um auf alle deine Kunden/Hostings zuzugreifen.</li>
<li><strong>Team-Verwaltung</strong> mit der Möglichkeit, einzelnen Benutzern resp. Teams eingeschränkte <strong>Rechte auf Kunden- oder Hosting-Ebene</strong> zuzuweisen. Passwort-Sharing gehört der Vergangenheit an!</li>
<li>Verwaltung von <strong>SSH-Profilen</strong> auf Team-Ebene</li>
<li><strong>Control-Palette</strong> (Cmd-K hotkey) als Schnellzugriff auf alles und überall</li>
<li>Diverse <strong>Such- und Filtermöglichkeiten</strong> von Datentabellen</li>
</ul>
<p>Das bisherige <strong>Kunden-Cockpit</strong> ist nun auch ins neue Controlpanel integriert, d.h. auf Kunden-Ebene hast du nun einen Überblick über all deine <strong>Abos, Rechnungen und Domains</strong>. Die <strong>Domain-Registrierung</strong> und <strong>DNS-Verwaltung</strong> ist nun nicht mehr wie bisher an ein Webhosting geknüpft, sondern du kannst unabhängig davon Domains via Onlime registrieren lassen und unsere DNS-Server verwenden, selbst wenn du kein Hosting dafür benötigst. Der neue DNS-Manager ist bedeutend übersichtlicher gestaltet als bisher.</p>
<p>OK, hier kommen sie endlich, die Screenshots... nur ein paar wenige, denn Airpane-next geht sehr bald live!</p>
<p><img src="/uploads/airpane-next-login-light.webp" alt="Airpane-next Login Form (light)" /></p>
<p><img src="/uploads/airpane-next-login-dark.webp" alt="Airpane-next Login Form (dark)" /></p>
<p><img src="/uploads/airpane-next-domain-light.webp" alt="Airpane-next Domain Manager (light)" /></p>
<p><img src="/uploads/airpane-next-domain-dark.webp" alt="Airpane-next Domain Manager (dark)" /></p>
<p><img src="/uploads/airpane-next-php-light.webp" alt="Airpane-next PHP Settings (light)" /></p>
<p><img src="/uploads/airpane-next-php-dark.webp" alt="Airpane-next PHP Settings (dark)" /></p>
<p><img src="/uploads/airpane-next-we-must-ship.webp" alt="We must ship!" /></p>
]]>
            </summary>
                                                <published>2025-02-26T00:52:00+01:00</published>
                        <updated>2025-02-26T10:01:13+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 8.4 Released!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-8-4-released" />
            <id>https://www.onlime.ch/index.php/blog/php-8-4-released</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p><strong>PHP 8.4</strong> ist veröffentlicht und bringt wieder einige praktische Neuerungen für den Entwickleralltag. Im Fokus stehen diesmal vor allem <strong>Property Hooks</strong>, <strong>asymmetrische Sichtbarkeit bei Properties</strong>, eine modernisierte <strong>DOM-API mit HTML5-Support</strong> sowie ein paar kleinere, aber sehr nützliche Verbesserungen in der Sprache und Standardbibliothek. Die offiziellen <a href="https://www.php.net/releases/8.4/en.php">Release Notes</a> nennen ausserdem Performance-Verbesserungen, Bugfixes und allgemeines Cleanup.</p>
<p>Ein grosser Dank geht wieder an Ondřej Surý, welcher unter <a href="https://deb.sury.org/">DEB.SURY.ORG</a> stets die aktuellsten PHP-Packages für Debian Linux zur Verfügung stellt. Der beste Debian package maintainer ever!</p>
<p>Sämtliche Erweiterungen, welche bisher unter PHP 8.3 verfügbar waren, stehen euch auch bereit unter PHP 8.4.</p>
<p>Die neue Version lässt sich in unserem <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP Manager»</strong> konfigurieren und unter <strong>«Subdomains»</strong> kannst du jede Subdomain resp. die Haupt-Domain (www) individuell auf PHP 8.4 upgraden.</p>
<h3>Neuerungen in PHP 8.4</h3>
<p>Die wichtigsten neuen Features:</p>
<ul>
<li><strong>Property Hooks</strong> – Logik direkt an Properties hängen, statt immer separate Getter und Setter zu schreiben.</li>
</ul>
<pre><code class="language-php">class User
{
    public string $name {
        set =&gt; strtoupper($value);
    }
}
</code></pre>
<ul>
<li><strong>Asymmetrische Sichtbarkeit</strong> – Properties können öffentlich lesbar, aber nur intern schreibbar sein.</li>
</ul>
<pre><code class="language-php">class Version
{
    public private(set) string $number = '8.4';
}
</code></pre>
<ul>
<li><strong>Neue DOM-API mit HTML5-Support</strong> – Modernere DOM-Verarbeitung inklusive HTML5-Parsing. ([PHP][1])</li>
</ul>
<pre><code class="language-php">$dom = Dom\HTMLDocument::createFromString('&lt;main&gt;&lt;article&gt;Hello&lt;/article&gt;&lt;/main&gt;');
echo $dom-&gt;querySelector('main &gt; article')-&gt;textContent;
</code></pre>
<ul>
<li><strong>Neue <code>array_*()</code>-Hilfsfunktionen</strong> – Zum Beispiel <code>array_find()</code>, <code>array_find_key()</code>, <code>array_any()</code> oder <code>array_all()</code> für typische Abfragen. Für Laravel-Entwickler nichts Neues, aber schön, dass sich diese Funktionen nun auch im PHP core befinden.</li>
</ul>
<pre><code class="language-php">$admin = array_find($users, fn (string $user) =&gt; $user['admin']);
</code></pre>
<ul>
<li><strong><code>new</code> ohne zusätzliche Klammern weiterverkettbar</strong> – Kleines Syntax-Upgrade, aber angenehm im Alltag.</li>
</ul>
<pre><code class="language-php">echo new AppVersion('8.4')-&gt;label();
</code></pre>
<ul>
<li><strong>Neues <code>#[\Deprecated]</code>-Attribut</strong> – Eigene veraltete Funktionen und Methoden sauber markieren.</li>
</ul>
<pre><code class="language-php">#[\Deprecated(message: &quot;use newMethod() instead&quot;)]
function oldMethode() {}
</code></pre>
<ul>
<li>und einiges mehr... Die komplette Übersicht findet ihr wie gewohnt auf der <a href="https://www.php.net/releases/8.4/en.php">offiziellen Release-Seite von PHP</a>.</li>
</ul>
<p>Für weitere Infos beachte bitte auch die offiziellen Seiten der PHP Group und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/8.4/en.php">PHP 8.4 Release Announcement</a></li>
<li><a href="https://www.php.net/ChangeLog-8.php#PHP_8_4">PHP 8.4 Changelog</a></li>
<li><a href="https://www.php.net/manual/en/migration84.php">PHP 8.4 Migration Guide</a></li>
<li><a href="https://support.onlime.ch/dev/php.html">Onlime Support-Wiki: PHP Version &amp; Upgrade Tipps</a></li>
</ul>
<p>Weitere sehr empfehlenswerte Artikel:</p>
<ul>
<li><a href="https://stitcher.io/blog/new-in-php-84">stitcher.io – What's new in PHP 8.4</a></li>
</ul>
<h3>Breaking Changes</h3>
<p>PHP 8.4 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Unter anderem wurden die Extensions <strong>IMAP</strong>, <strong>OCI8</strong>, <strong>PDO_OCI</strong> und <strong>PSpell</strong> aus der PHP-Distribution entfernt und nach PECL verschoben.</p>
<p>Bitte achte auch darauf, dass <strong>implizit nullable Parametertypen</strong> in PHP 8.4 als <strong>deprecated</strong> gelten – statt <code>string $value = null</code> sollte künftig also explizit <code>?string $value = null</code> verwendet werden.</p>
<p>Daneben gibt es weitere Deprecations und kleinere Inkompatibilitäten, die du vor dem Einsatz in Produktion testen solltest. Eine Liste mit allen Breaking Changes findest du wie gewohnt auf der <a href="https://www.php.net/releases/8.4/en.php#deprecations_and_bc_breaks">Upgrade-Seite der PHP Group</a>.</p>
<h3>Bereit für PHP 8.4?</h3>
<p>Aus unserer Sicht gibt es viele gute Gründe für den Wechsel auf PHP 8.4. Die neue Version bringt nicht nur technische Verbesserungen, sondern macht den Code an mehreren Stellen auch angenehmer und sauberer. Wie immer empfiehlt es sich, eigene Applikationen, Libraries und Extensions vor dem Umstieg kurz zu testen.</p>
<p>Du kannst ganz einfach testen, ob deine Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«Subdomains»</strong> kannst du die PHP-Version jederzeit up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2024-12-02T17:00:00+01:00</published>
                        <updated>2026-03-14T13:25:45+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Onlime Review 2023]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/onlime-review-2023" />
            <id>https://www.onlime.ch/index.php/blog/onlime-review-2023</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Lange ist's her seit dem letzten Blogpost – aber wir sind nun mal keine Marketing-Leute, sondern Herzblut-Techies. Also, was geht ab hinter den Kulissen von Onlime? Als Kunde merkst du kaum etwas von unseren Weiterentwicklungen, bleiben sie dir doch grösstenteils verborgen. Ausser dass unsere Services jedes Jahr noch zuverlässiger funktionieren und alles noch reibungsloser läuft. Haben wir nicht schon vor 10 Jahren von «höchster Redundanz», «bester Performance» und «höchster Ausfallsicherheit» gepredigt? Mag sein. Wir geben uns aber nie zufrieden, sondern sind laufend bestrebt, unsere Services zu verbessern: Wir vergolden, polieren, finetunen und pimpen. Die Ideen gehen uns nie aus und es steht auch ganz viel auf der Pipeline für die Zukunft.</p>
<p>Beachtet man unsere <a href="/statusmessages">Statusmeldungen</a> oder diesen Blog, könnte man meinen, Onlime befinde sich im Winterschlaf. Es werden nicht mehr so viele Wartungsarbeiten angekündigt wie vor einigen Jahren. Auch die Störungsmeldungen haben stark abgenommen. Die Anzahl Wartungsarbeiten/Migrationen haben aber keinesfalls abgenommen. Dies ist damit zu erklären, dass wir unser Monitoring laufend ausbauen und allfällige Probleme schon frühzeitig erkennen. So können wir meist proaktiv reagieren und ein Engpass oder eine Störung abwenden, bevor du als Kunde etwas davon bemerkst. Auch können wir grössere Server-Migrationen mittlerweile so gut vorgängig testen, dass die effektive Migration für uns gar kein Risiko mehr darstellt.</p>
<p>Das Jahr geht dem Ende zu. Ich möchte euch hier einen kleinen Einblick geben, was sich im 2023 getan hat, auf was wir stolz sind. Und die Vorfreude auf das, was sich in den nächsten Monaten tun wird, mit euch teilen.</p>
<h2>Erneuerte Infrastruktur Datacenter</h2>
<p>Ende 2022 haben wir unsere Infrastruktur im Datacenter komplett neu durchdacht. Ziel war es, die Redundanz weiter zu erhöhen, insbesondere auf Netzwerk-Ebene.</p>
<p>Auf dem Plan stand (und mittlerweile komplett umgesetzt):</p>
<ul>
<li><strong>Doppelte Netzwerk-Anbindung</strong> aller Server via LAGG (Link Aggregation) / LACP</li>
<li><strong>Stacking der Switches</strong> für doppelte Netzwerk-/Stromanbindung und Failover (Aruba VSF – Virtual Stacking Framework)</li>
<li><strong>Failover-Lösung</strong> für Firmware-Upgrades der Switches ohne Unterbruch (Aruba ISSU – In Service Software Upgrade)</li>
<li><strong>10Gbps &quot;readiness&quot;</strong> auf WAN-Ebene (Upstream), Ablösung firewall appliances</li>
<li>Firewall appliances: Migration von <a href="https://www.pfsense.org/">pfSense</a> auf <strong><a href="https://opnsense.org/">OPNsense</a></strong></li>
</ul>
<p>Unsere bisherigen Switches (HPE/Aruba 2530 Series) waren in die Jahre geraten und mussten durch kostspielige neuere Modelle (<a href="https://www.arubanetworks.com/products/switches/6300-series/">HPE/Aruba 6300 Series</a>) abgelöst werden, welche all diese geforderten Features unterstützen. Wir haben nun 2x <strong>Aruba 6300F 48G Switches</strong> im Einsatz als VSF-Stack, wobei jeder Server jeweils via beide Switches physisch getrennt angeschlossen ist. Auch die Switches sind redundant an unsere Firewall-Appliances angebunden, ebenfalls via LAGG auf 10Gbps-Ports. Sollte es je zu einem Komplett-Ausfall einer dieser Switches kommen, würden wir durch unser Monitoring sofort alarmiert und der Switch könnte zu Laufzeit ausgewechselt werden, ohne dass es zu einem Unterbruch kommt. <strong>Aruba VSF (Virtual Stacking Framework)</strong> bietet uns ein «hot-swapping» der Switches. Dieses Szenario wurde durch uns auch mehrfach durchgespielt und wir haben einen zusätzlichen identischen Switch als Backup bereit gestellt.</p>
<p>Und warum der Wechsel von <a href="https://www.pfsense.org/">pfSense</a> auf <a href="https://opnsense.org/">OPNsense</a> auf unseren Firewall-appliances? OPNsense ist schon seit vielen Jahren das fortschrittlichere und uns sympathischere System. Sowohl pfSense als auch OPNsense basieren beide auf FreeBSD und bieten ein ähnliches Feature Set. Die Weiterentwicklung von pfSense stagniert jedoch seit längerem und die dahinter stehende Firma (Netgate) ist uns ein Dorn im Auge, da diese scheinbar absichtlich die Community Edition von pfSense vernachlässigt und alle Kunden auf die kostenpflichtige pfSense Plus Lizenz drängt. OPNsense und die dahinter stehende Firma <a href="https://www.deciso.com/">Deciso</a> hat unsere volle Sympathie gewonnen und hat in den letzten Jahren enorm aufgeholt, pfSense in der Weiterentwicklung mittlerweile sogar mit Vollgas überholt. Wir fahren auf unseren neuen Appliances die OPNsense Business Lizenz und haben auch eine Support Subscription abgeschlossen. Damit wandert unser Geld in ein tolles Opensource-Projekt, das wir auch ohne solche Lizenzgebühren gerne durch Spenden unterstützen würden. In den letzten Jahren haben wir viele Erfahrung in OPNsense gesammelt, da wir bereits vor dieser Migration einige Firewall-Appliances unserer Kunden und die Firewall-Appliance unseres Backup-Datacenters auf OPNsense umgestellt haben. Mit grosser Erleichterung konnten wir uns also endgültig von pfSense verabschieden.</p>
<p>Auch die gesamte <strong>Stromzufuhr</strong> haben wir rundum erneuert und im Frühling 2023 sämtliche APC PDUs durch <a href="https://www.raritan.com/products/power/power-distribution/rack-pdu">Raritan PX3 Rack PDUs</a> abgelöst. Die bisherigen APC PDUs erhielten keine Firmware-Upgrades mehr und eine individuelle Strommessung der einzelnen Server/Switches/Firewall-Appliances war damit nicht möglich. Ausserdem ist Raritan viel innovativer als die von Schneider Electric übernommene APC.</p>
<p>Sämtliche Strom-Anschlusskabel wurden durch neue Kabel mit <a href="https://www.ieclock.com/">IEC-Lock</a> resp. <a href="https://www.raritan.com/eu/de/products/power/accessories/securelock-power-cords">SecureLock</a> ersetzt. Damit ist das Risiko ausgeschlossen, dass sich ein Stromkabel während Wartungsarbeiten am Rack aus Versehen löst. Im Laufe dieser Migration konnten wir auch unsere redundante Stromanbindung ausführlich testen. Die ganze Neuverkabelung führte zu keinerlei Unterbrüchen.</p>
<p>Das komplette <strong>Netzwerk-/Power-Diagramm</strong> erspare ich euch hier. Es sieht sehr hübsch aus, sprengt aber den Rahmen dieses Blog-Artikels. Bist du daran interessiert, frag einfach danach via <a href="mailto:info@onlime.ch">info@onlime.ch</a> und wir präsentieren es dir gerne.</p>
<h2>Energieeffizienz</h2>
<p>Wir sind laufend bestrebt, die Energieeffizienz unserer Infrastruktur zu steigern. Dank den neuen Raritan PDUs mit outlet metering können wir nun den Stromverbrauch jedes einzelnen Servers und jeder Netzwerk-Komponente überwachen. Die Strommessung wird via unser <a href="https://www.zabbix.com/">Zabbix</a> Monitoring überwacht und in unserem <a href="https://grafana.com/grafana/">Grafana</a>-Dashboard visualisiert.</p>
<p>Bereits im Winter 2022/23 haben wir uns dazu entschieden, einen Server abzuschalten, welcher nur als Backup für Testzwecke (GitLab CI/CD) verwendet wurde. Dies bereitet uns zwar einen Mehraufwand (regelmässiges Hochfahren des Servers für System-Upgrades und zur Replikation), den wir aber gerne in Kauf nehmen, da wir damit konstant Energie einsparen.</p>
<p>Im Dezember 2023 haben wir zwei weitere Server auf &quot;standby&quot; gesetzt, d.h. komplett ausgeschaltet. Diese Server stehen für allfällige zukünftige Projekte frei, weil sie vom bisherigen Kunden nicht mehr benötigt werden.</p>
<p>Bereits vor 2 Jahren sind wir bei Neuanschaffungen von Intel Dual-Core auf <strong>AMD Single-Core Server</strong> umgestiegen. Diese bieten eine bessere Performance bei geringerem Stromverbrauch. Die Einsparungen sind aber noch nicht sehr gross. <strong>Onlime plant seit längerem, auf ARM-Systeme umzusteigen.</strong> Diese bieten eine massiv bessere Energieeffizienz. Du kennst ARM bestimmt von Apple Silicon, die neueren M1/M2/M3 Prozessoren, welche einen gigantischen Performance-Sprung bieten bei einem viel geringeren Stromverbrauch. Die Hardware im Server-Bereich wäre längst da, sowohl HPE als auch Supermicro haben ARM-basierte Server mit <a href="https://amperecomputing.com/products/processors">Ampere Altra CPUs</a> im Angebot. Wir müssen uns aber noch gedulden, bis folgende zwei Produkte ARM-ready sind: <a href="https://proxmox.com/en/proxmox-virtual-environment/overview">Proxmox VE</a>, <a href="https://www.percona.com/mysql/software/percona-server-for-mysql">Percona Server for MySQL</a> – Hoffen wir das Beste für's 2024, dass diese zwei Projekte auch endlich nachziehen und ARM builds liefern!</p>
<p>Im Januar sollte der nächste AMD Server mit NVMe SSDs geliefert werden, der für unser Shared Hosting eingesetzt wird. Dieser wird uns einen weiteren Performance-Boost bringen, bei ähnlichem Energieverbrauch. Wir bemühen uns, unsere Server stets gleichmässig auszulasten durch eine intelligente Verteilung der Virtuellen Server.</p>
<h2>10-fache CO2-Kompensation</h2>
<p>Abgesehen von diesen technischen Bemühungen, unseren Stromverbrauch zu reduzieren resp. optimieren, hat Onlime auch im 2023 wieder seinen CO2-Fussabdruck über's ganze Jahr berechnet und kompensiert diesen zu 1000% (10-fach) via <a href="https://www.myclimate.org">myclimate</a>. 10-fach, weil es andere nicht tun und dies einfach ins Budget passen muss (... selbst wenn dieses im 2023 übermässig strapaziert wurde).</p>
<p>Via <a href="https://co2.myclimate.org/de/calculate_emissions">myclimate's CO2-Rechner</a> berechnen wir den jährlichen CO2-Fussabdruck unter Berücksichtigung folgender Faktoren: Arbeitsplatz (beheizte Fläche), Stromverbrauch (gesamte Server-Infrastruktur und Arbeitsplatz, Traffic, Nutzung Cloud-Dienste), Arbeitsweg der Mitarbeitenden, Geschäftsreisen, Verpflegung, Kaffee/Tee, Material und Abfall.</p>
<p>Unsere gesamte Infrastruktur hat dieses Jahr <strong>15'755 kWh</strong> verbraucht. Das sind <strong>3'000 kWh weniger als im Vorjahr</strong>. Insgesamt hat sich aber unser CO2-Fussabdruck von 3.5t auf 4.5t erhöht. Der Verbrauch war nicht wesentlich höher als im Vorjahr, jedoch haben wir bei der Berechnung dieses Jahr noch mehr Faktoren berücksichtigt (insbesondere der Traffic zwischen unseren Datencentern, und die 2 Geschäfts-Reislis via Nachtzug nach Amsterdam – Flüge sind für uns definitiv ein Tabu!).</p>
<p><strong>CO2-Kompensation: Sinnvoll oder nicht?</strong> Wir wollen dies nicht an die grosse Glocke hängen, da wir definitiv kein Greenwashing betreiben möchten! Für uns steht klar, dass es ohne Reduktion nicht geht, die Qualität unserer Dienstleistungen aber auch nicht darunter leiden darf.</p>
<h2>Spenden</h2>
<p>Auch dieses Jahr unterstützt Onlime wieder folgende NGOs/Organisationen durch eine jährliche Spende:
<a href="https://www.rokpa.org/">ROKPA International</a>, <a href="http://afghanistanhilfe.org/">Afghanistanhilfe Schweiz</a>, <a href="https://www.caritas.ch/">CARITAS</a>, <a href="https://www.publiceye.ch/">PublicEye</a>, <a href="https://www.myclimate.org/">myclimate</a>, <a href="https://www.greenpeace.ch/">Greenpeace</a>, <a href="https://www.ewz.ch/de/private/solaranlagen/solarstrom-fuer-mieter/ewz-solarzueri.html">ewz.solarzüri</a>, <a href="https://www.solarspar.ch/">Solarspar</a>.</p>
<p>Weitere Details und die Präsentation dieser Projekte findest du unter <a href="https://www.onlime.ch/sustainability">Nachhaltigkeit / Soziales &amp; Unwelt</a>.</p>
<h2>Airpane-next</h2>
<p>Die Weiterentwicklung unseres Controlpanels stand dieses Jahr im Mittelpunkt. Bereits seit über 4 Jahren sind wir mit dem Komplett-Rewrite unseres Controlpanel/CRM mit Codename «Airpane» beschäftigt. Das Projekt hat sich als viel grösser herausgestellt als ursprünglich angenommen.</p>
<p>Airpane besteht aus folgenden 3 Komponenten: Airpane-agent (Microservice zur Webserver-Konfiguration), Controlpanel/Kunden-Dashboard, CRM (Kundenverwaltung und Billing). Airpane-agent wurde bereits im 2019/20 als Microservice in Python/Flask umgesetzt und konfiguriert seither unsere Webserver. Seither ist Onlime in der Lage, Dedizierte Managed Webservers <a href="https://www.onlime.ch/lime-dedicated">limeDEDICATED</a> anzubieten, d.h. das gesamte Controlpanel ist losgekoppelt von der Konfiguration der Dienste auf den jeweiligen Webservern.</p>
<p>Mit der Neuentwicklung unseres Controlpanel und CRM haben wir uns ein hohes Ziel gesteckt und mussten während dieses Projektes auch bereits die Technologie wechseln. Gestartet haben wir mit <a href="https://vuetifyjs.com">Vuetify</a> als Frontend-Komponenten und einer API-Architektur, um das frontend mit dem backend zu verknüpfen. Mittlerweile setzen wir auf folgende Technologien (<a href="https://viltstack.dev/">VILT Stack</a>):</p>
<ul>
<li>backend: <a href="https://laravel.com/">Laravel</a></li>
<li>frontend: <a href="https://vuejs.org/">Vue.js</a>, <a href="https://inertiajs.com/">Inertia.js</a>, <a href="https://tailwindcss.com/">TailwindCSS</a></li>
</ul>
<p>Dies gibt uns die nötige Flexibilität und weniger Abhängigkeiten, insgesamt ein sehr zukunftsfähiger Tech-stack.</p>
<p>Seit Mai 2023 ist Pascal Baljet (<a href="https://protone.media/en">Protone Media</a>) aus Amsterdam mit im Boot und unterstützt uns bei der Weiterentwicklung während jeweils 2 Arbeitstagen/Woche. Pascal bringt ein riesiges Knowhow sowohl im Backend- (Laravel) als auch im Frontend-Bereich (VueJS) mit. Auch Jonas von unserer Partner-Webagentur <a href="https://racerfish.com/">RACERFISH</a> unterstützt uns tatkräftig. Eine top Zusammenarbeit! Das Projekt ist so richtig in Fahrt und wir gehen von einen Launch Mitte 2024 aus. Airpane-next wird also endlich spruchreif!</p>
<p>Was kann das neue Controlpanel/Kunden-Dashboard?</p>
<ul>
<li>Basierend auf einem <strong>modernen Tech-Stack (Laravel, Vue.js, Inertia.js, Tailwind)</strong>, der uns die Weiterentwicklung vereinfacht.</li>
<li>Die Verwaltung mehrerer Hostings wird einfacher: <strong>Ein Login für alles!</strong></li>
<li>Gezielte <strong>Berechtigungs-Vergabe</strong>: Ideal für Webagenturen, welche als Team den Zugriff auf unterschiedliche Hostings benötigen, der Endkunde aber weiterhin für Domains und seine Rechnungen zuständig bleiben möchte.</li>
<li>Entkoppelung der <strong>Domain-Verwaltung</strong> (Domain-Registrierung und DNS-Verwaltung) vom Hosting: Domains können neu unabhängig von einem Hosting-Abo verwaltet werden. Onlime wird somit zum Domain-Reseller inkl. übersichtlicher DNS-Verwaltungsoberfläche.</li>
<li>Sämtliche <strong>Controlpanel-Features</strong> (PHP-Manager, Subdomains, Datenbank-Verwaltung, FTP-Zusatzaccounts, SSH-Verwaltung, Zugriffs-Statistiken, Verzeichnisschutz, Cronjob-Manager, usw.) bleiben erhalten, kommen jedoch übersichtlicher daher. Die neue Oberfläche bietet auch mehr Konfigurations-Möglichkeiten, insbesondere beim PHP-Manager.</li>
</ul>
<h2>Open Source Commitment</h2>
<p>Dieses Jahr haben wir uns vermehrt an der Weiterentwicklung von Open-Source-Projekten beteiligt. Wir haben einige PRs submitted, insbesondere für <strong><a href="https://laravel.com/">Laravel</a></strong> und <a href="https://docs.saloon.dev/">Saloon</a>. Zudem haben wir im August 2023 folgendes Projekt veröffentlich:</p>
<ul>
<li><a href="https://github.com/onlime/policyd-rate-guard">PolicydRateGuard</a> – A slick sender rate limit policy daemon for Postfix, written in Python.</li>
</ul>
<p>Finanziell unterstützen wir folgende Projekte: <a href="https://proxmox.com/en/proxmox-virtual-environment/overview">Proxmox VE</a> (Community Subscription), <a href="https://opnsense.org/">OPNsense</a> (Business licenses), <a href="https://deb.sury.org/">DEB.SURY.ORG</a> (PHP Debian packages by Ondřej Surý), div. Sponsoring von GitHub-Projekten.</p>
<h2>Debian Bookworm</h2>
<p>Onlime's Server-Infrastruktur fährt beinahe zu 100% auf Debian Linux. Aktuell sind 10-12 physische <a href="https://proxmox.com/en/proxmox-virtual-environment/overview">Proxmox VE</a> (Debian basierend) Server im Einsatz, auf denen wir insgesamt 50 virtuelle Server betreiben. Im Juni 2023 ist das neue major release <a href="https://www.debian.org/News/2023/20230610">Debian 12 «Bookworm»</a> erschienen. Im Herbst haben wir praktisch alle Server auf den aktuellsten Stand gebracht. Bei einigen physischen Servern war auch eine komplette Neuinstallation notwendig, um die veraltete Partitionierung abzulösen (vgl. <a href="https://pve.proxmox.com/wiki/ZFS:_Switch_Legacy-Boot_to_Proxmox_Boot_Tool">ZFS: Switch Legacy-Boot to Proxmox Boot Tool</a>).</p>
<p>All diese Upgrades konnten wir ohne nennenswerte Unterbrüche durchführen. Bei den grösseren Servern und den <a href="https://www.onlime.ch/lime-dedicated">limeDEDICATED</a> gab's jeweils eine Vorankündigung und es kam zu einer Downtime von unter 15min.</p>
<p>Insgesamt verlief die Migration auf Debian «Bookworm» absolut schmerzlos und du hast als Kunde wohl kaum etwas davon bemerkt.</p>
<h2>Pläne für's 2024?</h2>
<p>Auch nächstes Jahr widmen wir voll und ganz der <strong>Weiterentwicklung unseres Controlpanels/Dashboards «Airpane-next»</strong>, mit dem wir hoffentlich Mitte 2024 live gehen können.</p>
<p>Abgesehen davon soll das veraltete AWStats durch <a href="https://goaccess.io">GoAccess</a> abgelöst werden. Für die Domains planen wir die Einführung von <a href="https://de.wikipedia.org/wiki/Domain_Name_System_Security_Extensions">DNSSEC</a>. Weitere Pläne möchten wir euch heute noch nicht verraten.</p>
<h2>Onlime wird 20!</h2>
<p>Das wäre nun beinahe vergessen gegangen: <strong>Onlime feiert sein 20-jähriges Bestehen!</strong> Am 11. Dezember 2003 ging das damalige «Onlime Webhosting» mit dem ersten Server live und hat sein Hosting-Angebot am 1. Januar 2004 veröffentlicht. Alles lief auf einem einzigen Mietserver – das waren noch Zeiten!</p>
<p>Stosse mit uns an! Happy New Year und auf ein weiteres Jahrzehnt!</p>
]]>
            </summary>
                                                <published>2023-12-29T16:54:00+01:00</published>
                        <updated>2023-12-29T16:54:52+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 8.3 Out Now!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-8-3-out-now" />
            <id>https://www.onlime.ch/index.php/blog/php-8-3-out-now</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Das neuste major release <strong>PHP 8.3</strong> ist erschienen und wir konnten die finale Version inkl. sämtlicher Erweiterungen bereits letzten Dienstag 28. Dezember 2023 für alle Kunden freigeben – wenige Tage nach dem offiziellen Launch-day. Ein grosser Dank geht hier an Ondřej Surý, welcher unter <a href="https://deb.sury.org/">DEB.SURY.ORG</a> stets die aktuellsten PHP-Packages für Debian Linux zur Verfügung stellt.</p>
<p>Sämtliche Erweiterungen, welche bisher unter PHP 8.2 verfügbar waren, stehen euch auch bereit unter PHP 8.3.</p>
<p>Die neue Version ist in unserem <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> zu finden und lässt sich sowohl für die Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.</p>
<h3>Neuerungen in PHP 8.3</h3>
<p>Diese PHP Version bringt zahlreiche neue Funktionen und Verbesserungen mit sich, die die Entwicklung von Webanwendungen mit PHP noch effizienter und leistungsfähiger machen. Deep-Cloning von schreibgeschützten Eigenschaften und eine neue Funktion zur Überprüfung von JSON-Strings. Die Randomizer-Klasse wurde ebenfalls erweitert, um die Generierung von Zufallszahlen und -strings zu erleichtern.</p>
<p>Dies sind die wichtigsten <a href="https://www.php.net/releases/8.3/">Neuerungen und Änderungen</a>:</p>
<ul>
<li>
<p><strong><a href="https://wiki.php.net/rfc/typed_class_constants">Typisierte Klassenkonstanten</a></strong> – In früheren Versionen von PHP waren Klassenkonstanten nicht typisiert, was zu Problemen führen konnte, wenn Schnittstellen oder implementierende Klassen unterschiedliche Typen für die gleiche Konstante verwendeten. Dies konnte zu unerwartetem Verhalten und potenziellen Fehlern führen.</p>
<p>Mit PHP 8.3 wurde die Einführung von typisierten Klassenkonstanten vorgenommen. Dies bedeutet, dass nun explizit der Typ einer Klassenkonstante angeben werden kann, um sicherzustellen, dass der gleiche Typ in der gesamten Vererbungshierarchie beibehalten wird.</p>
</li>
<li>
<p><strong><a href="https://wiki.php.net/rfc/dynamic_class_constant_fetch">Dynamisches Abrufen von Klassenkonstanten</a></strong> – In der Vergangenheit war es in PHP nicht möglich, Klassenkonstanten dynamisch abzurufen. Man musste den Namen der Konstanten als Zeichenkette kennen und diese dann mit der <code>constant()</code>-Funktion abrufen.</p>
<p>Durch die Verwendung der geschweiften Klammern <code>{}</code> kann nun den Wert einer Klassenkonstante basierend auf einer dynamisch generierten Zeichenkette abgerufen werden. Dies erhöht die Lesbarkeit und verhindert potenzielle Rechtschreibfehler bei der Verwendung von <code>constant()</code>.
Beispiel: <code>Foo::{$myConstant};</code></p>
</li>
<li>
<p><strong><a href="https://wiki.php.net/rfc/marking_overriden_methods">Neues <code>#[Override]</code>-Attribute</a></strong> – Bei der Überschreibung von Methoden in Klassen kann es zu Problemen kommen, insbesondere wenn es zu Tippfehlern oder Namensänderungen kommt. Dies kann dazu führen, dass unbeabsichtigte neue Methoden erstellt werden und die beabsichtigte Überschreibung nicht wie erwartet funktioniert.</p>
<p>Um diese Problematik zu lösen, wurde in PHP 8.3 das neue <code>#[Override]</code>-Attribute eingeführt. Dieses Attribute kennzeichnet eine Methode in einer Klasse explizit als Absicht zur Überschreibung einer Methode in der übergeordneten Klasse oder in einem implementierten Interface. Dadurch wird vermieden, dass unbeabsichtigte neue Methoden erstellt werden und die Konsistenz des Codes verbessert sich.</p>
</li>
<li>
<p><strong><a href="https://wiki.php.net/rfc/readonly_amendments">Deep-Cloning von schreibgeschützten Eigenschaften</a></strong> – In PHP gibt es die Möglichkeit, Eigenschaften als schreibgeschützt zu markieren, indem das <code>readonly</code>-Attribut verwendet wird. Diese schreibgeschützten Eigenschaften können nur im Konstruktor festgelegt werden und sind anschließend nicht mehr veränderbar. Sie bieten eine sichere Möglichkeit, Daten zu speichern und vor ungewollter Modifikation zu schützen.</p>
<p>In früheren Versionen von PHP gab es jedoch Einschränkungen. Wenn ein Objekt mit schreibgeschützten Eigenschaften geklont wurde, wurde lediglich eine flache Kopie der Eigenschaften erstellt. Dies bedeutete, dass die schreibgeschützten Eigenschaften weiterhin auf das Originalobjekt verwiesen und somit nicht wirklich geklont wurden.</p>
<p>Mit PHP 8.3 gibt es nun eine neue Möglichkeit des Deep-Cloning von schreibgeschützten Eigenschaften. Beim Klonen eines Objekts mit schreibgeschützten Eigenschaften wird nicht nur eine flache Kopie der Eigenschaften erstellt, sondern es erfolgt ein vollständige Klonen der referenzierten Objekte. Dadurch werden die schreibgeschützten Eigenschaften vollständig geklont und können unabhängig vom Originalobjekt verwendet werden.</p>
<p>Die Möglichkeit des Deep-Cloning von schreibgeschützten Eigenschaften in PHP 8.3 erleichtert die Handhabung und Manipulation von Objekten mit solchen Eigenschaften erheblich. Es kann nun sichergestellt werden, dass schreibgeschützte Daten vollständig geklont und unabhängig vom Originalobjekt verwendet werden können.</p>
</li>
<li>
<p><strong><a href="https://wiki.php.net/rfc/json_validate">Neue Funktion <code>json_validate()</code></a></strong> – Die Überprüfung der Syntax und Gültigkeit von JSON-Strings war in früheren Versionen von PHP mit einigen Herausforderungen verbunden. Die Verwendung der <code>json_decode()</code>-Funktion allein bietet keine explizite Möglichkeit, festzustellen, ob ein JSON-String syntaktisch korrekt ist oder nicht. Dies kann zu Fehlern und unerwartetem Verhalten führen, insbesondere wenn die Integrität von JSON-Daten wichtig ist.
In PHP 8.3 wurde die Funktion <code>json_validate()</code> eingeführt, um dieses Problem zu lösen. Diese Funktion ermöglicht es, die Syntax und Gültigkeit eines JSON-Strings zu überprüfen, ohne die Daten vollständig zu decodieren.</p>
</li>
<li>
<p><strong><a href="https://wiki.php.net/rfc/randomizer_additions#getbytesfromstring">Neue Methoden in der Randomizer-Klasse</a></strong> – Die Randomizer-Klasse in PHP bietet eine Vielzahl von Funktionen zur Generierung von Zufallszahlen und -strings. Diese Klasse wurde in PHP 8.3 um einige neue Methoden erweitert, die weitere Möglichkeiten zur Generierung von Zufallswerten bieten.</p>
<p>Die Randomizer-Klasse ist Teil der Random-Erweiterung in PHP und ermöglicht die Generierung von Zufallswerten basierend auf verschiedenen Algorithmen. Sie bietet eine Reihe von Methoden wie <code>getRandomBytes()</code>, <code>getInt()</code>, <code>getIntRange()</code> und andere. Mit diesen Methoden können Zufallszahlen, Binärdaten und zufällige Zeichenketten generiert werden.</p>
<p>In PHP 8.3 wurden der Randomizer-Klasse zwei neue Methoden hinzugefügt:</p>
<ol>
<li><code>getBytesFromString($allowedCharacters, $length)</code> ermöglicht die Generierung einer zufälligen Zeichenkette mit benutzerdefinierten erlaubten Zeichen und einer bestimmten Länge.</li>
<li><code>getFloat($min, $max, $boundary)</code> ermöglicht die Generierung einer zufälligen Gleitkommazahl innerhalb eines bestimmten Bereichs.</li>
</ol>
</li>
<li>
<p><strong><a href="https://www.php.net/manual/en/features.commandline.options.php">Verbesserungen im Kommandozeilen-Linter</a></strong> – Der Kommandozeilen-Linter ist ein nützliches Tool in PHP, das entwickelt wurde, um den Code auf potenzielle Syntaxfehler und Probleme zu überprüfen, bevor er ausgeführt wird. Mit dem Kommandozeilen-Linter können Entwickler schnell und einfach Code-Fehler identifizieren und beheben, was dazu beiträgt, robustere und fehlerfreie Anwendungen zu erstellen.</p>
<p>In PHP 8.3 gab es Verbesserungen im Kommandozeilen-Linter, die die Verarbeitung mehrerer Dateien unterstützen. Das bedeutet, dass nun mehrere Dateien gleichzeitig mit dem Kommandozeilen-Linter überprüft werden können, um potenzielle Fehler im Code zu finden.</p>
</li>
<li>
<p>und einiges mehr...</p>
</li>
</ul>
<p>Unter <strong><a href="https://www.php.net/releases/8.3/">PHP 8.3 Released!</a></strong> findet ihr sämtliche neuen Features mit den entsprechenden Links zur Doku resp. RFCs aufgelistet.</p>
<p>Für weitere Infos beachte bitte auch das offizielle Release Announcement und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/8_3_0.php">PHP 8.3.0 Release Announcement</a></li>
<li><a href="https://www.php.net/ChangeLog-8.php#8.3.0">PHP 8.3.0 Changelog</a></li>
<li><a href="https://support.onlime.ch/dev/php.html">Onlime Support-Wiki: PHP Version &amp; Upgrade Tipps</a></li>
</ul>
<p>Weitere sehr empfehlenswerte Artikel:</p>
<ul>
<li><a href="https://stitcher.io/blog/new-in-php-83">stitcher.io – What's new in PHP 8.3</a></li>
<li><a href="https://stitcher.io/blog/override-in-php-83">stitcher.io – <code>#[Override]</code> in PHP 8.3</a></li>
<li><a href="https://stitcher.io/blog/readonly-classes-in-php-82">stitcher.io – Readonly classes in PHP 8.2</a></li>
<li><a href="https://stitcher.io/blog/cloning-readonly-properties-in-php-83">stitcher.io – Cloning readonly properties in PHP 8.3</a></li>
<li><a href="https://php.watch">PHP.Watch</a></li>
</ul>
<h3>Breaking Changes</h3>
<p>PHP 8.3 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Viele der Änderungen sind jedoch bereits seit PHP 8.2 als veraltet markiert, weshalb du mit dem Wechsel auf PHP 8.3 generell keine Probleme haben solltest, wenn du mit den Anpassungen in den vergangenen Versionen vertraut bist. Eine Liste mit allen Breaking Changes findest Du wie gehabt auf der <a href="https://www.php.net/manual/en/migration83.php">Upgrade-Seite der PHP Group</a>.</p>
<h3>Bereit für PHP 8.3?</h3>
<p>Aus unserer Sicht spricht absolut nichts gegen den Wechsel auf PHP 8.3. Bisher sind uns keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.3. Einzig die Projekte, welche den Schritt auf PHP 8.2 bis heute verschlafen haben, werden wohl auch nicht ganz so rasch nachziehen und es ist zumindest mit <code>E_DEPRECATED</code> Warnungen zu rechnen.</p>
<p>Du kannst ganz einfach testen, ob deine Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> kannst du die PHP-Version jederzeit up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2023-12-01T17:05:00+01:00</published>
                        <updated>2023-12-01T17:11:37+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 8.2 Out Now!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-8-2-out-now" />
            <id>https://www.onlime.ch/index.php/blog/php-8-2-out-now</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Der neuste major release <strong>PHP 8.2</strong> ist erschienen und wir konnten die finale Version inkl. sämtlicher Erweiterungen bereits letzten Samstag 10. Dezember 2022 für alle Kunden freigeben – 2 Tage nach dem offiziellen Launch-day. Ein grosser Dank geht hier an Ondřej Surý, welcher unter <a href="https://deb.sury.org/">DEB.SURY.ORG</a> stets die aktuellsten PHP-Packages für Debian zur Verfügung stellt.</p>
<p>Sämtliche Erweiterungen, welche bisher unter PHP 8.1 verfügbar waren, stehen euch auch bereit unter PHP 8.2.</p>
<p>Die neue Version ist in unserem <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> zu finden und lässt sich sowohl für die Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.</p>
<h3>Neuerungen in PHP 8.2</h3>
<p>PHP 8.2 baut auf der erneuerten Basis von <a href="php-8-ready-for-showtime">PHP 8.0</a> und <a href="php-8-1-out-now">PHP 8.1</a> auf. Die neuste PHP-Version bietet nicht ganz so viel Neues wie der grosse Sprung auf PHP 8, aber doch einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:</p>
<ul>
<li><strong><a href="https://wiki.php.net/rfc/readonly_classes">Neue <code>readonly</code> Klassen</a></strong> – Mit PHP 8.1 wurde die Funktion<code>readonly</code> für Klasseneigenschaften eingeführt. Mit PHP 8.2 wird nun die Möglichkeit hinzugefügt, die gesamte Klasse als <code>readonly</code> zu deklarieren.
Wenn du eine Klasse als <code>readonly</code> deklarierst, erben alle ihre Eigenschaften automatisch das <code>readonly</code> Merkmal. Wenn du also eine Klasse <code>readonly</code> deklarierst, ist es dasselbe, als wenn du jede Klasseneigenschaft als <code>readonly</code> deklarierst.</li>
<li><strong><a href="https://wiki.php.net/rfc/null-false-standalone-types"><code>true</code>, <code>false</code>, und <code>null</code> als eigenständige Typen</a></strong> – PHP enthält bereits skalare Typen wie <code>int</code>, <code>string</code> und <code>bool</code>. Diese wurden in PHP 8.0 um Union-Typen erweitert, die es ermöglichen, dass Werte von verschiedenen Typen sein  können. Der gleiche RFC erlaubte auch die Verwendung von <code>false</code> und <code>null</code> als Teil eines Union-Typs – als eigenständige Typen waren sie jedoch nicht erlaubt.</li>
<li><strong><a href="https://wiki.php.net/rfc/dnf_types">Disjunctive Normal Form (DNF) Typen</a></strong> – Die <a href="https://en.wikipedia.org/wiki/Disjunctive_normal_form">disjunktive Normalform (DNF)</a> ist eine standardisierte Methode, um boolesche Ausdrücke zu  organisieren. Sie besteht aus einer Disjunktion von Konjunktionen – in  booleschen Begriffen ist das ein <strong>ODER von UNDs</strong>. Got it? Kurz, dies ist nun möglich: <code>function bar((A&amp;B)|null $entity) { ... }</code>
Die Anwendung von DNF auf Typendeklarationen ermöglicht eine standardisierte Art und Weise, kombinierte Union- und Intersection-Typen zu schreiben, die der Parser verarbeiten kann. Die <a href="https://wiki.php.net/rfc/dnf_types">neue DNF-Typenfunktion</a> von PHP 8.2 ist einfach, aber mächtig, wenn sie richtig eingesetzt wird.</li>
<li><strong><a href="https://wiki.php.net/rfc/redact_parameters_in_back_traces">Sensible Parameter in Backtraces redacten</a></strong> – Wie fast jede Programmiersprache erlaubt auch PHP die Nachverfolgung des Aufrufstapels an jedem Punkt der Codeausführung. Das Stack-Tracing erleichtert das Debuggen von Code, um Fehler und  Leistungsengpässe zu beheben. Normalerweise laufen die meisten Stack Traces im Hintergrund und werden  stillschweigend protokolliert – für eine spätere Überprüfung, falls  nötig.
Einige dieser detaillierten PHP-Stacktraces können jedoch von Nachteil sein, wenn du sie an Drittanbieterdienste weitergibst – in der Regel für die Analyse von Fehlerprotokollen, die Fehlerverfolgung usw. Diese Stack Traces können sensible  Informationen wie Benutzernamen, Passwörter und Umgebungsvariablen enthalten.
Mit PHP 8.2 kannst du <a href="https://wiki.php.net/rfc/redact_parameters_in_back_traces">solche sensiblen Parameter</a> mit dem neuen Attribut <code>\SensitiveParameter</code> kennzeichnen. Jeder Parameter, der als sensibel gekennzeichnet ist, wird in deinen Backtraces nicht aufgeführt.</li>
<li><strong><a href="https://wiki.php.net/rfc/constants_in_traits">Konstanten in Traits zulassen</a></strong> – PHP bietet eine Möglichkeit zur Wiederverwendung von Code, die Traits. Neu können auch Konstanten in Traits definiert werden, genauso wie Klassen-Konstanten.</li>
<li><strong><a href="https://www.php.net/manual/en/book.random.php">Neue <code>Random</code> Erweiterung</a></strong> – Im Laufe der Geschichte von PHP wurden verschiedene Zufallszahlengeneratoren (Random Number Generators, RNG) mit unterschiedlichem Grad an Leistung, Anwendungsfällen und Eignung für sichere Anwendungen unterstützt. PHP 8.2 geht einen Schritt weiter, indem es die gesamte RNG-bezogene Funktionalität in eine neue Erweiterung namens <code>Random</code> überführt.</li>
<li>und einiges mehr...</li>
</ul>
<p>Unter <strong><a href="https://www.php.net/releases/8.2/">PHP 8.2 Released!</a></strong> findet ihr sämtliche neuen Features mit den entsprechenden Links zur Doku resp. RFCs aufgelistet.</p>
<p>Für weitere Infos beachte bitte auch das offizielle Release Announcement und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/8_2_0.php">PHP 8.2.0 Release Announcement</a></li>
<li><a href="https://www.php.net/ChangeLog-8.php#8.2.0">PHP 8.2.0 Changelog</a></li>
<li><a href="https://support.onlime.ch/dev/php.html">Onlime Support-Wiki: PHP Version &amp; Upgrade Tipps</a></li>
</ul>
<p>Weitere sehr empfehlenswerte Artikel:</p>
<ul>
<li><a href="https://stitcher.io/blog/new-in-php-82">stitcher.io – What's new in PHP 8.2</a></li>
<li><a href="https://stitcher.io/blog/readonly-classes-in-php-82">stitcher.io – Readonly classes in PHP 8.2</a></li>
<li><a href="https://stitcher.io/blog/php-82-in-8-code-blocks">stitcher.io – PHP 8.2 in 8 code blocks</a></li>
<li><a href="https://php.watch/articles/PHP-8.2">PHP.Watch – PHP 8.2 Highlights: What's New and Changed</a></li>
</ul>
<h3>Breaking Changes</h3>
<p>PHP 8.2 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Viele der Änderungen sind jedoch bereits seit PHP 8.1 als veraltet markiert, weshalb du mit dem Wechsel auf PHP 8.2 generell keine Probleme haben solltest, wenn du mit den Anpassungen in den vergangenen Versionen vertraut bist. Eine Liste mit allen Breaking Changes findest Du wie gehabt auf der <a href="https://www.php.net/manual/en/migration82.php">Upgrade-Seite der PHP Group</a>.</p>
<h3>Bereit für PHP 8.2?</h3>
<p>Aus unserer Sicht spricht absolut nichts gegen den Wechsel auf PHP 8.2. Bisher sind uns keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.2. Einzig die Projekte, welche den grossen Schritt auf PHP 8.1 bis heute verschlafen haben, werden wohl auch nicht ganz so rasch nachziehen und es ist zumindest mit <code>E_DEPRECATED</code> Warnungen zu rechnen.</p>
<p>Du kannst ganz einfach testen, ob deine Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> kannst du die PHP-Version jederzeit up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2022-12-12T15:21:00+01:00</published>
                        <updated>2022-12-12T15:26:00+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 8.1 Out Now!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-8-1-out-now" />
            <id>https://www.onlime.ch/index.php/blog/php-8-1-out-now</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Der neuste major release <strong>PHP 8.1</strong> ist erschienen und wir konnten die finale Version bereits am 26. November 2021 für alle Kunden freigeben. Mit der offiziellen Ankündigung liessen wir etwas auf uns warten, sofern du unseren <a href="https://twitter.com/ondalime/status/1464367384878362631">Tweet</a> verpasst hast. Aber wenn es um's Technische geht, dann geben wir Vollgas!</p>
<p>Sämtliche Erweiterungen, welche unter PHP 8.0 verfügbar waren, stehen euch auch bereit unter PHP 8.1.</p>
<p>Die neue Version ist in unserem <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> zu finden und lässt sich sowohl für Ihre Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.</p>
<h3>Neuerungen in PHP 8.1</h3>
<p>Die neueste PHP-Version bietet nicht ganz so viel Neues wie der grosse Sprung auf PHP 8 letztes Jahr, aber doch einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:</p>
<ul>
<li><strong><a href="https://www.php.net/manual/en/language.enumerations.php">Enumerations</a></strong> – Du kannst nun Enums statt Konstanten für mehr Typensicherheit und direkter Validierung nutzen. Aus unserer Sicht klar das nützlichste neue Feature!</li>
</ul>
<pre><code class="language-php">enum Status {
    case Pending;
    case Active;
    case Archived;
}
</code></pre>
<ul>
<li><strong><a href="https://wiki.php.net/rfc/readonly_properties_v2">Readonly-Properties</a></strong> – Readonly-Properties können nach einer Initialisierung nicht mehr verändert werden. Sie sind ein ideales Werkzeug um Value-Objekte und Data-Transfer-Objekte zu erstellen.
<code>public readonly string $title</code></li>
<li><strong><a href="https://wiki.php.net/rfc/first_class_callable_syntax">First-Class Callable Syntax</a></strong> – Durch die sogenannte First-Class Callable Syntax kannst du eine Referenz zu jeder beliebigen Funktion erhalten.</li>
</ul>
<pre><code class="language-php">function foo(int $a, int $b) { /* … */ }
$foo = foo(...);
$foo(a: 1, b: 2);
</code></pre>
<ul>
<li><strong><a href="https://wiki.php.net/rfc/new_in_initializers"><code>new</code> in Initialisierungen</a></strong> – Objekte können nun als Default-Wert für Parameter, statische Variablen, Konstanten, so wie als Argument für Attribute genutzt werden. Dies ermöglicht nun auch die Nutzung von verschachtelten Attributen.</li>
</ul>
<pre><code class="language-php">    public function __construct(
        private Logger $logger = new NullLogger(),
    ) {}
</code></pre>
<ul>
<li><strong><a href="https://wiki.php.net/rfc/pure-intersection-types">Pure-Intersection-Types</a></strong> – Nutze die Intersection-Types, wenn du sicherstellen möchtest, dass das übergebene Objekt mehrere Typen implementieren.</li>
</ul>
<pre><code class="language-php">function generateSlug(HasTitle&amp;HasId $post) {
    return strtolower($post-&gt;getTitle()) . $post-&gt;getId();
}
</code></pre>
<ul>
<li><strong><a href="https://wiki.php.net/rfc/noreturn_type">Der Rückgabetyp <code>never</code></a></strong> – Eine Funktion mit dem Rückgabetyp <code>never</code> gibt an, dass sie keinen Rückgabewert besitzt und die Funktion entweder eine Exception wirft oder das Script durch <code>die()</code>, <code>exit()</code>, <code>trigger_error()</code>, oder einer ähnlichen Funktion terminiert wird.</li>
<li><strong><a href="https://wiki.php.net/rfc/final_class_const"><code>final</code> Klassen Konstanten</a></strong> – Es ist nun möglich Klassen Konstanten als <code>final</code> zu definieren, sodass diese in einer Vererbung nicht überschrieben werden können.</li>
<li><strong><a href="https://wiki.php.net/rfc/fibers">Fibers</a></strong> – Fibers sind eine grundlegende Funktionalität zur Implementierung von verzahnten Abläufen. Sie sind dazu gedacht Code-Blöcke zu erstellen, die pausiert und wiederaufgenommen werden ähnlich wie die Generator-Implementierung, jedoch von überall aus.</li>
<li><strong><a href="https://wiki.php.net/rfc/array_unpacking_string_keys">Entpacken von Arrays mit string-basierten Keys</a></strong> – PHP unterstützte bereits das Entpacken von Arrays mit <code>int</code>-basiertem Key in andere Arrays. Jetzt ist es auch möglich Arrays mit einem <code>string</code>-basiertem Key oder auch einer Kombination aus beiden Varianten zu entpacken.</li>
</ul>
<pre><code class="language-php">$array1 = [&quot;a&quot; =&gt; 1];
$array2 = [&quot;b&quot; =&gt; 2];
$array = [&quot;a&quot; =&gt; 0, ...$array1, ...$array2];
var_dump($array); // [&quot;a&quot; =&gt; 1, &quot;b&quot; =&gt; 2]
</code></pre>
<p>Unter <strong><a href="https://www.php.net/releases/8.1/">PHP 8 Released!</a></strong> findet ihr sämtliche neuen Features mit den entsprechenden Links zur Doku resp. RFCs aufgelistet.</p>
<p>Für weitere Infos beachte bitte auch das offizielle Release Announcement und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/8_1_0.php">PHP 8.1.0 Release Announcement</a></li>
<li><a href="https://www.php.net/ChangeLog-8.php#8.1.0">PHP 8.1.0 Changelog</a></li>
<li><a href="https://wiki.onlime.ch/dev:php">Onlime Support-Wiki: PHP</a></li>
</ul>
<p>Weitere sehr empfehlenswerte Artikel:</p>
<ul>
<li><a href="https://stitcher.io/blog/new-in-php-81">stitcher.io – What's new in PHP 8.1</a></li>
<li><a href="https://stitcher.io/blog/php-enums">stitcher.io – PHP 8.1: Enums</a></li>
<li><a href="https://stitcher.io/blog/php-81-in-8-code-blocks">stitcher.io – PHP 8.1 in 8 code blocks</a></li>
<li><a href="https://php.watch/versions/8.1">PHP.Watch – PHP 8.1: What's New and Changed</a></li>
</ul>
<h3>Breaking Changes</h3>
<p>PHP 8.1 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Viele der Änderungen sind jedoch bereits seit PHP 8.0 als veraltet markiert, weshalb du mit dem Wechsel auf PHP 8.1 generell keine Probleme haben solltest, wenn du mit den Anpassungen in den vergangenen Versionen vertraut bist. Eine Liste mit allen Breaking Changes findest Du wie gehabt auf der <a href="https://www.php.net/manual/en/migration81.php">Upgrade-Seite der PHP Group</a>.</p>
<h3>Bereit für PHP 8.1?</h3>
<p>Aus unserer Sicht spricht nichts gegen den Wechsel auf PHP 8.1. Bisher sind uns keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.1. Einzig die Projekte, welche den grossen Schritt auf PHP 8.0 bis heute verschlafen haben, werden wohl auch nicht ganz so rasch nachziehen und es ist zumindest mit <code>E_DEPRECATED</code> Warnungen zu rechnen.</p>
<p>Du kannst ganz einfach testen, ob deine Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> kannst du die PHP-Version jederzeit up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2021-12-04T00:14:00+01:00</published>
                        <updated>2021-12-04T00:15:18+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Wo steckt der Cookie-Banner?]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/wo-steckt-der-cookie-banner" />
            <id>https://www.onlime.ch/index.php/blog/wo-steckt-der-cookie-banner</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Ist dir je aufgefallen, dass dir unsere Website keinen nervigen Cookie-Banner präsentiert? Oder klickst du die eh immer gleich weg, ohne sie überhaupt noch halbwegs wahrzunehmen? Hält sich Onlime womöglich nicht an die GDPR / DSVGO (Datenschutz-Grundverordnung)?</p>
<p>Nein, die DSVGO mit all ihren Regelungen zur Verarbeitung von personenbezogenen Daten war uns schon immer ein Herzensanliegen, schon längst, bevor sie von irgendwelchen Juristen ins Leben gerufen wurde. Uns persönlich stören all die Cookie-Banner, die teils recht penetrant über dem eigentlichen Content der Websites platziert sind und uns die Annahme der Cookies aufdrängen. Insbesondere dann, wenn die Tracking-Daten noch x-beliebigen externen Firmen weitergereicht werden. Das alles muss nicht sein. Wir haben uns entschlossen, dieses Spiel nicht mitzumachen.</p>
<p>Die Frage war ganz einfach: Muss Onlime wissen, wer unsere Website aufruft und wie hoch das Besucher-Aufkommen ist? Benötigen wir diese Statistiken wirklich? Haben sie irgendwelche Relevanz für unser Geschäftsmodell?</p>
<p>Bis Anfang 2020 hatten wir Google Analytics im Einsatz. Die Website-Statistiken blieben aber bei Google liegen, ohne dass wir diesen je Beachtung geschenkt hätten. Auch betreibt Onlime GmbH so gut wie keine Werbung. Wir sind schlicht nicht drauf angewiesen, einerseits weil die persönliche Weiterempfehlung von bestehenden Kunden viel wichtiger ist und auch ganz gut funktioniert, andererseits, weil wir grundsätzlich nichts halten von Werbung. Werbung war uns schon immer ein Dorn im Auge und das wird sich auch in Zukunft nicht ändern. Keine Sorge, Onlime wird definitiv nie in ein Geschäftsmodell à la Facebook/Amazon/Google abdriften!</p>
<p>Die Antwort war also sonnenklar: Nein, wir benötigen kein Tracking unserer Kunden resp. Website-Besucher. Seit dem 27. Februar 2020 haben wir der Sache ein Ende gesetzt und Google Analytics komplett entfernt. Eine andere Form von Tracking gab es nie auf onlime.ch, folglich benötigen wir auch keinen Cookie-Banner.</p>
<p>Folgender wunderbare Artikel hat uns damals zum Handeln bewogen:</p>
<ul>
<li><a href="https://ma.ttias.be/loophole-cookie-notices/">I found a loophole to prevent those pesky cookie notices</a> by Mattias Geniar</li>
</ul>
<p>Thanks Mattias!</p>
]]>
            </summary>
                                                <published>2021-05-08T16:30:00+02:00</published>
                        <updated>2021-05-08T16:38:33+02:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mehr RAM (+50%) für limeDEDICATED]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/mehr-ram-50-fuer-limededicated" />
            <id>https://www.onlime.ch/index.php/blog/mehr-ram-50-fuer-limededicated</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Als kleines Ostergeschenk erhöhen wir den Arbeitsspeicher für alle <a href="/lime-dedicated"><strong>limeDEDICATED</strong> managed Virtual Dedicated Webserver</a>. Wir bieten neu <strong>+50% RAM</strong> zum selben Preis. Davon profitieren sowohl unsere bestehenden Kunden als auch alle zukünftigen.</p>
<p>NEU:</p>
<ul>
<li><strong>limeDEDICATED-1</strong>: 4 vCPU / <strong>12GB</strong> RAM / 50GB SSD, CHF 180/Mt</li>
<li><strong>limeDEDICATED-2</strong>: 8 vCPU / <strong>24GB</strong> RAM / 100GB SSD, CHF 280/Mt</li>
<li><strong>limeDEDICATED-3</strong>: 16 vCPU / <strong>48GB</strong> RAM / 200GB SSD, CHF 450/Mt</li>
</ul>
<p>Frohe Ostern wünscht Onlime!</p>
]]>
            </summary>
                                                <published>2021-04-02T16:30:00+02:00</published>
                        <updated>2021-04-02T16:39:09+02:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 8 Ready for Showtime!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-8-ready-for-showtime" />
            <id>https://www.onlime.ch/index.php/blog/php-8-ready-for-showtime</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Endlich ist es so weit! Wir konnten gestern Abend <strong>PHP 8.0</strong> für alle Kunden freigeben. Die neue Major-Version war für uns eine echte Herausforderung. Der <a href="https://www.php.net/archive/2020.php#2020-11-26-3">offizielle Release von PHP 8.0.0</a> erfolgte bereits am 26. November 2020. Wir mussten uns aber noch darauf gedulden, bis alle Entwickler der für uns relevanten Extensions nachgezogen haben. Es geht hier insbesondere um diese Extensions, welche Onlime auch unter PHP 8 weiterhin im Angebot hat: <a href="https://pecl.php.net/package/APCu">APCu</a>, <a href="https://pecl.php.net/package/mailparse">mailparse</a>, <a href="https://pecl.php.net/package/mcrypt">mcrypt</a>, <a href="https://pecl.php.net/package/imagick">imagick</a></p>
<p>Mittlerweile sind sämtliche Erweiterungen bereit für PHP 8.0. Einzig bei imagick velief es besonders harzig, da der Maintainer dieser wrapper library für ImageMagick aktuell nicht mehr bereit scheint, das Projekt weiterzupflegen, vgl. <a href="https://github.com/Imagick/imagick/issues/358">Imagick/imagick#358</a> – Dies der Hauptgrund der Verzögerung.
Wir konnten nicht länger warten und mussten also die aktuelle <code>master</code> Branch von Imagick selbst kompilieren. Gemäss unseren Tests funktioniert soweit alles wie erwartet unter PHP 8.0. Mit Ausnahme von Imagick sollten PHP 8.0.0 und sämtliche von uns mitgelieferten Extensions stabil und bereit für den produktiven Einsatz sein.</p>
<p>Die neue Version ist in unserem <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> zu finden und lässt sich sowohl für Ihre Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.</p>
<h3>Neuerungen in PHP 8.0</h3>
<p>Die neueste PHP-Version bietet einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:</p>
<ul>
<li><strong>JIT (Just in Time Compiler)</strong> — Das am meisten gelobte Feature, das mit PHP 8 kommt! Kurz erklärt:
Der JIT-Compiler prüft konstant, welche Programmteile ausgeführt werden. Erkennt der Compiler Stellen, die immer wieder ausgeführt werden und  sich dabei nicht verändern, markiert er diese als «heiss» und legt sie  als Maschinencode ab. Bei der nächsten Ausführung muss der Code damit  nicht mehr interpretiert werden, was einen enormen  Geschwindigkeitsgewinn bringt.
Doch Achtung: Im Vergleich zu PHP 7.4 sind mit PHP 8.0 und JIT bei Web-Applikationen keine Quantensprünge zu erwarten! Mit JIT wird PHP nun aber auch für Anwendungen attraktiv, für welche die Entwickler/innengemeinde die Sprache bisher links liegen liess: Machine-Learning, Grafik-Rendering oder Datenanalyse.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#named-arguments">Named Arguments</a></strong> — Benannte Argumente ermöglichen die Übergabe von Argumenten an eine  Funktion, die auf dem Parameternamen und nicht auf der Parameterposition basiert. Wow! Ein Feature, das wir in PHP schon immer vermisst haben und immer sehr sexy fanden an Python und anderen Script-/Programmiersprachen.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#constructor-property-promotion">Constructor Property Promotion</a></strong> — Führt den Konstruktor und die Parameterdefinition zusammen. Wir haben also einen neuen Weg, um Eigenschaften zu bewerben, der kürzer, lesbarer und weniger fehleranfällig ist.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#attributes">Attributes</a></strong> — Eine der Neuerungen, die für kontroverse Diskussionen in der  PHP-Community gesorgt hat, sind Attributes. In vielen anderen Sprachen als Annotations bekannt, machen es Attributes möglich, Meta-Daten in  einer strukturierten Form mitzugeben. Attributes sind eine gute Sache. Kontroversen hat viel mehr die Wahl der Syntax gesorgt.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#union-types">Union Types</a></strong> — Union types akzeptieren Werte, die von unterschiedlicher Art sein können. Bisher waren union types à la <code>int|float</code> nur in Form von phpdoc-Annotationen möglich. Neu werden in PHP 8 Union types direkt in den Funktionssignaturen unterstützt.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#nullsafe-operator">Nullsafe Operator</a></strong> — PHP 8 führt den nullsicheren Operator <code>$-&gt;</code> mit vollständiger Kurzschlussauswertung ein. Bei der Kurzschlussbewertung wird der zweite Operator nur dann bewertet, wenn der erste Operator nicht auf null bewertet. Wenn ein Operator in einer Kette auf <code>null</code> auswertet, stoppt die Ausführung der gesamten Kette und wertet auf <code>null</code> aus. Sehr elegant! Dies wird uns einige Zeilen an schwer verständlichem Code mit tiefer Verschachtelung ersparen.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#match-expression">Match expression</a></strong> — Der neue <code>match</code>-Ausdruck ist dem <code>switch</code> ziemlich ähnlich, aber mit einer sichereren Semantik und der Möglichkeit, Werte zurückzugeben.</li>
<li><strong><a href="https://www.php.net/releases/8.0/en.php#saner-string-to-number-comparisons">Saner String to Number-Vergleiche</a></strong> — PHP 8 macht nun Vergleiche von Zeichenketten mit Zahlen vernünftiger. <code>0 == 'foo'</code> resultiert in <code>false</code>, so wie's schon immer hätte sein sollen!</li>
<li><strong><a href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list">Allow a trailing comma in parameter lists</a></strong> — Abschliessende Kommas sind seit PHP 7.3 bereits für Methoden- und Funktionsaufrufe erlaubt. Mit PHP 8 ist nun auch in Parameterlisten dieses «Trailing Comma» valide. Sehr hübsch!</li>
<li>und vieles mehr...</li>
</ul>
<p>Unter <strong><a href="https://www.php.net/releases/8.0/">PHP 8 Released!</a></strong> findet ihr sämtliche neuen Features mit den entsprechenden Links zur Doku resp. RFCs aufgelistet.</p>
<p>Für weitere Infos beachten Sie bitte auch das offizielle Release Announcement und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/8_0_0.php">PHP 8.0.0 Release Announcement</a></li>
<li><a href="https://www.php.net/ChangeLog-8.php#8.0.0">PHP 8.0.0 Changelog</a></li>
<li><a href="https://wiki.onlime.ch/dev:php">Onlime Support-Wiki: PHP</a></li>
</ul>
<h3>Breaking Changes</h3>
<p>PHP 8 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Viele der Änderungen sind bereits seit einer der Minor-Versionen von PHP 7 als veraltet markiert, weshalb Du mit dem Wechsel auf PHP 8 generell keine Probleme haben solltest, wenn Du mit den Anpassungen in den vergangenen Versionen vertraut bist. Eine Liste mit allen Breaking Changes findest Du wie gehabt auf der <a href="https://www.php.net/manual/en/migration80.php">Upgrade-Seite der PHP Group</a>.</p>
<h3>Bereit für PHP 8.0?</h3>
<p>Dies ist die erste stabile Version von PHP 8.0 und bei solchen Versionen ist immer Vorsicht geboten. Bisher sind uns aber keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.0.</p>
<p>Sie können ganz einfach testen, ob Ihre Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>PHP-Manager</strong> können Sie die PHP-Version ganz einfach up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2020-12-09T13:44:00+01:00</published>
                        <updated>2020-12-09T23:56:50+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Vertrauenswürdige E-Mails dank SPF & DKIM/DMARC]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/vertrauenswuerdige-e-mails-dank-spf-dkim-dmarc" />
            <id>https://www.onlime.ch/index.php/blog/vertrauenswuerdige-e-mails-dank-spf-dkim-dmarc</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Während <a href="https://en.wikipedia.org/wiki/Sender_Policy_Framework">SPF</a> bereits längst im Einsatz ist und der SPF-Eintrag für alle Domains von Onlime-Kunden automatisch hinterlegt wird, haben wir am 30. März 2020 als Ergänzung auch noch <a href="https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail">DKIM</a>/<a href="https://en.wikipedia.org/wiki/DMARC">DMARC</a> eingeführt.</p>
<p><strong>SPF</strong> steht für «Sender Policy Framework» und bezeichnet einen Abwehrmechanismus gegen Spam-Nachrichten.</p>
<p><strong>DKIM</strong> kürzt den Begriff «DomainKeys Identified Mail» ab und steht für einen Standard, mit dem das Fälschen von Absenderdaten in E-Mails – das sogenannte Spoofing – verhindert werden soll. Gleichzeitig soll sichergestellt werden, dass die wesentlichen Teile der E-Mail nicht verändert wurden.</p>
<p><strong>DMARC</strong> steht für «Domain-based Message Authentication, Reporting and Conformance». DMARC baut auf den beiden Techniken SPF und DKIM auf, indem es für eine Absender-Domain festlegt, wie der Empfänger die Authentifizierung von E-Mails durchführen soll und wie im Falle eines Fehlers zu verfahren ist. Es handelt sich hier also um eine weitere Spezifikation, die entwickelt wurde, um den Missbrauch von E-Mails zu reduzieren.</p>
<h2>SPF</h2>
<p>Mithilfe von SPF definiert die Inhaberin einer Domain, welche Server E-Mails für diese Domain verschicken dürfen und was mit E-Mails geschehen soll, die von einem nicht autorisierten Server stammen. Diese SPF-Regeln werden mittels eines DNS-Eintrags definiert, den die Mailserver des Empfängers beim Entgegennehmen der E-Mail prüfen können. Damit ist sichergestellt, dass E-Mails für die gewünschte Domain nur dann angenommen werden, wenn sie von einem «freigeschalteten» Server stammen. Natürlich vorausgesetzt, der empfangende Server prüft den SPF-Eintrag, was nicht zwingend der Fall sein muss.</p>
<p>Die grossen Anbieter wie Google, Yahoo, GMX prüfen den SPF-Eintrag und berücksichtigen das Resultat bei der Berechnung des Spam-scores, also der Wahrscheinlichkeit, ob eine E-Mail als Spam oder Ham eingestuft wird.</p>
<h3>SPF für Onlime-Kunden automatisch aktiv</h3>
<p>Der für SPF nötige DNS-Eintrag ist für Domains von Onlime-Kunden automatisch hinterlegt und kann bei Bedarf bequem über den DNS-Manager in unserem <a href="https://my.onlime.ch/">Controlpanel</a> überschrieben werden. Ausserdem prüfen die Mailserver von Onlime GmbH alle eingehenden E-Mails mittels SPF und sorgen so dafür, dass weniger Spam in den Postfächern landet.</p>
<p>Der Standard SPF-Eintrag sieht so aus:</p>
<pre><code>@		300	IN	TXT	&quot;v=spf1 mx include:spf.onlime.ch ~all&quot;
</code></pre>
<p>Wir empfehlen den Kunden, die definitiv nur E-Mail via unsere Mailserver versenden, diesen Eintrag von «SoftFail» <code>~all</code> auf das radikalere «Fail» <code>-all</code> anzupassen. Hinweise zur Syntax finden Sie hier: <a href="https://dmarcian.com/spf-syntax-table/">SPF Record Syntax</a>.</p>
<h2>DKIM/DMARC gegen Spoofing und Phishing</h2>
<p>Neben SPF lässt sich mit DKIM die Vertrauenswürdigkeit von E-Mails weiter verbessern. Unterstützt der Mailserver der Empfängerin nämlich DKIM, kann dieser feststellen, ob die E-Mail von einem Server stammt, den die Absenderin als legitime Quelle definiert hat und ob der Inhalt der E-Mail unterwegs verändert wurde. Ziel dieses Verfahrens ist es, Spammern und Phishern ihre kriminellen Vorhaben zu erschweren.</p>
<p>Damit die Empfängerin zweifelsfrei feststellen kann, ob die E-Mail aus legitimer Quelle stammt, wird vom sendenden Mailserver für jede ausgehenden E-Mail eine digitale Signatur («Hash») erstellt. Diese Signatur wird aus einem privaten Schlüssel sowie dem Inhaltstext der E-Mail generiert und im Header der E-Mail abgelegt. Mit dem öffentlichen Schlüssel, der als DNS-Eintrag des Domainnamens abgelegt ist, kann der empfangende Mailserver daraufhin diesen «Hash» verifizieren.</p>
<p>Ist die Signatur gültig, stammt die E-Mail tatsächlich von der behaupteten Domain. Ist die Signatur ungültig, wurde die Absenderadresse oder der Inhalt der E-Mail manipuliert. Die Empfängerin kann diese Informationen verwenden, um die Bewertungssysteme und Filtertechniken ihrer Spamfilter wirkungsvoller zu gestalten.</p>
<h3>DKIM für Onlime-Kunden automatisch aktiv</h3>
<p>E-Mails, die über Onlime-Server verschickt werden, werden automatisch mit dem passenden DKIM-Schlüssel signiert. Der passende DNS-Eintrag ist auf den Nameservern von Onlime GmbH ebenfalls automatisch hinterlegt und kann bei Bedarf bequem über den DNS-Manager in unserem <a href="https://my.onlime.ch/">Controlpanel</a> überschrieben werden.</p>
<p>Ein Standard DKIM- und der zugehörige DMARC-Eintrag sehen so aus:</p>
<pre><code>onlime-20200330._domainkey	300	IN	TXT	&quot;v=DKIM1; k=rsa; p=MIIBIjA...&quot;
_dmarc		300	IN	TXT	&quot;v=DMARC1; p=none;&quot;
</code></pre>
<p>Um den DKIM-Eintrag brauchen Sie sich nie zu kümmern. Onlime ersetzt die keys regelmässig und passt dabei jeweils den DKIM-Eintrag im DNS an. Wenn Sie aber die DMARC-Richtlinie verschärfen möchten, empfehlen wir Ihnen, den <code>_dmarc</code> Eintrag wie folgt zu überschreiben:</p>
<pre><code>_dmarc		300	IN	TXT	&quot;v=DMARC1; p=quarantine; adkim=s; aspf=s;&quot;
</code></pre>
<p>Verwenden Sie dazu am besten den <a href="https://dmarcian.com/dmarc-record-wizard/">DMARC Record Wizard</a> von Dmarcian, falls Sie in der Syntax von DMARC nicht geübt sind.</p>
]]>
            </summary>
                                                <published>2020-04-03T15:24:00+02:00</published>
                        <updated>2020-04-04T22:05:57+02:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Onlime-News 2020-1]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/onlime-news-2020-1" />
            <id>https://www.onlime.ch/index.php/blog/onlime-news-2020-1</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Es gibt wieder einige Neuigkeiten aus der Schmiede Onlime, die wir endlich mit euch teilen möchten. Für diejenigen, die's gerne kurz mögen, lest einfach nur folgenden Abschnitt:</p>
<h3>TL;DR</h3>
<p>Ende 2019 haben wir unseren <strong>Primären Mailserver (IMAP/POP3)</strong> durch <strong>Dovecot</strong> abgelöst und sämtliche Kunden auf den neuen Mailserver migriert. Auch das <strong>Spam-Filtering wurde komplett überarbeitet</strong> und wir sind auf <strong>Rspamd</strong> umgestiegen, wodurch wir viel bessere Treffer-Quoten erreichen. Aufseiten <strong>Webmail</strong> gab es auch eine erfreuliche Neuerung: Roundcube hat mit dem neuen &quot;Elastic&quot; Skin eine komplett neue Oberfläche eingeführt, die sich auch für mobile devices eignet und eine sehr komfortable Bedienung mitbringt.</p>
<p>Unsere Arbeit an einer verbesserten E-Mail-Infrastruktur ist damit noch nicht abgeschlossen. Als nächstes planen wir die Einführung von <strong>DKIM/DMARC</strong>, voraussichtlich noch in ersten Halbjahr 2020.</p>
<p>Ebenfalls Ende 2019 haben wir <strong>PHP 7.4</strong> eingeführt. Aktuell stehen folgende PHP-Versionen zur Auswahl: 7.1/7.2/7.3/7.4, wobei <strong>PHP 7.1 end-of-life Status</strong> erreicht hat und Ende März 2020 abgeschaltet wird.</p>
<p>Neu hat Onlime auch sein Produkt-Portfolio ausgebaut und bietet neben herkömmlichem Shared Hosting unter dem Namen <strong><a href="https://www.onlime.ch/lime-dedicated">limeDEDICATED</a></strong> dedizierte virtuelle Managed Webserver an. Diese Server eignen sich für Kunden mit höchsten Performance-Ansprüchen, da wir bei limeDEDICATED fix zugeordnete Server-Resourcen (RAM/vCPU) garantieren können.</p>
<p>Auch aufseiten <strong>Nachhaltigkeit</strong> hat Onlime 2019 ausgebaut. Mittlerweile zählen wir 9 NGOs /gemeinnützige Organisationen, welche wir aktiv durch eine jährliche Spende unterstützen. Insbesondere die Umwelt liegt uns am Herzen, weshalb wir zusätzlich zum Engagement in Ökostrom nun auch <strong>1000% CO2-Kompensation</strong> an myclimate leisten. Damit kompensieren wir unseren CO2-Fussabdruck 10-fach, und das soll keine einmalige Aktion bleiben!</p>
<p>Aktuell stellen wir unser <strong>Rechnungs- und Buchhaltungssystem auf Bexio</strong> um, weshalb es zu einer verzögerten Rechnungsstellung gekommen ist. Demnächst werden wir aber die ersten Rechnungen fürs 2020 stellen.</p>
<p>Kleiner Ausblick aufs laufende Jahr: Wir werden unsere E-Mail-Infrastruktur weiter verbessern, insbesondere durch die Einführung von DKIM/DMARC. Abgesehen von sonstigen Maintenance-Arbeiten an unserer Server-Infrastruktur widmen wir 2020 aber ganz der <strong>Weiterentwicklung unseres <a href="https://my.onlime.ch/">Controlpanels</a></strong>. Seien Sie gespannt!</p>
<p>Und nun noch etwas ausführlicher (falls es das nicht schon war) ...</p>
<h3>Neuerungen E-Mail-Infrastruktur Teil 1: Dovecot</h3>
<p>Das zweite Halbjahr 2019 haben wir voll und ganz der Erneuerung unserer E-Mail-Infrastruktur gewidmet. Es galt, den bisherigen IMAP-Server Cyrus durch <strong><a href="https://dovecot.org/">Dovecot</a></strong> abzulösen. Dovecot ist bei weitem das aktivere Projekt als der etwas in die Jahre gekommene Cyrus und gehört längst zum State-of-the-art aller IMAP-Server im Opensource/Linux-Umfeld. Alle uns bekannten System-Administratoren schwärmen von Dovecot und rühmen seine Stabilität, Skalierbarkeit und Security.</p>
<p>Es stellte sich die Frage, wie wir eine solch grosse Migration angehen sollten, ohne damit unsere Kunden in Mitleidenschaft zu ziehen resp. ohne neue Risiken einzugehen. Selbst heute zählt E-Mail noch immer zu einem der wichtigsten Kommunikationsmedien und wir sind täglich darauf angewiesen, dass die E-Mail-Infrastruktur zuverlässig läuft. Für uns war klar: Es darf zu keinem spürbaren Unterbruch kommen, selbst wenn wir diese Umstellung Monate zuvor angekündigt hätten. Auch wollten wir keine Risiken eingehen bei einer Migration tausender Mailaccounts, die teils mehrere GB Speicherplatz belegen.</p>
<p>Unsere Anforderungen waren hoch: Der neue IMAP-Server soll keinerlei Probleme mit gängigen Mail-Clients (Outlook, Thunderbird, Apple Mail usw.) machen, auch sollen sämtliche Message-IDs übernommen werde, damit der Kunde seine E-Mails nach der Migration nicht erneut herunterladen muss. Wir haben also eine Proxy-Lösung für IMAP/POP3 realisiert, dank welcher wir sukzessive einzelne Mailkonten auf den neuen Mailserver synchronisieren und migrieren konnten. Dadurch konnten wir den neuen Mailserver während mehreren Monaten in Produktion testen an diversen Mailkonten mit teils sehr grossen Datenmengen. Wir werden diese in Python geschriebene Dovecot-Migrationslösung demnächst auf Github veröffentlichen.</p>
<p>Ende Oktober 2019 waren sämtliche Mailkonten auf den neuen Mailserver migriert und wir konnten unsere Proxy-Lösung wieder abschalten. Kein einziger Kunde hat etwas von unserer grössten Server-Migration bemerkt. Es kam zu keinerlei Unterbrüchen. All dies war nur möglich dank monatelangem Testing und bester Planung.</p>
<h3>Neuerungen E-Mail-Infrastruktur Teil 2: Neuer Spamfilter</h3>
<p>Wir haben uns nicht begnügt mit der Ablösung unseres Mailservers. Es musste auch ein neuer Spamfilter her. Jahrelang hatte Onlime die Opensource-Lösung Spamassassin/Amavis im Einsatz. Die Beschwerden über schlechte Spam-Erkennung und sog. false-positives (E-Mails, welche fälschlicherweise als Spam erkannt wurden) begannen sich Ende 2019 zu häufen. Für uns war klar: Ein weiteres fine-tuning von Spamassassin-Regeln bringt's nicht, wir brauchen eine komplett neue Lösung, um massiv bessere Trefferquoten zu erreichen!</p>
<p>Die Wahl fiel auf <strong><a href="https://rspamd.com/">Rspamd</a></strong>, ein sehr aktives Projekt zur Spam-Bekämpfung. Rspamd liefert neben herkömmlichem Spam-Filtering auch gleich folgende Features mit: Virus-Filter, Whitelisting, Greylisting, SPF checks, DKIM/DMARC, rate limiting und diverse andere. Für uns war dieses Produkt also die perfekte all-in-one Lösung, ausserdem hat Rspamd einen sehr guten Ruf und wird laufend weiterentwickelt.</p>
<p>Neu setzen wir auch <strong>Greylisting</strong> ein. Nicht das nervige <a href="https://en.wikipedia.org/wiki/Greylisting">Greylisting</a>, das Sie vielleicht kennen, wo jede unbekannte E-Mail beim ersten Zustellversuch abgewiesen und stark verzögert (min. 5min) ausgeliefert wird. Nein, unser Rspamd wendet nur Greylisting an, wenn die eingehende E-Mail bereits analysiert worden ist und diese einen hohen Spam-score erreicht. Im Alltag führt diese Art von Greylisting also kaum zu einer Verzögerung, dämmt Spamming jedoch massiv ein.</p>
<p>Im Zusammenhang mit der Einführung von Rspamd haben wir auch eine sehr ausgeklügelte Technik von <strong>Spam-/Ham-learning</strong> realisiert. Per sofort hilft also jeder Onlime-Kunde mit, die Trefferquoten von Spam-Mails weiter zu verbessern. Wird eine E-Mail aus einem beliebigen Ordner in den Spam-Ordner verschoben, wird diese als Spam trainiert. Wird eine E-Mail aus dem Spam-Ordner in einen beliebigen anderen Ordner (ausgenommen Papierkorb) verschoben, wird diese als Ham (= kein Spam) trainiert. Dabei wird das Bayes learning von Rspamd laufend trainiert. Natürlich werden jeweils einige ähnliche E-Mails benötigt, um einen Lerneffekt zu erzielen. Da nun aber alle Kunden passiv mithelfen, unseren Spam-Filter zu trainieren, hat dies einen grossen Effekt.</p>
<h3>Neuerungen E-Mail-Infrastruktur Teil 3: Webmail</h3>
<p>Unser Webmail wurde schon zuvor von vielen Kunden gerühmt und wir haben immer wieder höchst positives Feedback erhalten. Beste Performance und ein sehr angenehmes Benutzer-Interface. Einzig eine Schwäche hatten wir zu beklagen: Bisher war unser Webmail nicht für mobile devices optimiert.</p>
<p>Ende 2019 hat unsere Webmail-Applikation <a href="https://roundcube.net/">Roundcube</a> mit dem neuesten Update auf Version 1.4 auch ein neues Aussehen erhalten. Der neue <strong>Skin &quot;Elastic&quot;</strong> ist vollkommen responsive, d.h. er ist sowohl für Desktop- als auch Mobilansicht optimiert. Das Design ist sehr ansprechend und komfortabel in der Bedienung.</p>
<h3>Einführung PHP 7.4</h3>
<p>Wenige Tage nach dem offiziellen Release hat auch Onlime im Dezember <strong>PHP 7.4</strong> für seine Kunden eingeführt. Neu kompilieren wir PHP nicht mehr selbst, sondern verwenden die Debian Packages von DEB.SURY.ORG – damit erreichen wir eine bessere Skalierbarkeit unserer Webserver, d.h. neue PHP-Versionen können wir schneller flächendeckend auf allen Webservern einspielen.</p>
<p><strong>PHP 7.1 hat Ende 2019 seinen EOL (end-of-life) Status erreicht.</strong> Wir planen, <a href="https://wiki.onlime.ch/dev:php">PHP 7.1 per Mitte April abzuschalten</a>. Weitere Infos folgen.</p>
<h3>limeDEDICATED: Dedicated Managed Webserver</h3>
<p>Nach über 15 Jahren reinem Shared Webhosting hat Onlime sein Produkt-Portfolio ausgebaut und bietet neu mit <strong><a href="https://www.onlime.ch/lime-dedicated">limeDEDICATED</a></strong> auch <strong>dedizierte Virtuelle Managed Webserver</strong> an.</p>
<p>Mit limeDEDICATED erhalten Sie einen eigenen dedizierten Webserver, der vollumfänglich durch uns betreut wird. Ihre Website läuft somit auf einem eigens für Ihre Ansprüche zugeschnittenen Webserver mit garantierten Server-Resourcen (vCPU/RAM). Sie erreichen damit konstant die beste Performance.</p>
<p>Bei einem limeDEDICATED Server brauchen Sie sich um nichts zu kümmern. Ein solcher Server erfordert keinerlei zusätzliches Server-Wissen. Sie können ein oder mehrere limePRO Abos aufschalten und die Verwaltung Ihrer Website geschieht genauso einfach via unser <a href="https://my.onlime.ch/">Airpane Controlpanel</a>, wie Sie es sich bereits gewohnt sind.</p>
<p>Unser Pricing:</p>
<ul>
<li><strong>limeDEDICATED-1</strong>: 4 vCPU / 8GB RAM / 50GB SSD, CHF 180/Mt</li>
<li><strong>limeDEDICATED-2</strong>: 8 vCPU / 16GB RAM / 100GB SSD, CHF 280/Mt</li>
<li><strong>limeDEDICATED-3</strong>: 16 vCPU / 32GB RAM / 200GB SSD, CHF 450/Mt</li>
</ul>
<h3>Nachhaltigkeit: 1000% CO2-Kompensation</h3>
<p>Die drei Nullen sind kein Verschreiber. Zusätzlich zu unserem langjährigen Engagement in Ökostrom und Energieeffizienz kompensieren wir unseren gesamten <strong>CO2-Fussabdruck</strong> nun 10-fach.</p>
<p>Via myclimate berechnen und kompensieren wir den jährlichen CO2-Fussabdruck unter Berücksichtigung folgender Faktoren: Arbeitsplatz (beheizte Fläche), Stromverbrauch (gesamte Server-Infrastruktur und Arbeitsplatz), Arbeitsweg der Mitarbeitenden, Geschäftsreisen, Verpflegung, Kaffee/Tee, Material und Abfall.</p>
<p>Mittlerweile unterstützt Onlime folgende NGOs/Organisationen durch einen jährlichen <strong>Spende-Betrag</strong>, welcher im 2019 erneut gesteigert werden konnte:
<a href="https://www.rokpa.org/">ROKPA International</a>, <a href="http://afghanistanhilfe.org/">Afghanistanhilfe Schweiz</a>, <a href="https://waisenkind.ch/">Shangrila</a>, <a href="https://www.caritas.ch/">CARITAS</a>, <a href="https://www.publiceye.ch/">PublicEye</a>, <a href="https://www.myclimate.org/">myclimate</a>, <a href="https://www.greenpeace.ch/">Greenpeace</a>, <a href="https://www.ewz.ch/de/private/solaranlagen/solarstrom-fuer-mieter/ewz-solarzueri.html">ewz.solarzüri</a>, <a href="https://www.solarspar.ch/">Solarspar</a>.</p>
<h3>Neues Rechnungs-/Buchhaltungssystem</h3>
<p>Wir führen <strong>Bexio als unser neues Rechnungs-/Buchhaltungssystem</strong> ein. Damit finden wir mehr Zeit für die Weiterentwicklung unseres <a href="https://my.onlime.ch/">Controlpanels</a> (unser bisheriges CRM war eine komplette Eigenentwicklung) und decken unsere höheren Ansprüche an ein Buchhaltungssystem seit der Umwandlung von Onlime Webhosting in die Onlime GmbH ab.</p>
<p>Durch diese Einführung kommt es zu einer leicht verzögerten Rechnungsstellung. Die ersten Rechnungen fürs 2020 werden wir demnächst stellen.</p>
<p>Neu enthält die Rechnungs-E-Mail jeweils einen Link auf <em>network.bexio.com</em> zur Rechnungs-Ansicht und Online-Bezahlung – Bitte seien Sie deswegen nicht verwirrt! Es handelt sich hierbei um einen vertrauenswürdigen Link.</p>
<h3>Ausblick 2020</h3>
<p>Wir werden unsere E-Mail-Infrastruktur weiter verbessern, insbesondere durch die Einführung von <strong>DKIM</strong>/DMARC. Automx zur <strong>Mail-discovery</strong> wird durch eine Eigenentwicklung abgelöst. <strong>MySQL 8.0</strong> kommt voraussichtlich in Q2 2020. Abgesehen von sonstigen Maintenance-Arbeiten an unserer Server-Infrastruktur widmen wir 2020 aber ganz der Weiterentwicklung unseres <strong><a href="https://my.onlime.ch/">Airpane Controlpanel</a></strong>. Seien Sie gespannt!</p>
<p>Wir freuen uns auf alle zukünftigen Projekte und darauf, Sie weiterhin zu unseren dankbaren Kunden zählen zu dürfen. Ihre Meinung interessiert uns immer und wir freuen uns über jedes Feedback, egal wie positiv oder negativ dieses ausfällt!</p>
]]>
            </summary>
                                                <published>2020-02-24T13:45:00+01:00</published>
                        <updated>2020-02-24T13:45:40+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Webmail: Roundcube 1.4 Elastic]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/roundcube-1-4-elastic" />
            <id>https://www.onlime.ch/index.php/blog/roundcube-1-4-elastic</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Unsere <a href="https://webmail.onlime.ch/">Webmail-Applikation</a> Roundcube erhält mit dem neuestem Update auf Version 1.4 auch ein neues Aussehen. Der <strong>neue Skin &quot;Elastic&quot;</strong> ist vollkommen responsive, d.h. er ist sowohl für Desktop- als auch Mobilansicht optimiert.</p>
<p>&quot;Elastic&quot; ist der neue Standard-Skin und wir empfehlen allen Webmail-Anwendern, diesen zu nutzen. Nach einer kurzen Umgewöhnungszeit wird man sich unter dem neuen Look rasch wohlfühlen. &quot;Elastic&quot; scheint weit übersichlicher und komfortabler als der bisherige Skin &quot;Larry&quot;.</p>
<p>Das Login ins Webmail erfolgt wie gewohnt unter <strong><a href="https://webmail.onlime.ch/">webmail.onlime.ch</a></strong></p>
<p>Screenshots:</p>
<p><img src="/uploads/rc14-elastic-02.png" alt="Webmail login" /></p>
<p><img src="/uploads/rc14-elastic-03.png" alt="Webmail INBOX" /></p>
<p><img src="/uploads/rc14-elastic-04.png" alt="Webmail contacts" /></p>
<p>Sollten Sie mit dem neuen Skin nicht klarkommen, steht der bisherige Skin &quot;Larry&quot; weiterhin zur Auswahl. Benutzer, die zurück auf &quot;Larry&quot; wechseln möchten, klicken nach dem Login in Roundcube auf &quot;Einstellungen&quot; -&gt; &quot;Benutzeroberfläche&quot; und wählen dort das Oberflächendesign &quot;Larry&quot; aus.</p>
]]>
            </summary>
                                                <published>2019-12-09T11:00:00+01:00</published>
                        <updated>2019-12-09T11:16:54+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHP 7.4 in town!]]></title>
            <link rel="alternate" href="https://www.onlime.ch/index.php/blog/php-7-4-in-town" />
            <id>https://www.onlime.ch/index.php/blog/php-7-4-in-town</id>
            <author>
                <name><![CDATA[onlime]]></name>
                <email><![CDATA[info@onlime.ch]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Letzten Freitag, 29. November haben wir klammheimlich <strong>PHP 7.4</strong> freigegeben – am Tag nach dem <a href="https://www.php.net/archive/2019.php#2019-11-28-1">offiziellen Release</a>. Nun folgt auch endlich noch unser offizielles announcement!</p>
<p>Die neue Version ist in unserem <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>«PHP-Manager»</strong> zu finden und lässt sich sowohl für Ihre Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.</p>
<p>PHP 7.4 wurde durch uns bereits in mehreren vorgängigen Release Candidates (RC) ausführlich getestet, wobei es zu keinen Problemen kam.</p>
<h3>Neuerungen in PHP 7.4</h3>
<p>Die neueste PHP-Version bietet einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:</p>
<ul>
<li><strong>Arrow Functions: Weniger Code für anonyme Funktionen</strong> — Anonyme Funktionen, also Funktionen ohne referenzierbaren Namen, waren  in PHP bisher nur mit viel Code zu bewerkstelligen. Dank Arrow Functions reduziert sich der Zeichenaufwand bei solchen One-Liner-Funktionen  drastisch.</li>
<li><strong>Typed Properties: Weniger Fehleranfälligkeit</strong> — Typed Properties machen PHP zu einer typensichereren Sprache. Getter- und Setter-Methoden sind zur reinen Sicherstellung von Typsicherheit nicht mehr nötig.</li>
<li><strong>Preloading: Mehr Performance für Frameworks</strong> — Frameworks wie Symfony oder Laravel sind für Entwicklerinnen und Entwickler nicht mehr wegzudenken. Solche Frameworks bestehen in der Regel aus vielen verschiedenen Klassen, die dank OPcache nicht bei jedem Aufruf in Maschinencode übersetzt werden müssen. Was  bislang in PHP allerdings fehlte, war die Möglichkeit, OPcache bereits  vor dem ersten Aufruf «aufzuwärmen». In PHP 7.4 ist es nun möglich, ein preload script via <code>opcache.preload</code> ausführen zu lassen, welches den OPcache mittels <code>opcache_compile_file()</code> füttert.</li>
</ul>
<p>Für weitere Infos beachten Sie bitte auch das offizielle Release Announcement und unser Support-Wiki:</p>
<ul>
<li><a href="https://www.php.net/releases/7_4_0.php">Release Announcement von php.net</a></li>
<li><a href="https://www.php.net/ChangeLog-7.php#7.4.0">PHP 7.4.0 Changelog</a></li>
<li><a href="https://wiki.onlime.ch/dev:php">Onlime Support-Wiki: PHP</a></li>
</ul>
<h3>Bereit für PHP 7.4?</h3>
<p>Dies ist die erste stabile Version von PHP 7.4 und bei solchen Versionen ist immer Vorsicht geboten. Bisher sind uns aber keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 7.4.</p>
<p>Sie können ganz einfach testen, ob Ihre Website lauffähig ist unter dieser neuen Version. Im <a href="https://my.onlime.ch/">Controlpanel</a> unter <strong>PHP-Manager</strong> können Sie die PHP-Version ganz einfach up- resp. downgraden.</p>
]]>
            </summary>
                                                <published>2019-12-05T15:22:00+01:00</published>
                        <updated>2019-12-09T11:15:14+01:00</updated>
        </entry>
    </feed>
