Werbung

Neben meinem Job habe ich noch ganz wenig Freizeit. :-) Diese Freizeit wird von Frau, Kinder und PC in Anspruch genommen. Meine Frau hat auch ein Hobby, seit einiger Zeit. Und jetzt, jetzt folgt der logische nächste Schritt. Sie will eine eigene Webseite. Was liegt da näher als den Ehemann zu fragen der ja Programmierer ist. Was soll ich da bloss sagen. :-)

Jedenfalls gingen in den letzten paar Wochen etliche Stunden in das Projekt. Aber es macht Spass.

Meine Frau macht aus Edelsteinen Halsketten, Armketten, Bebehalsketten und noch ein paar andere nette Sachen. Ich bin ja nicht ein Schmuckfan, aber einige Sachen sehen echt gut aus. Bislang machte sie diese, wie wir sie nennen, EdelsteinKreationen für die Kinder, sich selbst, für Verwandte und Kolleginnen. Diese sind langsam aber sicher mit solchen Kunstwerken eingedeckt. Also, ab ins Web und versuchen die Kreationen zu verkaufen.

Ich darf also ein Web bauen mit einem kleinen Shop. Sehr einfach. Keine Kreditkarten oder so. Einfach per Mail. Ich wollte nicht das sie, meine Frau, alles irgend wie mit Expression Web oder so Pflegen muss. Dann wäre es ja eh bei mir hängen geblieben. Also suchte ich ein CMS. Fündig wurde ich bei N2 CMS. Das ist ein ASP.NET MVC Projekt. Es MUSSTE ein .NET CMS sein, vorzugsweise C#. So kann ich auch noch was lernen. Das Ergebnis ist unter www.EdelsteinKreationen.ch zu finden. Was mich noch am meisten erstaunte, die Domain war noch zu haben. Ich finde das eine absolut geniale Domain. Passt voll und ganz zum Thema.

Jetzt fehlen natürlich nur noch die Kunden. Aber das wird sich sicher noch geben. Vor zwei Tagen sagte ich meiner Frau, dass Google sicher mal wieder eine AdWords Kampagne starten wird und ich bekomme dann sicher wieder einen Gutschein. Was soll ich sagen. Heute kam ein solcher Gutschein über 125CHF mit der Post bei mir an. Was für ein Zufall. Das werde ich sicher noch nutzen.

www.EdelsteinKreationen.ch

Was sicher auch noch cool wäre ist so etwas wie virales Marketing. Hoffe der Begriff passt einigermasen. Es gibt immer wider Blogger die machen Wettbewerbe wenn man etwas dazu schreibt und einen Backlink auf ihr Blog setzt. Das gibt viele Backlinks und Google freut sich. Einen Wettbewerb kann ich nicht machen. Einen Preis in dem Sinn kann ich nicht zur Verfügung stellen.

Aber einen Backlink schon. :-D

Also. Wer etwas über www.EdelsteinKreationen.ch schreibt und es mir mitteilt, dem setze ich einen Backlink. Genau am Ende dieses Postings. Wie so sollte man das machen? Jetzt muss ich ein wenig prahlen. <prahlen> Backlink von einer Seite mit PR4!! Wisst ihr was das Wert hat?! 22Euro im Monat. Und der Link bleibt immer drin. Das kann also ein sehr guter Gewinn sein. :-D </prahlen>

Wenn sich jemand also darauf einlässt, dann ein Kommentar auf dem Posting hinterlassen. Dann setzte ich den Link. Natürlich ohne nofollow. Ist ja klar. :-D

Google wird’s freuen.

03.02.2010  --  GENiALi  --  255 Wörter

Zur Zeit darf ich an einem grossen Projekt mitarbeiten das regen gebrauch von WCF macht. Die ganze Kommunikation zwischen Server und Client baut auf WCF auf.

Jetzt habe ich einige Zeit an einem Fehler gesucht bei dem die Meldung ziemlich irreführend war, wie sich jetzt zeigte.

Die Fehlermeldung ist in etwa so (gekürzt):

"System.ServiceModel.CommunicationObjectFaultedException" wurde aufgefangen.
  Message="Das Kommunikationsobjekt \"System.ServiceModel.Security.SecuritySessionClientSettings`1+ClientSecurityDuplexSessionChannel[System.ServiceModel.Channels.IDuplexSessionChannel]\" kann nicht zur Kommunikation verwendet werden, weil es sich im Faulted-Status befindet."

Wenn ich mir die Meldung jetzt so anschaue denke ich mir, dass scheint doch ein Problem mit der Security zu sein. So ganz klassisch. Berechtigungen auf irgend eine Ressource oder so.

Weit gefehlt. Hat nicht mit dieser Sicherheit zu tun. Es gibt im WCF noch eine andere Sicherheit. Die gegen DoS (Denial of Service) Angriffe. Das heisst, gewisse Grenzen sind im WCF definiert die nicht überschritten werden dürfen/können. Das ist zum Beispiel die maximale Nachrichtengrösse (maxReceivedMessageSize). Per Default auf 65’536 Byte beschränkt. Das gibt meinem Szenario nicht viel her. Als ich diesen Wert erhöhte kam die Fehlermeldung nicht mehr.

Was mir dabei auffiel, die Einstellung muss nur auf der Client Seite gemacht werden. Auf der Serverseite konnte ich alles so sein lassen wie vorher. Hier ein Stück Code wie es gemacht werden kann.

private static T BindEndpoint<T>(string endPointAdress)
	where T : class
{
	EndpointAddress endpoint = new EndpointAddress(endPointAdress);

	NetTcpBinding binding = new NetTcpBinding();
	binding.MaxReceivedMessageSize = 10485760;

	ServiceClient<T> client = new ServiceClient<T>(binding, endpoint);

	return (T)client.InnerChannel;
}

Die Methode wir 1 zu 1 kopiert nicht einfach so funktionieren. Der relevante Teil ist in Zeile 7 zu finden. Die Nachrichtengrösse kann somit etwa 10MB betragen.

kick it on dotnet-kicks.de

Auf das habe ich lange gewartet. Zwei Jahre. Drei mal hatte ich Mailverkehr mit PayPal. Immer mit der Frage: Wie kann ich mein Konto ohne Kreditkarte verifizieren. Antwort war immer, für die Schweiz geht’s nur mit Kreditkarte.

Ich schaute mich also schon nach einer günstigen Kreditkarte um. M-Budget wäre gratis. Keine Gebühren. Aber auch bei 0CHF Umsatz? Also habe ich mir die Karte noch nicht besorgt.

Letzten Freitag, als ich mein Konto wieder einmal inspizieren wollte, sah ich ein leicht anderes Layout vor mir. Ich wurde explizit zur Verifizierung aufgefordert. Wie so den, dachte ich mir. Habe ja keine Kreditkarte.

Ich stutzte dann nicht schlecht als ich darauf aufmerksam gemacht wurde, dass ich das Konto jetzt auch mit einer Banküberweisung bestätigen kann. Das klickte ich dann an und heute sah ich dann auch das mir PayPal etwas überwiesen hatte.

Also die Zahlen eingegeben und siehe da.

Verifiziertes PayPal Konto

Neu habe ich also kein Limit mehr. Cool.

Meine Mails wurde also doch noch erhört. Habe ICH das alles bewirkt?! :-)

02.02.2010  --  GENiALi  --  151 Wörter

Sowas gibt es selten. Ich werde um meine Mausmatten beneidet. Aber wie so den blos? :-D

Irgend wann, vor etwa 1.5 Jahren, habe ich hier im Haus eine Mausmatte gesucht. Die original Leuchter Informatik AG Mausmatte ist nicht sehr speziell. Vorallem rutscht sie auf dem Tisch. Das passte mir nicht.

Irgend wo viel mir dann eine Mausmatte von Digicomp in die Finger. Die ist hauchdünn und, was gaaaanz wichtig ist, sie ist selbstklebend. Absolut genial. Folie abziehen und auf den Tisch kleben.

Ich habe die Mausmatte zwar schon etliche male verschoben, sie klebt aber immer noch. Ich liebe das Teil.

Jetzt habe ich aber Nachschub gebraucht. Was macht man in solchen Fällen? Man schreibt die Firma an und fragt nach ob man welche bekommen könnte. Tatsächlich. Am nächsten Tag hatte ich 8 Mausmatten in meiner Post. Analogen Post natürlich.

Ist auch wieder ein schönes Beispiel für sehr guten Kundenservice.

Danke Digicomp.

28.01.2010  --  GENiALi  --  66 Wörter

Was verspricht man sich eigentlich ab solcher Nutzlosigkeit?

dämlich

Innert ein paar Stunden über 800 Kommentare die als SPAM markiert werden.

Wie blöd muss man da sein. Selbst wenn es ein SPAM Bot ist, der muss ja auch von JEMANDEM parametrisiert werden.

Wie blöd sind DIE eigentlich??!!

Deshalb ist bei mir zur Zeit das kommentieren ausgeschaltet. Sorry.

PS: Ich glaube man merkt das ich jetzt verärgert bin.

27.01.2010  --  GENiALi  --  6 Wörter

Tipp 30 aus: “Der pragmatische Programmierer”.

 

Irgend wie kann das gewaltig nerven. Ich bin an einem relativ grossen Projekt. Dabei muss ich, quasi Fliessbandmässig, neue Klassen erstellen.  Allerding sind die Klassen nicht public. Jedesmal das public ergänzen nervt doch gewaltig.

Lösung:

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1031\Class.zip
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1031\Interface.zip

In diesen zwei ZIP-Dateien sind die Vorlagen drin. Einfach noch ein public hinzufügen und schon klappt es wie gewünscht.

Wie so MS neue Klassen defaultmässig private macht ist mir nicht ganz klar. Ich brauche mehr public Klassen als private.

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;

namespace $rootnamespace$
{
	public class $safeitemrootname$
	{
	}
}

Das public in Zeile 8 macht es möglich.

kick it on dotnet-kicks.de

18.01.2010  --  GENiALi  --  229 Wörter

Vor kurzem wurde ich mit dem Buch “Effektive Softwarearchitekturen” fertig. Das waren 421 spanende Seiten Lektüre ohne grosse Überraschungen. Ich bin jetzt seit 1999 in der Informatik und habe durch lesen und Ausbildung schon fast alles einmal gesehen was in dem Buch vorkam. Aber Anwenden ist dann wieder eine andere Sache. Architekt wäre ich nicht. Wollte ich auch nicht. Aber es war sehr spannend zu lesen. Wenn man solche Bücher als spannend bezeichnen kann.

Vor allem gut waren die zwei Kapitel von zwei Beispielprojekten. Dort hat der Autor zwei Architekturdokumente von echten Projekten in gekürzter Form abgedruckt. Und das war echt spannend. Allerding habe ich mich gefragt ob er wirklich jede Bemerkung dort auch in einem richtigen Dokument gemacht hätte. Zum Teil waren die richtig angriffig auf gewisse Stakeholder. Es war aber sehr amüsant zu lesen.

Und jetzt habe ich mit “Der Pragmatische Programmierer” angefangen. Bei dem Buch war schon die Einleitung sehr lesenswert. Es ist nicht einfach aufzuhören mit dem lesen. Ich lese es bei der Arbeit in meiner täglichen Stunde Selbststudium. So schnell sind die “Lesestunden” selten rum. Kann ich allen nur empfehlen.

Auf die Idee dieses Buch zu lesen kam ich weil es in vielen andern Büchern zum Thema Programmieren immer mal wieder als Pflichtlektüre genannt wird. So nach dem Motto, jeder der sich Programmier nennt muss dieses Buch gelesen haben. Genau das mache ich jetzt.

13.01.2010  --  GENiALi  --  553 Wörter

Zur Zeit arbeite ich in meiner Freizeit an einem kleinen Projekt für meine Frau. Um das kleine Projekt zu realisieren brauche ich eine Domain und ein Hoster der mir die Domain hostet. Was lag da näher als das bei dem Hoster zu machen wo auch mein Blog läuft.

Es zeigte sich dann sehr schnell, dass das eine sehr weise Entscheidung war. Folgende Gründe machen mich stolz bei Simple Hosting Kunde zu sein (tönt das geschwollen :-) ).

Grund 1

Nach dem reservieren der Domain bei Switch, und dem bestellen des Windows Hosting ging es keine 12 Stunden und die Domain war erreichbar. Verdammt schnell.

Grund 2

Für das Projekt will ich ein CMS nutzen. Das muss mit .NET umgesetzte sein und darf nichts kosten. Ich landete nach einigen Versuchen bei N2 CMS. N2 wurde mit ASP.NET MVC gemacht. Ich will die URL’s in der Form “http://www.domain.ch/Seite1” oder “http://www.domain.ch/Seite1/Subseite1” nutzen, also ohne das .aspx am Ende. Und das wollte einfach nicht. Auch bei mir lokal nicht. Nach einigem Suchen bin ich dann über die Thematik “IIS Wildcard Mapping” gestolpert. Im IIS6 muss das in IIS Verwaltungskonsole gemacht werden. Im IIS7 kann das via web.config eingestellt werden.

Ich machte also ein Mail mit dem Hinweis das ich eine Anwendung nicht an den Start kriege. Ich fragte, ob das Hosting auf einem IIS6 oder IIS7 laufe, schickte noch ein Link mit wie man das IIS Wildcard Mapping im IIS6 einstellen würde und das ich das im IIS7 via web.config machen könnte.

Die Antwort überraschte mich: Herr Schumacher, ich kann ihnen die Domain heute Abend auf einen IIS7 verschieben. Wenn sie wünschen.

Klar wünsche ich das. Kosten: nix

Wau, dass nenne ich Service.

Wie sich dann zeigte funktioniert N2 auf einem IIS7 mit dem IIS Wildcard Mapping in de web.config.

Grund 3

Wenn ich auf dem Server viel Update kann es sein, dass sich das Web komplett aufhängt. Dann reichen nicht mal mehr Änderungen an der web.config um den AppPool neu zu starten. Deshalb hat es sich bewährt das meine Hostings in einem eigenen AppPool läuft. Wenn das dann noch im Parallels freigeschaltet wird kann ich meinen eigenen AppPool neu starten. So bringe ich mein Blog regelmässig wieder an den Start.

Ich habe also per Mail erläutert was mir das beim Blog bedeutet und wie wertvoll dieses Feature ist. Was passiert?

Herr Schumacher, ich habe ihnen soeben einen eigenen AppPool eingerichtet und dieses Feature auf dem Parallels freigeschaltet. Viel Spass.

Kosten: Wider nix

So etwas erlebt man nicht oft. Bei mir die absolute Ausnahme. Ich habe das Gefühl der einzige Kunde zu sein. Und das gibt es extrem selten. Das passierte mir noch fast nie.

Das ganze mit zwei Mitarbeitern die sich um 6 Webserver (nur Hosting) kümmern auf denen ca. 1’200 Domains gehostet werden. Dann noch ein paar andere Dienste wie Housing Kunden Server, DNS Server, Antispam usw.

Aussage von Chris Mayer: “lieber klein aber fein, dynamisch und auf einen möglichst guten Service mit guter Hardware im Hintergrund”. Und genau das merkt man.

Deshalb. Wenn jemand ein sehr gutes Windows Hosting sucht, mit allem drum herum, ist bei Simple Hosting genau richtig. Das einfachste Hosting, dass ich habe, kostet nur 1.5 Zigarettenpäckli im Monat. In einem Jahr dann nur noch eines. :-)

PS: Ich bin Nichtraucher. :-)

PSS: Nein, für dieses Posting bekomme ich nichts. :-)

07.01.2010  --  GENiALi  --  141 Wörter

Ich lese gerade das Buch Effektive Softwarearchitekturen. Im Kapitel 10 geht es um SOA (Service Orientierte Architektur). Ich habe schon viel darüber gelesen und mir meine Meinung darüber gemacht.

Im Buch gibt es eine Tabelle die beschreibt was SOA aus der Sicht diverser Stakeholder ist. Mir ist eine Sicht sehr sympathisch, nämlich die der Strategieberater und Software-Hersteller.

SOA ist …

Ein unklar definiertes Hype-Thema, das in den Ohren unserer Kunden vielversprechend klingt. Ein gigantischer Beratungs- und Werkzeugmarkt voller Chancen und Risiken.

Dabei geht es doch einfach nur um Services die irgend wie (XML, SOAP, RPC usw.) zur Verfügung gestellt werden, unabhängig voneinander sind und die von einem Konsumenten genutzt werden.

Also, alter Wein in neuen Schläuchen.

image

Ich zapfe 3 (Web)Services an und mache irgend etwas in meiner Anwendung damit. Alte Technik unter neuem Begriff (SOA). So sehe ich das.

Und Ihr?

kick it on dotnet-kicks.de