MNH Gedankensprudel

nicht nur ein stilles Wasser

MySQLTabelle anhand des Spaltennamens finden

18.09.13 (Allgemein)

Manchmal kommt man auf die seltsamsten Ideen z.B. das es möglich sein müsste zu einer Spalte die Tabelle zu finden.

So brauchte ich z.b. Den Namen zu einer Spalte einer unbekannten Tabelle beim Debuggen eines fremden Projekt.

Nach etwas googlen ist folgender Code dabei raus gekommen:

SELECT c.TABLE_SCHEMA AS Datenbank, c.TABLE_NAME AS Tabellenname, c.COLUMN_NAME AS Spalte
FROM INFORMATION_SCHEMA.TABLES t
JOIN INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_CATALOG = c.TABLE_CATALOG
AND t.TABLE_SCHEMA = c.TABLE_SCHEMA
AND t.TABLE_NAME = c.TABLE_NAME
WHERE COLUMN_NAME = "YOURSEARCHCOLUMN"
LIMIT 0 , 30

Dabei ist bei COLUMN_NAME  der Wert „YOURSEARCHCOLUMN“ durch den Gewünschten Spaltennamen zu ersetzen.

Keine Kommentare »

Kostenlos profesionell im Web Teil 1

03.06.13 (Allgemein)

Teil 1 Hostersuche

Heute widme ich mich mal den Einsteigern unter euch häufig werde ich gefragt wie man seine eigen Homepage erstellt was ist des beste Hoster, muss ich wirklich sooo viel zahlen?

Als erstes die Letzte Frage der Rest Kommt in einen Anderen Teil:

….muss ich wirklich sooo viel zahlen?

Nein!
Natürlich sind „die Größen nicht die Günstigsten“ jahrelange Erfahrung und eine gefestigte Marktposition erlauben 1&1, Strato und Co dieses Preisniveau. Adlerdings gibt es auch kleine Hoster bei denen der Service weniger kostet oder gar Kostenlos ist.

Eine Kleine Auswahl liste ich nun hier auf:

  • bplaced.net  Kostenloser Webspace mit FTP, MYSQL, und PHP immer in sehr aktueller Form.

– Keine Sockets (braucht man um Verbindung zu anderen Seiten aufzubauen z.B. für Updates).
+ Deutsche Seite deutscher Support.
+ Software immer aktuell.
# Wenig Werbung nur im Login und auf den Fehlerseiten.

Keine Kommentare »

Mehrzeiliges Suchen und ersetzen in Projekten mit Notepad++

21.01.13 (Allgemein)

 

Fangen wir also an:

Man öffne eine Datei mit dem Störenden Inhalt in Notepad++ …

Mehrzeiliges Suchen und ersetzen in Projekten

und markiere nun den Absatz der der uns stört:

Mehrzeiliges Suchen und ersetzen in Projekten Schritt 2

Danach verwendet man das suchen und ersetzen Tool am einfachsten durch die Tastenkombination [STRG] + [H].

Nun sehen wir unseren selektierten Text in der “Suche nach” Textbox.

Mehrzeiliges Suchen und ersetzen in Projekten Schritt 3

Jetzt wählen wir noch den Tab “In Dateien Suchen” und klicken als
erstes auf “Ordner der akt. Datei” und da wir ja das gesamte Projekt
durchsuchen möchten auf “Unterverzeichnisse”.

Selbstverständlich könnt ihr den passenden Pfad auch manuell heraussuchen.

Den Suchmodus stellt man am besten auf “Normal” damit keine ungewollten Ersetzungen stattfinden.

Mehrzeiliges Suchen und ersetzen in Projekten Schritt 4

Und am ende habt ihr erfolgreich euer Projekt von den ungewollten
Einträgen befreit und das trotz Leerzeichen Tabs und Zeilenumbrüche.

Beachtet aber bitte das immer genau dieser String gesucht
wird, sprich es klappt nicht wenn ein Leerzeichen mehr oder weniger oder
sonst eine Kleinigkeit anders ist!

Mehrzeiliges Suchen und ersetzen in Projekten Schritt 5

 

1 Kommentar »

PHP wir spielen mit Referenzen

11.02.12 (Tutorial´s)

Wer mal mit C oder C++ gearbeitet hat kennt ein ähnliches Modell bereits die Pointer. Allerdings da PHP ja eine Scriptsprache ist stellt es keine Speicheradressen zur Verfügung.

Dafür haben wir aber Referenzen die zwar keinen Performance voreilt verschaffen dafür aber einen ähnliche Möglichkeiten zur Manipulation der Variablen bietet (von der Arithmetik mal abgesehen).

ein kleines Beispiel habe ich mal hier zusammengestellt ziel war es eine Wrapperklasse für Strings zu erstellen .

global $counter, $memory;
$counter = 0;
$memory = array();
function &getNewReference($dataType) {
    global $counter;
    global $memory;
    do {
	    $name = 'RefKey'.$counter++;

    } while (isset($memory[$name]));

    $memory[$name] = $dataType;

    if(is_object($dataType) && in_array('setRefKey', get_class_methods($dataType))) {
	    $dataType->setRefKey($name);
    }
    return $memory[$name];
}
 
class String{
    private $value;
    private $refKey;

    public function setRefKey($name) {
	$this->refKey = $name;
    }

    public function __construct($value = null){
	$this->value = $value;
    }

    public static function &string($value = null) {
	// Übergibt eine Referenz auf die Funktion  getNewReference,
	// die ihreseits eine Referenz auf das $memory Array übergibt
	$string = &getNewReference(new String($value));
	return $string;
    }

    public function __toString() {
	return (string) $this->value;
    }
    public function __destruct() {
	global $memory;

	// Kann sofort zerstört werden da keine Referenz.
	 if($this->refKey === null) {
	    return;
	}
		// Prüfen ob ein Object gleichen types in die referenz geschrieben wurde.
	if($memory[$this->refKey] instanceof self) {
			// Neuen object alten Referenzkey übertragen.
	    $memory[$this->refKey]->setRefKey($this->refKey);
			// Ist es eine skalaren Variable ("Normaler Datentyp" string, int , bool, usw..)".
	} else if(is_scalar($memory[$this->refKey])){
			// Neuen wert aus der Referenz auslesen.
	    $value = $memory[$this->refKey];
			// Eigene Classe ermittel (für extended).
	    $class = get_class($this);;
	    // Neues Object erzeugen und in das Array mit den Referenzen schreiben
	    $memory[$this->refKey] = new $class($value);
			// Neuen object alten Referenzkey übertragen.
	    $memory[$this->refKey]->setRefKey($this->refKey);
	}
    }
}
$foo = & String::string();

$foo = 'Hallo Welt!';

$bar = & String::string();

$bar = 42;

var_dump($foo);

echo $foo.' Der sinn des Lebens ist '. $bar;

2 Kommentare »

Merksatz für CSS Deklarationen für mehrere Seiten

11.01.12 (Allgemein)

In CSS gibt es viele Deklarationen die mehrere Werte nutzen, die sich auf unterschiedlichen Seiten des Boxmodells beziehen z.B.:

•    margin
•    padding
•    border-width

Da ich nun auch gerne vergesse welcher Wert nun zu welcher Seite gehört, habe ich mal einen kleinen Merksatz mit Anschauungsmaterial erstellt.

Am Anfang das einfachste ein (1) Wert.

Da nur ein wert zu Verfügung steht ist dieser für alle Seiten gleich
Also ist:

p {
margin:10px;
}

eine vereinfachte Darstellung von:

p {
margin:10px 10px 10px 10px;
}

Nun kommen wir schon zu zwei (2) Werten.

p {
margin:10px 5px;
}

2 Werte in der CSS Deklaration
Der Trick funktioniert wen wir oben beginnen zu zählen und dann  im Uhrzeigersinn weiterzählen. Somit würde oben Wert Eins und Rechts Wert Zwei Stehen.
Doch wie belege ich nun die restlichen zwei Seiten?
Dieses ist ganz einfach ich nehme einfach immer die gegenüberliegende Seite, so ergibt sich ganz automatisch:

  1. Wert Eins für Oben und Unten
  2. Wert Zwei Rechts und Links

Der Trick funktioniert übrigens auch für drei Werte

p {
margin:10px 5px 15px;
}


Allerdings bleibt nach dem Weiterzählen nur die linke Seite ohne Wert also kann auch nur darauf gespiegelt werden:

  1. Wert Eins für Oben
  2. Wert Zwei Rechts und Links
  3. Wert Drei für Unten

Als letztes alle vier Werte. Hier muss nicht mehr gespiegelt werden sondern einfach nur gezählt

p {
margin:10px 5px 15px 20px;
}


Somit ergibt sich dann folgendes Bild:

  1. Wert Eins für Oben
  2. Wert Zwei Rechts
  3. Wert Drei für Unten
  4. Wert Vier für Links

Ich hoffe ich konnte euch mit meinen Tutorial ein wenig helfen.

Keine Kommentare »

Google style ganz Persönlich

24.08.11 (Allgemein)

Google mit schwarz hässlich…

Google ist laangweilig…

Ich mag das neue aussehen der Website nicht…

Wer diese oder ähnliche Probleme hat, kann geholfen werden: Die Lösung heißt zu mindestens im  Mozilla Firefox und  Google Chrome Stylish. Einfach dieses Addon installieren und sich über benutzerdefiniertes Aussehen der Webseiten freuen.

Egal ob Google, das Lieblings Forum oder vielleicht sogar die Konfigurationsseite ihres Routers alles lässt sich damit anpassen.

Und Hier noch gleich ein Link zu einen Style, der die meiner Meinung hässlich schwarze Navigationsleiste von Google aufhübscht: userstyles.org – Google navigation bar – revert to light theme.

Falles noch Bildmaterial gewünscht oder Fragen offen sind einfach einen Kommentar dalassen.

Keine Kommentare »

Get KeyValuePair From Value in Dictionary (vb.net)

03.08.11 (Allgemein, VB.Net)

Dictionary Sind äußert Praktisch wenn man gerade ein KeyValuePair Benötigt.
Sprich einen beliebigen Index und ein damit verknüpfte Value.

In diesen beispiel zeige ich euch wie Einfach es ist in diesen Konstrukt sogar Rückwärts zu suchen:

Public Shared Function GetKeyValuePairFromValue(ByVal sValue As String, _ 
  ByVal CheckDictionary As  Dictionary(Of Integer, String)) As _
  KeyValuePair(Of Integer, String)
  Return CType((From kvp As KeyValuePair(Of Integer, String) In _
  CheckDictionary Where kvp.Value = sValue.Trim() Select kvp).First(), _
  vKeyValuePair(Of Integer, String))
End Function

Keine Kommentare »

XP-Modus 16 bit Farbtiefe nein Danke

07.07.11 (Windows)

XP-Modus Bessere Optik dank 24bit Farbtiefe

Viele werden es vielleicht schon gesehen haben, das der XP-Modus vom Windows Virtual PC
einfach Häslich aussieht.
Alles wirkt irgendwie verpixelt.

Doch was ist Schuld dadran?
Die 16 bit Limitierung die von der Zugriffsmethode auf den XP-Modus, nämlich RDP (Remote Desktop Protocol) kommt.
Das lässt sich leider nicht ganz abschalten den 32 bit sind nicht möglich, mit einen Trick aber wenigstens 24 bit und das sieht schon mal deutlich besser aus.
Dazu müsst ihr bloß ein par Richtlinien konfigurieren und wie das funktioniert erkläre ich jetzt in dieser schritt für schritt Anleitung.

  • Start und Ausführen dort gpedit.msc eingeben.
  • Nun sich dur volgende punkte durchwählen: Computerkonfiguration – Administrative Vorlagen – Windows-Komponente – Terminaldienste – Maximale Farbtiefe einschränken
  • — Die Richtlinie aktivieren und 24bit auswählen.

Nun sollt euer Windows deutlich besser aussehen und etwas arbeitsfreundlicher sein.

Keine Kommentare »

Der angegebenen Datei ist keine Anwendung zugeordnet (process start vb.net)

30.06.11 (VB.Net)

Wer Diese Meldung bekommt möchte wahrscheinlich mit  process.start(C:\Temp\MeinBild.tif) eine Datei in seien VB.NET Project öffnen.

Wenn aber Kein Programm oder nur das Windows-Standardprogramm mit dem Dateityp verknüpft ist bekommt man diese Fehlermeldung.

Folgender Code zeigt wie es richtig geht:

Dim proc As New Process
Dim ProcessStartInfo As New ProcessStartInfo
ProcessStartInfo.ErrorDialog = True
ProcessStartInfo.UseShellExecute = True
ProcessStartInfo.FileName = "C:\Temp\MeinBild.tif"
proc.StartInfo = ProcessStartInfo
proc.Start()

Keine Kommentare »

google translate als schnelles lesezeichen (Bookmarklet)

23.06.11 (Allgemein)

Wer keine umständliche Toolbar mochte, und trotzdem mit nur einem Click, eine Übersetzung der Webseite auf der er sich gerade befindet. Kann mit folgender Zeile als Lesezeichen schnell die aktuelle Seite Übersetzen:
Gogle translate Bookmarklet

javascript:window.location='http://translate.google.de/translate?js=n&prev=_t&hl=de&ie=UTF-8&layout=2&eotf=1&sl=auto&tl=de&u='+window.location;

Keine Kommentare »