Home

Als ich ein kleiner Junge war …

Samstag, 1. Januar 2011 | Autor:

Ich schrei­be die­sen Arti­kel heu­te, am 31.12.2010, an einem gera­de­zu obs­zön leis­tungs­fä­hi­gen 4-Kern-Rech­ner mit 4GB RAM, über ein Inter­net, in dem Live-Video-Strea­ming in HD-Qua­li­tät mög­lich ist, das jeder­mann Zugriff auf das Wis­sen der Welt erlaubt, das Mei­nungs­frei­heit vom Papier in die Rea­li­tät beför­dert hat!

Die Geschwin­dig­keit, mit der uns die tech­ni­sche Ent­wick­lung in Rich­tung Zukunft kata­pul­tiert ist immer noch atemberaubend

und ich habe das unglaub­li­che Glück, die­se Ent­wick­lung mitzuerleben.

Thema: Informatik, Internet, Leben und Erlebnisse, Tagesgeschehen | 2 Kommentare

no matching function call

Montag, 27. Dezember 2010 | Autor:

Ein neu­er Tag, eine neue Fehlermeldung:

/home/nico/code/FAnToM/src/visAlgos/IntegralLines/../../math/src/ODESolver/StreakLine.hh:76:2: error: no matching function for call to ‘Tracer<2, (FLineType)0u>::Tracer(std::vector<MeshNode>, boost::shared_ptr<const FTimeDependentTensorField>&, FPosition&, double&, const double&, const double&, int)’
/home/nico/code/FAnToM/src/visAlgos/IntegralLines/../../math/src/ODESolver/Tracer.hh:392:3: note: candidates are:
[... (diverse Vorschläge ausgelassen)]
/home/nico/code/FAnToM/src/visAlgos/IntegralLines/../../math/src/ODESolver/Tracer.hh:886:1: note:                 Tracer<DIM, lineT>::Tracer(std::vector<MeshNode>&, Tracer<DIM, lineT>::Fieldtype, const FPosition&, double, double, double, unsigned int) [with int DIM = 2, FLineType lineT = (FLineType)0u, Tracer<DIM, lineT>::Fieldtype = boost::shared_ptr<const FTimeDependentTensorField>, FPosition = FArray]

Die­se Mel­dung ist aus einem ganz bestimm­ten Grund fies, der aber nicht offen­sicht­lich ist. Die Mel­dung sug­ge­riert, man habe beim Funk­ti­ons­auf­ruf etwas falsch­ge­macht. Oft stimmt das auch und die Grün­de sind dann solche:

  • Para­me­ter der Funk­ti­on vergessen
  • bei einem (oder meh­re­ren!) Para­me­tern den fal­schen Typ benutzt
  • const igno­riert
  • Tipp­feh­ler

Ich habe über­legt, was davon es sein könn­te. Gegrü­belt und getes­tet. Man fängt ja nach ner Wei­le an, die unmög­lichs­ten Din­ge zu ver­mu­ten. Zum Bei­spiel, dass es viel­leicht dar­an, dass ein Para­me­ter const oder eine Refe­rence ist? Habe ich Tem­pla­tes falsch benutzt? Gera­de für Anfän­ger, die mit con­st­ness, Refe­ren­zen und Tem­pla­tes noch nicht so firm sind, der Super-Gau!

Aber auch mir ist es heu­te passiert.

Es lag dar­an, dass ich die Datei, in der die Funk­ti­on deklariert/definiert ist, nicht includet habe.

Thema: Sezierte C++-Käfer | Beitrag kommentieren

Finanzierung des Studiums

Mittwoch, 22. Dezember 2010 | Autor:

Die Uni-Braun­schweig gibt auf ihrer Web­site Bei­spie­le für eine Finan­zie­rung des Stu­di­ums. Ein sol­ches Bei­spiel ist Hen­drik.

Man beach­te mal den vor­letz­ten Satz 😉

Von sei­nem Ver­dienst legt er jeden Monat 130,00 Euro bei­sei­te auf ein Sparkonto.

Von den 80€, die er monat­lich ver­dient, spart er 130 - sehr löb­lich! Aber halt.. ins­ge­samt blei­ben ja jeden Monat nur 560-520 = 40€ übrig. Also spart Hen­drik jeden Monat von die­sen 40€ 130?

Aber an der Uni BS fal­len ja auch noch 500€ Stu­di­en­bei­trag an und 226,91€ Semes­ter­bei­trag an. Macht monat­lich 120 €.

Zusam­men­ge­fasst macht Hen­drik jeden Monat 80€ Schul­den und spart von dem nicht vor­han­de­nen übrig­ge­blie­be­nen Geld noch 130€.

Thema: Studium | Beitrag kommentieren

Linker-Fehler und c++filt

Dienstag, 30. November 2010 | Autor:

Lin­ker-Error sind aus zwei Grün­den ekelhaft:
Ers­tens: Sie sind kryp­tisch sind, viel kryp­ti­scher als Com­pi­ler­feh­ler (ja, das geht).
Zwei­tens: Sie tre­ten unter Umstän­den erst zur Lauf­zeit auf.

Bei­spiel:
could not load plugin './algoStore/visAlgoslibStreakSurface.so' :./algoStore/visAlgoslibStreakSurface.so: undefined symbol: _ZN23FStreakSurfaceAlgorithm10split_edgeESt4pairI6FArrayS1_E

Okay, undefined symbol - da haben wir wohl irgend­et­was dekla­riert, aber nicht defi­niert1. Aber was genau haben wir nicht definiert?
_ZN23FStreakSurfaceAlgorithm10split_edgeESt4pairI6FArrayS1_E?
Manch­mal kann man erra­ten, was gemeint ist, da die Namen der invol­vier­ten Funk­tio­nen, Klas­sen, Varia­blen in dem Wust irgend­wo drin ste­hen. Aber eben nur manch­mal. Die Lösung die­ses Pro­blems lau­tet c++filt!

c++filt ist ein klei­nes Tool, das einem die Sym­bol­na­men ent­zif­fert! („deman­gled”). So wird’s benutzt:

> c++filt _ZN23FStreakSurfaceAlgorithm10split_edgeESt4pairI6FArrayS1_E
FStreakSurfaceAlgorithm::split_edge(std::pair<FArray, FArray>)
>

und schon ken­nen wir den Klar­na­men des Sym­bols! Ein­fach toll - ich wünsch­te, ich hät­te die­ses Tool schon frü­her gekannt!

  1. Dekla­ra­ti­on = „Es gibt die­se und jene Funk­ti­on!” Bsp: void funktion(double k); Dekla­ra­tio­nen ste­hen typi­scher­wei­se in Hea­der-Files. -- Definition/Implementation = „Die Funk­ti­on tut die­ses hier.” Bsp: void funktion(double k){ return 1./(k+1); } -- Man beach­te, dass die Dekla­ra­ti­on wirk­lich eine rei­ne Exis­tenz­be­haup­tung ist und erst die Defi­ni­ti­on das Ver­hal­ten der Funk­ti­on defi­niert, d.h. den Code ent­hält, den die­se aus­führt.

Thema: Programmieren | 4 Kommentare

Debugger - GDB

Montag, 22. November 2010 | Autor:

Debug­ger sind Pro­gram­me, die einem bei der Feh­ler­su­che hel­fen sol­len. Mit einem Debug­ger kann man das Pro­gramm qua­si bei der Arbeit beob­ach­ten: Wel­che Code­zei­le wird als nächs­tes aus­ge­führt? Was ent­hält die­se und jene Varia­ble momen­tan? Wie sieht der Call-Stack/­Back­trace momen­tan aus? An wel­cher Stel­le stürzt das Pro­gramm genau ab? und vie­les ande­res mehr.

Für C++ (und jede Men­ge ande­rer Spra­chen) gibt es den GNU-Debug­ger, kurz GDB. wei­ter…

Thema: Programmieren, Sezierte C++-Käfer | Beitrag kommentieren

Muffins reassembled

Freitag, 29. Oktober 2010 | Autor:

In mei­nem vori­gen Post habe ich ver­sucht, aus den Inhalts- und Nähr­wert­an­ga­ben von Mon­da­min Muf­fins eine pas­sen­de Zuta­ten­lis­te zu schluss­fol­gern. Heu­te war es soweit und ich habe das Rezept aus­pro­biert. wei­ter…

Thema: Allgemein | 2 Kommentare

Muffins disassembled

Montag, 25. Oktober 2010 | Autor:

Beim letz­ten Ein­kauf habe ich spon­tan so eine „Mon­da­min Muffins”-Flasche gekauft.

Der Gebrauch ist sim­pel: Milch rein­kip­pen, schüt­teln, in Muf­fin­for­men fül­len, backen. Eine sehr unkom­pli­zier­te und sau­be­re Angelegenheit!

Schmeckt auch ganz gut! Im Ver­gleich zu den Scho­ko­la­den­bom­ben in der Men­sa ver­gleichs­wei­se dezent, aber ansons­ten gut und fluffig.

Der Geek-Part weiter…

Thema: Reviews | Ein Kommentar

Linux Ärgernisse - Folge 271828

Samstag, 23. Oktober 2010 | Autor:

Was machen Infor­ma­ti­ker, wenn sie nachts am Rech­ner hocken? Web­sei­ten hacken? Pro­gram­me schreiben?
Nö - ihr ver­damm­tes Linux reparieren.

Für die Nach­welt, hier eini­ge der Pro­ble­me, die ich in den letz­ten Tagen lösen muss­te. wei­ter…

Thema: Informatik | Beitrag kommentieren

Der Feind aller Arithmetik

Freitag, 22. Oktober 2010 | Autor:

Neu­lich bin ich auf einen Feh­ler gesto­ßen, der erst­mal so schlimm gar nicht aussieht:
interpolate(double, const P&, const P&) [with P = FVector]: Assertion `t >= 0.0 && t <= 1.0' failed.
Die Feh­ler­mel­dung sagt uns, dass eine Asser­ti­on fehl­ge­schla­gen ist. Offen­bar ist der Para­me­ter t nicht zwi­schen 0 und 1. Aber das ist noch längst nicht alles.. wei­ter…

Thema: Sezierte C++-Käfer | Beitrag kommentieren

Diskussionskultur - Wikipedia gegen Wikipedia

Dienstag, 28. September 2010 | Autor:

Die Wiki­pe­dia ist immer für eine Dis­kus­si­on gut. Eine gan­ze Wei­le lang stand die Fra­ge nach der enzy­klo­pä­di­schen Zuver­läs­sig­keit1 im Vor­der­grund. Die­se Feu­er­pro­be hat Wiki­pe­dia mit links bestan­den und dabei Papie­r­enzy­klo­pä­dien in die Bedeu­tungs­lo­sig­keit gedrängt.

Nun gibt es aber seit eini­ger Zeit neue Dis­kus­sio­nen. Dis­kus­sio­nen, die sich um Vor­gän­ge inner­halb der Wiki­pe­dia dre­hen. Wann ist ein Arti­kel rele­vant? Wer ent­schei­det das? Sind die­se Ent­schei­dungs­pro­zes­se trans­pa­rent genug? wei­ter…

  1. Nicht zu ver­wech­seln mit bei­spiels­wei­se wis­sen­schaft­li­cher Zuver­läs­sig­keit.

Thema: Gedanken zu Dingen, Internet | Beitrag kommentieren