rss
twitter
  •  

Zend Framework 2 – Sql\Select mit AND und OR

| Posted in Entwicklung |

0

Bei der Verbindung mehrerer Suchbedingungen ist die Reihenfolge der Operatoren wie AND oder OR entscheidend. Daher werden zusammengesetzte Suchbedingungen in Klammern gesetzt, um die Prioritäten deutlich zu machen.

Im Zend Framework 2 lässt sich das mit Zend\Db\Sql\Select folgendermaßen bewerkstelligen:

$sql = new Sql($adapter);

$select = $sql->select()
              ->from('table1');

$select->where
       ->nest
       ->equalTo('col1', 'Foo')
       ->or
       ->equalTo('col2', 'Bar')
       ->unnest
       ->and
       ->equalTo('col3', 'Foo Bar');

Der generierte SQL-String würde dann so aussehen:

SELECT * FROM table1 WHERE (col1 = 'Foo' OR col2 = 'Bar') AND col3 = 'Foo Bar';

 

SQL – Duplikate finden und löschen

| Posted in Technik |

20

Hin und wieder ist man mit doppelten Einträgen in einer Datenbank und dem Problem der Beseitigung konfrontiert. Nachfolgend zeige ich einen Weg, wie sich per SQL Duplikate effektiv finden und entfernen lassen.

Meine Test-Tabelle ist eine einfache Adresstabelle mit etwas über 400.000 Datensätzen und etlichen Duplikaten.

Der übliche Tipp zum Auffinden von Duplikaten mit Hilfe von GROUP BY und HAVING COUNT(*)>1 ist aber in meinen Augen sehr unpraktisch, wie die folgende Abbildung verdeutlicht.

Duplikate finden - Variante 1

Nicht wirklich praktikabel…

Viel anzufangen ist mit diesem Ergebnis nicht. Wir wissen jetzt zwar, daß wir doppelte Einträge in der Tabelle haben, aber das wußten wir vorher ja auch schon. Ein weiterer Nachteil dieser Abfrage ist die schlechte Performance im Vergleich zur nachfolgend vorgestellten Lösung.

Die wesentlich elegantere Variante ist die Verwendung einer sogenannten Correlated Subquery. Hinter dieser Art der Abfrage verbirgt sich ein indirekter Self-Join, da ein und dieselbe Tabelle in zwei miteinander in Wechselwirkung stehenden Abfragen gemeinsam verwendet wird. Über eine Correlated Subquery kann ich nun also alle doppelten (oder auch mehrfach vorkommenden) Datensätze mit jeweils einer einzigen SQL-Anweisung anzeigen bzw. löschen.

Mit der folgenden Abfrage lasse ich mir alle Datensätze anzeigen, in denen Vorwahl und Telefonnummer doppelt vorkommen.

SELECT Id, Vorname, Nachname, Strasse, PLZ, Ort, Vorwahl, Telefon
FROM testdat
WHERE EXISTS (
SELECT Id FROM testdat Dup WHERE testdat.Vorwahl = Dup.Vorwahl AND testdat.Telefon = Dup.Telefon AND testdat.Id <> Dup.Id)
ORDER BY Nachname;

Wie die nächste Abbildung zeigt, sind die gelieferten Informationen hier wesentlich ausführlicher.

aa

…schon besser!

Auf gleiche Weise kann ich nun auch die vorhandenen Duplikate aus der Tabelle löschen:

DELETE FROM testdat
WHERE EXISTS (
SELECT Id FROM testdat Dup WHERE testdat.Vorwahl = Dup.Vorwahl AND testdat.Telefon = Dup.Telefon AND testdat.Id < Dup.Id);

Damit werden nun alle Duplikate mit der kleineren Id gelöscht.

Blackberry Enterprise-Aktivierung nach Server-Crash

| Posted in Technik |

0

Wer schon einmal das „Glück“ hatte, einen Server tauschen zu müssen, auf dem Exchange und der Blackberry Enterprise Server (BES) laufen, und nach dem Tausch Probleme hatte, die Blackberrys wieder zu aktivieren, findet in diesem Artikel möglicherweise die Lösung.

Problem: Nach einem Crash des Exchange-Servers, Austausch des Servers, Wiederherstellung und Zurückspielen der Datensicherung klappt die (erneute) Blackberry-Aktivierung für vorhandene Postfächer nicht.

Im Blackberry Administration Service steht der Status für die entsprechenden User auf Initializing.

Das ALRT-Log enthält folgende Meldungen:

(AFFF4F29) -> {users email address} MAPIMailbox::CheckSearchCriteria - GetSearchCriteria (0x80040102) failed
(AFFF4F29) -> {users email address} MAPIMailbox::CheckMsgOnDeviceSearchCriteria - GetSearchCriteria (0x80040102) failed
(AFFF4EB8) -> OpenDatabase() failed for usernamee
(AFFF4EBA) -> User username not started
(6FFFC39F) -> 1 user(s) failed to initialize

Das MAGT-Log enthält außerdem diese Meldungen:

Starting handheld for username

[40704] (06/27 14:41:42.609):{0x258C} MAPIMailbox::MAPIMailbox(2) ServerDN= …
[40739] (06/27 14:41:42.609):{0x258C} MAPIMailbox::MAPIMailbox(2) - ResolveName[1] success for DisplayName= ...

[40204] (06/27 14:41:42.609):{0x258C} MailboxManager::GetMailboxSession - Using MAPI profile 'besadmin'

[40430] (06/27 14:41:42.609):{0x258C} {email address} MAPIMailbox::MAPIMailbox(2) - Mailbox opened on session 0x013dbd08

[40153] (06/27 14:41:42.609):{0x258C} PMDatabase::OpenNamedFolder: opening existing folder 'BlackBerryHandheldInfo'

[40155] (06/27 14:41:42.609):{0x258C} PMDatabase::OpenNamedFolder: opened an existing folder 'BlackBerryHandheldInfo'

[40158] (06/27 14:41:42.609):{0x258C} Pager::OpenClientDatabase: invalid number of messages in client folder , num msg = 4

[20152] (06/27 14:41:42.609):{0x258C} OpenDatabase() failed for username

[40205] (06/27 14:41:42.609):{0x258C} MailboxManager::CloseMailboxSession - closing session

[20154] (06/27 14:41:42.609):{0x258C} User username not started

Ursache: Im Postfach des Benutzers auf dem Exchange werden bei der Aktivierung für Blackberry versteckte Ordner angelegt (siehe Screenshot).

Blackberry - Versteckte Verzeichnisse

Versteckte Verzeichnisse in Blackberry-aktivierten Mailboxen

Der Ordner BlackBerryHandheldInfo verursacht in diesem Fall das Problem. Normalerweise wird dieser Ordner wohl entfernt, wenn ein Benutzer vom BES entfernt wird. In meinem Fall sind dieser Ordner bzw. die darin enthaltenen Informationen beim Zurückspielen der Datensicherung offensichtlich beschädigt worden.

Lösungsmöglichkeit 1: Der entsprechende Benutzer wird vom BES entfernt und neu hinzugefügt (hat in meinem Fall nichts gebracht).

Lösungsmöglichgeit 2: Mit einem Tool namens DBCLEAN.EXE können diese Informationen entfernt werden (hat bei mir auch nicht funktioniert).

Lösungsmöglichkeit 3: Entfernen des Ordners mit dem Microsoft Exchange MAPI Editor (MFCMAPI). Mit diesem Tool können Inhalte von Exchange direkt per MAPI verändert werden.

Lösungsmöglichkeit 4: Die Postfächer der betroffenen Benutzer mit Outlook exportieren, die Postfächer im Exchange löschen und neu anlegen und per Outlook wieder importieren. Zu beachten ist hierbei allerdings, dass beim Löschen des Postfachs mit Hilfe der Exchange-Verwaltungskonsole (ab Exchange 2007) auch gleich der Benutzer mitgelöscht wird. Besser ist es hier, das Postfach vom Benutzer zu trennen und mit Hilfe von Remove-Mailbox in der Exchange Verwaltungsshell zu löschen. Eine ausführliche Beschreibung von Remove-Mailbox ist in der Technet Lib von Microsoft zu finden.

Der Nachteil dieser Lösung: Bei großen Postfächern mit mehreren Gigabyte pro Postfach wird eine derartige Aktion zu einer absoluten Geduldsprobe. Vor allem bei der Kombination aus großem Postfach und Outlook 2010, sind Abstürze mitten im Import/Export-Vorgang nicht ausgeschlossen.

Lösungsmöglichkeit 5: Auch hier werden zunächst die betroffenen Postfächer vom Exchange gelöscht und neu angelegt und danach mit Hilfe der Datensicherung wieder mit Daten bestückt, wobei der Ordner BlackBerryHandheldInfo explizit ausgeklammert wird. Voraussetzung ist allerdings eine Datensicherung mit der Möglichkeit der Wiederherstellung auf Mailbox-Ebene, wie z. Bsp. Symantec Backup mit Exchange Agent. Außerdem sollte mach noch prüfen, welche Daten seit der letzten Sicherung geändert wurden und diese ggf. nochmal getrennt sichern. Diese Lösung hat bei mir letztendlich zum Erfolg geführt.

Nächstes Mac-Office: Outlook ersetzt Entourage

| Posted in Mac OS X |

0

Microsoft hat gestern bekannt gegeben, daß die nächste Version von Office:mac wieder Outlook statt Entourage enthalten wird. Dieser Wechsel zielt wohl vor allem auf Unternehmenskunden ab, da unter anderem auch die Exchange-Anbindung verbessert werden soll.

Zu den weiteren Neuerungen zählen unter anderem:

  • Cocoa – Outlook für Mac soll auf Cocoa basieren und damit eine bessere Integration in Mac OS bieten.
  • Neue Datenbank – die Grundlage für die Datenhaltung soll eine neue und schnelle Datei-basierte Datenbank sein, die unter anderem die Datensicherung mit Time Machine und die Spotlight-Suche unterstützt.
  • Management von Informationsrechten – kritische Informationen sollen sich besser vor unberechtigten Zugriffen schützen lassen.

Obwohl ich mich schnell an Entourage gewöhnt habe und einige Funktionen, wie die Projektverwaltung, My Day oder den integrierten Newsreader sogar besser finde als im Original, finde ich das insgesamt ein sehr gute Entscheidung und freue mich schon auf das Erscheinen des neuen Office Pakets. Man könnte diese Entscheidung allerdings auch als Antwort auf die verbesserte Exchange-Unterstützung die Apples neueste Mac OS X – Version bieten soll, die mitte September veröffentlicht werden soll.

Einen offiziellen Erscheinungstermin für das neue Office:mac hat Microsoft bisher leider nicht genannt, aber dieser wird wohl nicht vor Sommer 2010 liegen.

Mac OS X 10.5.8 Update

| Posted in Mac OS X |

0

Kurz vor dem Erscheinen von Mac OS X Snow Leopard bringt Apple nun also noch ein Update für Mac OS X Leopard (10.5) heraus.

Obwohl alle Aktualisierungen (inkl. 10.5.7), die seit Beginn meines Hackintosh-Experiments erschienen sind, weitestgehend problemlos verlaufen sind, sind mir Updates unter Mac OS immer noch immer etwas unheimlich.

Da mein Hackintosh in den letzten Monaten zu meinem hauptsächlichen Arbeitsrechner geworden ist, mag ich das Risiko, daß er nach dem Update nicht mehr wie gewünscht funktioniert, gar nicht eingehen. Der Snow Leopard soll ja ohnehin im September veröffentlicht werden. Bis dahin lasse ich meinen Hackintosh mit 10.5.7 weiter laufen.

Exchange mit Entourage via Outlook Web Access

| Posted in Mac OS X |

0

Hier mal eine kleine Anleitung, wie man mit Entourage 2008 über Outlook Web Access von außen auf sein Exchange-Postfach zugreifen kann:

Zur Einrichtung des Kontos benötigt man die Adresse des OWA-Servers, die E-Mailadresse, Konto-ID (Benutzername), die Domäne, in der sich das Exchange-Konto befindet und sein Paßwort.

Als erstes sollte man prüfen, ob der Zugriff auf den Exchange Server per Browser möglich ist. Die Adresse von Outlook Web Access lautet üblicherweise in etwa https://mail.domain.de/exchange. Kann man sich über diese Adresse erfolgreich anmelden kann es mit der Einrichtung des Exchange-Kontos losgehen.

Dazu öffnet man in Entourage die Kontoeinstellungen und erstellt ein neues Konto und wählt Konto manuell konfigurieren aus. In der folgenden Auswahl wählt man unter Kontotyp Exchange.

Im nächsten Fenster trägt man unter Kontoname einen Namen für dieses Konto ein. Unter Persönliche Informationen werden Name und E-Mailadresse eingetragen. Als nächstes gibt man unter Meine Kontoinformationen Konto-ID, Domäne und Paßwort ein. Zum Schluß muß unter Serverdaten noch die Adresse des OWA-Servers eingetragen werden. Aus Sicherheitsgründen sollte der Zugriff über OWA immer über eine sichere Verbindung laufen (https). Dazu muss bei Der DAV-Dienst erfordert eine sichere Verbindung (SSL) noch ein Haken gesetzt werden.

Hat man alle Daten eingegeben und mit Ok bestätigt, sollte jetzt das Herunterladen des Exchange-Postfachs beginnen.

Office 2008 für Mac

| Posted in Allgemein, Mac OS X |

0

Zwei Monate sind jetzt vergangen und ich bin nach wie vor glücklich mit meinem Hackintosh. Trotzdem habe ich bei meiner täglichen Arbeit festgestellt, daß ich so ganz nicht auf gewohntes verzichten kann und will.

Da ich viel von zu Hause arbeite, muss ich auch täglich auf meine E-Mails und meinen Kalender im Büro zugreifen. Hier machte sich das Fehlen von Outlook erheblich bemerkbar, über welches ich sonst auf unseren Exchange im Büro zugegriffen habe. Outlook Web Access funktioniert zwar, ist auf Dauer aber keine praktikable Lösung. Dies nahm ich zum Anlass, mir einmal Office 2008 für Mac anzusehen.

Mal abgesehen davon, daß die Mac-Office-Programme, nach meinem Empfinden, nicht so recht in die Mac-Oberfläche passen, verrichten Sie Ihren Dienst, wie ich es von den Windowsversionen gewohnt bin. Während Word, Excel und Powerpoint dabei relativ unspektakulär daherkamen, war ich vom Outlook-Ersatz Entourage ziemlich begeistert.

Entourage sieht an sich zwar grottenschlecht aus, aber hier haben mich einige Funktionen überzeugt. So war die Verbindung zu unserem Exchange innerhalb von 2 Minuten eingerichtet, innerhalb von 15 Minuten hatte ich mein komplettes Exchange-Postfach auf meinem Rechner und das alles über HTTP ohne VPN oder sonstige „Handstände“.

Äußerst praktisch und gelungen finde ich die eingebaute Projektverwaltung, mit der sich Mails, Termine, Aufgaben, Kontakte und Dokumente als Projekt organisieren lassen. Auch das Tool My Day, als Übersicht für Aufgaben und Termine und als Erinnerungstool hat mir auf Anhieb gut gefallen. Quasi das Sahnehäubchen obendrauf ist der integrierte Newsreader.

Während sich Word, Excel und Co. problemlos durch Konkurrenzprodukte wie beispielsweise OpenOffice ersetzen lassen, ist Outlook bzw. Entourage für mich (und wahrscheinlich auch viele andere) ein unverzichtbares Tool.

Schade nur, daß Microsoft Windows-Benutzern Funktionen wie die Projektverwaltung, My Day oder den integrierten Newsclient vorenthält.

Erfahrungsbericht: Mac OS X auf einem Standard PC – Update II

| Posted in Allgemein, Mac OS X |

0

Gut 4 Wochen ist es her, seit ich mein Hackintosh-Experiment gestartet habe. In dieser Zeit habe ich eine Menge herum experimentiert, vor allem aber auch produktiv mit diesem System gearbeitet.

Obwohl ich absoluter Mac-Neuling bin, gab es fast nichts, was mir Schwierigkeiten bereitet hat. Das System arbeitet flüssig und schnell, tut was es soll und beschränkt sich auf das Wesentliche. Die einzigen Kritikpunkte, die ich bis jetzt habe, sind der Finder als Dateimanager und die Darstellung von Schriften.

Für jemanden wie mich, dessen Lieblingstool der Windows Explorer ist, bedeutet der Finder schon eine ziemliche Umstellung. Am meisten fehlt mir dabei die klassische Explorer-Ansicht die ich unter Windows gewohnt bin: links der Verzeichnisbaum, rechts die Verzeichnisse und Dateien. Auch das Löschen von Dateien oder Verzeichnissen mit Hilfe der Entfernen-Taste vermisse ich ziemlich. Es wird sicher noch seine Zeit brauchen, bis ich mich daran gewöhnt habe, möglicherweise gibt es aber auch hier noch Alternativen.

Auch mit der Darstellung der Schriften hab ich mich anfangs ziemlich schwer getan. Im Vergleich zu Windows kamen mir die Schriften unter Mac OS ziemlich fett vor, insbesondere dann, wenn die Schriftglättung eingeschaltet ist. Schaltet man die Glättung der Schriften allerdings aus, sehen diese grauenvoll und ausgefranst aus.

Offensichtlich hängt hier vieles aber vom verwendeten Monitor bzw. der Pixeldichte des Monitors ab. Der von mir ursprünglich benutzte Monitor war ein Samsung 22″-TFT (226bw) mit einer Auflösung von 1680 x 1050. Ich habe den dann mal gegen einen vorhandenen 21-Zöller von Samsung mit gleicher Auflösung getauscht, was eine kleine Verbesserung brachte, aber weit entfernt von optimal war.

Letztendlich habe ich mir einen 21.5″-TFT von HP (HP 2159m) zugelegt. Dieser hat eine Auflösung von 1920 x 1080 bei 21.5 Zoll. Das – zumindest für meinen Geschmack – schöne an diesem Monitor ist die HP BrightView Technik, also ein glänzendes Panel, welche die Farben noch wesentlich brillianter erscheinen läßt und das Apple-Feeling auch noch etwas steigert. 😉

Durch die hohe Auflösung von 1920 x 1080 Pixeln bei (nur) 21.5 Zoll hat der Monitor eine relativ hohe Pixeldichte (etwas über 102 ppi), was zu einer wesentlich besseren Anzeige der Schriften führt, als bei den anderen beiden genannten Modellen. Zum Vergleich: Bei einer Auflösung von 1650 x 1050 Pixeln beträgt die Pixeldichte auf einem 21-Zöller 94.34 ppi, auf einem 22-Zöller sogar nur 90 ppi.

Schriften erscheinen auf dem HP jetzt zwar immer noch kräftiger als unter Windows, mittlerweile hab ich mich daran aber gewöhnt.

Insgesamt habe ich mich sehr schnell in die neue Umgebung eingefunden. Vor allem aber die schicke Oberfläche bereitet mir jeden Tag aufs neue Freude. Mittlerweile möchte ich mein Mac OS gar nicht mehr missen, auch wenn es leider (noch) nicht auf einem echten Mac läuft.

Mein Fazit nach 4 Wochen

Sicherlich ist vieles jetzt noch neu und spannend, aber die vergangenen Wochen haben mich derart begeistert, daß ich wohl bei Mac OS bleiben werde. Für den Moment werde ich mich leider noch mit meinem Hackintosh begnügen müssen. Aber: Der Umstieg von Windows auf Mac ist für mich beschlossene Sache.

Mac OS X 10.5.7 Update II

| Posted in Mac OS X |

0

Nachdem das Update von 10.5.6 auf 10.5.7 auf meinem Test-PC doch relativ stressfrei gelaufen ist, hab ich mir mal mein Notebook vorgenommen. Auf die Freude über das erfolgreiche Update meines Testrechners folgte dann schnell die Ernüchterung.

Bis auf die Hardware waren Ausgangsbedingungen und Vorgehensweise die gleichen, wie auf meinem PC. Doch zu meiner großen Enttäuschung komme ich über den zweiten Neustart nach dem Update nicht hinaus. Der Bildschirm bleibt blau und der Schreibtisch will sich einfach nicht aufbauen. Interessanterweise scheint das System aber nicht abzustürzen, da Mausklicks bzw. Eingaben über die Tastatur erhebliche Festplattenaktivität zur Folge haben.

Inzwische hab ich vier Versuche hinter mir und bin keinen Schritt weiter. Ich bleibe bei meinem Laptop also vorerst auf 10.5.6, weitere Versuche werde ich hier wohl erstmal nicht unternehemen.

Ergo: Updates auf einem Hackintosh sind also doch nicht ganz so trivial wie nach der erfolgreichen Aktualisierung meines Test-PCs gedacht.

Mac OS X 10.5.7 Update

| Posted in Mac OS X |

0

Eine Woche Mac OS und schon trudelt das erste (offensichtlich) größere Update ein. Die Versionsnummer erhöht sich von 10.5.6 auf 10.5.7. Wenn ich das richtig verstehe, ist dieses Update etwa mit einem Service Pack unter Windows vergleichbar. Erstaunt hat mich hierbei die Größe des Updates, das in zwei Versionen geliefert wird. Eine Version aktualisiert lediglich Mac OS X 10.5.6 und ist rund 440 MB groß. Die zweite Version (Combo Update) aktualisiert die komplette Mac OS X 10.5 – Reihe und kommt mit stattlichen 730 MB daher. Ich dachte bisher immer, die Service Packs von Microsoft wären groß, aber es geht offensichtlich auch größer. Mal zum Vergleich: Windows XP SP3 kommt mit ca. 330 MB, SP2 für Vista mit 365 MB und selbst das SP2 für Windows Server 2003 ist mit knapp 400 MB relativ bescheiden.

Da mir leider jede Erfahrung mit Updates unter Mac OS (und dazu noch auf einem Nicht-Mac) fehlt, gleichzeitig aber einschlägige Erfahrungen mit Updates bzw. ServicePacks unter Windows vorhanden sind, stellt sich natürlich die Frage updaten oder warten.

Einigen Recherchen zufolge soll das Update auch auf einem Hackintosh „relativ“ problemlos laufen (natürlich in Abhängigkeit von verwendeter Hardware nebst den Treibern), wenn man eine Retail-Version installiert hat und ein paar Dinge beachtet bzw. in Kauf nimmt.

Im Groben werden in diversen Foren folgende Empfehlungen für die Aktualisierung eines Hackintosh gegeben:

  1. Datensicherung (die meisten empfehlen ein komplettes, bootbares Image der Installation zu erstellen)
  2. Zugriffsrechte der Installation prüfen/reparieren
  3. Update installieren und diverse Neustarts überstehen
  4. prüfen, was an Treibern noch bzw. nicht mehr funktioniert und ggf. beheben
  5. nochmals die Zugriffsrechte prüfen
  6. fertig

Da ich meinen Hackintosh trotz einer guten Woche produktiver Verwendung immer noch als Testgerät sehe, kann ich das Risiko aber ohne weiteres eingehen. Gesagt, getan: Zuerst noch kurz die Zugriffsrechte des Installationslaufwerks überprüft, die Softwareaktualisierung angemacht und das vorgeschlagene Update geladen und installiert. Nach zwei Neustarts lande ich schließlich wieder auf meiner Mac-Oberfläche. Außer dem jetzt nicht mehr funktionierenden Soundtreiber, kann ich keine offensichtlichen Fehler feststellen. Der Soundtreiber ist aber schnell wieder installiert und aktiviert und nach einer nochmaligen Reparatur der Zugriffsrechte habe ich ein funktionierendes und aktualisertes Mac OS. Ich bin begeistert.