Programmierung

Groß- und Kleinschreibung bei SQLite

20. März 2011 · Programmierung · andreas · Kein Kommentar

Eine der Stolperfallen beim Wechsel zwischen MySQL und SQLite ist, daß SQLite in der Standardeinstellung z.B. bei SELECT-Statements zwischen Groß- und Kleinschreibung unterscheidet. Ein

SELECT * FROM meinetabelle WHERE meinfeld = 'test';

wird zwar eine Zeile mit meinfeld = ’test’ finden, für eine vorhandene Zeile mit meinfeld = ‘Test’ aber kein Ergebnis zurückliefern. Möchte man das SELECT ohne Berücksichtigung von Groß - und Kleinschreibung durchführen, so kann dies durch das Anhängen von ‘COLLATE NOCASE’ erfolgen, also

SELECT * FROM meinetabelle WHERE meinfeld = 'test' COLLATE NOCASE;

womit auch ‘Test’, ’tEst’, ‘TEST’ und noch ein paar andere Schreibweisen gefunden werden.

Möchte man das Verhalten für einzelne Tabellen von Anfang an umstellen, so kann ‘COLLATE NOCASE’ auch entweder direkt bei der Spaltendefinition oder beim Erzeugen eines Indexes angegeben werden.


CPAN mit ActivePerl

09. 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

04. 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.