Google Aufgaben bequem im Browser bearbeiten – (nicht nur) für iPhone und iPad

Unter https://mail.google.com/tasks/iphone stellt Google eine schicke Oberfläche zur Verwaltung der Google-Aufgaben im Browser zur Verfügung. Eigentlich ist diese Seite für iPhone User gedacht, sie funktioniert jedoch auch in Microsoft Edge, Internet Explorer 11, Firefox und Google Chrome.

Nachtrag vom 09.03.2017: für Android-Geräte gibt es eine eigene URL, diese Variante dürfte dann wohl für Chrome optimiert sein:

https://mail.google.com/tasks/android


Winterliche Abendsonne

Fotografiert am 12.02.2017 in Gau-Algesheim (Rheinhessen)

Abendsonne


Visual Studio Express zum offline installieren herunterladen

Den Installer von Visual Studio 2015 Express gibt es leider nicht in einer Offline-Version, auch ein ISO-Image sucht man leider vergeblich.

Es gibt aber die Möglichkeit, sich die Installationsdateien mithilfe des Webinstallers zunächst komplett herunterzuladen, um sie dann später auf einem Rechner ohne bzw. mit einem langsamen Internetzugang zu installieren.

Dazu ruft man einfach den Webinstaller von der Command Line mit dem Parameter /Layout auf. Man kann dann den Speicherort für die Installationsdateien auswählen. Die kompletten Dateien für Visual Studio Express für Desktop (Deutsch) belegen fast 10 GB, also zuviel für eine handelsübliche DVD. Zum Transport der Dateien muss also dann ein ausreichend großer USB-Stick oder eine externe Festplatte benutzt werden.


Visual Studio 2015 Express kommerziell nutzbar?

Seit Visual Studio 2015 wird für private Entwickler die Community-Edition von Visual Studio angeboten. Diese bietet viele Features der Professional-Version, darf jedoch nur von Privatpersonen und von Firmen, die weniger als 250 Mitarbeiter haben bzw. nicht mehr als 1 Mio. US-$ Jahresumsatz haben, kostenlos eingesetzt werden.

Die Express-Variante ist jedoch noch zu haben, auch wenn Microsoft diese mittlerweile gut versteckt.

Die Express-Variante von Visual Studio findet man unter https://www.visualstudio.com/vs/visual-studio-express/. Dort sollte man zunächst lang nach unten scrollen und links unten auf „English“ klicken, um dann die bevorzugte Sprache (z.B. Deutsch) auszuwählen, damit man dann auch den Installer in der gewünschten Sprache herunterladen kann.

Danach findet man etwas weiter unten auf der Seite die Links zum Download der Webinstaller für Visual Studio 2015. Hier muss man sich entscheiden, ob man Visual Studio für die Desktop-, Web-, oder Windows 10-App-Entwicklung nutzen will. 

Klickt man dann den jeweiligen Link an, wird ein Webinstaller heruntergeladen.

Auf der Seite ist auch angegeben, dass sich die Express-Version kostenlos zur kommerziellen Entwicklung einsetzen lässt:

VSExpress_kommerziell


Guter Artikel zum Thema „Sinn von Virenscannern“

Golem.de hat einen interessanten Artikel über Virenscanner rausgebracht, in dem die Hersteller der Antivirensoftware als sogenannte „Schlangenöl-Branche“ bezeichnet werden. Der Artikel ist überaus lesenswert.

Kurzes Fazit aus dem Artikel: 

  • Virenscanner haben ihre Grenzen
  • Virenscanner haben oft selbst Sicherheitslücken
  • Virenscanner können durch ihre tiefe Systemintegration Probleme mit anderer Software (z.B. bei Browsern) verursachen
  • Die Erkennung einer Schadsoftware anhand des Verhaltens einer Software ist oft nicht möglich
  • Die Antivirenprogramme haben Listen mit bekannten Viren (sog. Signatur-Dateien) mit tausenden von Einträgen – nur ein Bruchteil davon sind Viren, die überhaupt noch im Umlauf sind
  • Kleine Änderungen an der Schadsoftware reicht aus, um von Virenscannern nicht erkannt zu werden. Bis es neue Signaturdateien gibt, ist das Kind in den Brunnen gefallen
  • Bester Schutz ist immer noch:
    • Regelmäßig Betriebssystem und Browser aktualisieren
    • keine Software aus unbekannten Quellen öffnen
    • keine Anhänge von unbekannten Absendern öffnen

Tine 2.0: Caldav Fehlermeldung „Uncaught exception ‚Tinebase_Exception_Backend‘ with message ‚No base path (filesdir) configured or path not writeable'“

Wenn nach der Tine 2.0 Installation Caldav nicht funktioniert und im Log die folgende Meldung auftaucht:

Got error ‚PHP message: PHP Fatal error: Uncaught exception ‚Tinebase_Exception_Backend‘ with message ‚No base path (filesdir) configured or path not writeable‘ in /var/www/vhosts/domainname.tld/httpdocs/Tinebase/FileSystem.php:69\nStack trace:
#0 /var/www/vhosts/domainname.tld/httpdocs/Tinebase/FileSystem.php(83): Tinebase_FileSystem->__construct()
#1 /var/www/vhosts/domainname.tld/httpdocs/Tinebase/FileSystem/RecordAttachments.php(40): Tinebase_FileSystem::getInstance()
#2 /var/www/vhosts/domainname.tld/httpdocs/Tinebase/FileSystem/RecordAttachments.php(51): Tinebase_FileSystem_RecordAttachments->__construct()
#3 /var/www/vhosts/domainname.tld/httpdocs/Calendar/Controller/MSEventFacade.php(246): Tinebase_FileSystem_RecordAttachments::getInstance()
#4 /var/www/vhosts/domainname.tld/httpdocs/Calendar/Controller/MSEventFacade.php(176): Calendar_Controller_MSEventFacade->_getEvents(Object(Calendar_Model_EventFilter), ’sync‘)
#5 /var/www/vhosts/domainname.tld/httpdocs/Calendar/Frontend/WebDAV/Container.php(86): Calendar_Controller_MSEventFacade->search(…

 

dann ist die Ursache wahrscheinlich ein fehlendes oder falsch berechtigtes Verzeichnis.

In der config.inc.php muss geschaut werden, welcher Ordner der Variable filesdir zugewiesen wurde. Dieser Ordner muss existieren und der aktuelle Webuser muss Schreibrechte für diesen Ordner besitzen.


Alle Eigenschaften eines Objekts ermitteln

Als ich wieder mal die ToString() Methode für ein Objekt überladen habe, um die Eigenschaften eines Objekts schön formatiert auszugeben, habe ich mich gefragt, ob es vielleicht sinnvoller ist, die Eigenschaften über Reflection zu suchen, statt die Eigenschaften manuell zusammenzuschreiben. Das hat den Vorteil, dass man keine Eigenschaft vergisst, wenn man das Objekt später mal erweitern sollte.

Also habe ich Google um Rat gefragt und einer der ersten Suchtreffer war bei StackOverflow, seit einigen Jahren meine bevorzugte Quelle für Code-Snippets.

Den dort vorgefundenen Code habe ich mal für ein Beispiel für den beschriebenen Anwendungsfall adaptiert:

Das Ergebnis sieht so aus:

Name:Semmler
Plz:55435
Stadt:Gau-Algesheim
Strasse:Rheinstraße 40
Vorname:Patrick

Hinweis

Die Methode GetValue() benötigt vor .Net 4.5 noch einen weiteren Parameter Object[] index , der bei nicht indizierten Properties null sein muss.


Erweiterungsmethoden in c# – Syntaxzucker, der schlank macht ;-)

Seit ich in C# die Erweiterungsmethoden kennengelernt habe nutze ich sie, um meinen Code übersichtlicher zu machen.

Was sind Erweiterungsmethoden?

Mit Erweiterungsmethoden hat man die Möglichkeit, den Instanzen von Objekten, deren Quellcode man nicht zur Verfügung hat und von denen man keine eigenen Objekte ableiten kann oder will, eigene Methoden (Erweiterungsmethoden) hinzuzufügen.

Dafür ein einfaches Beispiel: Wenn ich in meinem Code oft eine Zahl runden muss, dann kann ich entweder jedes Mal die Methode Math.Round() mit den entsprechenden Parametern aufrufen oder ich schreibe einmalig eine Erweiterungsmethode:

Auf diese Erweiterungsmethode kann ich dann – vorausgesetzt, der entsprechende Namespace, in dem die Erweiterungsmethode liegt, ist referenziert – einfach im Kontext des zu rundenden Werts zugreifen:

Im Vergleich, der Aufruf ohne Erweiterungsmethode:

Was muss man nun genau machen, wenn man Erweiterungsmethoden erstellen will?

Zunächst braucht man eine eigene Klasse dafür. Diese kann z.B. ExtentionMethods, Extentions, Erweiterungsmethoden etc. heißen, wie ihr wollt.

Nach Erstellen der Klasse muss sie die Modifizierer public und static erhalten, damit die Erweiterungsmethoden auch erkannt werden.

Die Erweiterungs-Methoden selbst müssen auch die Modifizierer „public static“ haben.

Eine Erweiterungsmethode hat immer mindestens einen Parameter, dem das Schlüsselwort this vorangestellt wird. Dieses Schlüsselwort legt fest, bei welchem Objekttyp die Erweiterungsmethode verfügbar sein wird.

Will man eine Erweiterungsmethode für mehrere Datentypen (z.B. double und decimal) erstellen, muss man die Methode mehrmals erstellen, einmal für jeden Datentyp.

Weitere Informationen gibt es im MSDN.


Juchhu, endlich mal was gewonnen ohne was dafür zu tun ;-)

Gefunden in meinem Spam-Ordner:

Sir / Madam,
Im Namen der Entschädigungskommission der Vereinten Nationen
(UNCC) in Verbindung mit Western Union Campaign for Global Economic
Krisenbekämpfung, dass Sie benachrichtigt werden möchten wir, dass Sie Ihre E-Mail-
Adresse hat gewonnen (fünfzigtausend Euro nur) 50.000,00 EURO.

Made my day  :mrgreen:


Red sky

Red sky