Sponsored links

Valid XHTML 1.0!
Valid CSS!

Product: Book - Paperback
Title: Hacking: The Art of Exploitation
Publisher: No Starch Press
Authors: Jon Erickson
Rating: 3/5
Customer opinion - 3 stars out of 5
not bad, but...

I like the idea of the book. But it gives only an overwiew or better an introduction into some hacking techniques. There is far more to tell about buffer overflows, for example. I fully agree that its contents isn't very new and that most papers are a little bit overloaded with printscreens or other stuff like that. But if you can live with them, it is not that bad.

Product: Book - Hardcover
Title: Refactoring: Improving the Design of Existing Code
Publisher: Addison-Wesley Professional
Authors: Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
Rating: 5/5
Customer opinion - 5 stars out of 5
Making tired old code better

The basic thesis of this book is that, for various reasons, real programs are poorly designed. They get that way for a variety of reasons. Initially well designed, extending the program may lead to software decay. Huge methods may result from unanticipated complexity. Refactoring, according to Fowler, is a function preserving transformation of a program. The transformations are reversible, so the intention is to improve the program in some way.
Fowler suggests refactoring a program to simplify the addition of new functionality. The program should also be refactored to make it easier for human readers to understand at the same time.
He also insists that each step is small and preserves functionality, and on frequent unit testing with a comprehensive test suite.
Half of the book consists of a catalogue of refactorings. He gives each refactoring a memorable name, such as "Replace Type Code with Subclasses". He illustrates the design transformation with a pair of UML class diagrams, and has a standard set of sections: Motivation, Mechanics and Example.
The Motivation is a prose section that describes and justifies the refactoring, showing the relationship to other refactorings.
The Mechanics is a sequence of steps needed to carry out the refactoring, shown as a list of bullet points He expands on some points.
The Example is where the value of this book lies. Fowler takes a fragment of Java code, and takes us step by step through the refactoring. The code is small enough that he can show it all each step of the way without overwhelming us, but is large enough to be realistic.
The code is clear enough for non-Java programmers to follow. He explains his code well enough for the book to function as a Java tutorial where the meaning of the code is not obvious. One or two of the refactorings are specific to the Java object model, and do not apply to other languages. Other languages would benefit from similar treatment, but there are very few language-specific refactorings.
The book is very much of the Design Patterns movement, with frequent references to patterns. The aim of a factoring may be to achieve a particular pattern, or it may take advantage of a particular pattern. The book can be used as a tutorial on Design Patterns.
I have a small number of complaints. Fowler advocates the use of refactoring while studying code for a code review. One needs to be very sensitive to the feelings of the programmer here, especially if he or she is a novice. The reviewer should read the code with refactoring in mind, and possible refactorings recommended, but it is for the programmer to make the changes.
Reading this book has inspired me to refactor some of my own code. My mistakes underlined the need to take small steps, and to test frequently. I spent a day building a useful Delphi testing framework from the description Fowler gives of the JUnit testing framework. The one category of code that does not seem to lend itself to this approach is some highly coupled parsing code. While I can extract small blocks of code, they remain tightly coupled with each other, and it is hard to give them meaningful names. The answer here may be to use the top down approach of recursive descent, rather than the bottom up approach of refactoring. Perhaps recursive descent can guide refactoring. Refactoring is largely a local approach. One can almost say a pinhole approach. Sometimes a global view is needed.
In summary, I would say that this very good book would be of use to Java programmers who have some understanding and much bafflement. It is very good for us older dogs who have become a little jaded and need some new ideas and motivation.

Product: Book - Paperback
Title: C# Cookbook
Publisher: O'Reilly
Authors: Stephen Teilhet
Rating: 5/5
Customer opinion - 5 stars out of 5
Buy it - yesterday

A friend lent me their copy of the book when I was trying to figure something out. Ten minutes later I ordered my own copy. This book is great.

What it is is for about 70 small programming problems, it shows you how to write it. Both the code and the explanation. So in many cases you can just copy the code. And if what you need is a little different, the explanation gives you the knowledge you need.

One note - I did find one place where the code they gave was more complex and less efficient than necessary. So it's not perfect. But the code they gave did work.

Product: Book - Hardcover
Title: Oracle Certified Professional Application Developer Exam Guide
Publisher: McGraw-Hill Companies
Authors: Jason Couchman, Jason Couchman
Rating: 5/5
Customer opinion - 5 stars out of 5

I want to say that this book is a must to get certified by Oracle. This week I passed the last exam (the Report one), and I can say that without this book you will never certify. I have finished all the five exams (from the first time-Thanks God) using this book as my main study tool (along with the Sideris manuals as a minor references). I can say that this exam guide will cover %95 of the material tested in exam 3&4 (Forms), 80% of exam 5 (Reports-which in my opinion is the most difficult), 80% of exam 2 (procedure features), and 90% of exam 1. As it is clear from this figure the material covered will help you pass all exams. For the report exam I think you should have supplementary material (like Sideris) for two topics tested: Matrix report and lexical parameters) but even without that you can pass the exam. In short, buy this book if you want to be OCP-Application Developer. I highly recommend it. Excellent work by Oracle Press.