Showing posts from March, 2007

Understanding filter, map and reduce

Most of the computation problems that I have faced in the past could easily be solved using a mix and match of filter, map and reduce operations. These operations could be performed on any set of objects that can be iterated.

Filtering operation is one of the most fundamental operations that we perform more frequently than we think. In simple terms, we define a predicate and check if this predicate is true for each object in the set, iterating over them one by one. Whenever the predicate is true, we append the object to the output, otherwise we ignore. Consider grep tool as an example. The lines in the file(s) are iterable. If the current line is L, the the predicate is the question: "does L contain the pattern XYZ?". The output set has utmost as many elements as input set has.

Mapping is the operation of producing an output for each element in the input, by performing a function on that input. Unlike filtering, which used a predicate to check, the map uses a function. The ma…

dhclient - Obtaining IP address dynamically

Whenever you want to obtain a dynamic IP address for your Linux/Unix machine from a DHCP server, you should use dhclient utility.

Both DHCP request and responses are UDP requests. If you use a sniffer to identify the pattern of the request responses, the following is what you might see. The following was taken from dhclient running in FreeBSD 6.1.

Len SrcIP SrcMACAddr DestIP DestMACAddr Protocol
342 00:0c:29:c1:13:81 ff:ff:ff:ff:ff:ff UDP
62 00:50:56:ef:75:a8 ff:ff:ff:ff:ff:ff ICMP ping request
342 00:50:56:ef:75:a8 00:0c:29:c1:13:81 UDP
60 00:0c:29:c1:13:81 ff:ff:ff:ff:ff:ff ARP request

If you observe the source and destination (IP, MACAddr) patterns, it is easy to appreciate what happens. Here is what happens:

A DHCP request is sent on the network. Both destination MACAddr and IPAddr are broadcast addresses.
The DHCP server chooses and IP address t…