KW 09, Zustandsdiagramm

Das Zustandsdiagramm wird verwendet um die verschiedenen Zustände sowie deren Beziehungen zueinander bildlich darzustellen. Das Diagramm besteht aus einem Anfang, dem Programm in welchem die Zustände definiert werden und dem Ende. Der Anfang wird als ausgefüllter Punkt dargestellt welcher dann auf den ersten Zustand zeigt. Diese werden als Kasten in einem Rahmen angezeigt, der äussere Rahmen stellt die Applikation dar. Die Beziehungen zwischen den Zuständen werden mit beschriftetem Pfeilen dargestellt welche den Auslöser bezeichnen. Zum Schluss wird aus dem letzten Zustand ein Pfeil zum Ende gezogen, dieser wird wieder mit einem ausgefüllten Punkt dargestellt, jedoch hat dieser noch einen weiteren Kreis um den Punkt herum. Man kann diesen Pfeil auch aus der Applikation selbst ziehen wenn man in jedem Zustand heraus aufs Ende gelangen kann.

Zustandsdiagramm

Hier ist ein Beispiel von einem Zustandsdiagramm, worin ich die Beziehungszustände eines Menschen dargestellt habe. Jeder Mensch wird Ledig geboren, daher zeigt der Start direkt auf Ledig. Von diesem Zustand kann man zu Verheiratet wechseln mit einer Hochzeit. Von diesem Zustand bestehen nun mehrere Optionen welche ich alle im Diagramm beschriftet habe. Zum Schluss, der Endzustand wäre Verstorben zu sein. Da man in jedem Zustand sterben kann entspringt der letzte Pfeil aus der Box aussenherum, der Applikation oder in diesem Beispiel dem Leben selbst.

KW 05, EQ vs IQ

What is the difference between EQ and IQ? Well firstly, we should define the IQ, the intelligence quotient. This Number is being calculated by standardized tests you can do online, in certain facilities etc. The IQ and its tests were designed to measure our intelligence, 100 being the standard. With a high IQ comes a great understanding in the logical area such as math skills, but also the ability to apply knowledge to skill, the ability to learn efficiently, word comprehension etc. A high IQ is beneficial in the workspace as it helps “connecting the dots”. High IQ is often found in gifted children, but also in individuals with mental challenges and special needs. Now to the EQ, the emotional quotient. The emotional intelligence is completely different to the IQ, as it has to do with our social skills. There are also standardized tests for the EQ, but they each tend to approach the topic differently. A couple popular Tests are the Mayer-Salovey-Caruso Test, which is based on emotion-based problem solving and the Daniel Goleman model score, which is based on emotional competencies. But what defines a high EQ? With a high EQ, individuals tend to be able to identify, control and express their emotions and perceive other people’s emotions accurately. With this, they can use their emotions to facilitate thinking and understand emotional meanings very well, making them very empathetic. These people tend to be Leaders, and work well alone and in teams. These individuals often also have social challenges due to them being very susceptible to bullying or being neglected from their parents. A high EQ is the key to success in the workplace, as all high paid jobs need a good understanding of the human nature. Teamwork, a sense of leadership, successful relations and being able to take initiative are very important tasks successful people need to master. Unlike the IQ, you can train your EQ. Personally, I do find the EQ more important than the IQ, even though the IQ is necessary as well. But a high IQ just makes you the best worker, but success in our world is not being a worker, but managing workers. So, how does this knowledge benefit us in our apprenticeship? We as IT’s might not need the best social skills to be productive, but if we want to advance and improve our jobs in the long run a high EQ definitely won’t hurt, so improving our own EQ early will be beneficial. Here are few ways on how to improve your EQ:

  1. Emotional self-management
    Having your own emotions under control is very important to become a more social person, because your own emotion will affect your view of the world around you.
  2. Be aware of your own actions
    Choosing your words wisely and using more specific words makes communication a lot easier and thus improves your workflow. Also keep watch on your own behaviour, as it is being affected by your own emotions and will affect others around you.
  3. Strengthen your empathy
    Practice it, it’s the core of a high EQ. Understanding other people’s feelings and perceiving them correctly helps you immensely.
  4. Improve your challenge handling
    Challenges are a common thing, and are the things that keeps us going in the end. However, if you react in a faulty way it can send you into a meltdown, so you have to learn how to manage yourself in difficult situations, like practising optimism, asking the right questions and seeking help if necessary.
  5. Relationship management
    To put it simply, being able to hold friendships alive and healthy is a vital part of a high EQ. Not being reliant on friends is a good sign as well, being able to enjoy time alone is just as important, being able to do both is a sign of a high EQ.
  6. Know your stressors
    Stress causes you to lose your cool, making you susceptible to act recklessly and inefficient. Memorize what stresses you out and what calms you down, a calm mind is the first step.

KW 51, Architekturmodell 1 – N

Es gibt viele Arten ein Programm zu erstellen, und genauso viele Arten für deren Architektur. Die 1 zu N Struktur ist die beliebteste, und auch aus gutem Grund. Sie ist simpel und effektiv kombiniert mit sauberer Skalierbarkeit. Nicht nur das, 1 zu N ist ein Überbegriff, da man beliebig viele Schichten haben kann, und diesen Monat werde ich über die 3, 4 und ein wenig über die 5 Schichten Struktur schreiben. Weiterlesen

KW 39, Swagger

Jeder guter Programmierer weiss, dass eine gute und übersichtliche Dokumentation für eine Software einen hohen Wert besitzt. Dies ist auch der Fall bei APIs, doch wie macht man dies am besten? Zurzeit (Stand September 2018) ist es meiner Meinung nach am effizientesten und best practice wenn man Swagger nutzt. Achtung, nicht zu verwechseln mit dem (mittlerweile totem) Trend Wort «SWAG», Swagger ist etwas komplett Anderes. Swagger ist ein API-Dokumentierungstool mit welchem man API-Schnittstellen schnell, einfach und leserlich Dokumentieren kann, hier ist das von Swagger bereitgestellte Beispiel. Dies ist bloss die Standardansicht, ich empfehle es sehr sich dieses Tool genauer anzusehen. Die Dokumentierung funktioniert durch Annotations, hier sind alle Annotations von Swagger Dokumentiert. Definitiv in Erwägung ziehen, wenn ihr einen neuen Techstack am entwickeln seid.

KW 38, CSRF

Cross Site Request Forgery ist die Bezeichnung für einen Angriff auf den PC mithilfe von online Transaktionen. Diese geschehen nicht direkt, sondern schiebt dem End-User eine http-Anfrage über ohne das der Browser oder der User es merkt. Der Angreifer kann so aber nicht sehen was die Antwort vom Browser zu diesem Request ist. Jedoch mithilfe von Social Engineering kann der Angreifer den User überführen persönliche Daten zu verändern, Geld zu transferieren. Somit falls das Opfer ein Admin ist kann die gesamte Seite übernommen werden.

KW 37, Mocks vs Stubs

Stubs:
Stubs sind kleine Klassen welche in dem JUnit Test erstellt werden. Diese Klassen werden für den Test benötigt und werden nicht viel tun. Oftmals ist der Rückgabewert hartcodiert, heisst berechenbar und immer das gleiche.

Mocks:
Ein Mock simuliert auch eine Klasse wie ein Stub, jedoch wird diese im Testfall selbst definiert. Dies heisst dessen Verhalten ist nicht vordefiniert, sondern wird im Moment definiert. Man muss also bei einem Mock immer zuerst sagen was er zurückgeben soll.

Konkreter Unterschied:
Mocks folgen dieser Struktur:

initialize -> set expectations -> exercise -> verify

Während Stubs dieser Struktur folgen:

initialize -> exercise -> verify

Meine Empfehlung:
Man sollte Mocks nutzen, denn wenn man in einem JUnit File mehr als nur einen Testfall hat muss man für jeden einzelnen Fall einen neuen Stub erstellen, dies macht den JUnit Test unübersichtlich. Mocks jedoch verbrauchen nicht so viel Platz da sie immer im Fall mit meistens einer Linie Code definiert werden, einfach, verständlich und leserlich.

KW 36, CRUD

Wenn man im Web-Development schon mal gearbeitet hat hatte man sicher schon mal das Akronym CRUD gehört. Aber was bedeutet das ausgeschrieben? Wofür genau wird das benutzt? Hier ist es ausgeschrieben:

Create, Read, Update, Delete

Diese Logik wird zum Beispiel bei REST-Endpoints genutzt. Das heisst: Es sollte einen Endpoint geben zum Erstellen, einen zum Auslesen, einen zum Aktualisieren und einem zum Löschen. Das ist die CRUD-Logik zusammengefasst.

KW 35, git pull und git fetch

Wenn man remote ein Projekt hat und dieses lokal auf seinem Workspace klonen will hat mit Git zwei Möglichkeiten, git fetch oder git pull. Der entscheidende Unterschied zwischen den beiden ist, dass fetch nur es runterlädt während pull es auch noch merged. Daher wird grundsätzlich eher pull verwendet. Jetzt denkt man eventuell, dass man dann fetch dann fürs rebasen nutzt? Nun man kann, doch mit pull geht dies auch. Man fügt einfach nach dem pull noch «–rebase» hinzu. So kann man auch mit einem pull Rebasen.