Sonntag, 30. August 2009

Safari.

Firefox nervt mich zur Zeit ultra, er ist unglaublich langsam, stürzt oft ab. Er nervt einfach.
Jetzt hab ich mal probeweise den Safari ständig an, der gefühlt deutlich flotter arbeitet und nicht abstürzt. Leider fehlen ihm wichtige Dinge, die ich jetzt mal hier auflisten will
  • es gibt kein delicious-Plugin (also es gibt eins, aber das ist nicht von delicious selber und es kostet 10 Dollar. Seh ich nicht ein.)
  • der Werbeblocker den ich verwende – AdBlock – lässt im Vergleich zum Firefox-Pendant zuviel durch. (Ich glaube er kann nicht mit iframes umgehen.) ICH WILL KEINE WERBUNG SEHEN.
  • AdBlock lässt sich nicht bei ausgewählten Seiten deaktivieren. (Zumindest hab ich die Funktion nicht gefunden, doof.)
  • alt+command+f für suchen ist doof.
  • man kann wohl RSS-Feeds nicht direkt z.B. im google Reader speichern.
  • ich glaube man kann nicht per Tastatur die Suchmaschine wechseln. Doof.
Ich will das alles für Safari haben.

Mittwoch, 26. August 2009

Project Euler.

Sehr coole Sache. Momentan 252 Aufgaben/Probleme, übergreifend mathematischer Art, die man programmierend lösen soll. (okay zum Teil gehts es auch mit Stift und Papier.)
Die Aufgaben sind so gestellt, dass am Ende immer eine Zahl rauskommt, die kann man (nach Anmeldung) beim jeweiligen Problem eingeben und wenn sie richtig ist bekommt man ein Häkchen und Zugang zum entsprechenden Forumthread. Dort findet man dann im Prinzip in jeder Programmiersprache eine Lösung, sehr interessant.
Die meisten Probleme kann man durch Brute-Force lösen, aber freiwillige Nebenbedingung ist, dass die Berechnung maximal 1 Minute dauern soll (das geht auch, man muss "nur" clever sein).
Kleines Beispiel, man hat ein Feld mit 20x20 Feldern und man soll die Anzahl der möglichen Wege über die Felderränder rausfinden, ein zulässiger Weg führt immer entweder nach rechts oder nach unten, nie zurück. Mein erster Ansatz rekursiver Natur hat das Ergebnis bis 10 Felder in akzeptabler Zeit gelöst, bei 20 Feldern hab ich nach 20 Minuten warten aufgegeben und neu überlegt. Und dann hab ich eine Formel gefunden mit der man die Anzahl berechnen kann... 10 Millisekunden.
Macht Spaß (wenn man den Spaß am Programmieren hat)!

Achso der Link.

Mathworks Webinare.

und mal wieder ein Link hier:
Mathworks Webinars
Das sind so aufgezeichnete Vorträge, also Präsentationen mit Stimme.
Die Dinger sind richtig gut, ich hab mir den "MATLAB for C/C++ Programmers" reingezogen, immerhin 70 min lang. Und hab coole neue Sachen kennengelernt. Von denen ich zwei kurz anmerken und später auch ausprobieren will:
  • Embedded MATLAB: Möglichkeit um MATLAB-Code (allerdings nur rudimentären) in C-Code umwandeln zu lassen. Finde ich sehr schick!
  • MATLAB als Engine in C-Code einbinden. Der Hammer. Man kann MATLAB von einem C-Programm aus Variablen (auch Arrays) zu schicken UND MATLAB kann dann zur C-Laufzeit damit arbeiten, also bspw. plotten. Das ist genial zum Debuggen.
So und jetzt höre ich mir noch einen an.

Montag, 13. April 2009

C/C++ Referenz

Ich muss mal gerade diesen Link festhalten:
http://www.cplusplus.com/reference/
Eine sehr gute und ausführliche Referenz der C/C++-Bibliotheken, erspart wildes Googeln.

LabVIEW und DLLs: Debuggen vereinfachen

Irgendwie sehr simpel, aber man muss erstmal drauf kommen. Beim Debuggen von DLLs mit LabVIEW hab ich immer das Problem gehabt, dass es enorm aufwändig war DLL-interne Variablen zum Fehlersuchen nach Außen durchzuschleusen. (Entweder man hat schon passende Übergabe-Variablen oder man muss sich passende nur fürs Debuggen anlegen, was dann dazuführt, dass man ständig den Funktionskopf erneuern muss.) Wenn man jetzt aber einfach in der DLL zur Laufzeit eine Datei öffnet und in diese mittels fprinft die Variablen reinschreibt, ersparrt man sich ne ganze Menge Arbeit und kann gleichzeitig alle möglichen Variablen dort reinschreiben.

Ich weiß es gibt diese tollen Debugger, allerdings hab ich mich noch nie damit beschäftigt. Und mit LabVIEW bringt einem das ja erstmal auch gar nix, man müsste ja noch eine C-Programm drumherum stricken... Ist allerdings auf meiner Muss-ich-irgendwann-mal-tun-Liste

CUDA, mingw und Code::Blocks

So um es mal festzuhalten:
man kann bisher mit CUDA unter Windows nur mit Hilfe des MSVC-Code erzeugen, was ich sehr schade finde. (Zumindest hab ich keinen nachvollziehbaren Weg gefunden mingw einzusetzen.)

Man kann aber trotzdem bspw. Code::Blocks verwenden, dazu sollte man sich an diesem Blog-Post orientieren. Allerdings muss man noch ein paar Anpassungen vornehmen, weil der Beitrag für eine Toolchain unter Linux ausgelegt ist. Die notwendigen Details poste ich hier, wenn es bei mir 100 % läuft (was es im Labor irgendwie schon tut, aber hier zuhause gerade noch nicht).

Ich werde es jetzt so machen, dass ich die Cuda-Funktionen in eine DLL packe, die ich mit MSVC erzeuge und den Rest dann mit mingw erzeuge und dann von dort auf die DLLs linke.

Microsoft Visual C++ (Express Edition) vs. C99

Jetzt bin ich schon zum zweiten mal auf das Problem gestoßen, dass der MSVC einfach mache Sachen des C99 Standards nicht unterstützt:
Heute war es die Funktion strtof, mit der kann man normalerweise einen String in einen Float wandeln. Zum Glück wird strtod (wandelt in double) unterstützt, so dass man mit nem Cast doch noch daran kommt.
Das erste Mal fiel es mir bei isfinite auf, das gibt's nämlich auch nicht.

Die Bibliotheken von mingw (und damit gcc) enthalten übrigens beides.