C++ Features im Visual Studio 2015 RTM

Kurzmitteilung

Das Visual Studio 2015 rückt dem offiziellen Release immer näher und nun ist auch bekannt, welche C++ Funktionen es in die finale Version geschafft haben. Eine vollständige Liste der Funktionen ist im Visual C++ Team Blog von Stephan T. Lavavej verfasst worden. Auch wenn es, wie es zu erwarten war, nicht alle Funktionen geschafft haben vollständig implementiert zu werden, so sieht die Unterstützung vom Visual Studio 2015 doch schon sehr gut aus. Zusätzlich verbessert sich auch die Unterstützungen von JetBrains ReSharper immer weiter für C++.

C# 6.0 – Auf NULL prüfen vereinfachen

Eine weitere Neuerung in C# 6.0 ist das vereinfachte prüfen, ob eine Variable „NULL“ ist oder ob diese bereits initialisiert worden ist. Der hierfür benötigte Operator ist das „?“, welches auch bereits bei Nullable-Typen verwendet wird. Hier ein kleines Beispiel der Verwendung:

string sTest = "Hello World";

char? thirdChar = sTest?[2]; // 'l'

sTest = null;
thirdChar = sTest?[2]; // null

sTest = "Hi";
thirdChar = sTest?[2]; // throws IndexOutOfRangeException

Auch dies erspart dem Programmierer wieder ein paar Zeilen, jedoch finde ich es zum jetzigen Zeitpunkt noch merkwürdig zu lesen. Wobei das wohl vergehen wird, wenn erst einmal die Übung mit besagter Funktionalität etabliert ist.

C# 6.0 – Lambda Expressions für Read-Only Properties

Als Ergänzung zu der Möglichkeit, in C# 6.0 ganze Methoden durch Lambda Expressions zu ersetzen, ist dies auch mit Read-Only Properties sehr simpel  möglich. Hierzu muss lediglich ein ähnlicher Aufbau wie bei den Methoden verwendet werden.

public string Name { get; private set; } 
public string BackwardsName => new string(Name.Reverse().ToArray());

C# 6.0 – INotifyPropertyChanged – Eine Basis für ein ViewModel

Mit C# 6.0 hat sich viel geändert und vor allem verbessert. So auch die Möglichkeit die Schnittstelle INotifyPropertyChanged einzubinden. Hier bekommt man zwar von der aktuellen ReSharper Version eine schöne Unterstützung, aber wer mehr will, muss noch Hand anlegen. Ich habe in diesem Video das Ganze soweit entwickelt, dass Properties direkt in einem Dictionary gespeichert werden und somit für den Quellcode schlanker aussehen. Trotz einiger Versprecher und Vertipper hier das Video zur Implementierung:


 

Weiterlesen

C# 6.0 – Lambda Expressions für Methoden verwenden

Mit der Version 6.0 von C# wird es möglich sein anstelle von Methoden-Implementation simple Lamdba Expressions zu verwenden, um so den Quellcode noch kleiner zu halten. Der hierbei benötigte Aufwand ist sehr überschaubar und ermöglicht es saubere Methoden zu definieren. Hier ein Beispiel:

public class Dog
{ 
    public string Name { get; private set; }
    public int Age { get; private set; }
	
    public Dog(string name, int age)
    {
        Name = name;
        Age = age;
    }
 
    public void AgeIncrement() => Age++;
    public int AgeInDogYears() => Age * 7;
}

Die beiden Methoden „AgeIncrement“ und „AgeInDogYears“ machen hierbei von der neuen Funktionalität Gebrauch. In der Theorie kann man den Quellcode oben noch weiter vereinfachen, aber ich wollte an dieser Stelle nur dieses eine Thema behandeln.

C# 6.0 – Read-Only Auto-Properties vom Konstruktor initialisieren

In C# 6.0 hat Microsoft die Möglichkeit geschaffen, Read-Only Auto-Properties vom Konstruktor zu initialisieren. Auch dann, wenn diese keinen direkten Setter haben. Hierbei gibt es zwei Möglichkeiten. Die eine ist die direkte Initialisierung bei der Definition der Eigenschaft. Die andere ist vom Konstruktor aus. Und dies würde so aussehen:

public DateTime CreationTime { get; } = DateTime.Now;

Und hier noch die direkte Initialisierung vom Konstruktor aus:

public class MyObject
{
    public string Name { get; }
 
    public MyObject(string name)
    {
        Name = name;
    }
}

So wird ungewolltes überschreiben noch besser verhindert.

C# 6.0 – Ausnahmen filtern

Mit C# 6.0 hat Microsoft wieder einige neue Funktionalitäten hinzugefügt, die das Schreiben von Quellcode nicht nur erleichtern sondern auch übersichtlicher gestalten. Eine dieser Neuerungen in C# 6.0 ist das sogenannte „Exception filtering“ mit dem es möglich ist, auftretene Ausnahmen nur unter bestimmten Bedingungen abzufangen und andernfalls einfach durchzulassen. Das Abfangen einer Exception unter bestimmten Bedingungen könnte zum Beispiel wie folgt aussehen:

try
{
	int x = 5 / 0;
}
catch (DivideByZeroException ex) if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday)
{
	Console.WriteLine(ex.Message);
}

Hier wird die Ausnahme an jedem Wochentag abgefangen außer Samstags. Wenn wir also einen Samstag haben, wird die Exception in diesem Fall normal weiter gegeben bis jemand diese abfängt oder die Applikation abstützt.

Abgesichertes PureFTPd mit MySQL für Virtual FTP-Hosting

In diesem Beitrag möchte ich euch eine PureFTPd Installation näher bringen, die mit virtuellen Benutzern aus einer MySQL Datenbank, anstatt mit Systembenutzern arbeitet. Neben der verbesserten Leistung können so auch viele FTP-Benutzer auf ein einziges System gelegt werden. Zudem besteht eine Sicherheit für das „jailen“ von Benutzern in Ihren entsprechenden „Home“-Ordnern. Auch können auf diesem Wege Transferraten, Speicherplatz sowie „Home“-Ordner simpel über die Datenbank konfiguriert werden. Diese „Anleitung“ wird auf einem Ubuntu 12.04 LTS durchgeführt, sollte jedoch problemlos auf andere Ubuntu Versionen sowie Debian Versionen anwendbar sein.

 

Share-Online Weiterlesen

CentOS Linux Fix: ntpdate: command not found

Sollte der Fehler „command not found“ unter CentOS auftreten, ist vermutlich die Zeit falsch konfiguriert (zumindest in den meisten, mir bekannten Fällen). Um dies zu beheben, muss man sich zunächst mit einem Administratorkonto anmelden (z.B. mittels „sudo -s“).  Anschließend sollte der NTP-Dienst, falls nicht schon vorhanden, installiert werden. Dies geht mittels folgendem Befehl:

yum install ntp

Vermutlich wird der Fehler jedoch weiterhin auftreten. Sollte dies der Fall sein, können wir wie folgt einen NTP-Server hinzufügen:

/usr/sbin/ntpdate 1.pool.ntp.org

Sollte nun der Fehler „ntpdate[585863]: the NTP socket is in use, exiting“ auftreten, können wir diesen mittels folgendem Befehl verhindern (anschließend erneut den NTP-Server hinzufügen):

/etc/init.d/ntpd stop

Nun müssen wir nur noch den NTP-Dienst starten und in Zukunft sollte die Zeit stimmen.

/etc/init.d/ntpd start

Unerwünschte Zeichen aus einem String entfernen mittels Regex.Replace

Mit der Hilfe von Regex.Replace lässt sich auf einfache Art und Weise unerwünschter Inhalt aus einem String entfernen. Das Einzige was hierfür gekonnt sein muss, ist es Regex-Expressions schreiben zu können. Hilfe zu Regex findet man unter anderem bei Wikipedia. Der Quellcode um z.B. aus einer Eingabe alle Nicht-Zahlen-Zeichen zu entfernen könnte wie folgt aussehen:

string input = "Some random Input 123 with some numeric 456 numbers inside 789!";

Regex regex = new Regex("[^0-9]+");
string result = regex.Replace(input, string.Empty); //Ergebnis in "result" sollte nun "123456789" sein.

Viel Spaß beim Experimentieren. 🙂 Weiterlesen