phpMyAdmin: Alle Tabellen anzeigen / Paging abschalten

Problem

In einigen Versionen von phpMyAdmin werden in der Navigationsleiste auf der linken Seite standardmäßig nicht alle Tabellen einer Datenbank gleichzeitig dargestellt. Stattdessen werden ab einer bestimmten Anzahl von Tabellen diese seitenweise (Paging) dargestellt.

„It’s not a bug, it’s a feature!“? Stimmt, jedoch eins, auf das ich gerne verzichte um besser mit eingebauten Browser-Werkzeugen navigieren zu können.

Lösung

Um das Verhalten zu ändern, muss lediglich ein Eintrag in die Konfigurationsdatei „/xampp/phpMyAdmin/config.inc.php“ hinzugefügt werden:

$cfg['MaxNavigationItems'] = 500;

Die Paging-Funktionalität wird so erst bei mehr als 500 Tabellen eingeschaltet.

$cfg['MaxNavigationItems'] = 500;


log4net – ASP.NET Web-Api nach Exception langsam

In der Regeln nutzen wir log4net um geworfene Exceptions zu loggen und per E-Mail benachrichtigt zu werden.

In ASP.NET-Web-Api-Projekten werden alle Fehler in einer Log-Datei (RollingFileAppender) gespeichert und bei kritisch eingestuften Fehlern werden wir per E-Mail (SmtpAppender) benachrichtigt.

Bei einem frisch eingerichteten Projekt wunderten wir uns, warum die Anwendung teilweise sehr langsam wurde, nachdem eine Exception geworfen wurde. Weiterlesen


MSSQL-Datenbank-Export und -Backup: Wie bei MySQL als Script mit INSERT-Befehlen

Normalerweise mache ich Backups von Microsoft-SQL-Server-Datenbanken mit „BACKUP DATABASE“, was eine Binärdatei der Datenbank erstellt. Weiter unten gehe ich auf diese Methode ein.
Was raus kommt, ist eine Datei, die nicht manuell bearbeitet werden kann. Auf dem Zielserver heißt es dann: „Friss oder stirb“. Die Datenbank wird, genauso wie sie ist, importiert. Weiterlesen


Extend Object Defaults mit Lo-Dash/UnderscoreJS

Vor kurzem wollte ich lediglich ein Javascript-Object mit einem anderen kombinieren, jedoch nur die bestehenden Keys übernehmen. Also dachte ich mir „Hey, dafür gibt es doch bestimmt eine Funktion in Lo-Dash oder UnderscoreJS – natürlich gab es diese nicht.

Weiterlesen


Über die Gefahren von Indexen auf lange String-Spalten (MySQL- und MSSQL-Server)

In diesem Beitrag gehe ich auf die Gefahren der begrenzten Länge von Indexen auf String-Spalten ein. Während vom MySQL-Server beim Anlegen einer ungültigen Struktur der Datenbank lediglich eine Fehlermeldung zurückkommt, nach deren Ursache der gemeine CodeFirst-Entwickler länger suchen muss, gibt’s beim MSSQL-Server ein Verhalten, das unter Umständen erst beim Kunden Exceptions wirft. Also aufgepasst, MSSQL-Entwickler!
Weiterlesen


SSH Login mit Two Factor Authentication

Wer kennt es nicht? Man sitzt in der Uni, an einem öffentlichen PC oder einem anderen öffentlichen Ort, an dem man nicht unbedingt immer Zugriff auf ein sicheres OpenVPN-Netzwerk hat. Nun möchte man aber z.B. zu Hause oder im Rechenzentrum auf einen Server zugreifen und sorgt sich etwas um sein Passwort – denn wer weiß, was so alles auf diesem PC installiert ist. Z.B. ein Keylogger?

Natürlich würde ein Angreifer in diesem Fall das Passwort kennen, jedoch wird er mit dieser Methode nicht mehr weit kommen. Weiterlesen


The abstract type ‚BaseClassName‘ has no mapped descendants and so cannot be mapped.

InvalidOperationException: The abstract type ‚BaseClassName‘ has no mapped descendants and so cannot be mapped. Either remove ‚BaseClassName‘ from the model or add one or more types deriving from ‚BaseClassName‘ to the model.

Die Fehlermeldung tritt in folgenden Konstellationen auf: Weiterlesen


C#: Wann und wieso man „virtual“ nutzen sollte

Wenn man in seinen Projekten Vererbung nutzt passiert es oft, dass man nur mit den Basistypen arbeitet und nicht weiß welcher explizite Typ sich dahinter verbirgt. Dies kann ab und an zu Problemen führen die man mit virtual lösen kann.

Als kleines Beispiel haben wir hier die Basis-Klasse User mit der Methode GetName() um den vollständigen Namen zu erhalten.

public class User
{
    public string Firstname { get; set; }
    public string Lastname { get; set; }

    public string GetName()
    {
        return Firstname + " " + Lastname;
    }
}

Und die Klasse Customer die von User erbt und ebenfalls die Methode GetName() implementiert. Da der Kunde bei uns König ist, haben wir die Methode etwas angepasst 😉
Weiterlesen