Tuesday, March 29, 2005

refactoring and aspect-oriented programming

What is Refactoring?

Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it's less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.

AOP is a new technology for separating crosscutting concerns into single units called aspects. An aspect is a modular unit of crosscutting implementation. It encapsulates behaviors that affect multiple classes into reusable modules. With AOP, we start by implementing our project using our OO language (for example, Java), and then we deal separately with crosscutting concerns in our code by implementing aspects. Finally, both the code and aspects are combined into a final executable form using an aspect weaver. As a result, a single aspect can contribute to the implementation of a number of methods, modules, or objects, increasing both reusability and maintainability of the code. Figure 1 explains the weaving process. You should note that the original code doesn't need to know about any functionality the aspect has added; it needs only to be recompiled without the aspect to regain the original functionality.
In that way, AOP complements object-oriented programming, not replacing it, by facilitating another type of modularity that pulls together the widespread implementation of a crosscutting concern into a single unit. These units are termed aspects, hence the name aspect oriented programming.

Thursday, March 24, 2005

smoke

Smoke testing is non-exhaustive software testing, ascertaining that the most crucial functions of a program work, but not bothering with finer details. The term comes to software testing from a similarly basic type of hardware testing, in which the device passed the test if it didn't catch fire the first time it was turned on. A daily build and smoke test is among industry best practices advocated by the IEEE (Institute of Electrical and Electronics Engineers). The original version of smoke testing predates both hardware and software testing and is still used to test the integrity of a variety of systems by placing a smoke bomb inside some kind of a chamber to see if there are any leaks for the smoke to escape through.

smart pointer

Smart pointers are objects that look and feel like pointers, but are smarter. auto_ptr is a simple wrapper around a regular pointer. It forwards all meaningful operations to this pointer (dereferencing and indirection). Its smartness in the destructor: the destructor takes care of deleting the pointer.

Wednesday, March 23, 2005

xml networking companies

Sarvega, Reality(security), Datapower, Cisco, BEA, IBM...

Monday, March 21, 2005

NP and NPC

Roughly speaking, the class NP consists of problems
for which it can be verified in polynomial time that a solution to the problem is indeed
what it claims to be. The NP–complete problems are a close-knit party from a complexity
point of view, in the sense that if any NP–complete problem admits a polynomial–time
solution, then so do all NP–complete problems. The subset of problems in NP for which a polynomial algorithm exists
is known as P. The abbreviations NP and P stand for nondeterministic polynomial and
polynomial respectively. Historically, the class NP was first introduced in terms of nondeterministic
Turing machines. The study of this type of problems is generally listed
under the denominator of combinatorial optimization.

Sunday, March 20, 2005

multi-set

A bag, or multi-set, is a set where values may be repeated. Inserting 2, 1, 2 into an empty set gives the set {1, 2}. Inserting those values into an empty bag gives {1, 2, 2}. From another point of view, a set is unordered, too, but has each value at most once.

Friday, March 18, 2005

latent semantic indexing

LSI considers documents that have many words in common to be semantically close, and ones with few words in common to be semantically distant. This simple method correlates surprisingly well with how a human being, looking at content, might classify a document collection. Although the LSI algorithm doesn't understand anything about what the words mean, the patterns it notices can make it seem astonishingly intelligent.

When you search an LSI-indexed database, the search engine looks at similarity values it has calculated for every content word, and returns the documents that it thinks best fit the query. Because two documents may be semantically very close even if they do not share a particular keyword, LSI does not require an exact match to return useful results. Where a plain keyword search will fail if there is no exact match, LSI will often return relevant documents that don't contain the keyword at all.

Tuesday, March 15, 2005

Burbug robots


BugBrain(TM) is a walking robot kit that both students and hobbyists will find educational and fun. Unlike most robots, BugBrain is fully programmable via serial connection to any PC (the programming cable is included).

Open house policy

Today the math is holding an open house day, a good advertisement and exposure strategy

Graph similarity measurement

Isomorphism (NP but probably not NPC)
Editing distance (graph edit distance has been recognized a flexible
error-tolerant mechanism to measure distances between attributed
graphs, Generally, an attributed graph consists of a (directed or undirected) graph and an arbitrary number of node and edge attributes. For example, the nodes of a graph are often assigned attributes such as names, flags, and coordinates, and likewise, the edges are assigned attributes such as lengths, costs, and capacities.)
Maximum sub graph
Minimum super graph
Statistical methods (e.g., measurement of degree distribution)
Iterative methods (two graph elements are similar if their neighborhoods are similar)

Sunday, March 06, 2005

centroid point

A point in a weighted tree that has minimum weight for the tree. The set of all centroid points is called a tree centroid (Harary 1994, p. 36).

Harary, F. Graph Theory. Reading, MA: Addison-Wesley, 1994.

Tuesday, March 01, 2005

biotech

A guide to Biotech and Genomics researches are using biotechnology to develop and entirely new type of medicine, based on the individual's genetic makeup

The Biopharmaceutical field is also making huge strides in the development of new medicines and treatmens for diseases like HIV/AIDS, Hepatitis B/C, Cancer, Muscular Dystrophy, ....