<a> Tag Attribut target=”_new”

In älteren und zum Teil auch noch in neueren Webseiten, findet man den Wert “_new” für das Attribute target beim a-Element. Um es gleich vorwegzunehmen: Dieser Wert ist nicht definiert und somit ein ungütltiger Wert. Leider musste ich feststellen, dass auch in einigen alten Webapplikationen, die ich erstellt habe, dieser Wert verwendet wird 🙁

Die Erklärung wieso “_blank” der richtige Wert dafür ist, findet man bei SELFHTML:

Viele Anwender verwenden statt target=”_blank” irgendeinen nicht existenten Framenamen oder sogar unzulässig target=”_new”, um einen Verweis in einem neuen Fenster zu öffnen. Das erzielt nicht den gewünschten Effekt, da das neue Fenster nicht fokussiert wird und der Anwender es unter Umständen nicht sieht (bei target=”_blank” wird das Fenster sehr wohl fokussiert). Außerdem werden andere Verweise, die diesen eigentlich nicht verwendeten Framenamen verwenden, ebenfalls in diesem neuen Fenster geöffnet.

Definierte und gültige Werte sind:

  • _blank um den Verweis in einem neuen Fenster zu öffnen (Achtung: nur zusammen mit rel=”noopener” verwenden),
  • _self um den Verweis im aktuellen Fenster zu öffnen,
  • _parent um bei verschachtelten Framesets das aktuelle Frameset zu sprengen,
  • _top um bei verschachtelten Framesets alle Framesets zu sprengen.

Mercury/32 Online-Administration – webadmin (2006)

Mercury/32 Webadmin ist eine Weboberfläche die das Administrieren des Mercury/32 Mailserver vereinfacht. Die Weboberfläche ermöglicht das Erstellen und Modifizieren von Domains, Domain-Mailboxen, Benutzer, Aliases, Logins, Forwards sowie die Konfiguration des POP3-Abholdienstes und der Autoresponder. Somit ergänzt die Webapplikation den Mercury/32 um die Möglichkeit, diesen über das Internet zu administrieren, was sonst leider nur mit Hilfe von VNC oder Remotedesktop möglich wäre. Mit Hilfe von Webadmin ist ein Domainbesitzer auch in der Lage seine Benutzer (Logins, Aliases usw.) selber zu verwalten. Dabei kann der Administrator festlegen, wie viele Logins und Aliases durch den Domaininhaber erfasst werden dürfen.

Die Webapplikation ist bis heute im produktiven Einsatz und Verwaltet über 250 Domains, sowie ein paar Tausend Logins und Aliases.

Weitere Funktionen:

  • Generieren eines PDF mit allen Benutzer einer Domain und den Einstellungen für die Mail-Clients
  • Sperren eines Accounts
  • Spam E-mail Benachrichtigung verschicken
  • Anzeigen der Mailserver Statistiken
  • Email Klassierung – Verwalten von Spam-Nachrichten
  • Mehrsprachig

Technisches
Die Applikation wurde in PHP entwickelt und verwendet das PHP Framework Solar für die Datenbankanbindung. Als Template-Engine wird vlibTemplate benutzt. Im Hintergrund ist eine MySQL Datenbank, welche die Konfiguration speichert, bevor diese auf dem Server aktualisiert wird.

Wird Mercury/32 mit dem popfiled Daemon verwendet, bietet Webadmin eine Oberfläche an, bei der jeder Benutzer die gefilterten Spam-Nachrichten online anschauen kann und sollte mal eine Nachricht nicht richtig eingestuft worden sein, kann der Benutzer die Einstufung ändern.

Ein weiterer unterstützter Daemon, der mit Hilfe von Webadmin konfiguriert werden kann, ist MercFwd. Dieser Daemon leitet sämtliche Emails einer Domain zu einem anderen Server weiter.

Screenshots

Mercury32 Webadmin Login
Mercury32 Webadmin Login

Administrator Startseite
Administrator Startseite

Domain Auflistung
Domain Auflistung

Administration der Benutzer einer Domain
Administration der Benutzer einer Domain

Domain Administration
Domain Administration

Benutzer Administration
Benutzer Administration

Klassierung von Email-Nachrichten
Klassierung von Email-Nachrichten

Karrierefalle Internet

Karrierefalle InternetFrei nach dem Motto: Angriff ist die beste Verteidigung! Mit diesem einfachen Satz lässt sich die Strategie, die der Autor dem Leser näher bringt, erklären. Die Idee dahinter ist, dass man seine Spuren im Netz gezielt deponiert und sich eine positive Online-Reputation aufbaut. Dies versetzt jeden in die glückliche Lage, selber zu bestimmen, was man über sich veröffentlichen möchte. Eine bereits bestehende positive Online-Reputation schützt besser vor gezielten Diffamierungen und Lügen, als wenn diese erst im Nachhinein aufgebaut werden muss.

Mein Fazit

Ein gutes interessantes Buch, das nicht nur für Firmen, sondern auch für Privatpersonen geeignet ist. Der Autor stellt verschiedene Online-Dienste vor, welche für den Aufbau einer Online-Reputation und das Reputationsmonitoring geeignet sind. Dabei geht der Autor auch themengerecht auf die wichtigen Punkte Privatsphäre und Datenschutz ein.

Klappentext

Die wenigsten ahnen, was über sie im Internet kursiert. Dass nicht alle Informationen immer haargenau stimmen, wäre noch nicht so schlimm. Gezielte Diffamierungen und Lügen dagegen können schnell zum Karriere-Killer werden. Wer am Online-Pranger steht, merkt schnell: Was einmal im Web steht, lässt sich kaum noch aus der Welt schaffen – und wenn es noch so falsch ist. Wer sich wehrt, macht oft alles nur noch schlimmer, denn jede einzelne Reaktion wird beäugt und findet erneut ihren Widerhall im Netz. Auch Unternehmen bleiben nicht ungeschoren: Wenn wichtige Mitarbeiter oder gar Führungskräfte im Internet unter Beschuss geraten, kann das in kürzester Zeit den mühsam aufgebauten Ruf des ganzen Unternehmens ruinieren. Der Schaden geht in die Milliarden. Was tun? Niemand sollte seine digitalen Spuren dem Zufall überlassen, sondern sich aktiv darum kümmern, den richtigen Eindruck zu hinterlassen. Glücklicherweise gibt es gute Strategien, sich gegen miese Angriffe zu wehren. Und es gibt zahlreiche Werkzeuge im Netz, die Unternehmen und Personen für ihr Reputationsmanagement selbst nutzen können. Dieses Buch zeigt wie.

Webseite des Autors

Visual Basic Projekte (1998 / 1999)

Beim Durchstöbern von alten Datenträgern bin ich auf ein paar Visual Basic Projekte gestossen. Hier eine kleine Auswahl der erstellten Applikationen:

Aufgaben aus dem 2. Ausbildungsjahr zum Informatiker – mit Visual Basic 4 erstellt

LichtampelsteuerungLichtampelsteuerung
Es sollte eine Simulation einer Lichtampelsteuerung erstellt werden, welche automatisch die Ampeln ansteuert oder aber durchs manuelle Eingreifen bedient werden konnte. Wenn die Fahrspuren auf der Hauptstrasse (horizontal) freie fahrt haben, so sind die Fussgängerampeln auf der Nebenstrasse auf grün. Dabei wird für abbiegende Fahrzeuge auch signalisiert, dass die Fussgängerampeln auf Grün stehen.

SofteisautomatSofteisautomat
Die Implementation eines Klassikers durfte natürlich auch nicht fehlen. So entstand der Softeisautomat, bei dem der Käufer seine Eissorte und die Grösse der Waffeln wählen kann. Dabei werden mit Drag & Drop die Münzen in den Automaten geworfen. Bezahlt der Kunde zuviel, so erhält er Wechselgeld.

Private Projekte – mit Visual Basic 5 realisiert

Nickname AuflistungBrainNick
Wer sich öfters mal mit der Online-Kommunkation im Internet beschäftigt, weiss das es viele Möglichkeiten zum Kommunizieren gibt. Von online Chat’s über Chat-Clients, wie der Klassiker ICQ, überall gibt es so genannte Nicknames. Nicknames sind die Spitznamen, welche den User in der Online-Kommunikation identifizieren. Wie bei realen Namen kann es also dazu führen, dass man sich nicht mehr alle Nicknames behalten kann. Und hier hilft die Applikation “BrainNick” die Online-Kontakte zu verwalten.

Weitere Funktionen:

  • importieren und exportieren von Adressen im “Netscape Messanger *.ldif” Format
  • Datenbank über das Internet synchronisieren
  • Geburtstags – Reminder
  • integrierter Browser
  • Drucken von Listen
Nickname erfassen
Nickname erfassen
Einstellungen
Einstellungen
Daten importieren / exportieren
Daten importieren / exportieren
Integrierter Browser
Integrierter Browser

Lcase OberflächeLcase
Ein praktisches Tool das bei allen HTML-Dateien im gewähltem Verzeichnis, die Dateinamen in Kleinschreibung umwandelt. Beispiel: Wandelt den Namen der Datei “BIG.Html” nach “big.html” um. Eine weitere Funktion ändert den Inhalt der HTML-Dateien in Kleinschrift.

Lucky SevenLucky Seven
Beim Spiel “Lucky Seven” gewinnt, wer im richtigen Moment den Automaten stoppt und dieser dann eine oder mehrere 7 anzeigt (maximal 3). Hier im Screenshot sieht man, dass der Spieler 3 Einsätze gemacht hat und schon beim 3ten mal sein Glück gefunden hat. Daher ist die Quote: 33.3 %

Das waren noch Zeiten! ;o)

NCS – Nursery Controlling System (2000)

NCS ist eine Applikation die für den Einsatz im Pflanzencenter Fehr entwickelt wurde. Hauptaufgaben dieser Applikation sind das Verwalten des Kundenstammes, erstellen von Bestellungen, Rechnungen, Lieferscheinen und Mahnungen sowie das Anzeigen einer Umsatzstatistik.

Weitere Funktionen:

  • Pflanzen erfassen mit Preisgruppen, Merkmale, Blütenmonat, Standort, Kategorie, Art, Gattung, Sorte
  • Verwalten der Preisgruppen

Technologie
Die Entwicklung der Applikation wurde mit Visual Basic 5 gestartet und später mit Visual Basic 6 fortgeführt. Die Applikation ist nach dem “Three-Tier Architecture Model” von Microsoft realisiert und umfasst so 3 Ebenen:

  1. presentation tier: das GUI welches die Daten dem Benutzer anzeigt, jedoch keine Geschäftslogik implementiert hat
  2. middle tier: eine COM+ Komponente, welche sämtliche Geschäftslogik enthält
  3. data tier: der Datenbank, welche die Daten und “stored procedures” für die Datenmanipulation enthält

In der Anfangsphase lief die COM+ Komponente unter MTS und als Datenbank wurde SQL-Server 2000 eingesetzt. Im Laufe der Zeit entstand auch die Einzelplatzversion, bei der als Datenbank eine Access DB eingesetzt wird.

Weitere Merkmale:

  • Mehrbenutzersystem
  • Rechteverwaltung
  • Mehrsprachiges GUI

Screenshots

Das GUI der Applikation
Das GUI der Applikation

Pflanzen - Suchmaske
Pflanzen - Suchmaske
Kundenstamm - Suchmaske
Kundenstamm - Suchmaske
Bestellungsverwaltung
Bestellungsverwaltung
Bestellung hinzufügen
Bestellung hinzufügen

VBScript: Text von UTF-8 nach Windows-1252 konvertieren mit dem ADO Stream-Objekt

Soll ein Text, der als UTF-8 codiert wurde, in eine andere Zeichencodierung umgewandelt werden, kann dazu das ADO Stream-Objekt verwendet werden. Die hier verwendete Codierung “Windows-1252” ist eine Untermenge des ISO-8859-1 Character Sets.


'/***
' @brief convert a utf-8 text to an Windows-1252 text
' @param utf8xml, value
' @return text with Windows-1252 character set
'***/
Function UTF8TOISO(byval utf8xml)
On Error Resume Next

Dim objStream
const adTypeText = 2

Set objStream = CreateObject( "ADODB.Stream" )
Set objStreamISO = CreateObject( "ADODB.Stream" )

objStream.Type = adTypeText
objStream.Charset = "utf-8"
objStream.Open

'write data to stream
objStream.WriteText utf8xml
objStream.Position = 0

objStreamISO.Type = adTypeText
objStreamISO.Charset = "Windows-1252"
objStreamISO.Open
objStreamISO.WriteText objStream.ReadText
objStream.Position = 0

If Err Then
UTF8TOISO = ""
Else
UTF8TOISO = objStreamISO.ReadText
End If

objStream.Close
objStreamISO.Close
Set objStream = Nothing
Set objStreamISO = Nothing
End Function

Die verwendeten Properties und Funktionen des Stream-Objekts sind:

  • .Open  Öffnet den Stream
  • .Close  Schliesst den Stream
  • .Charset  Legt fest, welche Zeichencodierung verwendet werden soll
  • .Type  Definiert ob es ein Binär- oder Textstream ist
  • .WriteText  Schreibt Textdaten in den Stream
  • .ReadText  Liest Textdaten vom Stream
  • .Position  Legt die Position im Stream fest (in Bytes)

Diese Funktion lässt sich auch leicht modifizieren, wenn der konvertierte Text in einer Datei gespeichert werden soll. Dazu muss nur die Funktion “.SaveToFile(filename, adSaveCreateOverWrite)” des ADO Stream aufgerufen werden.

Text UTF-8 codiert in einer Datei speichern

Um einen Text UTF-8 codiert in einer Datei zu speichern kann folgender Code verwendet werden:


'/***
' @brief save a text UTF-8 coded in a file
' @param textToSave, value
' @param filename, the name of the file to create
' @return true on no error or false on error
'***/
Function saveFileAsUTF8(byval textToSave, byval filename)
	On Error Resume Next
    Dim objStream
	const adTypeText = 2
	Const adSaveCreateOverWrite = 2
    
    Set objStream = CreateObject( "ADODB.Stream" )
	objStream.Charset = "utf-8"
	objStream.Mode = adModeReadWrite	
	objStream.Type = adTypeText
	objStream.Open
	
	'write data to stream and save to file
    objStream.WriteText textToSave	
	objStream.Flush
	objStream.Position = 0	
	objStream.SaveToFile filename, adSaveCreateOverWrite	
    
    If Err Then
        ISOTOUTF8 = false
    Else
		ISOTOUTF8 = true
    End If	

    objStream.Close
    Set objStream = Nothing
End Function

'Aufruf der Funktion
call saveFileAsUTF8("Die bunte Welt besteht aus einem grünen Wald, einer hässlichen Geschichte und dem öffentlichen Grund...", "D:\tmp\ASP\utf8.txt")

Disk Image mit dd unter Windows erstellen

Der ursprüngliche Unix-Befehl dd dient zum Kopieren von Datenströmen auf niedrigster Stufe. Mit der Hilfe von dd können Datenträger Images von CDs, Harddisks, USB-Sticks usw. erstellt werden. In den meisten Linux-Distributionen ist dd bereits vorhanden. Für Windows (32bit) gibt es auch ein Binary, das unter chrysocome.net heruntergeladen werden kann. Anders als die Unix-Version, bei der auch Datenströme konvertiert werden können, unterstützt die Windows-Version nur das Kopieren von Datenströmen.

Um eine Auflistung der vorhandenen Datenträger zu erhalten, wird folgender Befehl verwendet:


dd --list

Als Output erhalten wir eine Auflistung der vorhanden Datenträger:
dd --list

Um nun ein Image des Laufwerks f:\ zu erstellen:


dd if=\\.\Volume{bae40a24-91cd-11e0-804b-080027ffca15} of=c:\tmp\forensic.img --progress

Mit diesem Befehl wird nun dd das gesamte Laufwerk f:\ als Imagedatei im Verzeichnis c:\tmp speichern.

  • if= definiert das Inputfile / den Datenträger der kopiert werden soll
  • of= definiert das Outputtfile / den Datenträger der beschrieben werden soll
  • bs= definiert die Blockgrösse, welche standardmässig auf 512 gesetzt ist
  • – -progress zeigt die Anzahl der bereits kopierten Blocks an (nur unter Windows vorhanden)

Um unter Windows auf die erstellte Imagedatei zuzugreifen, braucht es ein Tool das dieses Image wieder als Laufwerk einbinden kann.

Dazu eignen sich die Tools:
FileDisk
p2-explorer

Einbinden von Skripts in VBScript-Dateien

Beim Arbeiten mit Skripts (.vbs Dateien) gelangt man oft an den Punkt, an dem Funktionen bereits in mehreren anderen Skripts erstellt und verwendet wurden. Dabei wäre es praktisch, wenn man im neuen Skript nur noch eine Funktionssammlung einbinden könnte um die bereits erstellten Funktionen zu verwenden.

Der VBScript-Code zum Einbinden von Dateien:


Sub Include(Byval filename)
  Dim codeToInclude
  Dim FileToInclude

  Const OpenAsDefault = -2
  Const FailIfNotExist = 0
  Const ForReading = 1
  Const OpenFileForReading = 1
  Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")

  'Check for existance of include
  If Not FSO.FileExists(filename) Then
    wscript.Echo "Include file not found."
	Set FSO = Nothing
    Exit Sub
  End If

  'open file to include
  Set FileToInclude = FSO.OpenTextFile(filename, ForReading, _
  FailIfNotExist, OpenAsDefault)

  'read all contet of the file
  codeToInclude = FileToInclude.ReadAll
  
  'close file after reading
  FileToInclude.Close
 
  'now cleanup the unused objects
  Set FSO = Nothing
  Set FileToInclude = Nothing

  'now execute code from include file
  ExecuteGlobal codeToInclude
End Sub

Ein kleines Beispiel mit 2 Skript-Dateien:

Die Datei “include.vbs” enthält eine Funktion “hello()”, welche “Hello %name%” ausgibt:


sub hello(Byval person)
	wscript.echo "Hello " & person
end sub

Das Hauptskript ist in der Datei “sayHello.vbs” und bindet die Datei “include.vbs” mit der obigen Funktion ein.


call Include("include.vbs")
call hello("Thomas")

Nach dem Aufruf der Funktion “hello()”, erscheint wie erwartet “Hello Thomas” als Output. Somit wurde die Funktion “hello()” erfolgreich eingebunden.

Herunterladen der Demo-Dateien

Anzeigen der Spaltennamen einer Tabelle, bei einer Sqlite Datenbank, mit Python

Die Spaltennamen einer Tabelle können mit dem “Cursor” herausgelesen werden. Dazu verwendet man das Attribut “description” des Cursors. Dieses Attribut enthält alle Spaltennamen der letzten Abfrage, auch wenn diese keine Resultate zurückgeliefert hat.


import sqlite3

#connect to in memory db
connection = sqlite3.connect(':memory:')
mycursor = connection.cursor()

# Create table
mycursor.execute("create table spydb (id INTEGER PRIMARY KEY ASC, ipsend text, iprecv text)")

#select on table
mycursor.execute('select * from spydb order by id desc')

#get col names with the description attribute
names = [tuple[0] for tuple in mycursor.description]
print names;

#close the cursor
mycursor.close()

In der Zeile 14 erhalten wir vom Attribut “description” ein 7-Tupel pro Spalte. Dabei enthält das erste Element eines Tupels den Spaltennamen und die anderen 6 Elemente sind vom Typ “none”.

Die Ausgabe der Zeile 15:

 ['id', 'ipsend', 'iprecv'] 

Die Datenfresser

Die DatenfresserDas Buch führt den Leser langsam in die Welt der Daten ein, ohne dabei gleich zu technisch zu werden. Schritt für Schritt erfährt man mehr über die Daten, die jeder von uns tagtäglich, freiwillig hinterlässt. Wer und warum an welchen Daten interessiert ist, welche persönlichen Informationen aus diesen Daten gewonnen werden. Wie diese Daten unsere Zukunft beeinflussen können und wie teuer die angeblich kostenlosen Dienste Facebook, Google Mail, iGoogle, YouTube usw. für uns wirklich sind.

Mein Fazit
Interessantes und nicht sehr technisches Buch für jeden, der einen Einblick in die Welt der Datenfresser erhalten will. Auch sehr geeignet für diejenigen unter uns, welche nach dem Motto leben: “Ich habe ja nichts zu verbergen”.

Klappentext

Der Wegweiser zur digitalen Mündigkeit Warum findet Facebook jeden meiner Bekannten? Auf welche Datenspuren hat der Staat Zugriff? Und was kann man aus ihnen herauslesen? Die Experten für Informationssicherheit, Constanze Kurz und Frank Rieger, weisen uns den Weg zu einer neuen digitalen Mündigkeit. Sachkundig und verständlich erklären sie, was sich hinter den Benutzeroberflächen tatsächlich verbirgt. Aus dem Strom scheinbar harmloser Daten, die wir tagtäglich im Netz hinterlassen, werden geldwerte Informationen geschöpft, deren Ausmaß und Gehalt wir uns gar nicht vorstellen können. Ob der Staat oder Google, alle bedienen sich am Datensatz Mensch. Es ist an der Zeit, das eigene digitale Schicksal wieder selbst in die Hand zu nehmen.

Webseite zum Buch