Montag, 5. März 2012

No reference from table X to table Y

Referenzen der Datenbank im Zend Framework über das Model abzubilden ist ja eine gute Idee. Schnell ist das entsprechende Skelett des Model erstellt und die Doku lehrt uns: "Definier die $_referenceMap und alles wird gut.". Dachte ich auch ... aber

Wer das schon einmal ausprobiert hat, der weiß: Im aber steckt der Wurm im Apfel bzw. die Titelmeldung auf dem Schirm. Aber langsam und zum mitmachen:

Gegeben sind 2 Datenbanktabellen "news" und "author", news hat u.a. ein Feld authorId. Den Rest könnt ihr euch vorstellen.

class myApp_Model_News extends Zend_Db_Table_Abstract {

 protected $_name  = 'news';
 protected $_primary = 'id';

 protected $_referenceMap = array(

  'TrouperId' => array(

   'columns' => array('author_id'),
   'refTableClass' => 'author',
   'refColumns' => array('id')

  )

 );

}

Instinktiv benutzt man das und hier meldet sich auch gleich eine Fehlermeldung:
"No reference from table myApp_Model_News to table myApp_Model_Author"
Aber warum? Wir haben doch alles richtig gemacht.

Prinzipiell ja, laut Doku, aber nicht laut programmiertem Code, dafür muss man nämlich nicht den Tabellennamen in die $_referenceMap eintragen, sondern den Namen des Models!!!
Also so:
class myApp_Model_News extends Zend_Db_Table_Abstract {

 protected $_name  = 'news';
 protected $_primary = 'id';

 protected $_referenceMap = array(

  'TrouperId' => array(

   'columns' => array('author_id'),
   'refTableClass' => 'myApp_Model_Author',
   'refColumns' => array('id')

  )

 );

}
Besonders mal auf "refTableClass" sehen, dort steht nun nicht mehr der Tabellenname wie er in der Datenbank steht, sondern der Name des Models, dass für diese Tabelle zuständig ist.
Und nun funktioniert das ganze auch mit
$news = new myApp_Model_News();
$myNews = $news->fetchRow();
$newsauthor = $myNews->findDependentRowset('myApp_Model_Author');

Sonntag, 29. Januar 2012

deCHK 2.0.1 ist erschienen

deCHK Version 2.0.1 ist erschienen.

deCHK beherrscht nun die beiden Uniplot Dateitypen .nc und .ipw. Damit beherrscht das Tool nun 50 Dateitypen, nachlesbar auf der Homepage.

Zur Homepage und zum Download: http://www.techcrawler.de/dechk/

Donnerstag, 12. Januar 2012

Samsung Wave s8500 (BadaOS) mit Windows Live synchronisieren

Wer auch immer wie ich ein Samsung Wave 8500 mit BadaOS und ein Windows Live Mailkonto (früher Hotmail) hat und gern die Mails mobil lesen möchte, seine Termine usw. auch im Handy haben will usw. kann das sehr komfortabel machen. Am Ende hat es was von einem Blackberry "Lite", aber der Reihe nach:

  1. Die App "Meine Konten" öffnen
  2. Dort "Konto hinzufügen"
  3. "Exchange ActiveSync"
  4. "Mailadresse" eingeben, z.B. "xyz@live.de"
  5. "Benutzername" ist ebenfalls die Mailadresse
  6. "Passwort" solltet ihr natürlich auch wissen
  7. "Domäne" leer lassen
  8. "Weiter"
  9. "Server-URL" ist "m.hotmail.com"
  10. "SSL verwenden" -> Ja
  11. Fertig.
  12. Die restlichen Einstellungen nehmt ihr nach euren persönlichen Vorlieben vor.
Nun könnt ihr mobil Mails lesen, antworten, verschieben, löschen usw. Ebenso die Kontakte und Termine synchronisieren und vieles mehr. Der neue Live-Dienst von Microsoft ist wirklich nicht schlecht und leistet vergleichbar mehr wie z.B. GMX und konsorten (dort muss ich meist für IMAP-ähnliche Funktionen Geld bezahlen).

Donnerstag, 22. Dezember 2011

$_GET in Codeigniter nutzen

Ganz kurz: Bei Codeigniter auf URL-Parameter mit $_GET zugreifen:

parse_str(substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],'?')+1,strlen($_SERVER['REQUEST_URI'])-strpos($_SERVER['REQUEST_URI'],'?')),$_GET);

Dann kann auch $_GET benutzt werden

Dienstag, 22. November 2011

SVN 1.7 mit Zend Studio 9

Zend Studio 9 (und meines Wissen die Version 8 auch) beherrscht das noch recht neue SVN 1.7 als einziges nicht. Netbeans und PHPStorm unterstützen das ganze bereits ... eclipse, auf dem das Zend Studio basiert, bekommt den offiziellen Support wohl nicht mehr dieses Jahr.

Dass wir Entwickler nicht so lange warten können und wollen liegt auf der Hand, hier also meine Schritt-für-Schritt Anleitung für SVN 1.7+ und Zend Studio 9:

  1. Welcome Screen öffnen ("Help" -> "Welcome")
  2. Dort dann rechts "SVN" abwählen, IDE neu starten lassen
  3. "Help" -> "Install new Software"
  4. "Work with:" eintragen "http://subclipse.tigris.org/update_1.8.x"
  5. Mindestens die "required" markierten anhaken
  6. Mit "Finish" installieren, den Lizenzen entsprechend zustimmen, usw.
  7. IDE neustarten
  8. Fertig
Nun habt ihr volle SVN 1.7+ Support in Zend Studio und könnt wieder mit den Repos arbeiten wie gewohnt.

Viel Erfolg...

Freitag, 18. November 2011

Mehrzeiliger Text mit Zend_Pdf

Mehrzeiligen Text erstellen muss man auch mit Zend_Pdf noch manuell ... leider
Ich möchte an dieser Stelle allen, die mehrzeiligen Text in einem PDF mit Hilfe von Zend_Pdf ausgeben wollen, einen Denkanstoß geben.

Ich habe das Problem wie folgt gelöst:
  1. Verfügbare Breite ermitteln. Diese Breite in einer Variable merken.
  2. Verfügbare Zeilen ermitteln. Diese Info auch speichern, da das für den späteren Seitenumbruch nötig wird. Nicht, dass euer Text plötzlich endet, nur weil die Seite zu Ende ist.
  3. Den Text mittels wordwrap umbrechen. 
  4. Diesen dann per explode in ein array bekommen.
  5. Das dann per foreach und array_shift solange ausgelesen wird, bis das Seitenende erreicht ist. 
  6. Dannach eine neue Seite beginnen und den Rest des arrays abarbeiten.
Ich hoffe, ich kann euch zumindest auf die richtige Spur bringen, dass das ganze gar nicht schwer ist. Am Ende könnt ihr beliebig großen Text in einem PDF darstellen und das sogar über mehrere Seiten.

Viel Erfolg.

Sonntag, 30. Oktober 2011

deCHK Version 2 ist da

Endlich. Ich freue mich, euch deCHK2 endlich doch noch vorstellen zu können.

Nachdem ich lange kein Delphi zur Verfügung hatte konnte ich leider nicht an dem Projekt weiter arbeiten, so dass viele Wünsche liegen bleiben mussten.

Letztlich habe ich mich dann doch daran gemacht, deCHK komplett in Lazarus neu zu schreiben. Lazarus ist eine freie IDE für Free-Pascal, ganz ähnlich Delphi. Da es kostenfrei ist kann ich auch deCHK weiterhin kostenfrei anbieten.

Wer deCHK noch nicht kennt: deCHK versucht, aus den CHK-Dateien von scandisk unter Windows wieder lesbare Dateien zu machen. Bei mir konnte ich meinen ganzen Familienfotos nach einem Festplattencrash wieder herstellen, dazu noch viele weitere Dateien, die andere Tools nicht wieder herstellen konnten. deCHK könnt ihr kostenfrei benutzen - über eine kleine Spende oder so würde ich mich natürlich trotzdem freuen, kommt alles der Familienkasse zugute ;-)

In der Version 2 ist nun der Support für Office 2007/2010 Dateien dabei sowie die lange gewünschte Unterstützung für mp4 Dateien. Insgesamt beherrscht deCHK nun 48 Dateitypen, diese sind:
3gp 7z ace avi bdsproj bmp cab chm class clp db dcu dfm (dll*) doc dsk dsm eps (exe*) fpx gif htm java jpg mid mp3 ocx odt pas pdf png ppt psd psp rar rtf tif ttf wav wri wpg xls zip
 Ich finde, deCHK sollte auf keinem USB Stick fehlen (die entpacke .exe nimmt nur 860kb ein).

Zur deCHK Homepage: http://www.techcrawler.de/dechk/
English Homepage: http://www.techcrawler.de/dechk/index_en.html

Mittwoch, 19. Oktober 2011

Netbeans und Subversion 1.7 zusammenarbeiten lassen

Du benutzt Netbeans mit SVN und erhälst die Fehlermeldung
"Please upgrade your Subversion client to use this working copy."
und nun kannst du nichts mehr mit dem SVN machen.

Kein Thema, besorg dir die aktuellen 1.7 command-line Clients (z.b. von Collab.net hier), stell Netbeans darauf ein ("Extras"->"Optionen"->"Verschiedenes"->"Versionsverwaltung"->"Subversion"->"Pfad zu SVN:")
Dann Netbeans schließen und mit folgenden Startparametern starten:
" -J-DsvnClientAdapterFactory=commandline"
also zum Beispiel:
"C:\Program Files\NetBeans 7.0.1\bin\netbeans.exe" -J-DsvnClientAdapterFactory=commandline

Dannach funktioniert wieder alles und wir hoffen auf baldiges update von Netbeans ;)

Mittwoch, 21. September 2011

Flattr Shirts werden verlost

Bei Skaverat könnt ihr T-Shirts von flattr gewinnen ... ihr müsst nur Eure Meinung zu dem Micropayment-Dienst loswerden und schon landet ihr in der Lostrommel.

Die Aktion geht noch knapp 2 Tage und es machen derzeit noch viel zu wenig Leute mit. Ich denke, ihr könnt mit wenig Aufwand einen wirklich "alltagstauglichen" Preis gewinnen, der auch offline und im "Real-Life" benutzbar ist ... worauf wartet ihr noch?

http://skaverat.net/allgemein/verlosung-tausche-flattr-t-shirts-gegen-meinung-zu-flattr.html

Montag, 19. September 2011

PHP-Snippet: stripArrayKey

Aus einem QueryString (z.B. dem $_GET) nicht gewollte Parameter löschen:

	function stripArrayKey($sInput, $arrKeysToStrip = array()) {

		if (count($arrKeysToStrip)<=0) {
			return $sInput;
		}

		$arrResult = array();
		parse_str($sInput, $arrResult);

		foreach ($arrKeysToStrip AS $keyName) {
			if (array_key_exists($keyName, $arrResult)) {
				unset($arrResult[$keyName]);
			}
		}

		return http_build_query($arrResult);
	}

Vorher:

param1=value&param2=otherValue&myParam=unwanted&param3=moreValue

return stripArrayKey($sQuerystring, array('myParam','param2'));

Nachher:

param1=value&param3=moreValue

Wahlweise auch gleich viele Parameter auf einen Rutsch.