Martin Affolter Software Architect

Ich bin seit 2006 mit Leidenschaft Freelance Software-Architekt und -Entwickler. Ich habe mich erfolgreich auf die Realisierung von .NET Lösungen spezialisiert. Mein Anspruch ist, qualitativ hochwertige und wartbare Software zu produzieren.

SSL auf Azure mit Let’s Encrypt

Seit Google die Verschlüsselung von Websites als ein Ranking-Merkmal berücksichtigt, ist das Verwenden von Zertifikaten auf Webservern umso wichtiger. Bisher war der Request und die Installation von Zertifikaten ein relativ schwieriger Prozess und die Zertifikate kosteten meistens Geld.

Schon länger war der Gratis-Dienst StartSSL verfügbar. Um diesen zu nutzen, musste man jedoch Zertifikate im Browser installieren – bei ständig wechselnden Maschinen und Browsern ein mühsamer Prozess. Die Auswahl des richtigen Zertifikats für das Login und das Erstellen eines Zertifikats für die Website waren mühsam und erforderten viele händisch auszuführende Schritte.

Die relativ neue Initiative Let’s Encrypt schafft hier Abhilfe. Viele grosse Player im Internet sind Sponsoren. Die Zertifikate können mit Scripting angefordert und installiert werden.

Windows Azure unterstützt Let’s Encrypt via Site Extension. Das war für mich neu und erst nach der Lektüre dieses hervorragenden Blog-Beitrags einigermassen klar.

Ich habe die Anweisungen Schritt für Schritt durchgespielt und es hat problemlos funktioniert.


grosses SQL Skript ausführen

Wieder mal DB-Notiz für mich selber: Die Ausführung eines grossen SQL Skripts über Management Studio kann wegen Memory unmöglich sein:

Screenshot 2015-11-05 17.22.37

TITLE: Microsoft SQL Server Management Studio
——————————

Cannot execute script.

——————————
ADDITIONAL INFORMATION:

Insufficient memory to continue the execution of the program. (mscorlib)

——————————
BUTTONS:

OK
——————————

Lösung: Skript per sqlcmd ausführen:

SQLCMD -i „C:\Temp\script.sql“


User kann nicht aus SQL Datenbank gelöscht werden

The database principal owns a schema in the database, and cannot be dropped

Zuerst muss geschaut werden, um welches Schema es geht:

SELECT s .name
FROM sys .schemas s
WHERE s .principal_id = USER_ID ('BENUTZERNAME');

Wenn hier z.B. db_owner zurückgegeben wird, kann man den owner des Schemas neu setzen:

ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;


affolter.NET ist neu gekleidet

wordpress-logo-stacked-rgb

Seit einiger Zeit bestraft Google die Websites, die nicht „responsive“ sind, mit schlechteren Rankings. „Responsive“ bedeutet, dass sich die Inhalte der Bildschirmgrösse des jeweiligen Endgeräts anpassen und sinnvoll nutzbar sind. Nach gut 5 Jahren war es sowieso Zeit, die Website zu überarbeiten.

Die Website von affolter.NET GmbH basiert neu auf WordPress. WordPress bietet ein sehr robustes Plugin-System. Für fast jede denkbare Funktionalität ist ein Plugin da – der am besten getestete und funktionierende Code ist der, den man nicht selber schreiben muss. Mit responsive Themes und SiteBuilder werden flexible Layouts möglich, die auf allen Endgeräten betrachtet werden können.

Das Design soll die Farben im Logo wiedergeben, aber ansonsten unaufgeregt und klassisch daher kommen. Kommentare sind erwünscht!


mysqldump

Reminder:
./mysqldump--add-drop-table -h win12vsv04.weblink.ch -u piwik -p affolterNET_piwik | bzip2 -c > /Users/martin/dumps/affolterNET_piwik.sql.bz2


log4net

on Start: 
log4net.Config.XmlConfigurator.Configure();
 
Debugging:
First you have to set this value on the application configuration file:
<configuration>
   <appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
   </appSettings></configuration>

Then, to determine the file in which you want to save the output you can add the following code in the same .config file:

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace></system.diagnostics>

...
</configuration>

You can find a more detailed explanation looking for ‚How do I enable log4net internal debugging?‘ in the log4net FAQ page:

Config for Log File:
    < appender name = AvgFileAppender type=log4net.Appender.RollingFileAppender >
      < file value = .\\App_Data\\Log4Net.Logs\\backend.log />
      < lockingModel type = log4net.Appender.FileAppender+MinimalLock />
      < appendToFile value = true />
      < rollingStyle value = Size />
      < maxSizeRollBackups value = 10 />
      < maximumFileSize value = 3MB />
      < staticLogFileName value = true />
      < layout type = log4net.Layout.PatternLayout>
        < param name = ConversionPattern value=%d [%t] %-5p %c %m%n />
      </ layout>
    </ appender>

Windows Time

Tool: w32tm

Manual Peerlist and update:
w32tm /config „/manualpeerlist:0.ch.pool.ntp.org 1.ch.pool.ntp.org 2.ch.pool.ntp.org 3.ch.pool.ntp.org“ /syncfromflags:manual /update

Neues zu Bewerber Screening im Internet

Thomas Müller vom Tages-Anzeiger hat einen Beitrag zur Zulässigkeit von Bewerber-Screening im Internet publiziert. Er referenziert dabei den Jusletter Beitrag von Dr. iur. Urs Egli und die Besprechung von Nils Güggi (mit kritischem Kommentar von mir).

Der Beitrag zielt in die Richtung, dass Facebook & Co. bei der Bearbeitung von Bewerber-Dossiers und im Bewerbungsgespräch nicht genutzt werden dürfen. Leider hat mir niemand schlüssig darlegen können, warum öffentliche Äusserungen auf sozialen Plattformen nicht öffentlich sein sollen, wenn die betreffende Person selber diese ins Internet gestellt hat (siehe mein Kommentar bei Güggi). Zum Vergleich eine Behauptung: Wenn ich ein Interview gebe, das in einer Zeitung abgedruckt wird, so wird niemand in Frage stellen, dass ich in einem Bewerbungsgespräch damit konfrontiert werden kann.

Auch über Google kann man öffentliche Informationen über eine Person zusammentragen und nutzen. Auch dieser Aspekt wird m.E. zu wenig berücksichtigt. Die Frage, ob man Google zum Bewerber-Screening nutzen darf, scheint niemand verneinen zu wollen. Liegt das ev. daran, dass sich die Google-Suche etwas früher etabliert und man sich schon mehr an diese neue Reailtät gewöhnt hat als ans Web 2.0 mit den sozialen Netzwerken?

Ich gebe zu, dass sich viele Leute zu wenig mit den Privacy-Einstellungen auf den genannten Portalen beschäftigen und sich oft nicht bewusst sind, dass gewisse Äusserungen auch negative Folgen haben können. Letztlich ist es aber trotzdem ihr Verantwortungsbereich. Es gehört zur neuen Realität des Web 2.0, dass der Junge von nebenan plötzlich Journalist wird, wenn er einen entsprechenden Beitrag publiziert, den alle Leute lesen können. Er tut seine Meinung öffentlich kund.

Um dies bewusster zu machen müsste man Privacy Regeln und Warnungen für Portalanbieter durchsetzen und die Kinder schon in der Schule auf die Problematik vorbereiten.