Programmierung

CPAN mit ActivePerl

9. Dezember 2010 · Programmierung · andreas · Kein Kommentar

Auch wenn sich “Perl unter Windows: Erdbeere oder Komodowaran?” auf den ersten Blick etwas anders lesen mag, auch unter ActivePerl ist ein Zugriff auf das Comprehensive Perl Archive Network (CPAN) ohne große Klimmzüge möglich - nur um’s im Mozilla-Jargon zu sagen “Hier endet möglicherweise die Gewährleistung!”.

Die CPAN-Shell ist zwar nicht im Startmenü verlinkt, kann aber von der Kommandozeile mittels Eingabe von “cpan” gestartet werden. Je nach verwendeter Windows-Installation und Installationsverzeichnis muß dies u.U. als Administrator geschehen, um die benötigten Schreibrechte zu erhalten.

Sollte ActivePerl keinen installierten C-Compiler vorfinden, wird analog zu Strawberry Perl die Minimalist GNU for Windows-Umgebung MinGW zusammen mit “dmake” über den Perl Package Manager installiert und konfiguriert, so daß anschließend eine voll funktionsfähige CPAN-Shell zur Verfügung steht.


Windows-Theming mit Visual Studio 6

4. Dezember 2010 · Programmierung · andreas · Kein Kommentar

Um einem Visual Studio 6-Projekt den aktuellen Window-Stil (XP / Vista / 7) hinzuzufügen, muß zuerst eine XML-Datei unter dem Namen “manifest.xml” erstellt werden:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
 xmlns="urn:schemas-microsoft-com:asm.v1"
 manifestVersion="1.0">
 <assemblyIdentity
 processorArchitecture="x86"
 version="5.1.0.0"
 type="win32"
 name="__Name der .EXE-Datei__"/>
 <description>__Beschreibung der .EXE-Datei__</description>
 <dependency>
 <dependentAssembly>
 <assemblyIdentity
 type="win32"
 name="Microsoft.Windows.Common-Controls"
 version="6.0.0.0"
 publicKeyToken="6595b64144ccf1df"
 language="*"
 processorArchitecture="x86"/>
 </dependentAssembly>
 </dependency>
</assembly>

Anschließend den Dialog zum Hinzufügen einer neuen Resource mittels “Einfügen” / “Resource” (oder wahlweise Strg+R) öffnen und auf “Importieren” klicken.

Den Dateityp auf “Alle Dateien (.)” ändern, die bereits erzeugte “manifest.xml” anwählen und auf “Importieren” klicken.

Im sich nun öffnenden Dialog “Benutzerdefinierte Ressourcentyp” als Typ “24” eingeben und mit “OK” bestätigen.

Anschließend mittels Rechtsklick die Eigenschaften der soeben erzeugten Ressource öffnen und die ID auf “1” ändern.

Das Projekt neu erstellen.


Perl unter Windows: Erdbeere oder Komodowaran?

16. November 2010 · Programmierung · andreas · 1 Kommentar

Während Perl bei Unix-Betriebssystemen zum Lieferumfang gehört, muß ein Windows-Anwender sich erst selbst eineDistribution herunterladen.

Als erste Anlaufstelle ist das Win32 Perl Wiki geeignet, das eine gute Übersicht über die verfügbaren Perl-Distributionen für Windows liefert, von denen für “normale” Einsatzzwecke allerdings nur zwei übrig bleiben: ActivePerl und Strawberry Perl.

ActivePerl, sowohl als freie Community-Version als auch mit professionellem (und zu bezahlendem) Support durch den Distributor ActiveState erhältlich, ist sicherlich weiter verbreitet. Das herausragende Merkmal ist der Perl Package Manager (ppm, in der aktuellen Version 3), der mit einer übersichtlichen graphischen Oberfläche die Installation sowie Aktualisierung windowskompatibler Pakete mit wenigen Mausklicks erledigt.

Die Fokusierung auf den Package Manager ist aber auch gleichzeitig die größte Schwäche von ActivePerl, denn dieser setzt vorkonfigurierte und vorkompilierte Binärpaketen voraus, statt diese - wie unter Unix üblich - als Quellcode aus dem Comprehensive Perl Archive Network (CPAN) zu laden und auf der Zielmaschine zu kompilieren. Die Folge daraus ist, daß nicht alle im CPAN vorhandenen Module als ppm erhältlich sind und die verfügbaren Module oft 1-2 Versionsnummern hinterher hinken - bis sich jemand findet, der das entsprechende Paket erstellt. Dafür durchlaufen die Pakete zumindest eine rudimentäre Qualitätskontrolle, da Pakete erst nach erfolgreichem Absolvieren ihrer Testsuite zu den ppm-Repositories hinzugefügt werden.

Das Hauptargument gegen das Verwenden der CPAN-Shell (die ActivePerl auch beiliegt) unter den Microsoft-Betriebssystemen ist, daß einer Standard-Windowsversion neben Perl auch andere wichtige Entwicklungswerkzeuge wie z.B. ein C-Compiler fehlen, die unter Unix Standard sind. Solange ein Modul in reinem Perl geschrieben ist, funktioniert alles wunderprächtig, sobald aber ein Compiler benötigt wird, scheitert die Installation.

Diese Lücke füllt Strawberry Perl, in dem es zusammen mit Perl auch die MinGW (Minimalist GNU for Windows)-Entwicklungsumgebung mitbringt, um im Falle eines Falles zur Modulinstallation notwendige Kompilierungen wie unter Unix automatisiert durchführen zu können. Das klingt im ersten Moment fabelhaft, der Erfolg hängt aber davon ab, wie Windows-kompatibel das zu installierende Modul entwickelt wurde.

ActivePerl macht den Einstieg in die Perl-Welt leicht und überzeugt mit einfacher Bedienung, erkauft durch eine eingeschränkte Modulauswahl mit teilweise veralteten Versionen, die aber unter Windows wie gewünscht funktionieren. Strawberry Perl eröffnet Zugriff auf das komplette CPAN, mit der Gefahr, daß einige Module in der Windows-Welt nicht wie gewünscht oder übrhaupt nicht funktionieren.


Schnelle Übersicht in MySQL

12. September 2010 · Programmierung · andreas · Kein Kommentar

Manchmal sind es die einfachen Dinge, die man immer wieder nachschlagen muß …

Eine Liste der Datenbanken eines MySQL-Servers spuckt der Befehl

SHOW DATABASES;

aus, währen die vorhandenen Tabellen einer Datenbank mit dem Befehl

SHOW TABLES IN <datenbankname>;

ermittelt werden können. Wahlweise kann an letzteren auch noch eine LIKE-Bedingung angehängt werden.

Alternativ zu den oben genannten Befehlen kann auch die Datenbank “information_schema” befragt werden. So liefert ein

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA;

ebenfalls eine Liste der Datenbanken, während man die Tabellen einer Datenbank mittels

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='<datenbankname>';

ermitteln kann.


MySQL AUTOINCREMENT nachjustieren

6. Oktober 2009 · Programmierung · andreas · Kein Kommentar

Ab und an kann es passieren, daß sich MySQL beim AUTOINCREMENT verschluckt und versucht, einen Wert anzulegen, der bereits existiert.

Zur Fehlerbehebung gilt es, den aktuellen AUTOINCREMENT-Wert zu ermitteln, der nach dem Ausführen von

mysql> SHOW TABLE STATUS FROM <datenbank> WHERE Name = '<tabelle>';

in der Spalte ‘Auto_increment’ zu finden ist. Anschließend kann mittels

mysql> ALTER TABLE <tabelle> AUTO_INCREMENT = <wert>;

ein neuer Startwert gesetzt werden.