Active Scripting in C# – Which is faster, VBScript or JScript?

Just did some really basic poor-man’s performance measurements regarding the comparison of using VBScript versus using JScript.

I did write a small Microsoft .NET Framework 2.0 Windows Forms application in C#.

The application uses an Active Scripting host and runs two small scripts, one being in VBScript (VB, VBS, Visual Basic Script) and one being written in JScript (JS, Java Script, JavaScript):

The results were rather clear:

VBScript was always faster than JScript. I counted not only the running of the script, but the whole process of creating the scripting engine, running the script and shutting down the scripting engine again.

Of course this test is probably rather imprecise and kind of naive, but it gave me a quick overview , that VBScript is always 1/3rd faster than JScript.

I tried this also on a PC with Internet Explorer 9 (IE9) Beta installed, in the hope that the new JScript engine of IE9 influences the one being used in Active Scripting, too. But I was wrong. The performance was similar to the one on a PC with IE8.

You can download the example application from here.

Using Active Scripting from within C# without leaking memory

Working for about 3 days to get rid of memory leaks when using Microsoft’s Active Scripting from within a C# .NET 2.0 Windows Forms application, I finally managed to create a working example project that runs without memory leaks.

Download example project (VS 2008) with source and binary files

I used Red Gate’s ANTS Memory Profiler to verify for memory leaks, the best tool around for doing such a task.

The key in resolving (see download project) was to call IActiveScript::Close to free any resources.

I hope, this article will help someone in the future when facing a similar issue.

(References: My initial question on Stack Overflow)

Visual-Basic-Code (VBA) aus Microsoft-Access-Datenbank-Projekten exportieren

Falls Ihr Euren (oder fremden) Programmcode aus einem Access-Datenbank-Projekt (also einer MDB-Datei mit enhaltenem Basic-Code) exportieren wollt, so gibt es ein tolles Script, das mir hier weitergeholfen hat:

„Export All VBA Code“

Dort findet Ihr ein paar 10 Zeilen Code, den Ihr in Eurem Projekt einfügt, geringfügig anpasst (Pfade) und dann alle Module exportiert bekommt, auch den Codebehind von Formularen.

X-Y-Diagramm in Excel mit Beschriftungen aus weiterer Spalte

Da ich Microsoft Office Excel alle Jubeljahre mal verwende um Diagramme zu generieren, bin ich jedesmal verwirrt, weil ich die richtigen Funktionen nicht finde.

X-Y-Diagramm

So auch heute. Ich hatte den Wunsch aus so einer Tabelle:

X-Y-Diagramm mit Beschriftungen in Excel

So ein Diagramm generieren zu lassen:

X-Y-Diagramm mit Beschriftungen in Excel

Eigentlich ganz einfach, dachte ich mir.

Das Diagramm an sich war auch schnell zusammengeklickt: Die Spalten „Gewicht“ und „Alter“ markieren, auf „Diagramm einfügen“ klicken und fertig.

Doch ich hab’s trotz viel probieren und viel Recherche nicht geschafft, automatisiert aus der Spalte „Art“ die Beschriftungen für die einzelnen Datenpunkte zu bekommen.

Add-In für Excel

Zum Glück gibt es eine sehr einfache Lösung: Das kostenlose Add-in für Microsoft Excel namens XY Chart Labeler hat genau diese eine Aufgabe, nämlich das Hinzufügen von Datenbeschriftungen für XY-Diagramme, basierend auf einer weiteren Tabellenspalte.

Ihr fügt dazu ganz einfach wie hier oben beschrieben das XY-Diagramm ein und aktiviert über den „Add-Ins“-Ribbon-Tab von Excel die Funktion „Hinzufügen Chart Labels“ des XY Chart Labeler.

Dann erscheint folgendes Dialogfenster:

X-Y-Diagramm mit Beschriftungen in Excel

Ihr wählt nun einfach den Zellenbereich aus, der die Datenbeschriftungen enthält, klickt auf „OK“ und das Add-In erledigt den Rest für Euch.

Super einfach und kostenlos. Meine Empfehlung!

WordPress-Plugin zum Überprüfen von Hyperlinks

Ein tolles Plugin für WordPress habe ich vor kurzem via Twitter gefunden:

Broken Link Checker

Broken Link Checker für WordPress-Blog

Das Plugin läuft im Hintergrund und überprüft nach und nach alle Hyperlinks, ob diese noch gültig sind.

Falls nicht, werden diese in einer Liste angezeigt und Ihr könnt verschiedene Operationen darauf anwenden, z.B. die Links entfernen oder z.B. die betreffenden Artikel, die einen kaputten Hyperlink enthalten löschen.

Sogar sehr komfortabel Suchen könnt Ihr in der Liste der kaputten Hyperlinks.

Ein klasse Plugin, kann ich Euch wärmstens empfehlen!

Kurztipp: HTTP-URLs in Windows Explorer öffnen

Manchmal ist es nützlich, zu wissen, dass Ihr in Windows Explorer (also nicht Internet Explorer) direkt HTTP-URLs eingeben könnt.

Also z.B. im Datei-Öffnen-Dialogfenster.

Anwendungszenario – Internet-Bild lokal bearbeiten

Wollt Ihr z.B. ein tolles Bild aus dem Internet lokal bearbeiten, so ist der übliche Weg:

  1. Webbrowser starten. (Also Google Chrome, was sonst)
  2. URL der Seite öffnen, auf der das Bild enthalten ist.
  3. Rechtsklick auf das Bild.
  4. „Speichern unter“ auswählen.
  5. Lokales Zeichenprogramm starten (Also Paint.NET).
  6. Datei-Öffnen-Dialogfenster anzeigen lassen.
  7. Das vorher heruntergeladene Bild suchen und öffnen.

Mit dem Wissen, dass das auch direkt in Windows Explorer geht (vermutlich über den eingebauten WebDAV-Client), könnt Ihr diese Prozedur abkürzen:

  1. Lokales Zeichenprogramm starten.
  2. Datei-Öffnen-Dialogfenster anzeigen lassen.
  3. URL des Bildes eingeben und direkt öffnen.

Hat mir schon oft geholfen, ggf. ist das auch für Euch mal nützlich. Funktioniert auch prima, wenn Ihr auf einer Seite ein Bild downloaden möchtet um es auf einer anderen Seite upzuloaden.

Geht natürlich mit beliebigen Dateien (z. B. PDF), nicht nur Bildern.

net stop beep

Um in (z.B.) VMware den PC-Speaker zu töten, um das lästige „beep“ abzustellen, ist es am einfachsten, den BEEP-Dienst im Guest-Betriebssystem auszustellen.

Einmalig ausstellen bis zum Neustart

  1. „Start“ klicken.
  2. „Ausführen“ auswählen.
  3. „cmd“ eingeben (ohne die Anführungsstriche) und die Eingabetaste drücken.
  4. net stop beep“ eintippen (ohne die Anführungsstriche) und die Eingabetaste drücken.

Dauerhaft ausstellen auch über den Neustart hinweig

  1. Die obigen Schritte 1-4 ausführen.
  2. „Start“ klicken.
  3. „Ausführen“ auswählen.
  4. „cmd“ eingeben (ohne die Anführungsstriche) und die Eingabetaste drücken.
  5. sc config beep start= disabled“ eintippen (ohne die Anführungsstriche) und die Eingabetaste drücken.

Es sollte dann eine Meldung „[SC] ChangeServiceConfig SUCCESS“ erscheinen. Das war’s!

Alternativ könnt Ihr auch in VMware selbst über die GUI den Beep ausstellen, oder über die „preferences.ini“-Datei.

Wie berichte ich Software-Fehler so, dass sie schnell beseitigt werden?

Ich bin Software-Entwickler und entwickle Programme (1, 2, 3, 4, ), die von vielen Leuten eingesetzt werden.

Diese Programme haben Fehler.

Ich habe großes Interesse daran, Fehler in meinen Programmen zu beseitigen. Wenn Sie mir helfen wollen, dass ich einen von Ihnen gemeldeten Fehler möglichst schnell und vollständig beseitige, so bitte ich Sie, mir die Arbeit zu erleichtern und den Fehler wie folgt zu melden:

Allgemeines zu Fehlerberichten

  • Schalten Sie Ihre Emotionen aus. Sie sind verärgert, weil Sie durch meine Fehler in Ihrem Arbeitsfluss unterbrochen wurden. Bitte glauben Sie mir, dass mir das wirklich leid tut und es keine Absicht von mir ist.
  • Versetzen Sie sich in meine Lage. Sie sind vom Fach und besitzen großes Wissen in Ihrem Gebiet. Ich besitze dies nicht. Seien Sie deshalb bitte ausführlich, selbst wenn Sie für sich Offensichtliches formulieren. Für mich ist es Neuland.
  • Verwenden Sie ein passendes Werkzeug. Wenn Sie mir den Fehler in einer Fehlerdatenbank berichten, anstatt einfach „gschwind“ eine E-Mail-Nachricht zu verfassen, erleichtern Sie mir die Arbeit und ermöglichen es sich selbst, jederzeit den Fortschritt meiner Fehlerbeseitigung zu beobachten.

Konkretes Berichten von Fehlern

  • Formulieren Sie einen aussagekräftigen Titel. „Geht nicht“ wäre z.B. ein sehr schlechter Titel, weil es mir nicht hilft, zu verstehen, was der Fehler ist.
  • Beschreiben Sie, wie Sie vorgehen. Sie sitzen vor Ihrem PC, ich nicht. Ich muss genau so vorgehen wie Sie, deshalb ist es für mich hilfreich, wenn Sie mir ein exaktes Vorgehen zum Fehler schildern.
  • Beschreiben Sie, welches Ergebnis Sie sich wünschen. Für Sie ist offensichtlich, was herauskommen muss, für mich als Außenstehender leider oft nicht.
  • Beschreiben Sie, welches tatsächliche Ergebnis Sie erhalten. Das Fehlverhalten ist das, was ich für Sie beseitigen möchte. Deshalb ist es für mich sehr wichtig zu wissen, was genau das Fehlverhalten ist.
  • Berichten Sie alle Fehlermeldungen detailliert und vollständig. Selbst wenn es kryptische Texte sind, die Sie nicht verstehen, mir helfen diese Fehler zu erkennen und zu beheben.
  • Ergänzen Sie Ihre Erklärungen durch Bildschirmfotos und Anhänge. Ein Bild(-schirmfoto) sagt oft mehr als 1000 Worte.
  • Vergeben Sie eine sinnvolle Priorität. Ich muss mehrere Fehler von verschiedenen Kunden gleichzeitig beheben. Sie erleichtern mir die Behebung Ihres Fehlers, wenn Sie mir sagen, wie dringend Sie eine Behebung benötigen. Sie sind am glaubwürdigsten, wenn Sie nicht alle Fehler als „sofort Lösung benötigt“ kennzeichnen.

Beispiel eines guten Fehlerberichts

  • Projekt: Zeta Uploader
  • Titel: Beim Versenden von Dateien, die vom Typ „PDF“ sind, bricht das Programm mit Fehlermeldung ab.
  • Beschreibung: Wenn ich eine oder mehrere Dateien vom Typ „PDF“ mit dem Windows-Client von Zeta Uploader versenden möchte, dann bricht das Programm nach kurzer Zeit mit der Fehlermeldung „Dateien vom Typ ‚PDF‘ sind mit Ihrer Lizenz nicht versendbar“ ab.
  • Schritte zur Reproduktion: Ich öffne Windows Explorer, rechtsklicke auf eine PDF-Datei und wähle „Senden an Zeta Uploader“. Es öffnet sich ein Fenster und anschließend erscheint die o.g. Fehlermeldung. Siehe auch Bildschirmfotos sowie die zu versendende Datei im Anhang dieses Berichts.
  • Gewünschtes Verhalten: Es sollte möglich sein, durch einen Rechtsklick auf eine PDF-Datei, diese mit Zeta Uploader zu versenden, genau so wie es auf für andere Dateitypen, z.B. JPEG funktioniert.
  • Umgebung: Windows 7 Professional, 64-Bit in Deutsch, 8 GB Hauptspeicher, 100 GB Festplattenplatz frei, Trendmicro Anti-Virus als Virenschutz.
  • Priorität: Ich  kann alternativ die Dateien per E-Mail versenden, außerdem bin ich die nächsten 2 Wochen im Urlaub. Ich würde mich freuen, wenn der Fehler bis zum Oktober beseitigt wäre.

(Das Beispiel ist frei erfunden und somit komplett hypothetisch)

Vielen Dank!

(Ihr könnt diesen Text gerne auch weiter kopieren. Einen ähnlichen Text habe ich hier gefunden)

The trust relationship between this workstation and the primary domain failed

Symptom

Beim Anmelden via Remote Desktop Connection (RDP) an einen Windows-7-PC kommt nach der Eingabe der (korrekten) Anmeldedaten erscheint als Meldung:

The trust relationship between this workstation and the primary domain failed

Es ist danach nicht möglich, sich an dem PC anzumelden.

Ursache

Unbekannt, vermutlich fehlen Einstellungen zum PC auf dem Active-Directory-Domain-Controller.

Lösung

Es gibt viele Suchanfragen und Lösungen zu dem Thema, z.B. diesen Forumseintrag bei Microsoft.

Was bei mir geholfen hat war, den Windows-7-PC aus der AD-Domäne zu entfernen und anschließend wieder zu der Domäne hinzuzufügen.

Grob waren die Schritte:

  1. Über die Systemsteuerung das Dialogfenster mit den Systemeigenschaften zu öffnen.
  2. Den Computer zunächst aus der AD-Domäne entfernen, indem er in eine (fiktive) Arbeitsgruppe (Workgroup) hinzugefügt wird, mit einem beliebigen, nicht-existierenden Namen.
  3. Den Computer wie angegeben neu starten.
  4. Wieder die Systemeigenschaften öffnen.
  5. Den Computer der AD-Domäne wieder hinzufügen.
  6. Den Computer erneut wie angegeben neu starten.

Anschließend konnte ich mich wieder korrekt anmelden.

Falls Ihr ein ähnliches Issue habt/hattet und eine andere Lösung bei Euch geholfen hat, bitte schreibt es hier unten in die Kommentare.

Backup MySQL on Windows with a Batch file

In order to back up a MySQL database server on Windows, create a batch file to call mysqldump and create a Scheduled Task in Windows to call that batch file.

I found a good solution by „Bradford Mitchell“ in the comments to the mysqldump documentation.

Since I got some errors like „28 Was Unexpected At This Time„, I did some adjustments to the file (primarily, I added quotes around several paths).

Please download my version if you like