Donnerstag, 18. Juli 2013

Virtueller Linux Server incl. Port Forwarding

Mit Hilfe dieses Beitrages ist es möglich auf einem Windows Rechner (durch einen virtuellen Rechner) auf Services eines Ubuntu Server zuzugreifen.

Aufsetzen von VMware inkl. Port-Forwarding:

Herunterladen von Ubuntu Server: http://www.ubuntu.com/download/server

Installation von VMware Player: http://www.chip.de/downloads/VMware-Player_12994646.html



Per Default sollte der openssh-sever installiert werden, damit man sich auch per SSH (z.B. Putty) auf dem virtuellen Server verbinden kann.

Möchte man nicht nur vom Lokalen-PC per SSH auf die virtuelle Maschine zugreifen, muss ein Port Forwarding für die IP Adresse des virtuellen Servers eingerichtet werden.
Dies ist mit dem "Virtual Network Editor" (vmnetcfg.exe) möglich. Eine Installationsanaleitung findet sich unter:
http://alexduan.com/2012/10/15/vmware-player-5-0-network-editor/

A
nschließend kann unter VMnet8 (virtuelle Netzwerkkarte) ein Port Forwarding für die installierten Services auf dem virtuellen Server (192.168.110.129) eingetragen werden. In diesem Beispiel z.B. SSH, Tomcat, nodeJS usw.


Nach dem Klick auf "OK" und "Apply" ist es jetzt möglich über die IP-Adresse des Rechners auf die Services des virtuelles Servers zuzugreifen :-)


Weitere Informationen und Beispiele finden sich hier:

Montag, 8. Juli 2013

Nutzen Sie das Parkinsonsche Gesetz

Das Pareto-Prinzip ist vielen mittlerweile bekannt, aber haben Sie schon mal etwas vom „Parkinson´sche Gesetz“ gehört?

Das Gesetz, welches nach Cyril Northcote Parkinson benannt wurde, beschreibt folgendes:

„Work expands so as to fill the time available for its completion.” (The Economist Nr. 5856 vom 19. November 1955 (Bd. 177 S. 635–637))

„Arbeit dehnt sich genau in dem Maße aus, wie Zeit für die Erledigung von Aufgaben zur Verfügung steht – und nicht in dem Maße, wie komplex die Aufgaben tatsächlich sind.“


Benötigen Sie für das Erledigen einer Aufgabe in der Regel 20 Minuten, aber es stehen Ihnen 50 Minuten zur Verfügung, dann werden Sie aller Wahrscheinlichkeit nach genau auch diese 50 Minuten für diese Aufgabe brauchen. Sollten Sie aber wie üblich nur 20 Minuten Zeit haben, so werden Sie in der Regel auch nach 20 Minuten fertig sein.


Kurz und knapp der Unterschied zwischen Pareto und dem Parkinsonschen Gesetz:

Pareto-Prinzip
Reduzieren Sie Ihre Aufgaben auf das Wesentliche mit Hilfe der 80-zu-20-Regel.

Parkinsonsche Gesetz
Verkürzen Sie Ihre Arbeitszeit, damit Sie Aufgaben auf das Wesentliche beschränken können.


Versuchen Sie das Parkinsonsche Gesetz zum Beispiel bei Routineaufgaben anzuwenden, bei denen Sie wissen, wie lange Sie für das Bewältigen der Aufgabe benötigen.

Weiterführende Literatur zum Parkinsonschen Gesetz: 
Parkinsons Gesetz und andere Untersuchungen über die Verwaltung

Samstag, 29. Juni 2013

SQLite - Import CSV File - existing or new table

Für mobile Webanwendungen oder Android Applikationen werden in der Regel SQLite Datenbanken verwendet. SQLite unterstützt dabei einen Großteil der im SQL-92-Standard festgelegten SQL-Sprachbefehle.

Weitere Informationen zu SQLite und Downloadmöglichkeit findet Sie hier:
http://www.sqlite.org/download.html

Öffnen der Datenbank mit Hilfe der SQLite command-line shell
attach "my.db" as db1;

Mit dem Kommando ".databases", sollte die soeben hinzugefügte Datei jetzt gelistet werden.








In eine vorhandene Tabelle sollen Daten aus eine CSV Datei importiert werden

Die vorhanden Datenbank hat folgende Struktur:
sqlite> select * from schueler;
1;Max;Mustermann;210;2011
2;Paul;Mustermann;211;2011

Folgende Daten befinden sich in der CSV Datei:
sqlite> select * from schueler;
3;Max;Mustermann;110;2012
4;Paul;Mustermann;111;2012

Da die Datenstruktur übereinstimmt, können die Daten mit dem folgenden Befehl direkt importiert werden:
sqlite> select * from schueler;
sqlite> .separator ';'
sqlite> .import schueler.csv schueler

Hinweis: Sollte es Probleme mit Umlauten geben, muss die CSV Datei im UTF8 Format gespeichert werden. Dies geht zum Beispiel mit Notepad++ - Kodierung - Konvertiere zu UTF8.

In eine leere bzw. neue Datenbank CSV Dateien importieren und dabei die Tabellen anlegen

Dies geht zum Beispiel mit dem Programm SQLite Database Browser (http://sourceforge.net/projects/sqlitebrowser/).




Aufbau der CSV Datei:
_id;jahr;vorname;nachname;zeit
20115248;2011;Erik;Test-Muster;00:04:10
20115152;2011;Jan;Test-Muster;00:04:17
20115153;2011;Tim;Test-Muster;00:04:21

Damit die Daten inkl. der Spaltenstruktur importiert werden können, muss das richtige Trennzeichen (separator) und "Extract field names from first line" ausgewählt werden.






Nach dem erfolgreichen Import der Daten sollte unter dem Menüpunkt "Modify Table" noch die richtigen Datentypen für die einzelnen Spalten angepasst werden!

Weiterführende Literatur zu SQLite: 
The Definitive Guide to SQLite (The Expert's Voice in Open Source)

Montag, 24. Juni 2013

Certified ScrumMaster - Ablauf des Online-Examen

Da ich vor kurzem den Certified ScrumMaster erfolgreich absolviert habe, möchte ich den Ablauf der Online-Prüfung näher beschreiben.

Im Januar 2012 stellte die Scrum Alliance eine neue Version des Zertifizierungsprogramms für den ScrumMaster vor (Online-Examen). Damit man an diesem Test teilnehmen kann, muss man vorab an einer Certified ScrumMaster Schulung teilgenommen haben (zum Beispiel bei der wibas GmbH). Anschließend wird man für das Online-Examen bei der Scrum Alliance (www.scrumalliance.org) angemeldet.

Nun hat man innerhalb von 90 Tagen nach dem Kurs zwei Versuche um das Examens zu bestehen. Sollte ein bestehen in diesem Zeitraum nicht klappen, muss man für jeden weiteren Versuch 25 $ bezahlen.

Das Online-Examen beinhaltet 35 multiple-choice Fragen ohne Zeitbegrenzung, von denen man 24 oder mehr korrekt beantworten muss.

Beispielfragen für das Online-Examen
  • Welche Herangehensweise an die Architektur empfehlen die Prinzipien hinter dem Agilen Manifest? - Antwort: Architektur entwickelt sich.
  • Wann sollte das Release Burndown Chart aktualisiert werden? - Antwort: Nach jedem Sprint.
  • Wie werden Teams während eines Sprints geführt? - Antwort: Durch ihr kollektives Wissen und ihre Erfahrung.
  • Was ist ein HAUPTZWECK eines Sprint Backlogs? - Antwort: Für das Team: sich während des Sprints selbst zu steuern.
  • Was ist eine zielführende Technik für den ScrumMaster, um eine Kommunikation zwischen dem Team und dem Product Owner zu ermöglichen? - Antwort: Alle diese Antworten (Den Product Owner über die während der Sprints angewandten Technologien unterrichten. ; Das Team unterrichten, sich im Hinblick auf die geschäftlichen Anforderungen und Ziele auszudrücken. ; Gemeinsame Besprechungen moderieren.)

Nach dem erfolgreichen Bestehen des Online-Examens kann das CSM-Zertifikat alle zwei Jahre erneuert werden.

Zur Vorbereitung empfehle ich folgende Literatur: Scrum - Agiles Projektmanagement erfolgreich einsetzen

Samstag, 15. Juni 2013

Taskplaner Vorlage für Ihr Zeitmanagement

Im Arbeitsalltag sind Taskplaner auf Papier nach wie vor eine effektive Hilfe für das Zeitmanagement. Man hat sofort einen Überblick über die anstehenden Aufgaben und kann schnell Änderungen vornehmen, Einträge verbinden und gruppieren.
Zusätzlich ist Platz für Termine und für die Auflistung von Zeitdieben vorhanden.

Seien Sie effizient und wenden Sie die Methoden aus meinem Buch
Zeit- und Selbstmanagement im Beruf - Lernen Sie, Ihren Tag in nur 30 Minuten effektiv zu organisieren
mit Hilfe des nachfolgenden Taskplaner an.



Dienstag, 28. Mai 2013

Eigenen IRC Server aufsetzen

In kleineren Softwareentwickler-Teams ist ein schneller Austausch von Informationen, Code-Snippets oder auch Passwörtern wichtig.
Möchte man diese Kommunikation nicht über einen externen Anbieter wie z.B. Skype oder ICQ laufen lassen, bietet sich als schlanke und schnelle Lösung ein eigener IRC (Internet Relay Chat) Server an.

Die Beschreibung der Installation erfolgt als Beispiel auf einem Ubuntu Linux System incl. SSL Verschlüsselung. Als IRC-Server wird UnrealIRCd (http://unrealircd.com) verwendet.

Aktuelle Version herunterladen und anschließend entpacken
wget http://www.unrealircd.com/downloads/Unreal3.2.10.1.tar.gz  
tar xfz Unreal3.2.10.1.tar.gz  

Die Dateien befinden sich jetzt unter ~/Unreal3.2.10.1

Starten der Konfiguration und kompilieren des Quellcodes von UnrealIRCd
./Config


Anschließend startet ein wirklicher Konfigurations-Marathon :-)

Jeder Wert muss durch bestätigen mit der ENTER-Taste bestätigt werden.






Hier muss jetzt der Pfad zu den eben entpackten Dateien noch mal angegeben werden. Stimmt das angezeigte Verzeichnis, dann einfach mit bestätigen.
What directory are all the server configuration files in?
[/home/shemel/Unreal3.2.10.1] ->

What is the path to the ircd binary including the name of the binary?
[/home/shemel/Unreal3.2.10.1/src/ircd] ->

Diesen default-Wert bestätigen!
What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] ->

Für den SSL-Support des IRC-Server hier bitte YES eintragen!
Do you want to support SSL (Secure Sockets Layer) connections?
[No] -> YES
Leer lassen, wenn man nicht weiß wo OpenSSL auf dem System liegt!
If you know the path to OpenSSL on your system, enter it here. If not
leave this blank (in most cases it will be detected automatically).
[] ->
Die restlichen Abfragen können bestätigt werden.
Do you want to enable IPv6 support?
[No] ->

Do you want to enable ziplinks support?
[No] ->

Do you want to enable remote includes?
This allows stuff like this in your configuration file:
include "http://www.somesite.org/files/opers.conf";
[No] ->

Do you want to enable prefixes for chanadmin and chanowner?
This will give +a the & prefix and ~ for +q (just like +o is @)
Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,
PJIRC, irssi, CGI:IRC, etc.)
This feature should be enabled/disabled network-wide.
[Yes] ->

What listen() backlog value do you wish to use?  Some older servers
have problems with more than 5, others work fine with many more.
[5] ->

What listen() backlog value do you wish to use?  Some older servers
have problems with more than 5, others work fine with many more.
[5] ->

How far back do you want to keep the nickname history?
[2000] ->


What is the maximum sendq length you wish to have?
[3000000] ->

How many buffer pools would you like?
This number will be multiplied by MAXSENDQLENGTH.
[18] ->

How many file descriptors (or sockets) can the IRCd use?
[1024] ->

Would you like to pass any custom parameters to configure?
See  `./configure --help' and write them here:
[] ->

Ist kein Openssl installiert, erscheint folgende Meldung:
checking for openssl... not found

Apparently you do not have both the openssl binary and openssl development libraries installed.
You have two options:
a) Install the needed binaries and libraries
   and run ./Config
OR
b) If you don't need SSL...
   Run ./Config and say 'no' when asked about SSL
   (or pass --disable-ssl to ./configure)
Eine Anleitung zum Installieren von SSL finden Sie z.B. hier: http://www.postfix-howto.de/installation/openssl.htm

Wurden die Einstellungen wie gewünscht vorgenommen, erfolgt anschließend die Kompilierung des UnrealIRCd. Mit dem Befehlt "make".
Sollten bei der Kompilierung Fehler auftreten, dann muss gegebenenfalls die ./Config noch mal angepasst werden.
 __________________________________________________
| Compile is now complete.                         |
| You should now read the documentation and learn  |
| how to configure your IRCd.                      |
|                                                  |
| If you really like UnrealIRCd, and would like to |
| make a donation, please read the Donation file in|
| this archive. :)                                 |
|                                                  |
| Thanks for using Unreal IRCd! If you are in need |
| for any kind of help regarding the IRCd please   |
| read the Unreal.nfo file.                        |
|__________________________________________________|
Die Kompilierung wurde erfolgreich beendet.

Vor dem Starten des Servers, müssen an der Einstellungsdatei unrealircd.conf noch einige wichtige Einstellungen vorgenommen werden!!! Für den Einstieg ist die Beispieldatei von irc-guide.de sehr gut: http://irc-guide.de/wiki/Main/UnrealIRCdBeispielkonfigurationsdatei

Folgende Anpassungen habe ich an der Beispieldatei vorgenommen:

me {
        name "www.deinserver.de";
        info "IRC - Server von DEINNAME";
        numeric 1;
};

admin {
        "Sebastian Hemel";
        "BENUTZERNAME";
        "deine@mail.de";
};

/* Passworded allow line 
 * Nur Benutzer von einer bestimmten IP-Range und Hostnamen zulassen
 * zusätzlich muss ein Passwort eingegeben werden.
*/
allow {
        ip             *@130.83.*.*;            # Besucher von dieser IP ...
        hostname       *@*.t-online.de;         # ... bzw diesem Host  ...
        class           clients;
        password "xxxxxxxxxxxxxxx";             # ... brauchen ein Passwort zum Verbinden ...
        maxperip 2;                             # ... und dürfen im Gegensatz zu allen anderen ...
                                                # ... nur einmal pro IP/Host verbinden!
};

allow channel {
        channel "#team-chat";
        channel "#raum1";
        channel "#raum2";
};

set {
        auto-join "#team-chat";
};

oper shemel {
 ...
};

/* Server linken. Wenn das nicht gewünscht ist, dann diese Zeilen
 * auskommentieren oder löschen! */
/*
 * listen               123.45.67.8:7001        // Auf Port 7001...
 * {
 *      options
 *      {
 *              serversonly;            // Nur Server, keine Clients.
 *      };
 * };
 */

 /*
  * link hub.mynet.com {
  * ...
  */

 /*
  * tld {
  * ..
  */ 

deny channel {
   channel "*";
   reason "Wir unterstützen keine frei waehlbaren Channels";
}

/* Network configuration */
set {
        network-name            "IRC";
        default-server          "deinserver.de";
        services-server         "deinserver.de";
        stats-server            "deinserver.de";
        help-channel            "#help";
        hiddenhost-prefix       "hrz";
        /* prefix-quit          "no"; */
  
...

        /* Richtiges SSL-Zertifikat hinterlegen!*/
  ssl {
                /* certificate server.crt.pem; */
                certificate server_cert-xyz.pem;
                /* key server.key.pem; */
                key server.priv;
                /* trusted-ca-file class3.crt; */
                trusted-ca-file rootcert.crt;
        };
};


Folgende "Welcome" Dateien können noch erstellt werden:
vi motd.conf
vi rules.conf
Mit den beiden Dateien kann man angeben welche Regeln auf dem IRC-Server gelten und verbindlich sind. Bekannt ist dies auch als "Message of the Day". Ein Generator für schöne Logos im ASCII Format findet sich hier: http://patorjk.com/software/taag

Jetzt lässt sich der IRC Server mit dem folgenden Befehl starten
./unreal start

Starting UnrealIRCd
 _   _                      _ ___________  _____     _
| | | |                    | |_   _| ___ \/  __ \   | |
| | | |_ __  _ __ ___  __ _| | | | | |_/ /| /  \/ __| |
| | | | '_ \| '__/ _ \/ _` | | | | |    / | |    / _` |
| |_| | | | | | |  __/ (_| | |_| |_| |\ \ | \__/\ (_| |
 \___/|_| |_|_|  \___|\__,_|_|\___/\_| \_| \____/\__,_|
                           v3.2.10.1
                     using TRE 0.8.0 (BSD)
                     using OpenSSL 1.0.1e
                     using zlib 1.2.3.3

* Loading IRCd configuration ..
* Configuration loaded without any problems ..
* Loading tunefile..
* Initializing SSL.
* Dynamic configuration initialized .. booting IRCd.
---------------------------------------------------------------------


Glückwunsch zum eigenen IRC Server!
Passende Clients sind z.B. Mirand IM oder auch der Opera Browser.

Programmier-Beispiele in Python um IRC-Services anzusprechen, findet man hier:
Raspberry Pi: Einstieg und User Guide (mitp Professional)

Dienstag, 14. Mai 2013

MS-SQL Tricks

Eine kleine Auflistung von MS-SQL Tricks, die fast täglich zur Anwendung kommen.

Alle Tabellen einer Datenbank löschen:
 Exec sp_MSforeachtable  
  @command1 = "DROP TABLE ? PRINT '? dropped'",  
  @whereand = "and uid = (SELECT schema_id FROM sys.schemas WHERE name = 'dbo') ";  

Informationen über eine Tabelle ausgeben:
 sp_spaceused [TABELLENNAME]  
Gibt die Anzahl der Zeilen sowie den zugeordneten und verwendeten Speicherplatz für eine bestimmte Tabelle, eine indizierte Sicht oder eine Service Broker-Warteschlange in der aktuellen Datenbank bzw. den zugeordneten und verwendeten Speicherplatz für die gesamte Datenbank an.  

Überprüfen ob man Zugang zu der DB hat, kann man recht schnell mit einer Telnet-Verbindung:
 telnet sqlserver.name.de [PORT]  

Backup/Dump der Datenbank erstellen:
Hierfür muss das SQL Server Management Studio geöffnet werden.
  • "DB_name" DB auswählen und im Kontext-Menü TASKS --> SKRIPTS GENERIEREN auswählen. 
  • Anschließend auf "Weiter" klicken. Die Datenbank auswählen "DB_name".
  • Damit auch die INSERT-Befehle gesichert werden, unter Tabellen-/Sichtoptionen --> "Skript für Daten erstellen" auf TRUE setzen. Als Objekttyp "Tabellen" auswählen. 
  • Im nächsten Fenster sollten alle Tabellen (Alles auswählen) markiert werden. 
  • Jetzt können die CREATE und INSERT Befehle in einer Datei oder in einem Abfragefenster gespeichert werden. 
  •  Einspielen: Um die Befehle für die richtige DB auszuführen, muss direkt in der ersten Zeile nach USE die richtige DB angegeben werden. In unserem Fall "USE [DB_name]"