Abou Chleih

{the magic lies between the brackets}

Menü Schließen

Kategorie: Allgemein (Seite 1 von 2)

Windows 10 – DVD Laufwerk wird nicht erkannt

Eigentlich braucht man – oder zumindest ich – kein DVD Laufwerk mehr. Da ich aber noch eines in einer verstaubten Schachtel fand und es nicht entsorgen wollte, ist es direkt in meinen PC gewandert.
Leider wurde das Gerät nicht von Windows erkannt.
„Alles klar“, dachte ich. Führe ich eben im Geräte-Manager eine manuelle Suche durch. Gesagt, getan – keine Änderung.
Anschließend überprüfte ich alle Kabel und Anschlüsse. Auch hier war es korrekt angeschlossen, ebenso wird es im UEFI System Browser meines Motherboards erkannt.

Das Problem liegt also bei Windows. Und da es schon einige Personen mit ähnlichen Problemen gibt, dachte sich Microsoft wohl, dass ein Support Eintrag angebracht ist.

Diesen arbeitete ich ab, jedoch funktionierte bei mir nur Resolution 5 des Eintrags.

Also wie löste ich das Problem? 

Wir gehen in die Registry per Registry Editor (Win+R und regedit) und navigieren zum Pfad HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi.
Hier erstellen wir einen neuen Schlüssel (Ordner) Controller0 (ist eine Null) per Rechtsklick auf den Schlüssel atapi.
Anschließend navigieren wir in den Schlüssel und erstellen dort ein DWort mit 32-bit Länge:
Name: EnumDevice1
Wert: 1

Schlussendlich starten wir den Rechner einmal neu, das Laufwerk wird dann ordnungsgemäß erkannt.

Signieren von Visual Studio for Office Add-Ins (autom. Installation)

Bei normalen Windows Desktop oder Windows Phone Applikationen ist ein Signieren der Applikation nicht dringend nötig bzw. nur wenn die Herkunft des Executables verifiziert werden soll um lästige Abfragen zu vermeiden.
Auch bei sogenannten Visual Studio for Office Add-Ins (kurs: vsto) ist dies normalerweise nicht erforderlich.
Es sei denn, man will die Add-Ins nicht manuell per Registry Eintrag oder Bestätigungdialogen installieren, sondern automatisiert.
Egal welchen Fall man bevorzugt, man benötigt zu allererst die Visual Studio for Office Runtime (VSTOR).

Nach der Installation können wir nun mit einem Doppelklick auf die .vsto-Datei das Add-In installieren, allerdings bisher nur mit folgender Warnung:
warn_install_addin

Bei einer Automatisierung des Installationsprozesses soll dies nicht mehr passieren und der Prozess insgesamt im Hintergrund ausgeführt werden (silent install).
Dies funktioniert mit Hilfe der VSTOR – siehe Link oben – und der darin enthaltenen VSTOInstaller.exe.
Diese befindet sich nach der Installation im Verzeichnis C:\Program Files (x86)\Common Files\Microsoft Shared\VSTO\10.0.

Ein Start des Programms gibt uns direkt alle verfügbaren Parameter zurück (Ein Doppelklick auf eine ,vsto-Datei ruft übrigens auch nur dieses Programm mit dem Parameter /i <.vsto-Pfad> auf)

VSTOInstaller.exe [[/install <URL> ] | [/uninstall <URL>]] [/silent] [/help]

/install, /i: Projektmappe installieren. Nach dieser Option muss der vollqualifizierte Pfad eines Bereitstellungsmanifests im Format „http://“, „https://“ oder „\\Servername\Ordnername“ angegeben werden.

/uninstall, /u: Projektmappe deinstallieren. Nach dieser Option muss der vollqualifizierte Pfad eines Bereitstellungsmanifests im Format „http://“, „https://“ oder „\\Servername\Ordnername“ angegeben werden.

/silent, /s: Ohne Eingabeaufforderungen oder Informationseingaben installieren oder deinstallieren.

Nun wissen wir, dass der Aufruf für unsere Add-In Installation wie folgt aussehen muss:
VSTOInstaller.exe /i "<PFADZURVSTODATEI>" /s

Führen wir dies nun aus, werden wir merken, dass das Add-In nicht installiert ist.
Der Grund ist ganz einfach: Eine silent Installation lässt sich nur durchführen, wenn das Programm/Add-In mit einem validen Zertifikat signiert ist.

Natürlich könnten wir uns jetzt für viel Geld ein ordentliches Zertifikat von einer Authority kaufen, allerdings kostet das viel Zeit und Geld.
Zumal wir unsere Software meist nicht verkaufen, sondern nur intern nutzen.

Lösung: Eigenes Zertifikat mit Kette

Was braucht man für ein valides Zertifikat?

  • Eine gültige Certificate Chain, zu deutsch: Zertifikatskette, kurz: eine höherwertige Zertifizierungsstelle (Authority) muss das Zertifikat des Clients bestätigen.
  • Eine .pfx-Datei, mit welcher wir das Visual Studio Projekt signieren
  • Eine GPO, mit der wir die Zertifikate in unserem Netzwerk bekannt machen (wir selbst sind schließlich keine zertifizierte Authority, sonst könnten wir ja einfach Zertifikate von google.de erstellen und uns dafür ausgeben 😉 )

Fangen wir also an.
Wir müssen ein Zertifikat erstellen – für eine Authority (wir fangen ganz oben in der Hierarchie an).
Was wir benötigen, ist also ein Programm, welches uns Zertifikate erstellt: MakeCert.exe – Documentation/Parameter Specification

Dieses Programm finden wir abhängig von der Visual Studio Version und den SDKs in einem der folgenden Pfade:

  • C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\makecert.exe
  • C:\Program Files (x86)\Windows Kits\8.0\bin\x86\makecert.exe

Wenn man sich die Dokumentation des Tools durchliest, kann man schnell entdecken, wohin die Reise nun geht:

makecert
-n "CN=MeinAuthorityName" #CN= muss immer voranstehen; specifies a name for the certificate.
-cy authority #Defines Certificate type (here: authority)
-a sha1 #Hash algorithm
-sv "MeinPrivateKeyFileFuerDieAuthority.pvk" #Name of the subject's .pvk file. Wird erstellt, wenn nicht vorhanden
-r "MeinAuthorityZertifikat.cer" #Creates a self-signed certificate.

Nun werden wir aufgefordert ein Passwort für das Private Key File zu erstellen (dies sollte ein kompliziertes Passwort sein).

Nun haben wir folgende Dateien:

  • MeinPrivateKeyFileFuerDieAuthority.pvk
  • MeinAuthorityZertifikat.cer

Diese benötigen wir nun, um ein Client Zertifikat zu erstellen, welches von unserer Authority ausgestellt ist (Chain).

makecert 
-n "CN=MeinClientZertifikatName" #specifies name of certificate
-ic "MeinAuthorityZertifikat.cer" #Location of the issuers certificate.
-iv "MeinPrivateKeyFileFuerDieAuthority.pvk" #Issuers (Aussteller = Authority) private key file.
-a sha1 #Hash algorithm
-sky exchange #Für Zertifikate nutzt man exchange (KeyExchange)
-pe #Marks the private key as exportable.
-sv "MeinPrivateKeyFileFuerDasClientZertifikat.pvk" #Erstellt ein .pvk file, falls nicht vorhanden für das Client Zertifikat &nbsp; 
"MeinClientZertifikat.cer" #Erstellt das Zertifikat mit angegebenem Namen

Nun werden wir entsprechend aufgefordert die Passwörter für das Authority Key File einzugeben, das Kennwort für das ClientZertifikatKeyFile zu definieren.
Als Ergebnis haben wir nun unser Client Zertifikat mit Private Key file.

  • MeinPrivateKeyFileFuerDasClientZertifikat.pvk
  • MeinClientZertifikat.cer

Die Zertifikatskette ist nun komplett, fehlt noch das .pfx File.

Um unsere Zertifikate in das .pfx Format zu konvertieren, bietet uns Microsoft ein Tool namens pvk2pfx.exe  an.

pvk2pfx.exe 
-pvk MeinPrivateKeyFileFuerDasClientZertifikat.pvk #Verweis auf das Private Key File des Clients
-spc MeinClientZertifikat.cer #Verweis auf das Cleint Zertifikat
-pfx MeinPfxZertifikat.pfx #Erstellt ein .pfx File 
-pi PasswortDesPrivateKeyFiles #Optional! Dialog kann ebenfalls genutzt werden 

Nun haben wir unser .pfx-File mit dem wir unsere Visual Studio Projekt signieren können.
Dazu einfach in das entsprechende

 Projekt -> Rechtsklick -> Eigenschaften -> Signierung -> Aus Datei wählen

und das entsprechende Zertifikat (.pfx) auswählen.

Signierung_VisualStudio

Nun müssen wir die Zertifikate und damit die Kette noch per GPO bekannt/valide machen.
Dies ist aber ein Thema für einen anderen Tag.

Intel I218-LM Treiber für Windows PE in Enteo DSM (HP 840 G2)

Windows 8 ist in den meisten Betrieben noch nicht sehr verbreitet. Ultrabooks werden dennoch meist mit diesem OS und bald auch mit Windows 10 ausgeliefert.
Um einen neuen Rechner in Enteo DSM zu betanken, importiert man alle Treiber vom Laptop (hier: HP Ultrabook 840 G2) in die Enteo DSM Umgebung.
Es werden automatisch die aktuellen Treiber als Driver Package erstellt.
Leider gibt es hier einige Probleme mit der Boot Environment, welche auf WinPE 3.x und 4.x basiert.
Die Treiber sind nicht kompatibel und so können entsprechende Pakete von der Boot Environment nicht mehr aus dem Netzwerk geladen werden.
Auf der Suche nach den passenden Treibern, findet man viele User mit gleichen Problemen, allerdings sind die dortig verlinkten Websites meist nicht mehr verfügbar.
Die Lösung für WinPE 3.0 x64 ist hier wie folgt:

Für x32 Boot Environments sollte man einfach in den x64 durch x32 ersetzen, das sollte dann ebenso funktionieren!

Die passenden Treiber bekommt man in einer Intel I218-LM Treibersammlung von Intel.
Hier entpackt man zuerst das Paket und navigiert in den Ordner PRO1000\Winx64\NDIS63. Dort findet man nun eine Sammlung versch. Treiber für die Netzwerkkarten.
Anhand der .inf-Dateien kann man den passenden Treiber finden. Im Fall des HP 840 G2 Ultrabooks lautet die ID der NIC VEN_8086&DEV_15A2&SUBSYS_2216103C.
Der wichtige Teil ist hier die DEV-ID, also die 15A2.
In den .inf-Dateien finden wir nun versch. IDs und suchen nach folgendem Part:

%E15A2NC.DeviceDesc% = E15A2.6.2.1, PCI\VEN_8086&DEV_15A2
%E15A2NC.DeviceDesc% = E15A2.6.2.1, PCI\VEN_8086&DEV_15A2&SUBSYS_00008086
%E15A2NC.DeviceDesc% = E15A2.6.2.1, PCI\VEN_8086&DEV_15A2&SUBSYS_00011179

Quelle: e1d63x64.inf

Wie die Quelle vermuten lässt, ist die Datei die e1d63x64.inf. Nun haben wir den passenden Treiber.
Da Enteo bereits ein passendes Driver Package erstellt hat, legen wir eine neue Revision dessen an und löschen die alten Treiber aus Extern$/drv/{XY…..-….-….-ABCD}.
Nun kopieren wir den Treiber in den Ordner.
Anschließend müssen wir noch die projconf.inf anpassen, welche in Extern$/drv/ liegt. Enteo beschreibt hier die benötigten Treiber. Die Werte passen aber nicht mehr!

;Please do not edit anything manually in this luxurious file.

[Version] Signature=“$Windows NT$“

[Hardware IDs] PCI\VEN_8086&DEV_15A2&SUBSYS_2216103C

[PCI\VEN_8086&DEV_15A2&SUBSYS_2216103C] File=drv\{XY….-…-…-ABCD}\e1d63x64.inf
Friendly=“Intel(R) Ethernet Connection (3) I218-LM“

Nun das Paket neu distributen, in die Boot Environment aufnehmen und verteilen lassen. Der Treiber wird dann automatisch von Enteo geladen.

Migration von bestehender Check_MK Installation auf OMD

Da die Repositories von Debian nicht die aktuelle Version von Check_MK beinhalten, aber nur diese die Funktion besitzt SNMP Traps zu empfangen und auswerten, musste ich einen Server von einer manuellen Installation auf die OMD Installation umstellen und bestehende Daten migrieren.
Die Migration ist eigentlich sehr einfach.
Man nimmt die Daten aus dem Verzeichnis /etc/check_mk/ des alten Servers und kopiert diese auf den neuen in den Ordner /opt/omd/sites/{SITE}/etc/check_mk.
Danach überprüft man die Rechte und weist als Eigentümer (rekursiv) den Sitenamen {SITE} zu.
Danach sollten die Daten für das System beschreibbar sein.

Nun kann man sich einloggen, wird aber kurz darauf feststellen, dass die Rechte nicht stimmen. So ist der omdadmin bzw. sind die bestehenden User zwar existent, aber nicht in den richtigen Gruppen.
Also gehen wir in das Verzeichnis /opt/omd/sites/monitor/etc/check_mk, öffnet die Datei multisite.mk und fügt in der Zeile admin_users = [ ... ] den Punkt ,"omdadmin" zu.
Nun kann man die bestehenden User anpassen und die Rechte zuweisen.

Fertig! Die groben Einstellungen sind nun importiert. Dienste oder Spezialabfragen über Plugins müssen allerdings, falls versch. Nagios Versionen, neu geschrieben/installiert werden.

Pluginsverzeichnis für Check_MK ist /usr/lib/nagios/plugins. Die eigenen Plugins in diesem Verzeichnis müssen nun in das Verzeichnis von OMD kopiert werden /opt/omd/versions/1.20/lib/nagios/plugins.

Nun muss man noch die Rulesets in Check_MK entsprechend den neuen Verzeichnissen anpassen bspw.:

bash /usr/lib/nagios/plugins/my_Check_bla -H $HOSTADDRESS$ -C public -v 2c -t raid -w 90 -c 95

bash /opt/omd/versions/1.20/lib/nagios/plugins/my_Check_bla -H $HOSTADDRESS$ -C public -v 2c -t raid -w 90 -c 95

Nun sollte der Server wie gewohnt funktionieren.

Falls nicht, liegt es daran, dass der Server die alten, gecacheden Daten als valide ansieht und die neuen, da evtl. neuer Syntax, als invalide.
Beheben lässt es sich, indem man die Hosts neu prüfen lässt:

omd$mysite: check_mk -u
omd$mysite: check_mk -I {host}
omd$mysite: check_mk -v {host}

{host} ist optional, sollte das Argument nicht genannt werden, so wird der Task auf alle Hosts ausgeführt.

Natürlich müssen noch eventuell Freigaben bezüglich der Domänennamen oder IPs berücksichtigt werden. Bspw. SNMP Freigabe nur auf IP x.

Installieren und Konfigurieren von OpenWRT auf dem TP-Link WR710N

Der TP-Link WR710N war für kleine WLAN-Netze gut zu gebrauchen, ansonsten aber sehr langsam und instabil.
Da ich gute Erfahrungen mit meinem WR841N auf OpenWRT gemacht hatte, habe ich mich kurzerhand entschlossen auch den WR710N auf OpenWRT „umzurüsten“.
Dies ging leider nicht so einfach via Plug&Play.
Nun aber von Anfang an:

Achtung: Die Hardwareversion des TP-Link WR710N ist sehr wichtig, hier ist nur von der Version (EU) v1.1 die Rede!
Funktionalität von anderen HW-Versionen kann man hier erfahren.

Über das Repository kann man den aktuellsten Softwarestand herunterladen, in unserem Fall ist das  die openwrt-ar71xx-generic-tl-wr710n-v1-squashfs-factory.bin.

Über die Upgradefunktion der Weboberfläche unseres Routers wird die Binary-Datei, als das Update, nun aufgespielt.
Dies kann nun etwas dauern. Im Nachhinein ist der Router nur über TELNET (vorher als Putty herunterladen) über die IP 192.168.1.1 verfügbar.
Grundsätzlich ist kein root-Kennwort gesetzt und man gelangt direkt ins Terminal. Hier gleich ein sicheres (!) Passwort für den Root vergeben:
passwd

Nun muss man erstmal (sollte man ein eigenes Netz schon in Betrieb haben) die IP-Konfiguration vornehmen.
Dazu im Terminal die Datei /etc/config/network mit dem Editor vi bearbeiten.
vi /etc/config/network

Hier nun das Interface „lan“ wie gewünscht einstellen, also:
(Per ‚a‘ kommt man in das Bearbeitungsmenü, per ESC wieder ins Kommandomenü, zum Löschen einer Zeile ‚d‘ im Kom-Menü drücken)

option ipaddr 'x.x.x.x'
option gateway 'x.x.x.x'
option dns 'x.x.x.x'

Nun speichern wir per ESC + wq + Enter.

Anschließend startet man den Router per „Strom-Weg“ neu. (Der Init-Befehl  läuft bei mir leider immer in eine Boot-Schleife).
Nun kann man den Router per definierter IP-Adresse erreichen.
Will man jetzt die Weboberfläche Luci installieren, muss man opkg update ausführen.
Bei mir waren die Links in der opkg.conf veraltet, wodurch das Update bei allen Repos mit einem 404-Error abbrach.
Also muss man die /etc/opkg.conf wieder mit vi bearbeiten:
vi /etc/opkg.conf
und die Links mit diesen hier ersetzen, bsp:

src/gz barrier_breaker_base http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/base

Wichtig ist der aktuelle Link: http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages

Danach nochmals opkg update ausführen.

Jetzt sollten alle Repos aktualisiert sein und man kann mit der Installation von Softwarepaketen beginnen.
So installiert man nun die Weboberfläche mit:
opkg install luci
Alle Dependencies werden hierbei direkt mitinstalliert.
Also noch den http-Server via /etc/init.d/uhttpd start starten und anschließend kann man das Webinterface besuchen, indem man die IP-Adresse per Webbrowser aufruft.
Optional, damit der HTTP-Server immer beim Booten startet:
/etc/init.d/uhttpd enable

Das war’s! Nun hat man einen vollständigen und stabilen Router mit VLAN-Fähigkeit, Firewall, VPN etc.

Grundlagen der Programmierung: Static Deklaration

Wann sollte man eine Klasse statisch deklarieren und was ist dieses Static eigentlich?
Behandeln wird einmal den zweiten Punkt und nehmen die Klasse Console.
Die Klasse Console besitzt die statische Methode Write().

 

Diese können wir also im Code aufrufen, ohne explizit eine Instanz der Klasse zu erstellen:

 Console.Write("Hello World");

Diese Deklaration nennt man static, da wir hier nicht explizit auf die Daten einer bestimmten Objektinstanz zugreifen, sondern die Daten immer gleich zurück gegeben werden. Unabhängig vom Zustand des Objektes, also von den Werten, welche einer Variable in dem Objekt gegeben werden.

 Console.Write("Hello World");

wird also immer „Hello World“ zurück geben!

Um eine Ausgabe in der Konsole zu tätigen, brauchen wir kein spezielles Console-Objekt, also nicht sowas:

 
Console c = new Console(); 
c.Write("Hello World"); // FALSCH

Wann benötige ich dann „normale“ Methoden und Variablen?

Das kommt in einem anderen Post 😉

Aussagenlogik in der Mathematik

In der Mathematik und der Informatik müssen Aussagen auf ihre Wahrheit hin untersucht werden.
Also muss man „schlicht“ herausfinden, ob die Aussage

  • wahr
  • falsch

ist.

Beispiel:
Aussage: 1 = 2 -> Diese Aussage ist falsch
Aussage: 4 = 4 -> Die Aussage ist richtig, also wahr

Schließt man Vermutungen aus, kann man dies mit beliebigen Aussagen fortführen. Es kann also jede Aussage entweder wahr oder falsch sein.

Wie in der Umgangssprache, so kann auch in der Mathematik eine Aussage verneint (negiert) werden. Kennzeichnen tut man dies mit ¬Aussage oder /Aussage sowie einem Negierungsstrich über dem A.

Beispiel: ¬(„Heute ist ein schöner Tag“) -> („Heute ist kein schöner Tag“)
Beispiel2: Aussage: „Die Lampe leuchtet“ => ¬(„Die Lampe leuchtet“) -> („Die Lampe leuchtet nicht“)

Also wird aus einer wahren Aussage eine falsche Aussage und vice versa.

Im folgenden werde ich für wahr eine 1 setzen und für falsch eine 0. Dies ist bei mir reine Gewohnheitssache, da ich aus der IT komme und dort mit boolschen Binärwerten (0/1) gearbeitet wird.

Wahrheitstabelle für Negation (NOT oder Nicht):

NOT

Ist eine Aussage wahr (1), so wird er falsch (0). Ist eine Aussage falsch(0), so wird sie wahr(1).

Sprechweise: ¬A ist die Negation von A.

Zur Wahrheitstabelle gibt es noch kurz etwas zu sagen, bevor wir richtig anfangen:
Wahrheitstabellen haben immer 2^n Möglichkeiten, wobei n für die Anzahl der Parameter steht. Im oberen Beispiel haben wir einen Parameter 2^1 = 2, also zwei Möglichkeiten. Bei zwei Parametern (Beispiel folgt nachher) haben wir 2^2 = 4 Möglichkeiten usw.
Dann müssen wir alle Möglichkeiten abdecken, indem wir jede mögliche Konstellation der Werte in diese Tabelle schreiben (A:01010101, B:00110011, C:00001111).
Auf die Werte in der Klammer gehe ich jetzt nicht weiter ein, aber mit etwas Nachdenken kommt man auf das System.

 Machen wir nun also weiter.

Wie in der Umgangssprache, gibt es auch in der Technik und Mathematik Aussagen die sich bedingen, die getrennt voneinander das gleiche Aussagen etc.

Für solche Bedingungen, gibt es die logischen Operatoren oder richtiger Junktoren, die da wären:

1.Konjunktion (AND / UND):

Diesen logischen Operator kann man sich wie eine elektronische Reihenschaltung mit zwei Schaltern vorstellen.

Reihenschaltung

Für die Nichttechniker: A und B sind Schalter, der Kreis mit dem Kreuz ist eine Glühlampe und die zwei parallelen Striche eine Energiequelle, bspw. eine Batterie

Der Stromkreislauf ist geschlossen, wenn beide Schalter geschlossen sind. Erst wenn dies der Fall ist leuchtet die Lampe.

Symbol: ∧, Beispiel: A∧B=C, gesprochen „Wenn A und B, dann C“.

Bauen wir uns dafür nun wieder eine Wahrheitstabelle mit zwei Eingängen („Schaltern“) A und B und einem Ausgang („Lampe“) A∧B

0 = Schalter nicht gedrückt bzw. Lampe leuchtet nicht, 1 = Schalter gedrückt bzw. Lampe leuchtet

AND

2. Disjunktion (OR / ODER)

Diesen logischen Operator kann man sich wie eine elektronische Parallelschaltung mit zwei Schaltern vorstellen.

Parallelschaltung

Der Stromkreislauf ist geschlossen, wenn einer der beiden Schalter geschlossen ist, also Schalter A oder Schalter B. Erst wenn dies der Fall ist leuchtet die Lampe.

Symbol: ∨, Beispiel: A∨B=C, gesprochen „Wenn A oder B, dann C“.

Bauen wir uns dafür nun wieder die entsprechende Wahrheitstabelle mit zwei Eingängen („Schaltern“) A und B und einem Ausgang („Lampe“) A∨B

OR

3. Implikation (Folgt-aus)

Die Implikation A=>B ist essentiell für mathematische Beweisführungen.

Allerdings wird es hier auch etwas komplizierter, denn zuerst einmal muss man sich etwas klar machen.

Nehmen wir an, man habe eine falsche Aussage, bspw. 2 = 5 (A) und nehme diese *2 -> 2*3 = 5*3 <=> 6 = 15 (B) ist immer noch falsch.
Also können wir sagen, dass eine falsche Aussage auch eine falsche Aussage implizieren kann.

Nehmen wir nun allerdings wieder (A) * 0 -> 2*0 = 5*0 => (keine Äquivalenz!) 0 = 0. Dies ist eine wahre Aussage!
Also können wir sagen, dass eine falsche Aussage auch eine wahre Aussage implizieren kann.

Sagen wir jetzt 2 = 2 (A) ist eine wahre Aussage. Und multiplizieren/addieren/dividieren/subtrahieren diese mit einer beliebigen Zahl, so kommt immer eine wahre Aussage heraus. (Bspw.: 2+2 = 2+2 <=> 4 = 4 -> wahr)
Also können wir sagen, dass eine wahre Aussage auch eine immer eine wahre Aussage impliziert.

Nehmen wir nun wieder diese wahre Aussage 2 = 2. Wir werden feststellen,  dass wir keine falsche Aussage aus dieser implizieren können.

Die Wahrheitstabelle sieht dann wie folgt aus:

Implikation

Symbol: =>, Beispiel: A=>B, gesprochen „A impliziert B“ oder „Aus A folgt B“.

4. Äquivalenz (Genau-wenn)

Symbol: <=>, Beispiel: A<=>B, gesprochen „A genau dann, wenn B“ oder „A ist äquivalent zu B“.

Herleiten können wir diese Wahrheitstabelle einfach, in dem wir eine falsche Aussage mathematisch versuchen mit Äquivalenzumforumgen (Subtraktion, Addition, Multiplikation (außer *0) oder Division) umzuformen, sodass dies eine wahre Aussage ergibt.
Es wird uns nicht gelingen.
Auch anders herum wird es uns nicht gelingen. Denken wir nochmals an die Implikation: Dort habe man nur eine falsche Aussage in eine wahre umformen können, indem ich mit 0 multiplizierte, was nicht äquivalent ist. Denn man kann diese Operation nicht mehr rückgängig machen.

Daraus folgt:

Aequivalenz

Wichtige Begriffe in der Aussagenlogik:

  1. Tautologie = eine Aussage, die immer wahr ist.
  2. Junktoren = logische Operatoren
    1. zweistellige Junktoren:  ⇔, ⇒, ∨, ∧
    2. einstellige Junktoren: ¬

Neben den bisher eingeführten Verknüpfungen gibt es noch weitere, welche vorwiegend in der  Informations- und Digitaltechnik eingesetzt werden.

Sätze der Aussagenlogik:

Sätze von De Morgan:

  • ¬(A∧B) ⇔¬A∨¬B
  • ¬(A∨B) ⇔¬A∧¬B

Kontrapositionssatz:

  • (A⇒B) ⇔ (¬A⇒¬B)

Distributivsatz:

  • A∧(B∨C) ⇔(A∧B)∨(A∧C )
  • A∨(B∧C) ⇔(A∨B)∧(A∨C )

Allgemein gültige Lösung für Zahlenketten vom Typ (x+iy) bei i <= 4

Man kam auf mich zu mit einer Knobelaufgabe der siebten Klasse und wollte von mir die Lösung für diese Frage bzw. Aufgabe wissen.
Aufgabe:
Gegeben sei eine Zahlenkette mit der „Startzahl“ x. Diese wird viermal mit der „Additionszahl“ y multipliziert.
Die Summe der Einzelergebnisse ist der Wert S.

Bsp.

math_990_2570d0efd9719cda8b93b62afdb66550

Frage:
Was ist eine Lösung für S = 100 und S = 66?

Lösungsansatz:

Zerbröseln wir einmal das ganze. Wenn man die obere Zahlenkette anschaut, so kann man sehen, dass

3(=x)   5(=x+y)    7(=x+2y)   9(=x+3y)   11(=x+4y) = S für x = 3, y = 2

x + (x+y) + (x+2y) + (x+3y) + (x+4y) = S

Nun kann man diese Funktion auch so schreiben: math_975.5_d9ea1843b3d8b23abc6979ff78d90fdf

 Durch Ausaddieren aller Werte, ergibt sich: 5x + 10y = S

Durch Umstellung ergeben sich folgende Werte: math_983_c4a9c5d5aca00bfc06d62c8d2641ac4a (1) und math_983_8ca5deb2bad2fb104d082274710eae66 (2)

Aus (2) in (1) folgt: y= math_983_6bd8c2a034b85ef49d5fed12d5ecb4e8

Aus (1) in (2) folgt: x= math_983_fd15c3a41dec083cf95a625f18aadaf9

Setzt man (1) und (2) nun wieder in die Funktion ein, so erhält man:

math_962_7b3b7172a00785dcbbbd15db86448ee2

Will man bspw. einen Wert für x wissen für die Summe 100, so nimmt man folgende Formel:
math_983_3bdbf171fee2a606058c9a1f8daaa7c4
x in (1):
math_983_ac92172b5553ddb7f0b67c5d2c789618 oder allg. math_983_6e416c20a08e1127fbb98cefed01f3ec

Die Lösungsmesse für für x und y bei S = 100 ist also:

L = {x = 10; y = 5}

Für 66 erhält man die Lösung:

L = {x = 6,6; y = 3,3}

Dies kann man jetzt noch weiterspinnen und den Parameter i ohne Zahlenwerte belassen, sodass wir eine allgemingültige Lösung für alle Zahlenketten bekommen.

Dies tun wir jetzt auch:

math_976_6943eda49eb15da2814e06b72938246c

Dies können wir nun nach y auflösen:

math_971_2ff9a81f9f4d6ac1b055cad7ad636c88(1)

math_971_a77e678ba05def2c4febe9079f424c84(2)

Nun (1) in (2) einsetzen und vice versa und man hat die Formeln für x und y unabhängig von den gegebenen Parametern y und x.

Fertig, abschließend einfach die Aufgabenwerte einsetzen.

Die ersten Wochen im nebenberuflichen Studium an der FOM

Bereits nach meinem Abitur habe ich mich mit dem Thema Studium beschäftigt, wollte zu diesem Zeitpunkt jedoch kein Studium beginnen, da ich erst einmal ein wenig flüssig werden wollte und zudem auch (ich bin ehrlich) keine Lust auf noch mehr „Schule“ hatte.

Also entschied ich mich für eine Ausbildung als Fachinformatiker, was im Nachhinein betrachtet auch die richtige Entscheidung war. Ich konnte während meiner Ausbildung einige Erfahrung im ERP-Umfeld (Dynamics NAV) sammeln und erhielt auch erste Einblicke in den wirklichen Ablauf eines Unternehmens.

Schon während meiner Ausbildung festigte sich mein Entschluss, dass ich nach meiner Ausbildung studieren möchte und so machte ich mir erste Gedanken zu diesem Thema.
Ich zuerst mit dem Gedanken ein Vollzeitstudium zu absolvieren und als Minijobber weiterhin beim ACE beschäftigt zu bleiben oder mich für ein Fernstudium einzuschreiben (wobei ich diese Alternative nicht favorisierte)

Da ich jedoch als Ersatz für einen in altersbedingt (Rente) ausscheidenden Kollegen ausgebildet wurde, war mein Ausbilder von dieser Idee nicht begeistert und schlug mir ein nebenberufliches Studium an der FOM in Stuttgart vor.

Die Webseite machte einen guten Eindruck, das ZEIT-Ranking der Hochschule war gut und auch die Erfahrungsberichte machte einen guten Eindruck. So besuchten mein Ausbilder und ich einen Info-Abend an der FOM und waren überzeugt.

So schrieb ich mich an der FOM für das Wintersemester 2014 im Fach Wirtschaftsinformatik (B.Sc.) ein und am 5. September 2014 startete offiziell das Semester (nach der Eröffnungsveranstaltung am 03.09.13) mit der ersten Vorlesung.

Im ersten Semester haben wir übrigens folgende Studienfächer:

  • Management Basics
  • E-Business
  • Prozedurale Programmierung
  • IT-Basics

WIESO WIRTSCHAFTSINFORMATIK?

Während meiner Ausbildung wurden immer wieder Änderungen am unserem ERP-System vorgenommen – Viele davon im Bereich der Buchhaltung. Programmiertechnisch verstand ich die Änderungen, jedoch fehlte mir an vielen Stellen der betriebswirtschaftliche Hintergrund. Somit wollte ich dieses Wissen erweitern ohne mich jedoch komplett von der Informatik zu entfernen.

Die Wirtschaftsinformatik war somit der perfekte Zwischenweg um dies zu bewerkstelligen

ABLAUF des studiums

Bei dem Studium an der FOM handelt es sich um ein Präsenzstudium. Vor Beginn des Semesters wurden die Skripte über das Onlineportal (Online Campus) verteilt. Diese sollte man ausdrucken und während der Vorlesung bereithalten, sodass man sich ggf. auf einer Seite Notizen machen kann

Die Benotung der einzelnen Fächer erfolgt durch s.g. Scientific Abstracts und einer Klausur. Bei dem Scientific Abstract handelt es sich um eine kurze prägnante Zusammenfassung (max. 2 Seiten) zu einem bestimmten Thema. Während des Semesters werden 4-5 Themen genannt, zu denen man sich vorbereiten sollte (Hausarbeit). Zu einem genannten Termin wird dann eines dieser Themen gewählt und es wird unter Prüfungsbedingungen eine Zusammenfassung zu dem Thema geschrieben.

Diese wird mit 20% gewichtet. Zudem schreibt man Klausur, welche mit 80% gewichtet wird

DIe erste vorlesung

Unsere erste Vorlesung war im Fach Management Basics. Hier wurden uns bisher vor allem betriebswirtschaftliche Grundlagen vermittelt (bspw. Unternehmensformen, SWOT-Analyse, Target Costing…), auf welche in späteren Modulen aufgebaut wird.

Zu Beginn nahm ich zu den Vorlesungen im Fach Management Basics mein Tablet mit Tastatur und das Skript in digitaler Form mit. In dem PDF habe ich dann digitale Notizen hinzugefügt.

Mittlerweile habe ich das Skript jedoch gedruckt, denn es ist wesentlich schneller und einfacher die Notizen handschriftlich auf das Skript zu schreiben.

Man sollte sich auch nicht der Illusion hingeben, dass es so wie bisher in der Schule läuft. Der Prof wird euch nicht sagen, was ihr aufschreiben sollt und was nicht. Ihr müsst selbst die wichtigen Dinge selbst filtern und zu Papier bringen.

Lumia Cyan Update (Windows Phone 8.1) auf dem Lumia 520 installieren

Vor einigen Tagen wurde der Status des Cyan Updates für das Lumia 520 auf der Nokia Seite auf „Avaliable“ geändert und sollte somit den Nutzern zur Verfügung stehen.
Die bisherigen Updates, auch die der Developer Preview wurden über das Windows Phone eigene Updatemenü installiert.
Allerdings fand das Lumia dieses Cyan Update einfach nicht – zumindest nicht als OTA.
Im Netz ist dieses Problem kaum beschrieben. Da aber die Versionen in Mitteleuropa alle die gleichen sind und das Update in anderen Ländern wohl ohne Probleme ausgerollt wurde, muss es entweder etwas mit dem deutschen Server zu tun haben, oder mit meinem Smartphone.
Wie bekomme ich also das Update auf mein Lumia?
Microsoft hat das sogenannte Nokia Software Recovery Tool still und heimlich veröffentlicht.
Mit diesem Tool kann man das Update dann aufspielen, aber ACHTUNG! Es werden alle Daten auf dem Gerät gelöscht. Deshalb vorher ein Backup über die Windows Phone eigene Backup-Funktion ausführen. Dieses kann man dann nach der Installation einspielen.
1. Nokia Software Recovery Tool (NSRT) herunterladen und installieren.
2. Lumia 520 mit dem Rechner über ein microUSB Kabel verbinden
3. Das NSRT starten, es erkennt dann automatisch das angeschlossene Gerät und sucht das aktuellste Update für dieses.

Nokia Software Recovery Tool Update found
4. Das Gerät muss  über mindestens 1,7GB freien Speicher verfügen (lokal, nicht auf der SD Karte)

Anschließend einfach den Anweisungen folgen. Das Update ist 1,56GB groß, d.h. der Download kann je nach Downloadgeschwindigkeit dauern.

Danach kann man das Handy neu einrichten, solltet ihr das Backup getätigt haben, so wird euch dieses bei der Ersteinrichtung angezeigt und ihr könnt es zurückspielen.

Das war’s, nun habt ihr das Lumia Cyan Update auf eurem Lumia 520.

Lumia_Cyan_520

© 2018 Abou Chleih. Alle Rechte vorbehalten.

Thema von Anders Norén.