<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.

Elektronik: BJT Transistor Sammelsurium

Transistorauswahl

Bei der Wahl eines Transistors sind folgende Werte besonders interessant:

  • Der Kollektorstrom, der Strom welcher die zu schaltende Last durch fliesst.
  • Der Basisstrom, der Strom welcher durch die Basis fliesst, mit dem der Transistor geschaltet wird.

Wichtig:

  • Der Transistor sollte mindestens für den doppelten Kollektorstrom ausgelegt sein.
  • Steuerspannung der Basis-Emitter Strecke des Transistors
    • 0,3 V Germanium Transistoren
    • 0,6 – 0,7 V Sizilium Transistoren
    • 1,4 V  bei Darlington Transistor
  • Stromverstärkung in Sättigung (DC current gain)
    • Im Datenblatt nachschlagen \(h_{feSAT}\) (Saturation = Sättigung)
    • Bei Kleinsignaltransistoren von 20- 50
    • Bei Kleinleistungstransistoren von 400-2500

\(I_{b} = \frac{I_{c}}{h_{fe}}\)
\(I_{b}\) = Basisstrom
\(I_{c}\) = Kollektorstrom (Last-Strom)
\(h_{fe}\) = Stromverstärkung

\(R_{b} = \frac{U_{b} – U_{be} }{I_{b}}\)
\(R_{b}\) = Basiswiderstand
\(U_{b}\) = Betriebsspannung
\(U_{be}\) = Basis-Emitter-Spannung
\(I_{b}\) = Basisstrom

Nützliche Links
mikrocontroller.net: Berechnung eines Basiswiderstandes
elektronik-kompendium.de: Arbeitspunkteinstellung
c-kolb.bplaced.net: NPN oder PNP
wikipedia.org: Transistorgrundschaltungen
wikipedia.org: Bipolartransistor (BJT)
homepages.uni-regensburg.de: kleine Transistorkunde
www.loetstelle.net: kleine Transistor Grundlagen

Qt: Thumbnails von Webseiten erstellen

Thumbnail des monsterli.ch Blog
Thumbnail das mit Hilfe von QWebpage und QPainter erstellt wurde

Das Qt Framework bietet mit dem Modul QtWebKit eine vollständige “Browser-Engine”, welche das Anzeigen und Bearbeiten von Webseiten ermöglicht. Dieses Modul ermöglicht auf einfache Weise Thumbnails von Webseiten zu erstellen. In der Dokumentation zu der Klasse QWebPage befindet sich auch eine Beispielklasse zum Erstellen von Thumbnails ohne Widgets zu verwenden. Muss also ein “Command Line Tool” erstellt werden, ist das der ideale Startpunkt.

Thumbnailer Beispielklasse

Die Header-Datei der Thumbnailer-Klasse:


#ifndef THUMBNAILER_H
#define THUMBNAILER_H
#include 
#include 
#include 

class Thumbnailer : public QObject
 {
     Q_OBJECT

 public:
     Thumbnailer(const QUrl &url);

 signals:
     void finished();

 private slots:
     void render();

 private:
     QWebPage page;

 };

#endif // THUMBNAILER_H

Die Thumbnailer-Klasse:


#include "thumbnailer.h"

Thumbnailer::Thumbnailer(const QUrl &url)
{
    page.mainFrame()->load(url);
    connect(&page, SIGNAL(loadFinished(bool)),
        this, SLOT(render()));
}

void Thumbnailer::render()
{
    page.setViewportSize(page.mainFrame()->contentsSize());
    QImage image(page.viewportSize(), QImage::Format_ARGB32);
    QPainter painter(&image);

    page.mainFrame()->render(&painter);
    painter.end();

    QImage thumbnail = image.scaled(400, 300);
    thumbnail.save("thumbnail.png");

    emit finished();
}

Die main-Klasse:


#include "thumbnailer.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a( argc, argv);
    Thumbnailer myThumb(QUrl("https://www.google.com"));
    QObject::connect(&myThumb, SIGNAL(finished()), QApplication::instance(), SLOT(quit()));

    return a.exec();
}

 

Verwenden von Browser Plugins wie Adobe Flash

Verwendung von Plugins aktiviert
Verwendung von Plugins aktiviert
Verwendung von Plugins deaktiviert
Verwendung von Plugins deaktiviert

Damit auch die Flash-Elemente einer Webseite auf dem Thumbnail dargestellt werden, muss das Flash-Plugin bereits auf dem System installiert sein und das QWebSetting “PluginsEnabled” aktiviert werden:


page.settings()->setAttribute(QWebSettings::PluginsEnabled, true);

 

Nützliche Links

QT Beispiel Projekt
WebScreenie is small qt command-line utility to create snapshot of webpages.
QT-Code websnap

Musiktheorie Sammelsurium: Tonleiter

Tonleiter:

Klaviatur über zwei Oktaven
Klaviatur über zwei Oktaven

  • Stammtöne (7. Ganztonschritte): C, D, E, F, G, A, H
  • 7. Ganztonschritte + 5. Halbtonschritte = 12 Töne
  • Der Grundton H wird oft noch als B bezeichnet. Das verminderte H (b) wird dabei “B-Flat” genannt. Wikipedia: H Grundton
  • Stammtöne können um einen Halbton erhöht werden mit ♯: (Cis, Dis, Eis, Fis, Gis, Ais, His)
  • Stammtöne können um einen Halbton erniedrigt werden mit ♭: (Ces, Des, Es, Fes, Ges, As, B (nicht Hes))
  • internationale Variante (F♯ statt Fis, D♭ statt Des, usw.)

Dur Tonleiter (Major Scale):

  • Gilt als „hell“, „klar“, „freudig“
  • Besteht aus Tönen mit den Abständen: Ganzton, Ganzton, Halbton, Ganzton, Ganzton, Ganzton, Halbton (TTSTTTS) T = Tone, S = Semitone
  • Pentatonik besteht aus den Tönen: 1, 2, 3, 5, 6 (Bsp. C-Dur: C, D, E, G, A)
  • Paralleltonart in Moll: Grundton-Dur + 5 Ganztonschritte
  • Dominante: Grundton-Dur + 4 Ganztonschritte
  • Subdominante: Grundton-Dur + 3 Ganztonschritte

Dreiklang / Akkord / Harmonie:

  • Gemeinsames erklingen von drei verschiedenen Tönen
  • 1. Ton (Grundton) + 3. Ton + 5. Ton

Dur Dreiklang:

  • Grundton + 4. Halbtonschritte + 3. Halbtonschritte
  • Tonica = Grundakkord

C-Dur Tonart:

  • C, D, E, F, G, A, H, C
  • Paralleltonart: A-Moll
  • Dominante: G-Dur
  • Subdominante: F-Dur

C-Dur Dreiklang:

  • Grundton: C
  • Grundakkord (Tonika): C, E, G

Moll Tonleiter (Minor Scale):

  • Gilt als „dunkel“, „düster“, „traurig“
  • Besteht aus Tönen mit den Abständen: Ganzton, Halbton, Ganzton, Ganzton, Halbton, Ganzton, Ganzton (TSTTSTT)
  • Pentatonik besteht aus den Tönen: 1, 3, 4, 5, 7 (Bsp. C-Moll: C, ES, F, G, H)
  • Paralleltonart in Dur: Grundton-Moll + 5 Ganztonschritte
  • Dominante: Grundton-Moll + 4 Ganztonschritte
  • Subdominante: Grundton-Moll + 3 Ganztonschritte
  • Natürliche Molltonleiter: A, H, C, D, E, F, G, A
  • Harmonische Molltonleiter: A, H, C, D, E, F, Gis, A
  • Natürliche Molltonleiter: A, H, C, D, E, Fis, Gis, A

Moll Dreiklang:

  • Grundton + 3. Halbtonschritte + 4. Halbtonschritte
  • Tonica = Grundakkord

C-Moll Tonart:

  • C, D, ES, F, G, AS, B, C
  • Paralleltonart: Es-Dur
  • Dominante: G-Dur / g-Moll
  • Subdominante: F-Moll

C-Moll Dreiklang:

  • Grundton: C
  • Grundakkord (Tonika): C, ES, G

Vierklang / Akkord:

  • Gemeinsames erklingen von vier verschiedenen Tönen
  • 1. Ton (Grundton) + 3. Ton + 5. Ton + 7. Ton

Nützliche Links
Videos zum Thema Musiktheorie
Wikipedia: Moll-Tonleiter
Wikipedia: Dur-Tonleiter
Wikipedia: Pentatonik
Wikipedia: Enharmonische Verwechslung

Linux: Passwort des Benutzer root zurücksetzen

Sollte man mal in die Verlegenheit geraten und das “Root-Passwort” eines Systems nicht mehr zur Verfügung haben, gibt es eine einfache Möglichkeit das Passwort zu wechseln. Dazu wird das aktuelle Betriebsystem im “single user mode” gestartet.

Schritt 1:
Sobald der “Grub Boot Loader” angezeigt wird, wählt man den benötigen “Boot-Eintrag” aus.
Grub_Boot_Menue

Danach kann mit der Taste “e” der Eintrag bearbeitet werden. Dann sucht man die Zeile, welche mit “linux” anfängt und ergänzt diese am Schluss mit:init=/bin/bash

Grub Boot Menü

Wurde das “Grub Boot-Menü” angepasst kann mit der Taste F10 gestartet werden.

Schritt 2:
Danach muss das “Root-Filesystem” noch gemounted werden:
mount -o remount,rw /

Schritt 3:
Nun kann das Passwort geändert werden.
passwd

unter Ubuntu:
passwd "{Benutzer}"

“{Benutzer}” ist der bei der Installation definierte “Root-Benutzer”.

Mit dem Befehl: exec /sbin/init kann nun das Betriebsystem gestartet werden.

Nützliche Links:
How To Reset Root User Password In Linux

Anfälligkeit von Webapplikationen durch SQL-Injection prüfen, mit Hilfe von sqlmap

Heutige Webapplikationen müssen gegen eine grosse Anzahl von Angriffen aus dem Web gesichert werden. Bei Webapplikationen die eine Datenbank im hintergrund haben, sind Steuerparameter eine häufige Schwachstelle. Dabei nutzt der Angreifer die Möglichkeit Parameter, welche die Webapplikation in der URL oder in einem Formular mitführt, zu ändern. Mehr zum Thema SQL-Injection bei Wikipedia.

Sqlmap ist eine Open-Source Applikation zum automatisierten Testen von Webapplikationen, auf Anfälligkeit durch SQL-Injection. Dadurch das sqlmap in Python geschrieben wurde, ist die Applikation Plattformunabhängig und läuft unter Windows sowie Unix/Linux. Vorausgesetzt ist ein installierter Python Interpreter ab Version 2.6.

Anzeigen der vorhandenen Parameter


>sqlmap.py -h

Liefert eine Liste mit den vorhandenen Parameter.

Bestimmen der verwendeten Datenbank (Database Fingerprinting)


>sqlmap.py -u "http://meine.url.info/page.asp?artid=1" -f

Output eines erfolgreichen Tests:


........
[INFO] testing Microsoft SQL Server
[INFO] confirming Microsoft SQL Server
[INFO] the back-end DBMS is Microsoft SQL Server
web server operating system: Windows 2000
web application technology: ASP.NET, ASP, Microsoft IIS 5.0
back-end DBMS: active fingerprint: Microsoft SQL Server 2008
               html error message fingerprint: Microsoft SQL Server

 

Prüfen ob ein bestimmter Parameter anfällig auf SQL-Injection ist


>sqlmap.py -u "http://meine.url.info/page.asp?artid=1" -p "artid"

Output eines erfolgreichen Tests:


......
GET parameter 'artid' is vulnerable.

sqlmap identified the following injection points with a total of 41 HTTP(s) requests:
---
Place: GET
Parameter: artid
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: artid=1' AND 9454=9454 AND 'WAlX'='WAlX
---

 

Nützliche Links:
sqlmap Dokumentation
SQL Injection Tutorial: Learn with Example
SQL Injection Cheat Sheet
SQL Injection Cheat Sheet für Oracle, MSSQL, MySQL, PostgreSQL, Ingres, DB2, Informix
Testseite für den Acunetix Web Vulnerability Scanner

HERMES 5 Foundation – Release 5.1

Da ich diesen Monat in den “Genuss” ;o) gekommen bin und eine “HERMES 5 Foundation” Zertifizierung machen durfte, habe ich ein paar Links zusammengetragen.

Was ist HERMES überhaupt:

HERMES ist die Projektmanagementmethode für Projekte im Bereich der Informatik, der Entwicklung von Dienstleistungen und Produkten sowie der Anpassung der Geschäftsorganisation. HERMES unterstützt die Steuerung, Führung und Ausführung von Projekten verschiedener Charakteristiken und Komplexität. HERMES hat eine klare, einfach verständliche Methodenstruktur, ist modular aufgebaut und erweiterbar.

Die wichtigste Seite zum Thema HERMES ist hermes.admin.ch. Auf der offiziellen Webseite findet man alles (Handbuch, Vorlagen usw.) rund um HERMES.

Nützliche Links:

Lernkarten zu HERMES 5

BFH Kurseinstufungstest HERMES 5

tüv-süd Musterfragen mit Lösungen

AVR: ATtiny13 / ATtiny25 / ATtiny45 / ATtiny85 Sammelsurium

Übersicht

Microcontroller with xKB of programable memory:
Attiny13 = Microcontroller with 1KB
Attiny25 = Micocontroller with 2KB
Attiny45 = Microcontroller with 4KB
Attiny85 = Microcontroller with 8KB

CPU-Geschwindigkeit:
Attiny13/13A: default: 1,2Mhz (Fuse bit set: CKDIV8)
Attiny25/45/85: default: 1Mhz (Fuse bit set: CKDIV8)
max: 20MHz

Anzahl der Pins: 8Pin(s)
Anzahl der Ein-/Ausgänge: 6I/O(s)
Embedded-Schnittstelle: I2C, SPI

Attiny13/25/45/85:
Versorgungsspannung, min.: 2.7V
Versorgungsspannung, max.: 5.5V

Attiny13A:
Versorgungsspannung, min.: 1.8V
Versorgungsspannung, max.: 5.5V

DC Current per I/O Pin: 40.0 mA
DC Current VCC and GND Pins: 200.0 mA

Pinout

ATtiny Pinout

ISP Programming

2x3-pin ISP headers
2×3-pin ISP headers

ISP Pins

Sleep Modes

Sleep-Modes


/*
 * The 5 different modes are:
 *     SLEEP_MODE_IDLE         -the least power savings
 *     SLEEP_MODE_ADC
 *     SLEEP_MODE_PWR_SAVE
 *     SLEEP_MODE_STANDBY
 *     SLEEP_MODE_PWR_DOWN     -the most power savings
 */ 
set_sleep_mode(SLEEP_MODE_IDLE);

sleep_enable(); // enables the sleep bit in the mcucr register

sleep_cpu();      // here the device is actually put to sleep
	
// -------------------------------------------------
// THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP
// -------------------------------------------------
	
sleep_disable();	// disable sleep...

Power consumption

power consumption

Der Stromverbrauch wurde gemessen mit:

  • set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  • ADC deaktiviert

Siehe folgender Artikel: technoblogy.com: ATtiny Low Power

Disable Analog to Digital Converter ADC:


ADCSRA &= ~(1 << ADEN);

Disable ADC Makro:


#define adc_disable() (ADCSRA &= ~(1 << ADEN)) // disable ADC

Arduino Methode:


power_adc_disable();

Interrupt


ISR(PCINT0_vect) {     // pin change interrupt
}
ISR(INT0_vect) {       // external interrupt
}
  • ISR needed for sleep to not reset program after interrupt
  • Every PCINTx will rise PCINT0_vect
  • Typically global variables are used to pass data between an ISR and the main program. To make sure variables shared between an ISR and the main program are updated correctly, declare them as volatile.

GIMSK |= (1 << INT0);          // Enable external Interrupt

MCUCR &= (0 << ISC01);	       // The low level of INT0
MCUCR &= (0 << ISC00);         // generates an interrupt request

Interrupt 0 sense control


sei();          // enable interrupts
cli();          // disable interrupts

Arduino Methode:


interrupts ();// enable interrupts
noInterrupts(); // disable interrupts

Libraries
315Mhz and 433Mhz Manchester encoding RF library which works on Arduino and ATTiny

Nützliche Links
Atmel: ATtiny Datasheet pdf
The pinouts of the most popular AVR processors
mikrocontroller.net: AVR-Tutorial: Interrupts
gammon.com.au: Interrupts
ATtiny: Fuse Restore using HVSP
mikrocontroller.net: Sleep-Mode

nginx: Strong SSL Security on nginx

Beim Prüfen der nginx SSL-Konfiguration bin ich auf folgende Seite gestossen: Raymii.org: Strong SSL Security on nginx. Hier wird ausführlich beschrieben wie man die SSL-Konfiguration seines nginx Webserver stärkt. Eine weitere aktuellere Seite ist: sherbers.de: Sichere TLS Konfiguration mit NGINX.

Prüfen kann man die Konfiguration auf: ssllabs.com

Hat man die wichtigsten Einstellungen vorgenommen, sollte der SSL-Report mindestens eine A Bewertung anzeigen.

SSL-Report Bewertung
SSL-Report “monsterli.ch” Bewertung

 

Nützliche Links:

Raymii.org: Strong SSL Security on nginx

sherbers.de: Sichere TLS Konfiguration mit NGINX

ssllabs.com: SSL Server Test

 

 

Ubuntu: Apache2 Kommandos

Starten:

> sudo service apache2 start

Stoppen:

> sudo service apache2 stop

Neustarten:

> sudo service apache2 restart

Konfiguration aktualsieren:

> sudo service apache2 reload

Syntax der Konfiguration prüfen:

> apache2ctl configtest

Status anzeigen:

> sudo service apache2 status

Geladene Module anzeigen:

> apache2ctl -M

Modul aktivieren:

> sudo a2enmod

Modul deaktivieren:

> sudo a2dismod

Aktivieren eines virtuellen Hosts:

> sudo a2ensite <name>.conf

Deaktivieren eines virtuellen Hosts:

> sudo a2dissite <name>.conf

Layout der Konfiguration unter Ubuntu:

/etc/apache2/
|-- apache2.conf
|        -- ports.conf
|-- mods-enabled
|        -- *.load
|        -- *.conf
|-- conf-enabled
|        -- *.conf
|-- sites-enabled
|        -- *.conf

Standard Dokumentverzeichnis (Docoument root):

/var/www/html

Nützliche Links

Ubuntu documentation: HTTPD – Apache2 Webservice

Cheat-sheet: Apache2 Commands