I routinely get emails of a "please teach me" nature. A recent one inspired me to this short play with 98% accuracy for all the meta-language involved in this general email exchange. This is it.
<1 kb email attached>
Collaboration notes of a GUI team trying to migrate enterprise level legacy apps into 21st century distributed weblications
"Hmmm... these numbers don't look right. I was expecting something a little different. I bet something's wrong with the data."So they write up a trouble ticket or send you an email or IM you with this deep logical distrust of your data.
"Nope, the data looks good here. Must be something on your end"If that don't work, option #2 is,
"That would be something caused by so-and-so process at my source. Sorry I can't do anything. But here's the name of the guy that might be able to help you."(Options #1 and #2 basically are just "he-did-its" pointing North and South, upstream or downstream, to somebody else in line... an ancient IT tactic going back to the pyramid-building Jewish slaves in Egypt.)
"Well let's look and see if we can find your data problem Mr. CussToMe",
“Well, here 2+2=4, ... and next right here 2+2=4, and downstream further yes, 2 plus 2 still equals 4... now we get to the BUSINESS LOGIC layer... hmmmmm ... ah yes... well what's this? Ole' Bobby here must have changed my code! Because it says here that 2+2-5. Heck, I’m pretty sure that’s not right. I'll fix it right away Mr. CussToMe. Thank you for bringing this to our attention. Wow, if only we had someone with your brains working for our team!"
Labels: business logic, business logic layer, data design, data structure, data warehouse, reporting, sql programming
Labels: BIL, business logic, business logic layer, data design, data structure, data warehouse, reporting, sql programming
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora# Generated by Oracle configuration tools.EXTPROC_CONNECTION_DATA.amer.microsoft.com=(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))(CONNECT_DATA=(PRESENTATION=RO)(SID=PLSExtProc)))ms.amer.microsoft.com=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = mycomputer.amer.microsoft.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ms.amer.microsoft.com)(INSTANCE_NAME = ms)))
Information management and manipulation are replacing knowledge acquisition and inference. The exponential growth of information and the methods for acquiring it have transformed the meaning of expertise. In the past, an expert was the repository of facts. Experts "learned" how to become experts by acquiring those facts and by learning how to distinguish truth. But there are now too many facts, too much stored information, too many sources. Experts are now defined by their ability to recognize underlying patterns so that new facts can be acquired and integrated. Experts learn how to match these underlying patterns or heuristics to new data sources in order to advance composite knowledge.
from http://carlisle-www.army.mil/usawc/Parameters/96autumn/harig.htm (emphasis mine.)
The best way I've found to understand operators is always to first learn how to read them out loud.
A summary on how can you read some pointer and class operators (*, &, ., ->, [ ]) that appear in the previous example:
*x can be read: pointed by x
&x can be read: address of x
x.y can be read: member y of object x
(*x).y can be read: member y of object pointed by x
x->y can be read: member y of object pointed by x (equivalent to the previous one)
x[0] can be read: first object pointed by x
x[1] can be read: second object pointed by x
x[n] can be read: (n+1)th object pointed by x
...some code with inline explanations on defining methods outside of the code itself... this always threw me off before.
// example of defining a method outside of the class
// using prototype and scope operator
#include
class CRectangle {
int x, y;
public:
// set_values is a prototype only, defined below
void set_values (int,int);
int area (void) {
return (x*y);
}
};
// set-values defined here using :: scope operator
// notice a, b variables are placed into x, y
// which are private scope with CRectangle class
void CRectangle::set_values (int a, int b) {
x=a;
y=b;
}
int main() {
CRectangle rect;
// set_values is called, passing 3 and 4
rect.set_values (3,4);
// rect.area() sees x,y variables as set_values
// has changed their values per arguments we
// passed to it
cout << "area: " << rect.area();
}
Once you’ve completed your initial application design, you’ll typically perform the following tasks to develop the application with the development environment and the Microsoft Foundation Class Library (MFC):
The steps tend to be iterative: You’ll go back and forth between editing the user interface and writing code all through the development process. You can also do the steps in a different order, depending on your working style.