An agile journey and beyond

Autor: Florian Mücke (Seite 1 von 3)

Lernen ist nur was für Kinder!

Von Erwachsenen wird in unserer Gesellschaft erwartet, dass sie Dinge auf anhieb verstehen und in der Lage sind, komplizierte, ja sogar komplexe Sachverhalte nach einer kurzen Erklärung zu verstehen.

Man wird auf Trainings geschickt, im Glauben, man könne Können einimpfen.

Dabei vergessen wir leider oft, dass auch Erwachsen nur Menschen sind und echtes Lernen mit Erfahrung verbunden ist. Diese Erfahrung kommt aber nicht durch stilles Reindenken und nacktes Wissen, sondern erst durch Kontakt mit anderen Individuen und praktisches Erproben in der Umwelt. Es wird erwartet, dass alles auf Anhieb verstanden wird und einmaliger Informationsinput ausreicht.

Weiterlesen

DIY: Lernturm fürs Kind bauen

150103-Lernturm-01

Damit der oder die kleine endlich auch mal in der Küche helfen kann und deswegen nicht mehr quengelnd durch die Küche rennt, gibt es einen speziellen Hochstuhl auf dem das Kind sicher stehen kann. Einen solchen kann man sich ganz leicht selbst bauen – vorausgesetzt man ist nicht völlig ungeschickt.

Nach etwas Betteln seitens meiner Frau, habe ich mich dann doch bereit erklärt einen solchen Stuhl zu bauen – und Spaß hat es auch noch gemacht 🙂

Die sieben Arbeitsschritte habe ich hier zusammengeschrieben… Weiterlesen

Was spricht gegen Exceptions in C++?

Obwohl es Exceptions im C++ Standard schon etliche Jahre gibt, werden diese in größeren Projekten oft nicht eingesetzt. Im folgenden Artikel möchte ich das Für und Wider erörtern und mit gängigen Vorurteilen aufräumen.

try {
    funktion();
   ...
} catch (const std::invalid_argument& e) {
    std::cerr << "Falsches Argument:"  << e.what() << std::endl;
} catch (const std::range_error& e) {
    std::cerr << "Ungültiger Bereich:" << e.what() << std::endl;
} catch (...) {
    std::cerr << "Sonstiger Fehler" << std::endl;
}

Gängige Vorurteile

  1. Die Behandlung von Ausnahmen ist codeintensiver (mehr Schreibarbeit)
    Falsch. Ein sinnvolles try/catch braucht ist sogar weniger Code als ein sinnvolles if/else if/elsefür alle möglichen Fehlercodes. Fehlercodes werden aber oft nicht vollständig überprüft oder gar ganz weggelassen, was der Qualität des Codes nicht gerade zuträglich ist. Exceptions dagegen zwingen zu einer durchdachten Fehlerbehandlung.
  2. Exceptions machen den Code langsam
    Falsch. Wenn Exceptions richtig eingesetzt werden, sollten sie für Ausnahmen im Programmablauf verwendet werden. Die Ausführungsgeschwindigkeit des "Gut"-Pfades (in dem keine Ausnahmen geworfen werden) leidet nicht darunter. Wenn also die Exception die Ausnahme und nicht die Regel ist, hat man nichts zu befürchten. Weiterlesen

Dateiversion auslesen

#pragma comment( lib, "version" )
struct FileVersion
{
	DWORD dwLeftMost;
	DWORD dwSecondLeft;
	DWORD dwSecondRight;
	DWORD dwRightMost;
	bool IsLower( const FileVersion& ver )
	{
		return dwLeftMost < ver.dwLeftMost ? true :
			dwSecondLeft < ver.dwSecondLeft ? true :
			dwSecondRight < ver.dwSecondRight ? true :
			dwRightMost < ver.dwRightMost ? true : false;
	}
};

static void GetFileVersion( const CString& fileNameWithPath, FileVersion& fileVersion )
{
	DWORD dwDummy;
	DWORD dwFVISize = GetFileVersionInfoSize( fileNameWithPath , &dwDummy );
	LPBYTE lpVersionInfo = new BYTE[dwFVISize];
	::GetFileVersionInfo( fileNameWithPath , 0 , dwFVISize , lpVersionInfo );
	UINT uLen;
	VS_FIXEDFILEINFO* lpFfi;
	::VerQueryValue( lpVersionInfo , _T("\\") , (LPVOID *)&lpFfi , &uLen );
	DWORD dwFileVersionMS = lpFfi->dwFileVersionMS;
	DWORD dwFileVersionLS = lpFfi->dwFileVersionLS;
	delete[] lpVersionInfo;
	fileVersion.dwLeftMost = HIWORD(dwFileVersionMS);
	fileVersion.dwSecondLeft = LOWORD(dwFileVersionMS);
	fileVersion.dwSecondRight = HIWORD(dwFileVersionLS);
	fileVersion.dwRightMost = LOWORD(dwFileVersionLS);
}

Stativtest: Bilora gegen Cullmann gegen Vanguard

Da ich mein jetziges Stativ damals einfach für den Camcorder gekauft hatte und es jetzt meinen wachsenden Ansprüchen für die Fotographie nicht mehr genügt, habe ich mir (nach Lektüre diverser Tests) zwei potentielle Nachfolger mit Kugelköpfen zum Vergleich bestellt:

„P ≠ NP“ gelöst

Es sieht so aus, als wäre eines der wichtigsten noch offenen Rätsel der Informatik gelöst worden. Vinay Deolalikar von den HP Reseach Labs scheint jetzt endlich bewiesen zu haben, dass die Komplexitätsklasse P ungleich der Komplexitätsklase NP ist. Die Lösung dieses Millennium-Problems ist mit 1 Million Dollar dotiert und behandelt im wesentlichen die Fragestellung „Wenn es für ein Problem einen einfachen Weg gibt, eine Lösung zu verifizieren, gibt es dann auch eine einfache Lösung?“. Mit P ≠ NP ist jetzt endlich der Beweis für die bislang allgemeine Annahme, dass dies nicht so ist, erbracht.

Ein Beispiel für ein solches Problem ist das Problem des Handlungsreisenden (Traveling Salesman Problem), bei dem es darum geht, eine bestimmte Anzahl von Städten so zu besuchen, dass ein möglichst kurzer Weg zurückgelegt wird, jedoch keine Stadt mehrmals besucht wird.

Weiterführende Links:

Guter Sangria

Auf unserer Hochzeitsreise haben wir in einem schönen Lokal am Hafen Sangría zum Essen getrunken – und der war ganz anders als ich bisher Sangría kannte – um längen besser.

Es war waren nur Zitronenscheiben und Orangenscheiben und jede Menge Eiswürfel und Zucker darin. Einfach wahnsinnig erfrischend.

Ein Rezept das diesem nahe kommt ist hier zu finden: Alles über Sangria

Oder man macht es wie folgt (Catalanische Variante):

Zutaten für vier Personen:

  • 1 Flasche spanischer Rotwein (vorzugsweise RIOJA, kann aber auch ein günstigerer sein)
  • Saft von mindestens zwei Orangen (ca. 100ml)
  • 100ml weißer Rum
  • 1 unbehandelte Zitrone
  • 1 unbehandelte Orange
  • 5 Eßlöffel Zucker
  • 1 Zimtstange
  • Eiswürfel

Zubereitung:

  1. Zitrone und Orange unter heißem Wasser abwaschen und dann in (halbe) Scheiben schneiden.
  2. Obststücke, Zucker, Rum und Orangensaft in eine Karaffe oder große Schüssel geben und dann ab damit zum Durchziehen in den Kühlschrank (mind. 1 Stunde).
  3. Dann den Rotwein drüber, die Zimtstange hinein und das ganze umrühren. Die Sangría eine weitere Stunde kalt stellen.
  4. Jetzt kommen noch ordentlich Eiswürfel dazu und die Sangría ist fertig zum servieren (am besten in großen Gläsern).

boost x64 Bibliotheken erzeugen

Um die x64-Libs von boost zu erzeugen muss man folgendes im boost Verzeichnis aufrufen:

bjam --toolset=msvc --address-model=64 --stagedir=stage64 stage

Zusätzliche Parameter

  • -jX um das Erstellen mit X Prozessen parallel zu starten
  • --build-type=complete baut alle libs (static, shared, mutithreaded,…)
  • --with-serialization baut nur die serialization Bibliotheken

Serialization weigert sich in 1.36.0 allerdings (in 1.40 gibt’s dieses Problem nicht mehr). Hierzu ist in der libs/serialization/build/Jamfile.v2 folgende Ersetzung vorzunehmen:

: requirements ../../config/test/all//BOOST_NO_STD_LOCALE

in

: requirements

sowie
../../config/test/all//BOOST_NO_STD_WSTREAMBUF am Ende der Datei auskommentieren (‚#‘).

bjam gibt’s hier: http://www.boost.org/users/download/

Danach sollten ein paar libs in stage64/lib liegen.

« Ältere Beiträge