Computing Dictionary

Callback Method

A function that is registered somewhere to be called at a later point. OO languages usually do not have this facility. Command pattern in Java is a workaround for this shortage.


All text in an XML document will be parsed by the parser. But text inside a CDATA section will be ignored by the parser. This is good when you want to do something else with that text or they are special characters. Nested CDATA sections are not allowed.

function test(a,b)

Checksum (Hashsum)

Is a fixed-size datum computed from an arbitrary block of digital data for the purpose of detecting accidental errors that may have been introduced during its transmission or storage. The integrity of the data can be checked at any later time by recomputing the checksum and comparing it with the stored one. If the checksums do not match, the data was almost certainly altered (either intentionally or unintentionally).


Algorithms for media compression. It is used for streaming, etc. Examples are MP3, AAC, JPEG, etc. Streaming standard in most browsers is H.264.

IP Address

­To make it easier for humans to remember, IP addresses are normally expressed in decimal format (124.665.234.123) but computers communicate in binary form: 11011000.00011011.00111101.10001001. ­­Each section is called an octet; each octet can hold 0-255 so this is a 32 bit address (8*4) and can have 2^32 IP addresses.
The first octet is called Net section and the last octet is Host or Node section. They are used to identify classes of IPs. the two middle octets are used by net and host sections when needed depending on the class.


There are five IP classes (A,B,C,D,E) plus certain special addresses:

  • Broadcast - Messages that are intended for all computers on a network are sent as broadcasts. These messages always use the IP address
  • Class D - Used for multicasts, Class D is slightly different from other classes. It has a first bit value of 1, second bit value of 1, third bit value of 1 and fourth bit value of 0. The other 28 bits are used to identify the group of computers the multicast message is intended for.
  • Loopback - The IP address is used as the loopback address. This means that it is used by the host computer to send a message back to itself for troubleshooting and network testing.
  • Default Network - The IP address of is used for the default network.


These IPs require eight 16-bit hexadecimal colon-delimited blocks: 2001:0db8:3c4d:0015:0000:0000:abcd:ef12 , 1080:0:0:0:0:34:0:417A , 1080::34:0:417A. So it will be a 128-bit address and we have a maximum of 2¹²⁸ addresses available.

Under IPv4 we have unicast, broadcast and multicast addresses. In IPv6 we have unicast, multicast and anycast. With IPv6 the broadcast addresses are not used anymore, they are replaced with multicast addressing.


In web development, a Mashup is a web page or application that combines data or functionality from two or more external sources to create a new service. The term mashup implies easy, fast integration, frequently using open APIs and data sources to produce results that were not the original reason for producing the raw source data. An example of a mashup is the use of cartographic data to add location information to real estate data, thereby creating a new and distinct web API that was not originally provided by either source.

Multiplexing (Muxing)

is a process where multiple analog message signals or digital data streams are combined into one signal over a shared medium. A reverse process, known as demultiplexing, can extract the original channels on the receiver side.

Network Layers

OSI Model

7 Application Layer
6 Presentation Layer
5 Session Layer
4 Transport Layer
3 Network Layer
2 Data Link Layer (LLC sublayer, MAC sublayer)
1 Physical Layer

Response Time

Response time is most often (not always) associated with the time an application takes to respond to some input. We might agree on a specific average or guaranteed response time. Without additional hardware capacity, as the load increases, application throughput should in theory remain constant, and response time per request should increase only linearly. In reality, as load increases, applications will exhibit a decrease in throughput and a subsequent exponential increase in response time!
Average r.t != Guaranteed r.t

Scale Out

Adding more CPU/memory to the machine.

Scale Up

Putting application on more machines


Is a measure of the amount of work an application must perform in unit time, i.e. transactions per second or messages per seconds. This is one of the things that should be agreed upon in new projects.


  • A “join point” is an identifiable point of execution in an application, such as a call to a method or an assignment to a variable. Join points are important as they are where aspect behaviours are woven in to the application.
  • A “point-cut” identifies a join point in the program at which a cross-cutting concern needs to be applied.
  • An “advice” is a piece of code implementing the logic of a cross-cutting concern. It is executed when a specified point-cut is reached.
  • An “introduction” is a cross-cutting instruction that can make static changes to the application components. An introduction may, for example, add a method to a class in the application.
  • An aspect in AOP is equivalent to a class in object-oriented programming. It encapsulates point-cuts and associated advice and introductions.

Expression/ Statement

  • Expression: is like a phrase. These are expressions: 2+3, a method call
  • Statement: is like a complete sentence. These are statement: x=2+3, assignments,etc.
  • Statement Block: is like a paragraph such as a block of statements.


Forking is a UNIX term; when you fork a process (a running program), you basically duplicate it, and both resulting processes keep running from the current point of execution, each with its own copy of the memory. The original one will be the parent process, while the other (copy) will be the child.

Threads are lightweight processes, or subprocesses, all of them existing within the same (real) process, sharing the same memory. This reduction in resource consumption comes with a downside,
though, the share memory needs synchronization.

Another way to avoid threads and forks is to switch to microthreads. They are thread-like parallelism which scale much better than real threads.


When a fault in a system is not detected/taken care of, then it becomes a failure.

Reverse Proxy

A reverse proxy appears to the client just like an ordinary web server. No special configuration on the client is necessary. The client makes ordinary requests for content in the name-space of the reverse proxy. The reverse proxy then decides where to send those requests, and returns the content as if it was itself the origin. A typical usage of a reverse proxy is to provide Internet users access to a server that is behind a firewall. Reverse proxies can also be used to balance load among several back-end servers, or to provide caching for a slower back-end server. In addition, reverse proxies can be used simply to bring several servers into the same URL space.

Apache and nginx can be used as forward/reverse proxies.

Forward Proxy

An ordinary forward proxy is an intermediate server that sits between the client and the origin server. In order to get content from the origin server, the client sends a request to the proxy naming the origin server as the target and the proxy then requests the content from the origin server and returns it to the client. The client must be specially configured to use the forward proxy to access other sites. A typical usage of a forward proxy is to provide Internet access to internal clients that are otherwise restricted by a firewall. The forward proxy can also use caching (as provided by mod_cache) to reduce network usage.

Round Robin

Is a scheduling strategy that orders the requests (based on priorities) and then at every assignment possibility, assigns the resource to the next request.


DMZ (de-militarised zone) contains devices that are expected to receive messages from arbitrary sources from internet such as DNS/email/FTP/Web servers, etc. It sits between firewall and internet in front of the private network. It hides the private network (militarised zone).


Ability to monitor or measure the level of a product's performance, to diagnose errors and to write trace information. AOP can add instrumentation to code for monitoring,etc. It can be of two types, source instrumentation and binary instrumentation.

Test Harness

Or "automated test framework" is a collection of software and test data to test another software.

Conway Law

He says: organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.

That basically means when we design a system and interfaces we usually reflect the organization's structure into our decomposition of the system and interfaces i.e when we have 2 departments we will have two applications.

This is not actually a law but an observation that exists in some places.

Unicode and UTF

Unicode is an encoding and text representation standard that can be implemented by different encodings. UTF is one of those encodings. UTF-8 uses one byte for any ASCII characters, which have the same code values in both UTF-8 and ASCII encoding, and up to four bytes for other characters.

Unicode is a 16-bit character.

A Java String is internally always encoded in UTF-16.

Streaming Protocols

Media streaming (IPTV, Internet Radio, etc) are not all necessarily use a multicast protocol. Most of them still use unicast that does not scale well when the number of users is high. Multicast is basically the capability of the infrastructure as the source only send a packet only once.


Uniform Resource Locator (URL) is a subset of the Uniform Resource Identifier (URI).
URIs identify and URLs locate; however, locations are also identifications, so every URL is also a URI, but there are URIs which are not URLs.
For example "Reza" is my identification so it is a URI but doesn't tell anything about my "location" so it is not a URL.

XML Gateway

An XML appliance is a special purpose network device used to secure, manage and mediate XML traffic. They are most popularly implemented in Service Oriented Architectures to control XML based Web Services traffic, and increasingly in cloud oriented computing to help enterprises integrate on premise applications with off premise cloud hosted applications. XML Appliances are also commonly referred to as SOA Appliances, SOA Gateways, XML Gateways, Cloud Brokers. Today most XML Appliances are also available as software gateways.

DNS Records

A "CNAME" record (Canonical Name) is a type of resource record in the Domain Name System (DNS) used to specify that a domain name uses the IP addresses of another domain, the "canonical" domain.
This is convenient when running multiple services (FTP, webserver,etc each running on different ports) from a single IP address. You can, for example, point and to the A record, which in turn points to the IP-address. Then, if you ever need to change the IP-address, you only have to change it in one place (A record). CNAME records must always be pointed to another domain name, never to an IP-address.

An "A" record returns a 32-bit IPv4 address, most commonly used to map hostnames to an IP address.

An "MX" record (mail exchanger record) is a type of resource record in the Domain Name System that specifies a mail server responsible for accepting email messages on behalf of a recipient's domain, and a preference value used to prioritize mail delivery if multiple mail servers are available. When an e-mail message is sent through the Internet, the sending mail transfer agent (MTA) queries the Domain Name System for MX records of each recipient's domain name. This query returns a list of host names of mail exchange servers accepting incoming mail for that domain and their preferences. The sending agent then attempts to establish an SMTP connection.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License