Uninteressantes von einem Anwendungsentwickler aus Linse
 

Beiträge in der Kategorie "Programmieren"

 
Seite 1 von 4

[PHP] Mit foreach Arrays manipulieren

Kategorie "Programmieren" Programmieren  Verfasst am 17.08.2010 19:24 17.08.2010 19:24  0 Kommentare 0 Kommentare  

Gerade bei php.net gelesen: Man kann in einer foreach auch mit Referenzierung arbeiten. So kann man auch über eine foreach die Felder eines Arrays verändern.

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
unset($value);
?>

Das Snipsel ist dreister weise von php.net geklaut. :P

 

MySQL Dumpfiles verketten

Kategorie "Programmieren" Programmieren  Verfasst am 23.07.2010 23:21 23.07.2010 23:21  0 Kommentare 0 Kommentare  

Ein Datenbank Layout welches mit DBDesigner4 entwickelt wird, soll mit einigen Optionen importiert werden.

Da DBDesigner allerdings bei jedem Export die komplette SQL File überschreibt, müsste man bei jedem Export die Befehle erneut in das SQL File tippen. Hierfür stellt MySQL den Befehl source zur Verfügung.

Es lassen sich also über die MySQL Kommandozeile SQL Files importieren. So kann man auch mehrere Dumps miteinander verketten.

mydb_import.sql

drop database if exists mydb;
create database mydb;
use mydb;
SET foreign_key_checks = 0;

source mydbscheme.sql;

SET foreign_key_checks = 1;

mydbscheme.sql

CREATE TABLE groups (
  group_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  group_name INTEGER UNSIGNED NULL,
  group_description TEXT NULL,
  group_active ENUM('Y', 'N') NULL DEFAULT 'N',
  PRIMARY KEY(group_id)
)
TYPE=InnoDB;

Erspart eine Menge Zeit während der Entwicklung des Datenbank Layouts. ;)

 

HashMap - Das assoziative, dynamische Array in Java

Kategorie "Programmieren" Programmieren  Verfasst am 20.07.2010 16:28 20.07.2010 16:28  0 Kommentare 0 Kommentare  

Die HashMap aus Java ist vergleichbar mit einem normalen Array in PHP. Sie ist dynamisch in der Anzahl der Einträge und ist in der Lage assoziative Feldnamen zu nutzen. Man muss sich nur beim Index und beim Inhalt auf jeweils einen zentralen Datentyp festlegen.

http://snippets.sim4000.de/show/33/

Als alternative gibt es auch noch ArrayList. Ist an einigen Stellen bestimmt auch interessant. Hier hat man allerdings keine assoziativen Feldnamen. Aber immer noch ein Array mit dynamischer Länge. (via schafix)

http://snippets.sim4000.de/show/34/

Eine echt tolle Sache, wie ich finde. ;)

 

Eclipse und XML Dateien

Kategorie "Programmieren" Programmieren  Verfasst am 07.07.2010 09:56 07.07.2010 09:56  0 Kommentare 0 Kommentare  

Eclipse bietet Stndardmäßig für XML Dateien nur einen komischen "Editor", welcher die XML Datei als Baum darstellt. Man muss sich durch Ebenen und Attribute durchklicken. Alternativ gibt es dann nur noch den Schwarz-Weiß Editor ohne Vorkaufunktion.

Abhilfe schafft da das Eclipse Plugin Rinzo XML Editor. Das Plugin erweitert die Liste um einen Editor mit Syntax Highlighting und Vorkaufunktion.

Was will man mehr? ;)

Mal davon abgesehen das Netbeans viel besser ist. :P

 

Farbige Ausgaben auf der Linux Shell mit PHP

Kategorie "Programmieren" Programmieren  Verfasst am 20.06.2010 01:41 20.06.2010 01:41  0 Kommentare 0 Kommentare  

Die folgende Klasse ermöglicht recht simpel die Ausgabe von farbigen Text in einem Linux Terminal. Die Methoden der Klasse sind statisch. Die Erzeugung eines Objektes ist also nicht nötig.

Beispiel:

echo cmd_colors::bold( "black", "any text", "red" );

http://snippets.sim4000.de/show/27/

Have fun. ;)

 

PHP: Only variables should be passed by reference

Kategorie "Programmieren" Programmieren  Verfasst am 20.06.2010 01:17 20.06.2010 01:17  0 Kommentare 0 Kommentare  
Only variables should be passed by reference

Bei der Meldung handelt es sich um einen E_STRICT "Fehler". Also eine so genannte Laufzeit Notiz.

Der "Fehler" tritt immer dann auf, wenn man etwas anderes als eine Variable als Referenz an eine Funktion übergibt. Weiteres dazu auf php.net.

echo any_function($var, "foo", $bar=null);

Nein. Dieses Beispiel ist nicht von mir. So in der Art stand das in einer PEAR Klasse. Naja. Um diesen Fehler zu beheben, verlegt man die Deklaration von $bar einfach in eine eigene Zeile.

$bar = null;
echo any_function($var, "foo", $bar);

Schon hat der PHP Parser nichts mehr zu meckern. ;)

 

MySQL Groß- und Kleinschreibung

Kategorie "Programmieren" Programmieren  Verfasst am 05.06.2010 19:11 05.06.2010 19:11  0 Kommentare 0 Kommentare  

 Bei einem Projekt habe ich festgestellt das bei einem varchar gar nicht auf Groß- und Kleinschreibung geachtet wird. Definiert man Beispielsweise einen natürlichen Primärschlüssel und verwendet dabei MySQL und mysql jeweils als einen Schlüssel, wird es beim Anlegen von mysql Fehler hageln.

Wie man dies ändern kann, ist in der Dokumentation von MySQL beschrieben. Man muss nur eine spezielle Collation verwenden. Nutzt man normal latin1_general_ci, nutzt man in dem Fall einfach latin1_bin.

⇒ http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

Und schon sollte es Funktionieren. ;)

 

[PHP] Fehler Benutzerdefiniert abfangen

Kategorie "Programmieren" Programmieren  Verfasst am 30.05.2010 23:49 30.05.2010 23:49  0 Kommentare 0 Kommentare  

 In meinem neusten Projekt stand ich vor dem Problem, dass eine Klasse alle Fehler wie E_ERROR und E_WARNING abfangen sollte.

Die erste Idee ist natürlich die Funktion  set_error_handler(). Problem ist nur das damit nicht alle Fehler abgefangen werden können. Beispielsweise E_ERROR nicht.

Dies kann man mit den Funktionen  register_shutdown_function() und  error_get_last() umgehen. Man definiert einfach eine Funktion die bei dem Beenden des Scriptes aufgerufen wird. Nun prüft man innerhalb dieser Funktion ab, ob ein Fehler während der Ausführung aufgetreten ist. Ist dies der Fall, gibt man die Fehlermeldung aus.

http://snippets.sim4000.de/show/21/

Verwendet man nun noch ob_start() und ob_end_clean(), kann man bei einem Fehler eine saubere und evtl sogar schöne Fehlermeldung ausgeben und auch Emails verschicken oder Einträge im Log machen.

via insomanic.me.uk

 

MySQL und Referenzierung

Kategorie "Programmieren" Programmieren  Verfasst am 19.05.2010 13:51 19.05.2010 13:51  0 Kommentare 0 Kommentare  

 Bei einem größeren MySQL Projekt mit InnoDB und Referenzierung gab es einige Probleme, die ich hier einmal klären möchte. Vielleicht hilft es dem einen oder anderen ja weiter.

Zirkuläre Referenz

Diese Fehlermeldung warf mir DBDesigner4 an den Kopf, als ich versuchte den SQL Code zu exportieren. Dieser Fehler tritt auf wenn man den Haken Order Tables by Foreign Key drin lässt, und gleichzeitig zwei Tabellen hat die gegenseitig auf einander verweisen.

Circular Reference

Beim Export kann man dieses Problem durch das Entfernen des Hakens umgehen. Allerdings nicht beim Import in den MySQL Server. Dort würde immer die Meldung erscheinen, dass die Referenzierte Tabelle vermisst wird. Das kann man mit einem SQL Befehl aber auch umgehen.

SET foreign_key_checks = 0;

Dadurch wird die Überprüfung der Referenzen temporär deaktiviert und alle Tabellen können angelegt werden. Ist das Anlegen abgeschlossen, sollte dies unbedingt wieder aktiviert werden. Ansonsten können Inkonsistenzen in der Datenbank die Folge sein.

MySQL Error Number 1005 Can’t create table

Hier gibt es viele Ursachen. Eine Liste von Ursachen gibt es im Blog VerySimple (thx!). Die Fehlermeldung enthält immer eine errno. Diese Error-Nummer kann man mit folgendem Befehl "lesbar" machen:

perror 150

Unter Linux befindet sich das Programm in $PATH und kann direkt im Terminal ausgeführt werden. Unter Windows müsste man evtl erst in das bin/ - Verzeichnis von MySQL wechseln.

Der Fehlercode 150 erzeugt die Fehlermeldung Foreign key constraint is incorrectly formed. Diese wurde durch einen FK ausgelöst, der kein NULL zuließ. Kurz das NOT NULL aus dem SQL Code entfernt und schon ging es. :)

 

[PHP] Return einer Referenz auf eine Eigenschaft/Variable

Kategorie "Programmieren" Programmieren  Verfasst am 27.04.2010 12:22 27.04.2010 12:22  4 Kommentare 4 Kommentare  

Dieses kleine Beispiel zeigt, wie man eine Referenz auf eine Variable/Eigenschaft über eine Funktion zurück geben kann. Wichtig ist dabei das "&" vor dem Namen der Methode get().

class classfoo {
   private $var = "asdf";
 
   function &get() { return $this->var; }
   function mkecho() { var_dump($this->var); }
}

Im return von get() wird die Referenz auf die private Eigenschaft $var zurück gegeben. Wenn man also diesen Wert außerhalb der Klasse ändert, ist er auch innerhalb der Klasse geändert.

Man greift also von zwei verschiedenen Stellen auf den selben Speicher zu. Hier wird auch nicht auf private oder public geachtet. Das funktioniert immer.

Detaillierteres Beispiel: http://snippets.sim4000.de/show/17/

Seite 1 von 4

Tag Cloud

3D   Allgemein   Animation   Apache   Arbeit   Arch Linux   Asterix & Obelix   Bash   Bitlbee   Blog v2.0   Bluetooth   Bodenwerder   Bouncer (BNC)   Bundestagswahl 09   Bücher   CCC   Chromium   Comics   Computerspiele   Content Managment System   Cybton   DAU Alarm   DLRG   Datenbanken   Datenschutz   Debian   Deutsches Rotes Kreuz   Domains   EZFlash Vi   Eclipse   Eingabegeräte   Email   Essen   Fanartikel   Feiertage   Fernsehn   Firefox   Flash   Flattr   Fotografie   Fun   Fußball   GEZ   Gameboy Advance   Games   Gnome   Grafiken   Grand Theft Auto IV   HTML   Hardware   ICQ   Internet   Internet Explorer   Internet Relay Chat (IRC)   Internetzensur   Java   JavaScript   JeeGeek   Justiz   Kino   Konzert   Kultur   Kumpels   Legend of Zelda   Linux   Marilyn Manson   Mozilla   Musik   MySQL   NPD   Natur   Netzwerk   Nintendo   Nintendo DS   Nintendo DSi   Notebook   OpenOffice   OpenOffice Impress   PC Hardware   PHP   Patentrecht   Pidgin   Piratenpartei   Politik   Privat   Programmieren   Projekte   Rammstein   SSH   SVN   Schlüsselband   Schule   Server   Serversicherheit   Sesamstraße   Shellscripting   Shopping   Shortlinker   Skype   Software   Spam   Spenden   Spongebob   Straßenverkehr   Support   Technik   Textverarbeitung   Thunderbird   USA   Ubuntu   Underground Shopping   Urheberrecht   Urlaub   VMWare   VNC   Vereine   Viren und andere Schädlinge   Virtual Box   Vorratsdatenspeicherung   Wahlen   Webspace   Wehrdienst   Weserbergland   Willkommen   Windows   Windows 7   X11   XML   Zensur   bind9   netcup   openSSL   sim4000.de   vim   Überwachung   Überwachungsstaat   üäx.de   1337