How to use wxPlotCtrl in your wxWidgets application using MinGW.

2008-09-02, Peter.

Recently, I have been using the eminent wxPlotCtrl in my wxWidgets applications developments. For that work, I have been using the MinGW C++ compiler for Windows. There was some work performed in order to get it to compile and link properly. So I thought that by writing the procedure here, maybe somebody else can benefit from it as well.

(I worked with version 1.0 of wxPlotCtrl and wxThings, both dated 2006-04-28 and available at Sourceforge.)

Changes made to the source code for wxPlotCtrl:

Changes made to the source code for wxThings:

Also, I made some entries to a Makefile that can be used together with MinGW. Note where I placed the wxPlotCtrl and wxThings source code - oh, and by the way, tab characters don't go well with HTML... :-)


SHELL := $(COMSPEC)
CXXFLAGS += \
-IC:/wx/include \
-IC:/wx/lib/gcc_lib/msw \
-IC:/wx/additions/wxplotctrl/include \
-IC:/wx/additions/wxthings/include
# wxPlotCtrl...
plotctrl.o: C:/wx/additions/wxplotctrl/src/plotctrl.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
plotcurv.o: C:/wx/additions/wxplotctrl/src/plotcurv.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
plotdata.o: C:/wx/additions/wxplotctrl/src/plotdata.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
plotdraw.o: C:/wx/additions/wxplotctrl/src/plotdraw.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
plotfunc.o: C:/wx/additions/wxplotctrl/src/plotfunc.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
plotmark.o: C:/wx/additions/wxplotctrl/src/plotmark.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
plotprnt.o: C:/wx/additions/wxplotctrl/src/plotprnt.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
fparser.o: C:/wx/additions/wxplotctrl/src/fparser.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
fourier.o: C:/wx/additions/wxplotctrl/src/fourier.c
$(CXX) -c -o $@ $< $(CXXFLAGS)
fpoptimizer.o: C:/wx/additions/wxplotctrl/src/fpoptimizer.cc
$(CXX) -c -o $@ $< $(CXXFLAGS)
# wxThings...
genergdi.o: C:/wx/additions/wxthings/src/genergdi.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
range.o: C:/wx/additions/wxthings/src/range.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)

Good Luck on Your project!

Taggar: , ,
Kategoriserat som C++, Uncategorized | 2 kommentarer »

Kan man tjäna pengar passivt?

2008-07-24, Peter.

Ni som läser detta har säkert hört talas om alla lyckligt lottade bloggare som har lyckats att skapa en smärre förmögenhet på att blogga om utvalda produkter. Med kompletterande annonsintäkter och sponsorpengar levs ett glamoröst och problemfritt liv, framställs det i media.

Jag fick idag en inbjudan av L att gå med i Yuwie. Yuwie är en personlig-presentation-och-diverse sajt och påminner en del om till exempel Facebook. Skillnaden är dock att genom att vara verksam på Yuwie och referera fler vänner att gå med så skapas en möjlighet till inkomst.

Jag uppmanar härmed dig som läser detta att klicka på länken nedan och bli min Yuwie-vän! :-)

Taggar: , ,
Kategoriserat som Business | Inga kommentarer »

Gmail’s mystiska gråa låda.

2008-07-08, Peter.

Jag läste just ett blogg-inlägg on Gmails mystiska grå box som man kan se uppe i vänstra hörnet i webläsarfönstret när man är inloggad på Gmail med Firefox eller Safari. Om du har en sådan webläsare och är en lycklig innehavare av ett Gmail-konto så rekommenderar jag dig att logga in och försöka lista ut var den gråa lådan kommer ifrån. :)

P.S. Har du inget Gmail-konto kan jag bjuda in dig.

Taggar:
Kategoriserat som Okategoriserat | En kommentar »

WordPress plugin för färgning av kod-syntax.

2008-06-18, Peter.

Jag hittade en trevlig plugin till WordPress via AllMyBrain.com. Den heter CodeHighlighter och gör precis som dess namn beskriver. Länkar för att ladda ner den och för att läsa om den följer:

Taggar: , , ,
Kategoriserat som WordPress | Inga kommentarer »

Kärnavfallsfrågan

2008-06-15, Peter.

Jag har en idé angående frågan om vad vi ska göra med det högaktiva avfallet från kärnkraftsindustrin i form av använt kärnbränsle.

I nuläget lagras allt använt kärnbränsle (från Sverige) en viss tid för avkylning på kärnkraftverken innan det skeppas till CLAB, utanför Oskarshamn som drivs av Svensk Kärnbränslehantering AB. SKB har Sveriges uppgift att ta hand om det Svenska avfallet och de skriver, i skrivande stund, på sin hemsida:

"En svensk kärnreaktor producerar årligen mellan 15 och 25 ton högaktivt avfall i form av använt kärnbränsle. Om dagens reaktorer drivs i 50–60 år blir det totalt cirka 12 000 ton som SKB ska ta hand om på ett miljösäkert sätt."

Om vi antar att avfallet har en massdensitet på cirka 10 g/cm3 skulle det enligt planerna totalt bli cirka 1200 m3 som ska kapslas in i stora kopparcylindrar för nedgrävning långt ner i en geologiskt relativt stabil berggrund. Det finns mycket att läsa om detta på SKB's hemsida.

Nu till idén jag har...

Världens hav har en total volym på cirka 1.35 miljarder kubikkilometer [Wikipedia]. Låt oss för jämförelsens enkelhets skull avrunda den siffran nedåt till 1.2*1018 m3 Således utgör volymen hos det Svenska kärnbränsleavfallet cirka 10-13 procent av världshavens volym. Låt oss anta att vi kunde fördela avfallet homogent över hela denna volym. Det skulle innebära en "utspädningsfaktor" på cirka 10-15.

Låt oss alltså bygga om transportfartyget Sigyn till att effektivt mala/lösa upp det använda bränslet och sprida ut det sakta över världens hav. Problemet skulle inte längre vara ett problem. Giftigheten hos det utspädda avfallet skulle ligga långt under naturligt förekommande uran [IAEA, INEEL, CCNR]. Istället skulle vi slippa risker, både miljömässiga risker och säkerhetsrisker, kostnader och oro för framtida generationer.

Någon som har något att kommentera om detta?  :-)

Taggar: , , , , , ,
Kategoriserat som Kärnkraft | 3 kommentarer »

Mercurial

2008-05-25, Peter.

Det var för ett par tre år sedan som jag gick över från CVS till Subversion för versionskontroll av digitala dokument av olika typ. CVS var gammalt och Subversion hade utvecklats just för att ersätta CVS. För Subversion fanns det även ett snyggt användargränssnitt (GUI) under Microsoft Windows, kallat TortoiseSVN, vilket gjorde det mycket lätt att använda. Speciellt för många av mina kollegor som inte var vana med versionshantering blev inlärningströskeln ganska låg.

Både CVS och Subversion är system som bygger på ett centralt arkiv där alla versioner lagras under kontrollerade former. På sistone har jag insett att modellen med ett centralt arkiv inte passar så himla bra med det sättet som jag arbetar. Det vore mycket bättre för min verksamhet om jag hade med mig arkivet hela tiden, vid vilken dator jag än arbetar vid för tillfället.

Lyckligtvis så finns det så flera sådana program för distribuerad revisionshantering som fungerar just på det sättet. Arkivet är distribuerat över alla som arbetar med dess innehåll. Ett distribuerat arkiv är långt mer säkert än ett centralt arkiv för förvaring av dokument. Verktyget som jag har fastnat för heter Mercurial och är en Open Source programvara med GNU GPL licens.

Initialt verkar det som ett mycket smidigt verktyg att använda för distribuerad revisionshantering. Är man dessutom van med andra verktyg för versionshantering så är Mercurial mycket enkelt att lära sig. På bara cirka en timme hade jag flyttat mitt arkiv från Subversion till Mercurial och spridit det till alla de datorer jag arbetar med för tillfället.

Rekommenderas alltså!  :)

Taggar: , , ,
Kategoriserat som SCM | Inga kommentarer »

SSH and SFTP communication in C++ using libssh2.

2008-05-10, Peter.

For some time I have been looking around for some nice C or C++ library to enable communication using the SSH and/or SFTP protocols. Finally, I found the eminent library called libssh2 on http://www.libssh2.org (or on Sourceforge). In order to incorporate this library in my project, I created a C++ class called PJSSH that encapsulates the SSH and SFTP communication details.

A relatively simple interface is provided for the user of the class, exposing some few methods:

For your convenience, I provide a stripped down version of the class declaration (the header file) below. Update 2008-05-17: There is a complete source code and a test program available, see the menu.

Läs resten av detta inlägg »

Taggar: , ,
Kategoriserat som C++ | Inga kommentarer »

About.Com’s C/C++/C# programmeringstävling nummer elva

2008-05-06, Peter.

Nu har programmeringstävling nummer 11 hos About.com blivit avgjord. Tävlingen handlade om att programmera spelet "set" i något av språken C, C++ eller C# och sedan spela spelet 10000 gånger så fort som möjligt. Det snabbaste programmet skrevs av Chris Runyan, han hade löst uppgiften i C++ med en snygg processor-parallellisering av spelen. Hans tid för 10000 spel var drygt 0.1 sekunder. Jag tycker hans källkod verkligen var imponerande enkel och snygg, därför återger jag den här nedan till allmänhetens nytta. :-)

Läs resten av detta inlägg »

Taggar: , ,
Kategoriserat som C++ | Inga kommentarer »

itoa

2008-05-04, Peter.
char*  itoa ( int value, char * str, int radix );

Detta är en funktion som ofta stöds av diverse kompilatorer men det är inte en standardfunktion i programmeringsspråken C eller C++. Den har som syfte att omvandla ett heltal till en sträng, i en viss bas. Så här står det om den och dess parametrar hos http://www.cplusplus.com:

Converts an integer value to a null-terminated string using the specified base and stores the result in the array given by str parameter. If base is 10 and value is negative, the resulting string is preceded with a minus sign (-). With any other base, value is always considered unsigned. str should be an array long enough to contain any possible value: (sizeof(int)*8+1) for radix=2, i.e. 17 bytes in 16-bits platforms and 33 in 32-bits platforms.

Parametrar:

value
Value to be converted to a string.
str
Array in memory where to store the resulting null-terminated string.
radix
Numerical base used to represent the value as a string, between 2 and 36, where 10 means decimal base, 16 hexadecimal, 8 octal, and 2 binary.

Returnerar: En pekare till en nollavslutad sträng, samma som parametern str.

Här följer en implementation av funktionen:

 
char* itoa(int value, char* string, int radix)
{
   char tmp[33];
   char *tp = tmp;
   int i;
   unsigned v;
   int sign;
   char *sp;
   if (radix > 36 || radix <= 1)
   {
      return 0;
   }
   sign = (radix == 10 && value < 0);
   if (sign)
      v = -value;
   else
      v = (unsigned)value;
   while (v || tp == tmp)
   {
      i = v % radix;
      v = v / radix;
      if (i < 10)
         *tp++ = i+'0';
      else
         *tp++ = i + 'a' - 10;
   }
   if (string == 0)
      string = (char *)malloc((tp-tmp)+sign+1);
   sp = string;
   if (sign)
      *sp++ = '-';
   while (tp > tmp)
      *sp++ = *--tp;
   *sp = 0;
   return string;
}
 
Taggar: , ,
Kategoriserat som C++ | Inga kommentarer »

My native american name is…

2008-04-27, Peter.

... Elan Kajika, which means: Friendly One Who Walks Without Sound. What's Your Native American Name?

Kategoriserat som Okategoriserat | En kommentar »
« Tidigare inlägg Senare inlägg »
Inlägg (RSS) och Kommentarer (RSS).

 


Advertisements:
Loan - Cheap Gas - Mortgage - Credit Card Consolidation