Category Archives: Beruf

Alles was meinen Beruf und dessen Inhalte betrifft.

Online-Facebook-Adventskalender

Unser aktueller SEO-Praktikant Benny hat einen schönen Facebook-Adventskalender zusammengestellt:

Adventskalender 2013 auf Facebook

Es gibt auch was zu gewinnen, Geek-Gadgets, Bücher und ein paar Lizenzen unseres Desktop CMS Zeta Producer.

So und als Entschuldigung für diese Werbung, jetzt hier 3 Minuten Felix beim Bilderbücher-Lesen:

Viel Spaß beim Video, viel Spaß beim Adventskalender!

“NT AUTHORITY\ANONYMOUS LOGON” ins Deutsche übersetzen

In unserer lokalen Umgebung möchte ich von PHP aus auf unseren Exchange Server 2010 per SMTP zugreifen. Über die in PHP eingebaute “mail”-Funktion.

Da diese keine authentifizierte SMTP-Verbindung hinbekommt, habe ich beim Exchange anonyme Verbindungen zulassen müssen, um den “Unable to relay”-Fehler weg zu bekommen. Im Artikel “Allow Anonymous Relay on a Receive Connector” habe ich den folgenden PowerShell-Befehl gefunden:

Add-ADPermission "My Connector Name" -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Da kam dann beim Ausführen die Meldung, dass er “NT AUTHORITY\ANONYMOUS LOGON” nicht kennt. Ich habe es dann noch mit “Jeder” probiert, was zwar erfolgreich durchlief, jedoch das Relaying nicht deaktiviert hat.

Nach etwas Suchen fand ich den Artikel “Englisch=Deutsch oder doch nicht? Wie Sie Anonymous Relay auf einem deutschen Exchange Server per cmdlet aktivieren” und die Lösung, die in folgendem Befehl mündete:

Add-ADPermission "My Connector Name" -User "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Danach konnte ich, ohne Neustart von Server oder Dienst, erfolgreich von PHP aus E-Mails versenden.

Fehlermeldung “Object reference not set to an instance of an object.” bei DevExpress.XtraBars.Design.BarManagerDesigner.Initialize

Heute hatte ich im WinForms-Designer von Visual Studio .NET 2013 einen Fehler

“Object reference not set to an instance of an object.”

at DevExpress.XtraBars.Design.BarManagerDesigner.Initialize(IComponent component)
at System.ComponentModel.Design.DesignerHost.AddToContainerPostProcess(IComponent component, String name, IContainer containerToAddTo)
at System.ComponentModel.Design.DesignerHost.PerformAdd(IComponent component, String name)
at System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type componentType, String name)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeInstance(IDesignerSerializationManager manager, Type type, Object[] parameters, String name, Boolean addToContainer)
at System.ComponentModel.Design.Serialization.ComponentCodeDomSerializer.DeserializeInstance(IDesignerSerializationManager manager, Type type, Object[] parameters, String name, Boolean addToContainer)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializer.DeserializeStatementToInstance(IDesignerSerializationManager manager, CodeStatement statement)
at System.ComponentModel.Design.Serialization.CodeDomSerializer.Deserialize(IDesignerSerializationManager manager, Object codeObject)
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.DeserializeName(IDesignerSerializationManager manager, String name, CodeStatementCollection statements)

als ich ein Form öffnen wollte.

Der Artikel “Troubleshooting design-time problems” hat mir dann geholfen, Ursache war eine noch nicht auf eine neuere Version aktualisierte Solution (“Projektmappe”). Ich hatte noch 13.1.6.0 referenziert, auf meinem System war schon 13.1.8.0 vorhanden.

Also einfach die LICX-Datei geleert, Projekt geschlossen, den DevExpress-Projekt-Konverter gestartet, das Projekt konvertiert und danach hat sich der Designer auch wieder geöffnet.

Fehlermeldung “Die minimale Berechtigung konnte nicht erteilt werden” lösen

Habe eine neue DLL-Version einer Komponente downgeloadet und auf einmal bringt mein .NET-4-WinForms-Programm eine Fehlermeldung:

Die Datei oder Assembly “ScintillaNET, Version=2.5.2.0, Culture=neutral, PublicKeyToken=948d6c9751444115″ oder eine Abhängigkeit davon wurde nicht gefunden. Die minimale Berechtigung konnte nicht erteilt werden. (Ausnahme von HRESULT: 0×80131417)

Aaargh!

Ich habe dann wirklich richtig lange gesucht und dann tatsächlich die Lösung gefunden:

Lösung

Die DLL-Datei wurde von Windows als “blockiert” markiert:

Die minimale Berechtigung konnte nicht erteilt werden

Einfach auf “Zulassen” klicken und dann ging’s.

Meine Erlebnisse mit den “Dynamic Cloud Servern” von 1und1

Das hier ist eine Geschichte, geprägt von Freud und Leid. Weil ich sie hier aufschreibe, ist das Leid im Vordergrund. Primär schreibe ich sie zur Selbst-Therapie auf und dass ich mich in einigen Jahren noch auf was berufen kann, wenn mich meine Erinnerung bei der Provider-Wahl zu trügen versucht.

Wir haben zurzeit 3 Webserver, alle mit dem Betriebssystem Windows Server von Microsoft. Einen Server für Zeta Uploader (ein Tool um große Dateien online zu versenden), einen Server für verschiedene Kunden-Websites, und einen Server für die Produktwebsites zu Zeta Producer (ein Content-Management-System) und Zeta Test Management (ein Test-Management-System).

Bis vor 2 Wochen waren alle Server über Jahre hinweg bei 1und1 gehostet. Seit zwei Wochen sind nun 2 der drei Server bei Internet 24 gehostet.

Wir haben über ein Jahr lang gelitten, geschwitzt, geflucht, gebettelt, gehofft und immer wieder Kunden über Downtimes hinweg versucht zu tröste (ich glaube wir waren der beste Nutzer von Uptime Robot). Am Ende hat alles nichts genutzt und wir mussten umziehen.

Was lief alles schief

Die Idee der “Dynamic Cloud Server” klingt verlockend: Virtualisierte Server (mit Xen) mit schöner Admin-Web-GUI bei der ich via Schieberegler diverse Einstellungen wie RAM, CPU und Festplatte so konfigurieren kann, dass ich sie an unsere Bedürfnisse anpassen kann.

In der Praxis war genau das Gegenteil der Fall: Die Server reagierten träge, langsam und mit häufigen Ausfällen. Meine starke Vermutung ist, dass die Host-Rechner (also die physikalischen Computer, auf denen die virtuellen Computer laufen) so maximal ausgelastet sind, dass ich mit den Schiebereglern zwar meine Wünsche angeben kann, jedoch diese nichts mit der tatsächlichen Ressourcen-Zuteilung in der Praxis zu tun haben. Doch selbst eine schlechte Performance hätte ich verkraftet, wären da nicht die ständigen/häufigen Ausfälle gewesen.

Unser Zeta-Uploader-Server ist die rühmliche Ausnahme: Der läuft weiterhin bei 1und1, und zwar wie die sprichwörtliche 1: Er ist nicht der schnellste, dafür ist er quasi immer erreichbar und quasi nie down. Dieser Server läuft, so wie ich es wohl verstanden habe, auf einer Xen-5.5-Umgebung. Keine Treiber-Issues, nix.

Unsere beiden anderen Server liefen auf einer Xen-6.x-Umgebung.

Und genau diese beiden Server liefen wie Dreck. Nämlich nach Lust und Laune des Hosters. Meistens am Wochenende waren sie nicht erreichbar, erst am Montag, nachdem wohl ein Techniker die Hosts neu gebootet/whatever damit gemacht hat. Das ganze lief regelmäßig, pünktlich zum Wochenende so ab:

  • Server antwortet nicht mehr.
  • Control-Center (Web-Oberfläche) erlaubt es nicht den Server aus- und wieder einzuschalten.
  • Hotline schafft es nicht, Server aus- und wieder einzuschalten.
  • 2nd-Level-Kollegen von Hotline schaffen es nicht, Server aus- und wieder einzuschalten.
  • Administratoren schaffen es dann (nur Werktags!) wohl irgendwie, den Server auszuschalten.
  • Ich entdecke zufällig, dass ich Server jetzt wieder hochfahren kann.
  • Ich fahre Server via Control-Center hoch.
  • Server startet natürlich nicht normal, sondern im Rescue-Modus.
  • Ich boote neu im normalen Modus.
  • Server booten in Zeitlupe.
  • Nach 40 Minuten(!) warten ist Server dann gebootet.
  • Server läuft immer noch in Zeitlupe.

Die ersten zig Male habe ich immer versucht, Fehler bei mir selbst zu finden und alles mögliche probiert, leider erfolglos. Irgendwann haben wir dann einen “Platin-Support” für etwa 10 Euro pro Monat mit dazu gebucht. Effekt war, dass die Warteschleife umgangen wurden, die Supporter dahinter waren genau so höflich und kompetent wie beim Nicht-Platin-Support. Also höflich und hilfsbereit waren sie wirklich, kompetent im Sinne von, dass sie etwas bewirken konnten, waren sie leider nicht. Es hieß am Wochenende dann oft “das müssen wir an den 2nd-Level-Support eskalieren lassen” (oder so ähnlich), mit dem Zusatz “das kann schon Montag werden, bis es wieder läuft”. Arrgh. Da saß ich immer wie auf Kohlen.

Schön (im sarkastischen Sinne) waren anschließend auch immer die belanglosen, wohl von Robotern erstellten E-Mail-Nachrichten:

Ihr Dynamic Cloud Server ist wieder wie gewohnt erreichbar.

Bitte entschuldigen Sie die entstandenen Unannehmlichkeiten.

Wir wünschen Ihnen weiterhin viel Spaß mit unseren Produkten.

Es hat viele Versuche gedauert, bis 1und1 überhaupt zugegeben hat, dass der Fehler bei ihnen liegt. Es hieß dann lapidar “Es lag eine Störung im Hostsystem vor”. (Ob so was hier [als Bild] wohl repräsentativ ist?)

Lösungsansätze

Irgendwann habe ich dann angefangen, mich weiter zu erkundigen und bin auf die Möglichkeit gestoßen, die Xen-Netzwerk-Treiber in meinem Gast-Windows zu aktualisieren. Da habe ich wirklich viel Zeit investiert und nach viel nachbohren dem 1und1-Support wenigstens die Xen-Versionsnummer entlocken können. Sogar einen Bekannten (“Facebook-Freund”), der bei Citrix arbeitet (die Firma hinter Xen) habe ich mit den Fehlern und der Thematik konfrontiert und er hat mir einige Tipps geben können, die gefühlt geholfen haben. Objektiv waren jedoch immer wieder die Aussetzer der Server.

Ich habe meinen Bekannten auch gefragt, ob man mit Xen 6 überhaupt ein stabiles System hinbekommen kann, worauf er mir mit Screenshots von Uptime-Charts von 190+ Tagen geantwortet hat. Es geht also. Xen kann das, die Admins scheinen es hier wohl nicht hin zu bekommen. Warum auch immer, ich vermute einfach Kostendruck.

Eines Tages habe ich dann einen ehrlichen Supporter am Telefon gehabt, der mir am Ende sagte “Ach, wissen Sie, Xen und Windows, das ist auf Dauer einfach nicht stabil hin zubekommen”. Der Tenor war für mich “Damit müssen Sie leben, seien Sie froh, dass es überhaupt läuft”. WTF? Dass unser Xen-5.5-Server stabil läuft ist für mich ein Beweis, dass es durchaus funktionieren kann, ebenso wie die Aussagen meines Bekannten.

Lösung

Es musste also eine Lösung her, und die war eindeutig außerhalb von 1und1 zu sehen. Doch wie vorgehen, um nicht vom Regen in die Traufe zu kommen?

Jeder Hoster, den ich mir so angeschaut habe hatte Vor- und Nachteile. Mal zu groß, mal zu klein, mal keine Windows-Server und mal irgend was anderes seltsames. Mein geschätzter Kollege M. hat dann nach viel Recherche und einigen Telefonaten den Hoster “Internet 24″ in Dresden ausfindig gemacht. Der ist groß genug um saubere Technik und Kompetenz zu liefern und gleichzeitig persönlich genug um immer direkt einen kompetenten Techniker am Draht zu haben.

Seit ca. 2 Wochen laufen jetzt also unsere Server bei Internet 24. Noch zu kurz um eine aussagekräftige Bewertung abzugeben, doch bereits der Anfang war geprägt von lauter positiven Eindrücken, die auch nach dem Kauf weiter anhielten, bis heute.

Epilog

Web-Hosting ist halt wohl ein genau so kaputter Markt wie alle anderen von BWL-ern “optimierten” Branchen auch. Damit muss ich halt wohl leben und immer wieder mal zum “Server-Nomaden” werden, wenn ein Hoster zu groß wird und die Qualität nachlässt.

Wenn 1und1 unsern auf Xen 5.5 laufenden Server nach Xen 6.x upgradet gehe ich davon aus, dass ich den auch umziehen muss, weg von 1und1.

Die Server bei Internet 24 sind schöne Intel-Xeon-Rechner mit viel RAM und Hewlett-Packard-RAID; der Support von Internet 24 ist erstklassig und tatsächlich per E-Mail Tag und Nacht sehr schnell und (fast immer) sehr kompetent zu erreichen.

Ich bin richtig glücklich mit Internet 24 und hoffe, das bleibt auch so.

Update 2013-11-03

Ich habe mir mal die Pingdom-Alerts angeschaut und ausgewertet:

webserver-downtimes-1und1

(Hier als XLSX-Datei)

Es waren im Schnitt 10 Downtimes pro Monat. Pro Monat! Und das waren nur die, die Pingdom auch gemessen hat. Alles unter 5 Minuten ist da noch gar nicht dabei.

Text-Nach-Sprache-Tastenkürzel unter Windows 8 deaktivieren

Das treibt mich in den Wahnsinn, wenn ich versehentlich das Tastaturkürzel für “Text nach Sprache” erwische und eine Frauenstimme anfängt, mir vorzulesen, was ich in Visual Studio gerade eingebe.

Es gibt keinen “Offiziellen” Weg, das Kürzel zu deaktivieren, jedoch habe ich im Blog von David Zhang eine Lösung gefunden.

Einfach diese Registrierungsdatenbank-Datei downloaden und “ausführen”.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Narrator.exe]
"Debugger"="%1"

Ich hoffe das hilft auf Dauer.