This page is going to contain information on the books I bought that were actually useful and helped me develop DansGuardian. I will write this story bit by bit as I get round to it. I will not recommend the books I bought in addition to these that were no help at all - only those I personally recommend. If you buy books from these links I get a small percentage of the sales.
Around Oct 2000 I wanted to write a web content filter as all the other Open Source filters only did URL filtering or were, basically, rubbish. I also knew it had to be in C++ but I had never done a single bit of C++ before. So I looked around for a book to teach me C++. I found this one which came with good reviews:
Who's Afraid of C++? (Who's Afraid...
I read this book from cover to cover before even attempting to write any C++.
It was a really good book and helped me understand OOPS, C++ and so on.
Which was great. However the day I actually wrote a Hello World bit of C++ I
did not know even how to compile it. The above book contains information on
compiling in Windows but not on Linux. I was stuck alright - not even
knowing the very basics. So I bought this book:
GNU C++ for Linux
This then got me as far as compiling stuff. But as soon as I actually started to write non-trivial C++ for linux what I did not know what libraries or function calls to use. The above book was a help but was far from ideal and is really only good for being used as a reference book. I struggled for a while and by Jan 2001 I had learnt basic C++ and written the first version of DansGuardian. It used a high level library called nb++ which did most of the Socket and daemon work for me. But I wanted to do more.
Moving on to more advanced stuff
Web searching and newsgroups were a little help but there's nothing like sitting with a book. So I bought my next book which was recommended to me by a Linux programmer:
Linux Application Development
Boy, did that give me a new lease of life. It opened up a whole world of ideas such as reading and writing to sockets, select() and so on. For a mid to late beginner this book was perfect and I still reference it sometimes today. With the above book I was able to write DansGuardian version 2 which did not rely on 3rd party String, daemon or socket libraries.
Doing things quickly
I wanted to add URL filtering to DansGuardian so I bought several books on algorithms, however the only one that was any good was this one:
Algorithms in C++
This taught me stuff like Quick Sort, Binary Search and so on. All very interesting. From this information I wrote my own generic list class which has build-in searching and sorting making the URL filtering in DansGuardian many times faster than, say, squidGuard. The Graph Algorithms are absolutely facinating and are used in the ultra-fast phrase searching in DansGuardian.
The End... or is it?
If you only buy one book on unix programming, then buy the UNIX programmer's bible:
I can not recommend it enough. Although you might spot that it was published many years ago - it is largely still correct today as unix programming is such a mature subject - much more so than Windows programming for example. Of all the books, I reference this one the most. If I want to learn a new function, I will refer to this book first. Buy it!
On actual programming I have bought a few other books but they've mainly been dust collectors. So this is it - the end of the story for now. If you own the above books and are able to use Google then you will be able to code almost anything you desire. Happy learning!
Page last modified: 02 September 2004 22:26:38