Weblog

WindowsAzure: Enable SQL Azure

To enable SQL Azure for your web role you simply need to enhance the following settings in your configuration files:

ServiceDefinition.csdef

    <ConfigurationSettings>
      <Setting name="SqlAzureHost"/>
      <Setting name="SqlAzureUserName"/>
      <Setting name="SqlAzurePassword"/>
      <Setting name="SqlAzureDatabase"/>
      ...
    </ConfigurationSettings>

ServiceConfiguration.cscgf

    <ConfigurationSettings>
      <Setting name="SqlAzureHost" value="HOST_NAME.database.windows.net"/>
      <Setting name="SqlAzureUserName" value="USERNAME@HOST_NAME"/>
      <Setting name="SqlAzurePassword" value="PASSWORD"/>
      <Setting name="SqlAzureDatabase" value="DATABASE"/>
       ...
    </ConfigurationSettings>

The trick here is to add the server name behind the username.


PHP, RegExp: Parser um Keywords durch Links zu ersetzten

Für eine Internetseite war es notwendig, einen Glossar in die CMS-Texte einzubinden. Taucht also im Text ein Glossarbegriff auf, soll der Begriff zur Erklärung im Glossar verlinkt werden.

Folgendes Problem trat dabei auf:

Ich habe ein Glossar mit den Begriffen z.B.:

- intel pentium 4
- intel pentium
- intel

In einem Text in dem die Begriffe auftauchen, sollen diese nun ersetzt werden.

Aus

In meinen Rechner ist ein Intel Pentium 4 verbaut worden.

wird

In meinen Rechner ist ein <a href="/intel pentium 4">Intel Pentium 4</a>
verbaut worden.

Nun passiert es aber, wenn die Parser logik nicht richtig funktioniert, dass aus dem Text folgendes wird:

In meinen Rechner ist ein <a href="/intel pentium 4"><a href="/intel pentium">
<a href="/intel">Intel</a> Pentium</a> 4</a> verbaut worden.

Damit das nicht passiert, habe ich mir folgende Regular Expression in der Anwendung mit preg_replace einfallen lassen:

$text = preg_replace('|\b('.$begriff.')\b(?!\"*\>)
(?!(\<\/a\>))|i',
'<a href="/${1}">${1}</a>'), $text, 1);

Somit werden die Begriffe durch Links ersetzt, auch wenn sie so im Text auftauchen:

- intel.
- (intel)
- intel/amd
- “intel

Edit:
Es ist das Problem aufgetaucht, dass der Parser Probleme damit hat, wenn der Link mehrere Wörter enthält und diese zu dem noch in der Keyword-Liste auftauchen.

Folgender Code bereinigt das Problem und ist außerdem eine kürzere verbesserte Variante der alten Anweisung:

$text = preg_replace('~(<a[^>]*>(.*?)</a>|\b('.$needle.')\b)~i',
'<a href="/${1}">${1}</a>'), $text, 1);

PS: Danke an Mike, der in einem Blog-Artikel die wichtigsten Regular Expressions beschreibt, die ein Webprogrammierer immer zur Hand haben sollte.

Edit2:
Der obige Code war leider immer noch nicht perfekt, er hat nicht nur bei jedem Keyword sondern auch bei jedem Link gemached und ersetzt, was auch logisch ist, wegen dem ODER im RegEx.

Der neue Code löst das Problem mit Hilfe einer Callback-Funktion, somit kann man besser steuern, wann der gefundene String ersetzt werden soll und wann nicht:

$GLOBALS["key_count"] = false;
$text = preg_replace_callback("%(|<.*?>)|\b(".$needle.")\b%i",
create_function('$hit','
if ($hit[1] || $GLOBALS["key_count"]) return $hit[0];
else {
$GLOBALS["key_count"]=true;
return "".$hit[0]."";
}
'), $text);

Ich benutze die Funktion create_function, da es innerhalb einer Klasse irgendwie nicht möglich war eine Methode als Callback anzugeben, ich habe wirklich alles andere versucht. Einen Vorteil hat es allerdings, und zwar kann man mit create_function mehrere Parameter übergeben.

So was passiert nun? Wenn ein Link gefunden wird, gib ihn unverändert zurück. Wird das Keyword (außerhalb eines Links) gefunden, ersetzte es durch einen Link. Soweit funktionierte alles Perfekt, aber ich wollte, dass in einem Text jedes Keyword nur einmal ersetzt wird. Dafür ist der vierte Parameter der Funktion preg_replace_callback geeignet. Wenn ich dort eine 1 setzte, wird nur das erste Vorkommen ersetzt.

Problem: Durch das ODER im RegEx, matched er auch bei jedem Link, obwohl in diesem Fall ja nichts ersetzt wurde.

Lösung: Mit dem Setzten von globalen Variablen (s. $GLOBALS["key_count"]), kann man das Problem umgehen. Ist nicht die schönste Lösung, aber es funktiobniert.

Für Verbesserungsvorschläge bin ich jederzeit offen.


Die kostenlose Internet-Werkstatt

Eines Tages fing mein Auto (ein Peugeot) an Macken zu machen, was heißt, der Motor heulte im Standgas in regelmäßigen Abständen richtig auf, so wie es sich bei den Proleten mit den getunten 3er BMW’s an der Ampel anhört. Mit meinen alten Peugeot war das allerdings eine ziemlich peinliche Angelegenheit, aber verdammt, ich bin noch Student und habe somit kein Bares für den Autodoc.

MotorNaja jedenfalls, war ich der nach einiger Zeit dann doch der Meinung, dass mein Auto nicht wirklich Gesund sein kann. Also fuhr ich damit zur Werkstatt. Der Mechaniker schloss sein Meßgerät an, kappte die Batterie und drückte Schulterzuckend auf seiner Tastatur herum.
Nach einer halben Stunde ohne die merkwürdigen Symptome die die kleine an jeder Ampel aufwies, gab der Mechaniker auf, kassierte 10 Euro ab und entlies mich und das Auto in die intolerante Verkehrswelt. Aber er nuschelte immer wieder was von einem Stellmotor.

Kaum war ich wieder auf der Straße, fing es wieder an sobald ich vom Gas ging. Shit immernoch kaputt!

Am nächsten Tag dachte ich mir, hey das Internet weiß doch sonst immer alles, und gab fix bei “einer Suchmaschine” (ich mache keine Werbung) die Stichworte “peutgeot stellmotor problem” ein. Und siehe da, ich fand gleich mehrere Peugeot-Foren, in denen das Stellmotor-Problem rege analysiert und diskutiert wurde.

Neben den Vorschlägen Schrottplatz und neuer Stellmotor etc. was alles nicht in Frage kam, weil zu drastisch oder zu teuer, gab es auch noch den sehr einfachen Tipp Zündung 30 Sek. lang auf Stufe 1 dann das selbe auf Stufe 2 und dann den Motor 5 Minuten im Leerlauf laufen lassen.
Dieses Prozedere resettet angeblich den Stellmotor-Computer, welcher, aus welchem Grund auch immer, Fehleinstellungen hatte.

Und jubel freu, meine alte Karre schnurrt seit dem wieder wie ein Kätzchen. Danke Internet.
Ein neuer Stellmotor für über 200 Euro wäre auch die lösung des Mechaniker gewesen.


CSS: float soll nur innerhalb eines div bestehen

Ich hatte das Problem, dass sich ein float: left in einem div für eine horizontale Liste sich
blöderweise auch über das div hinaus auswirkte, was zur Folge hatte, dass alles was nach dem div kam weiterhin um das letzte Listenelement floss.

Nach langem Suchen fand ich die sehr einfache Lösung im Netz:
Man kann alle floats beenden in dem man am Ende einfach folgendes eingibt:

<br clear=”all” />


Ning

Gerade war ich dabei eine Seite zusammen zu bauen, für alle meine Freunde hier aus der Gegend. Viele von uns sind weggezogen um zu studieren und keiner ist mehr auf dem Laufenden. Außerdem ist es immer wieder schwierig die Wochenendplanung, Urlaube, oder sonstiges zu organisieren. Nach diesen Veranstalltungen gibt es immer jede Menge Fotos und Videos. Hierbei ist das Problem, dass keiner einen Foto- oder Video-Speicherplatz im Web kaufen will. Ein Flickr Account für alle ist auch doof (vorallem die Einbindung in die Homepage).

So nun hatte ich schon einen WordPress-Blog mit sämtlichen Plugins fertiggestellt. Aber gestern stieß ich auf diesen Beitrag im VisualBlog.

Ning hatte ich zwar schon vor einigen Monaten entdeckt, aber der Nutzen war mir damals beim “Drübersurfen” nicht ganz klar. So vergaß ich Ning wieder. Aber heute finde ich es eine sehr gute Idee (und beiße mir wiedermal in den H****, weil ich nicht selbst auf sowas gekommen bin).

Schnell angemeldet, Design und Module ausgewält, zack fertig. Das ist auf den ersten Blick echt super einfach.
Das beste an Ning ist, dass es für die Community-Mitglieder kinderleicht ist, Blogeinträge zu schreiben oder Fotos und Videos hochzuladen. Und das alles kostenlos.

ABER dennoch fällt mir viel auf, was noch nicht so gut gelöst ist und besser gemacht werden könnte:

  • Die Werbung (adsense) rechts ist echt zu viel, unten am Footer wäre sie ok
  • Blogeinträge können nicht kategorisiert oder getaggt werden
  • Mitgliederbeziehungen und Rechtemanagement ist nicht sehr durchsichtig und an vielen Stellen unklar (bei Blog, Minichat, Fotos etc.)
  • Man kann keine Bookmarks anlegen (ich finde das bei WordPresss eine gute Funktion)
  • Es gibt nur englische Seitenvorlagen
  • Das Photomanagement ist sehr mühseelig (Upload, Bestichwortung nachträglich bearbeiten und Verschieben)
  • Und zu guter Letzt, die Seite ist irrsinng langsam, egal zu wechler Tages- und Nachtzeit

Trotz dieser vielen negativen Kleinigkeiten finde Ning ein gute Lösung für unsere Bedürfnisse. Und ich hoffe einfach mal, dass die Entwickler von Ning diese Wermutstropfen auf Grund der großen positiven Resonanz aus der Bloggerszene nach und nach ausbessern und perfektionieren werden.

Zur Frage, warum soll ich ein eigenes Social-Network einrichten wo es doch schon studivz, xing & Co. gibt?
Ich finde studivz& Co. einen Tick zu öffentlich, man erhält viel zu viele Freundschaftangebote, die man eigtlich garnicht eingehen will, aber der höflichkeithalber das Angebot annimmt. Ich meine die Kontakte sind zum Teil einfach über zu viele Ecken entstanden. Fotos, Persönliche daten usw. sind dann für viel zu viele Personen einsehbar.

Ich denke auch nicht, dass es ausarten wird, und jeder für die gleichen Personen-Gruppen eine eigenes Network einrichtet, denn für die meisten (Otto-Normal-Surfer) ist das ganze immer noch zu kompliziert und sind froh wenn schon jemand im Dorf, Club oder Stadt-Viertel ein Network eingerichtet hat.


Copyright © 2007-2012 iTopia. All rights reserved.
Jarrah theme by Templates Next | Powered by WordPress