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

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

(C / C++): Bitmanipulation mit bitweise Operatoren

Bitweises Komplement / Bitwise NOT

Der NOT-Operator (~) invertiert jedes einzelne Bit einer Zahl.

Beispiel mit 8-Bits:

 0000 0100 = 4
~0000 0100 = 1111 1011 = 251

Bitweises UND / Bitwise AND

Der AND-Operator (&) wird auf jedes einzelne Bit zwischen zwei Operanden angewendet. Das Ergebnisbit ist 1, wenn beide Bits den Wert 1 aufweisen.

Beispiel mit 4-Bits:

 0001
&1001
-----
 0001

Bitweises ODER / Bitwise OR

Der OR-Operator (|) wird auf jedes einzelne Bit zwischen zwei Operanden angewendet. Das Ergebnisbit ist 1, wenn eines der beiden Bits den Wert 1 aufweisen.

Beispiel mit 4-Bits:

 0001
|1001
-----
 1001

Bitweises exklusives ODER / Bitwise XOR

Der XOR-Operator (^) wird auf jedes einzelne Bit zwischen zwei Operanden angewendet. Das Ergebnisbit ist 1, wenn die beiden Bits unerschiedliche Werte haben.

Beispiel mit 4-Bits:

 0001
^1001
-----
 1000

Linksverschiebung / Left shift

Bei der bitweise Linksverschiebung (<<) werden alle Bits um die angegebene Position nach links verschoben.

Beispiel mit 4-Bits:

0001 << 1 = 0010
0001 << 2 = 0100

Rechtsverschiebung / Right shift

Bei der bitweise Rechtsverschiebung (>>) werden alle Bits um die angegebene Position nach rechts verschoben.

Beispiel mit 4-Bits:

0010 >> 1 = 0001
0100 >> 2 = 0001
1010 >> 1 = 0101 

Bit löschen

Will man in einem Byte mehrere Bits auf 0 setzen, wird dazu die UND-Verknüpfung verwendet.

PORTB &= ~((1 << 0)

Löscht Bit 0

Sollen gleichzeitig mehrere Bits gelöscht werden:

PORTB &= ~((1 << 0) | (1 << 2));

Löscht Bit 0 und 2 in PORTB

Bit invertieren


PORTB ^= (1 << 3);

Invertiere das dritte Bit

Bit setzen


PORTB |= (1 << 2);

Setzt das Bit 2 auf 1

Beispiel Methoden:


void set_PORTB_bit(int8_t  position, int8_t  value)
{
	// Sets or clears the bit in position 'position'
	// either high or low (1 or 0) to match 'value'.
	// Leaves all other bits in PORTB unchanged.
	
	if (value == 0)
	{
                // Set bit # 'position' low
		PORTB &= ~(1 << position);
	}
	else
	{
                // Set bit # 'position' high
		PORTB |= (1 << position);
	}
}

void set_Pin_Mode(int8_t  position, int8_t  value){
	if (value == 0)
	{
                // Set bit # 'position' to input
		DDRB  &= ~(_BV(position));
	}
	else
	{
                // Set bit # 'position' to output
		DDRB  |= (1 << position);
	}
}

Nützliche Links

mikrocontroller.net: Bitmanipulation

wikipedia: Bitweiser Operator

stackoverflow.com: How do you set, clear and toggle a single bit?

LearnCpp.Com: Bitwise operators

Windows 10: Autostart Programme hinzufügen und entfernen

Seit Windows 10 gibt es im Startmenü keinen Autostart-Ordner mehr. Aber es gibt weiterhin eine Möglichkeit, Programme beim Hochfahren des PC’s, automatisch starten zu lassen. Diese Autostart-Programme können über folgenden Befehl hinzugefügt werden:

Autostart-Programme hinzufügen

  1. Durch Drücken der Tastenkombination: „Windows-Taste + R“
  2. Danach den Befehl: „shell:startup“ eintippen und ausführen
  3. Im geöffneten Autostart-Ordner können nun die Applikationen mit Drag&Drop hineingezogen werden

Danach werden die Autostart-Programme beim Hochfahren ausgeführt.

Autostart-Programme entfernen

  1. Durch Drücken der Tastenkombination: „Windows-Taste + R“
  2. Danach den Befehl: „shell:startup“ eintippen und ausführen
  3. Im geöffneten Autostart-Ordner können nun die Verknüpfungen gelöscht werden

Danach werden die Autostart-Programme beim Hochfahren nicht mehr ausgeführt.

Linux: Bereinigen der „/boot“ Partition mit Hilfe der Konsole

Sollte es vorkommen, dass die „/boot“ Partition keinen freien Speicherplatz mehr besitzt, müssen die alten überflüssigen „Kernel-Images“ entfernt werden.

1. Prüfen welcher Kernel aktuell verwendet wird, damit dieser nicht gelöscht wird:


>uname -r

2. Anzeigen aller installierten Kernels:


>dpkg --list 'linux-image*'

3. Löschen der nicht mehr benötigten Kernels. Dabei muss {Version} mit der Versionsnummer ersetzt werden:


>sudo apt-get remove linux-image-{Version}

4. Löschen der nicht mehr benötigten Pakete:


>sudo apt-get autoremove

5. Am Schluss kann noch die Kernel-Liste aktualisiert werden:


>sudo update-grub

Der Befehl „apt-get remove“ funktioniert nicht da „/boot“ zu 100% voll ist

Erhält man die Meldung, es müsse zuerst


>sudo apt-get -f install

verwendet werden, da nicht alle Pakete korrekt installiert sind, dieser Befehl aber wegen fehlendem Speicherplatz auf „/boot“ nicht beendet werden kann, muss manuell auf der „/boot“ Partition platz geschaffen werden.

1. Anzeigen, welche Kernel installiert sind:


>ls -l /boot

2. Manuelles löschen der Dateien:
So viele nicht mehr benötigte Kernel-Dateien löschen, bis genügen Speicherplatz zur Verfügung steht.


>sudo rm vmlinuz-{version}
>sudo rm initrd-{version}
>sudo rm System.map-{version}

3. Installation bereinigen:


>sudo apt-get -f install

4. Löschen der Pakete, welche nicht mehr gebraucht werden:


>sudo apt-get autoremove

Nützliche Links

askubuntu.com: What is the safest way to clean up /boot partition?

Windows 7: Windows Updater hängt „Es wird nach Updates gesucht…“ – manuelle Installation funktioniert auch nicht

Zuletzt aktualisiert am: 23.03.2017

Wer sein Windows auf den neusten Stand bringen will und den „Windows Updater“ nach neuen Updates suchen lässt, kennt die Meldung „Es wird nach Updates gesucht…“.
Was aber, wenn nach einigen Stunden diese Meldung immer noch angezeigt wird?

Eine Lösung im Internet wird schnell gefunden. Beispiel auf Giga.de: Windows 7 Update fix. Leider hat diese Lösung bei mir nicht ohne Weiteres funktioniert.

Lösung auf Giga.de:

Damit Windows 7 wieder Updates findet, installiert ihr euch folgende Updates in dieser Reihenfolge:

  • KB3078601
  • KB3109094
  • KB3185911
  • KB3020369
  • KB3172605

Damit diese Updates überhaupt installiert werden konnten, musste die Einstellung Automatische Updates auf „Nie nach Updates suchen“ eingestellt werden. Danach Windows neu starten und die Updates nochmals ausführen. Sehr wahrscheinlich werden einige dieser Updates schon installiert sein, was aber kein Problem darstellt, da diese nicht nochmals installiert werden. Danach hat es wieder funktioniert.

Achtung: nicht vergessen die Einstellung Automatische Updates „Nie nach Updates suchen“ wieder rückgängig zu machen.

Nützliche Links

Microsoft Community: Windows Update hängt ewig

Giga.de: Windows-Update hängt – so geht’s trotzdem (Windows 7, 8, 10)

Borns IT- und Windows-Blog: Windows 7 Update findet nichts oder es dauert ewig

AVR: Unterschied zwischen sleep_cpu() und sleep_mode()

Die zwei Methoden unterscheiden sich nur beim Handling des SE-Bit. Bei der Methode sleep_cpu() muss durch den Code sichergestellt werden, dass zuvor das SE-Bit gesetzt wird und nach dem Aufwachen der CPU das SE-Bit wieder gelöscht wird.

Beispiel mit sleep_cpu():


    sleep_enable();
    sleep_cpu();
    sleep_disable();

Beispiel mit sleep_mode():


    sleep_mode();

Nützliche Links

avr-libc: sleep

AVR: ATtiny13 / ATtiny25 / ATtiny45 / ATtiny85 Sammelsurium

Zuletzt aktualisiert am: 06.09.2017

Ü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

Those who would give up essential Liberty …

Those who would give up essential Liberty to purchase a little temporary Safety, deserve neither Liberty nor Safety. (Benjamin Franklin)

„Wer grundlegende Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu gewinnen, verdient weder Freiheit noch Sicherheit.“

Wikiquote: Benjamin Franklin