Arthur's Index: Computer Science

contact me at arthurhu "at" Top of Index | Home

update: 2/7/2011

Computer Science

character set


%%Introduction 2.0


Creating Thumbnail Images on the fly with ASP.Net

Bitmap - see help topic

Create bitmap, use imagefrombitmap, then use graphics
 methods and save to a file

%%Blob reading
Reading BLOBs from SQL Server and 
display it in a Windows Form PictureBox
To convert from memorystream blob to bmp image:
private void PictureFormat(object sender, ConvertEventArgs e)
    // e.Value is the original value
    Byte[] img = (Byte[])e.Value;
    MemoryStream ms = new MemoryStream();
    int offset = 78;
    ms.Write(img, offset, img.Length - offset);
    Bitmap bmp = new Bitmap(ms);
    // Writes the new value back
    e.Value = bmp;
Read / Write BLOBs from / to SQL Server using C# .NET DataReader
Command.ExecuteReader method has an overload which will take a
CommandBehavior argument to modify the default behavior of the
DataReader. You can pass CommandBehavior.SequentialAccess to the
ExecuteReader method to modify the default behavior of the DataReader
so that instead of loading rows of data, it will load data
sequentially as it is received. This is ideal for loading BLOBs or
other large data structures. Note that this behavior may differ
depending on your data source.
= SequentialAccess Provides a way for the DataReader to handle rows that
contain columns with large binary values BLOBs. Rather than loading
the entire row, SequentialAccess enables the DataReader to load data
as a stream
= When accessing the data in the BLOB field, use the GetBytes or
GetChars typed accessors of the DataReader, which fill an array with


@@ATL Active Template Library

Template library with wizard that makes it simple to make com objects for
web based controls with less resources than MFC

SAMS chapter


%%Dot Net

Best Kept Secrets in .NET by Deborah Kurata ISBN: 1590594266 Apress ©
2004, 240 pages Whether you are an experienced developer or a .NET
novice, this book will help you be more productive, create better
code, and produce superior software with the author's valuable, but
lesser-known features of Visual Studio and the .NET Framework.  


Beginning C++ Game Programming 
by Michael Dawson ISBN: 1592002056 
Course Technology © 2004, 335 pages       
Offering a thorough and modern introduction to C++, this book has
everything you need in order to learn the fundamentals of C++ and game
programming basics.  



Creating Web Graphics For Dummies by Bud Smith and Peter Frazier ISBN:
0764525956 John Wiley & Sons © 2003, 312 pages Written for novice Web
designers without graphic design experience, this helpful guide covers
how to create and use basic graphics for Web sites and includes
instructions on creating and placing buttons, banners, animated GIFs,
Flash animations and more.  


On line certification / testing

@@C Language



%%books Most of book Visual C++ unleased with MFC, ATL %%class from method body in class declartion is in-line other methods declared outside of body class::method // classes example #include using namespace std; class CRectangle { //default private: int x, y; public: void set_values (int,int); // inside will be an inline function // you can define method inside the class def int area () {return (x*y);} protected: //protected members are accessible from members of their same class and //from their friends, but also from members of their derived classes. }; // use :: to define class method outside of class definition void CRectangle::set_values (int a, int b) { x = a; y = b; } int main () { CRectangle rect; rect.set_values (3,4); cout << "area: " << rect.area(); return 0; } %%const - make reference parameter not change - function that does not change object - return value is const and cannot be changed %%constructor see destructor constructor function must have the same name as the class, and cannot have any return type; not even void. default constructor has no arguments, unless you define any constructor, in which case the default is not provided. also default: the copy constructor, the copy assignment operator, and the default destructor. CRectangle::CRectangle (int a, int b) { width = a; height = b; } %%copy constructor //make new object as copy of another //if shallow copy works, you don't need copy constructor Person q("Mickey"); // constructor is used to build q. Person r(p); // copy constructor is used to build r. Person p = q; // copy constructor is used to initialize in declaration. Point::Point(const Point& p) { x = p.x; y = p.y; } %%destructor The destructor must have the same name as the class, but preceded with a tilde sign (~), no value. %%hello world int main () { cout << " Hello World "; return 0; } %%overload operator type operator sign (parameters) { /*...*/ } sample: from .type. CVector CVector::operator .sign. + (parameters) CVector CVector::operator+ (CVector param) { CVector temp; temp.x = x + param.x; temp.y = y + param.y; return (temp); } %%static members static data-member must be initialized outside the class, in the global scope int CDummy::n=0; function can only refer to static data, in no case to non-static members of the class, as well as they do not allow the use of the keyword this %%template declare template GenericType GetMax (GenericType a, GenericType b) { return (a>b?a:b); } call int x,y; GetMax (x,y); template class pair { T values [2]; public: pair (T first, T second) { values[0]=first; values[1]=second; } }; Template specialization template class pair { T value1, value2; public: pair (T first, T second) {value1=first; value2=second;} T module () {return 0;} }; template <> class pair { int value1, value2; public: pair (int first, int second) {value1=first; value2=second;} int module (); }; template <> int pair::module() { return value1%value2; } int main () { pair myints (100,75); pair myfloats (100.0,75.0); cout << myints.module() << '\n'; cout << myfloats.module() << '\n'; return 0; The specialization is part of a template, for that reason we must begin the declaration with template <>. And indeed because it is a specialization for a concrete type, the generic type cannot be used in it and the first angle-brackets <> must appear empty. After the class name we must include the type that is being specialized enclosed between angle-brackets <>. %%virtual Virtual: virtual int area (void) {return (0);} /* default body */ Pure virtual: virtual int area (void) = 0; /(* = 0 replaces body */ %%namespace Allows you to segregate global variables into named spaces to avoid conflict namespace general { int a, b; } In this case, a and b are normal variables integrated within the general namespace. In order to access these variables from outside the namespace we have to use the scope operator ::. For example, to access the previous variables we would have to put: general::a general::b The functionality of namespaces try { // code to be tried throw exception; } catch (type exception) { // code to be executed in case of exception } reinterpret_cast (expression) - binary pointer copy dynamic_cast (expression) - run time static_cast (expression) - to derived type and back const_cast (expression) - gets rid of const @@C# C++ - like language with java-like and VB-like features added. Advantages - Conditionals require a boolean so you will get an error if you confuse (a = 2) assignment instead of (a == 2) equivalence test - Always use . for data members. No confusion between -> and . - Can't cause confusion by re-using same name within inner blocks - Automatic garbage collection without explicit free - Forms programming interface for Winforms and ASP.NET webforms is stolen from Visual Basic - Foreach stolen from Visual Basic - Strings stolen from Basic and Visual Basic - Many CLR .NET classes stolen from Java %%block expression // Add the following directive to your file: // using System.Linq.Expressions; // The block expression allows for executing several expressions sequentually. // When the block expression is executed, // it returns the value of the last expression in the sequence. BlockExpression blockExpr = Expression.Block( Expression.Call( null, typeof(Console).GetMethod("Write", new Type[] { typeof(String) }), Expression.Constant("Hello ") ), Expression.Call( null, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }), Expression.Constant("World!") ), Expression.Constant(42) ); Console.WriteLine("The result of executing the expression tree:"); // The following statement first creates an expression tree, // then compiles it, and then executes it. var result = Expression.Lambda>(blockExpr).Compile()(); // Print out the expressions from the block expression. Console.WriteLine("The expressions from the block expression:"); foreach (var expr in blockExpr.Expressions) Console.WriteLine(expr.ToString()); // Print out the result of the tree execution. Console.WriteLine("The return value of the block expression:"); Console.WriteLine(result); // This code example produces the following output: // // The result of executing the expression tree: // Hello World! // The expressions from the block expression: // Write("Hello ") // WriteLine("World!") // 42 // The return value of the block expression: // 42 %%Dynamic Language Runtime Overview %%enum enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; %%expression tree Expression trees represent code in a tree-like data structure, where each node is an expression, for example, a method call or a binary operation such as x %lt y. You can compile and run code represented by expression trees. This enables dynamic modification of executable code, the execution of LINQ queries in various databases, and the creation of dynamic queries. In .NET Framework 4, the expression trees API also supports assignments and control flow expressions such as loops, conditional blocks, and try-catch blocks. By using the API, you can create expression trees that are more complex than those that can be created from lambda expressions by the C# and Visual Basic compilers. The following example demonstrates how to create an expression tree that calculates the factorial of a number. // Creating a parameter expression. ParameterExpression value = Expression.Parameter(typeof(int), "value"); // Creating an expression to hold a local variable. ParameterExpression result = Expression.Parameter(typeof(int), "result"); // Creating a label to jump to from a loop. LabelTarget label = Expression.Label(typeof(int)); // Creating a method body. BlockExpression block = Expression.Block( // Adding a local variable. new[] { result }, // Assigning a constant to a local variable: result = 1 Expression.Assign(result, Expression.Constant(1)), // Adding a loop. Expression.Loop( // Adding a conditional block into the loop. Expression.IfThenElse( // Condition: value > 1 Expression.GreaterThan(value, Expression.Constant(1)), // If true: result *= value -- Expression.MultiplyAssign(result, Expression.PostDecrementAssign(value)), // If false, exit the loop and go to the label. Expression.Break(label, result) ), // Label to jump to. label ) ); // Compile and execute an expression tree. int factorial = Expression.Lambda>(block, value).Compile()(5); Console.WriteLine(factorial); // Prints 120 %%lamda expression del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int oddNumbers = numbers.Count(n => n % 2 == 1); Console.WriteLine ("count is {0}", oddNumbers); %%linq linqpad is a free tool


Umbrella name for Microsoft OLE and evolution of VBX capabilities which enable communication at runtime between modules and programs. Also called active-x and OLE.

IUnknown queryinterface semaphore critical section mutex


OMG's common object broker similar to Microsoft COM defines interfaces between object oriented modules at runtime. More popular outside of Microsoft platforms. There is a specification for working with and between COM.

Invocations may be static or dynamic

%%Book Ackleda Coriolis Object Oriented Frameworks using C++ and Corba Orbacus %%GIOP General InterORB Protocol specifies interface up to but not including network trasnport, message format. Common Data Representation CDR corrects for byte order %%IDL Interface Definition Language. Bindings have been defined by OMG for C, C++, Java, Cobol, Smalltalk, and Ada. Nonstandard mappings for Eiffel, Objective C. Mappings for Visual Basic are usually based on OMG's COM/CORBA interworking specifications.

@@Design Patterns Very short Singleton (single class) Class Factory Adapter Proxy Decorator Composite (cObject) Observer MVC Template (like C++) Strategy - choose algorithm method at run time @@DirectX Programming introduction tutorial @@DO DO-178B is an internationally recognized standard required for certifying software users in airborne systems and equipment. Typical DO-178B applications include flight management, instrument landing, and radar weather systems. DO-178B has five certification levels that range from most critical for assuring aircraft safety (Level A) to least critical (Level E). For more information on DO-178B, visit the RTCA web site at @@DotNet %%abstract class vs interface link Good post by Mangesh Pote Associate Technology Level 2 @ Sapient from linked in Interface is a contract for the client i.e. user of a class. This class has implemented an interface. Abstract class is a class which has defined as well as non-defined members(functions/properties etc). The members which are non-defined should be preceded with 'abstract' keyword and so the class must be declared as abstract. Abstract class is a class that has no direct instances, but whose descendants may have direct instances. Variables can be declared in abstract class, it is not allwed in interface. Interface contains only abstract members. Access modifiers are not allowed for interface members. Bydefault interface members are public virtual. A class may inherit several interfaces but it can inherit only one abstract class. Abstarct class can have constructor, interface cannot have constructor. Abstract class is used as a root in inheritance hierarchy, whereas interface can be mixed up with hierarchy at any place. %%free training mr bool %%xml from

using System;
using System.IO;
using System.Xml;
public class Sample{   
public static void Main()  
	XmlTextWriter writer = new XmlTextWriter("titles.xml", null);    
        //Write the root element    
        writer.WriteStartElement("items");    //Write sub-elements    
        writer.WriteElementString("title", "Unreal Tournament 2003");    
        writer.WriteElementString("title", "CC: Renegade");    
        writer.WriteElementString("title", "Dr. Seuss's ABC");    // end the root element    
        writer.WriteEndElement();                 //Write the XML to file and close the writer    

compile and execute this listing, you will create
an XML file called titles.xml. This XML file will contain the following:

<title>Unreal Tournament 2003 </title>
<title>C&CC: Renegade</title>
<title>Dr. Seuss's ABC</title>

@@Extreme Programming

A variant of object oriented programming that advocates continuous
change, daily builds, two-head programming
Extreme Programming
XP -- The Basics
  ·The Project 
  ·Values and Principles 
  ·Managing XP 
The Cost of Change 

Netobjectives link


C# games, tic tac toe, chess, missle command

@@General REferences

Good tech news section


See Computer Graphics


Cheat Sheet


  1. Basic Tags
  2. Body Attributes
  3. Text Tags
  4. Links
  5. Formatting
  6. Tables
  7. Table Attributes
  8. Frames
  9. Frames Attributes
  10. Forms


Basic Tags

<html></html> Creates an HTML document

<head></head> Sets off the title and other information that isn’t displayed on the web page itself

<body></body> Sets off the visible portion of the document

Body Attributes

<body bgcolor="pink"> Sets the background color, using name or hex value

<body text="black"> Sets the text color, using name or hex value

<body link="blue"> Sets the color of links, using name or hex value

<body vlink="#ff0000"> Sets the color of followed links, using name or hex value

<body alink="#00ff00"> Sets the color of links on click

<body ondragstart="return false" onselectstart="return false"> Disallows text selection with the mouse and keyboard

Text Tags

<pre></pre> Creates preformatted text

<hl></hl> Creates the largest headline

<h6></h6> Creates the smallest headline

<b></b> Creates bold text

<i></i> Creates italic text

<tt></tt> Creates teletype, or typewriter-style text

<cite></cite> Creates a citation, usually italic

<em></em> Emphasizes a word (with italic or bold)

<strong></strong> Emphasizes a word (with italic or bold)

<font size="3"></font> Sets size of font, from 1 to 7

<font color="green"></font> Sets font color, using name or hex value


<a href="URL"></a> Creates a hyperlink

<a href="mailto:EMAIL"></a> Creates a mailto link

<a href="URL"><img src="URL"> </a> Creates an image/link

<a name="NAME"></a> Creates a target location within a document

<a href="#NAME"></a> Links to that target location from elsewhere in the document


<p></p> Creates a new paragraph

<p align="left"> Aligns a paragraph to the left (default), right, or center.

<br> Inserts a line break

<blockquote></blockquote> Indents text from both sides

<dl></dl> Creates a definition list

<dt> Precedes each definition term

<dd> Precedes each definition

<ol></ol> Creates a numbered list

<ul></ul> Creates a bulleted list

<li></li> Precedes each list item, and adds a number or symbol depending upon the type of list selected

<div align="left"> A generic tag used to format large blocks of HTML, also used for stylesheets

<img src="name"> Adds an image

<img src="name" align="left"> Aligns an image: left, right, center; bottom, top, middle

<img src="name" border="1"> Sets size of border around an image

<hr /> Inserts a horizontal rule

<hr size="3" /> Sets size (height) of rule

<hr width="80%" /> Sets width of rule, in percentage or absolute value

<hr noshade /> Creates a rule without a shadow


<table></table> Creates a table

<tr></tr> Sets off each row in a table

<td></td> Sets off each cell in a row

<th></th> Sets off the table header (a normal cell with bold, centered text)

Table Attributes

<table border="1"> Sets width of border around table cells

<table cellspacing="1"> Sets amount of space between table cells

<table cellpadding="1"> Sets amount of space between a cell’s border and its contents

<table width="500" or "80%"> Sets width of table, in pixels or as a percentage of document width

<tr align="left"> or <td align="left"> Sets alignment for cell(s) (left, center, or right)

<tr valign="top"> or <td valign="top"> Sets vertical alignment for cell(s) (top, middle, or bottom)

<td colspan="2"> Sets number of columns a cell should span (default=1)

<td rowspan="4"> Sets number of rows a cell should span (default=1)

<td nowrap> Prevents the lines within a cell from being broken to fit


<frameset></frameset> Replaces the <body> tag in a frames document; can also be nested in other framesets

<frameset rows="value,value"> Defines the rows within a frameset, using number in pixels, or percentage of width

<frameset cols="value,value"> Defines the columns within a frameset, using number in pixels, or percentage of width

<frame> Defines a single frame — or region — within a frameset

<noframes></noframes> Defines what will appear on browsers that don’t support frames

Frames Attributes

<frame src="URL"> Specifies which HTML document should be displayed

<frame name="name"> Names the frame, or region, so it may be targeted by other frames

<frame marginwidth="value"> Defines the left and right margins for the frame; must be equal to or greater than 1

<frame marginheight="value"> Defines the top and bottom margins for the frame; must be equal to or greater than 1

<frame scrolling="value"> Sets whether the frame has a scrollbar; value may equal “yes,” “no,” or “auto.” The default, as in ordinary documents, is auto.

<frame noresize="noresize"> Prevents the user from resizing a frame


For functional forms, you’ll have to run a script. The HTML just creates the appearance of a form.

<form></form> Creates all forms

<select multiple name="NAME" size=?></select> Creates a scrolling menu. Size sets the number of menu items visible before you need to scroll.

<option> Sets off each menu item

<select name="NAME"></select> Creates a pulldown menu

<option> Sets off each menu item

<textarea name="NAME" cols=40 rows=8></textarea name> Creates a text box area. Columns set the width; rows set the height.

<input type="checkbox" name="NAME"> Creates a checkbox. Text follows tag.

<input type="radio" name="NAME" value="x"> Creates a radio button. Text follows tag

<input type="text" name="NAME" size=20> Creates a one-line text area. Size sets length, in characters.

<input type="submit" value="NAME"> Creates a Submit button

<button type="submit">Submit</button> Creates an actual button that is clicked

<input type="image" border=0 name="NAME" src="name.gif"> Creates a Submit button using an image

<input type="reset"> Creates a Reset button

Automatic SQL Generation for Database-Connected Controls
  @@JAVA %%Graphics [[Blue Marble Graphics [[JCHART Server: Client: JClass 5.0 and JClass Chart 3D New to JClass 5.0 is JClass Chart 3D, the premier three-dimensional Java charting component. Craft stunning, colourful data displays along three axes. Use map and pick routines to build in user interactivity. JClass Chart 3D automatically performs all the rotation, scaling, annotation, and perspective calculations. JClass ServerChart Designed from the ground up for server-side deployment, JClass ServerChart makes the powerful data presentations you've come to expect from JClass Chart accessible to your entire network. JClass ServerChart is ideal in environments where you're unsure of client-side configuration or processing power - all code execution occurs on the server. [[Hello public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } [[LOOX French demo - maps, cockpit instruments air traffic control applet Good for Java applets, no provision for server side charts JLOOXGis - Mapping for Java [[GENLOGIC The Glg Toolkit can be used for developing Stand-Alone Applications (using C/C++, Java or ActiveX), or for Web Application Development (using Java, Plug-In or ActiveX). The Glg Graphics Builder is used as a drawing tool to create dynamic drawings for all Glg deployment options. The following are the 3 editions of the Glg Toolkit, which differ in the functionality of the Graphics Builder: Demo includes JAVA GIS server This demo uses Global Geomatics's GIS Server and OGDI Java adapters Global Geomatics [[GLOBAL GEOMATICS web based GIS data server [[NORTH WOODS North Woods software Client and Server based graphics that can be edited. [[CORDA POPCHART Interactive Data Driven Graphics London Based CORDA’s family of PopChart tools are Java based and run with/on all web application servers. CORDA has products for both the server and the desktop. Brocure: supports Flash, GIF, PNG, WBMP SVG Scalable Vector Graphics PopChart Image Server Pro http server for high traffic PopChart Live - 42k Java applet [[INFRAGISTICS POWERCHART CD-Key: $695 10-Developer: 5,895 For thin clients, PowerChart can remain on the server and dynamically render jpeg format charts to HTML pages [[ESRI GIS and Mapping Software Makes ArcGIS, Arcview and ArcInfo @@Javascript Tutorial %%print from: So, You Want to Print with JavaScript, Huh? by Joe Burns, Ph.D. \clip\2004\12\PrintJavaScript.htm IE5.0 feature: Click to Print This Page print off of an image: trigger off a button:
print on loading page onLoad="window.print()" java script window.print() alert(message) ans = prompt ("enter a number") rollover
ARROW function newWindow() catwindow = ("images/pixel2.jpg", "catWin", "width=330, height = 250") Pixel @@Language History chart shows of languages sprung from others

@@UML: Unified Modeling Language

OMG has made a standard of UML to interchange models for software development. It is used with CORBA

There are models for

  • use-case diagram
  • behavior diagrams / state charts
  • activity diagrams (replaces data-flow)
  • interaction diagrams
  • implementation diagrams - component and actitity.
@@Memory Mapped Files manamemo.htm @@MFC study points pointer to document cview user interface might need to be updated associate view with document manage dialog box pop up modal dif form view and dialog box updatedata ddx ddv assert verify macros @@Mil MIL-STD-498 Military standard for software development, testing and documentation @@MSDN
MSDN Home Page @@OLAP On Line Analytical Processing OLAP INTRODUCTION @@OMG Object Management Group The people who promote CORBA and UML.

OMG Home Page
@@ORACLE DATABASE Buzzwords BLOB - big binary object Cartridge - extra cost add-in like video, images Exception - PL/SQL error handling Function - stored procedure that returns value JDBC - odbc class for java Package - bunch of stored procedures, lame class Parameter - PL/SQL in, out, in out PL/SQL - lame structured language for stored procs Object - make table work sorta like an object SQLJ - #SQL imbedded into java, less code, ez to check Trigger - code when table modified %%Books [[Oracle 8 Bible Carol McCullough-Dieter $49.99 OK survey, has commands in appendix - very large databases - cartridge for geometrical data - support for objects, PL/SQL supports this.that - objects have methods, constructor - precompiler for imbedding SQL into C, COBOL, etc over ODBC [[Oracle 8i & Java from Client/Server to E-Commerce Bonazzi Stokol 49.99 objects are not hidden, no polymorphism or inheritance, can't derive one object from another or pass abstract class Don't use objects if they will change, you will lose all object IDs use relational tables or if you plan to use sql server Inheritance heirarchy-one table with all attributes, one for each concrete class, one for each common part @@Ray Tracing C# ASP Ray Tracing example ray tracing with texture mapping sphere mapping 3D surface plot for ASP @@RPC Unix remote procecure call # What Is RPC # How RPC Works # RPC Application Development Using Remote Procedure calls rpcgen @@RPG IBM language for forms based input / output Sys/3 as400 C to F conversion in RPG A DSPSIZ(24 80 *DS3) A R FHEITR A CA03(03 'End') A 6 18'Enter Fahrenheit:' A FRHEIT 3Y 0B 6 42DSPATR(PC) A EDTCDE(J) A 9 18'Celsius is:' A CGRADE 3Y 0O 9 42DSPATR(PC) A EDTCDE(J) A 23 8'F3=End' FFheitd C F E Workstn C *IN03 DoWEq *Off C ExFmt Fheitr C Eval CGrade = 0 C Eval CGrade = ((Frheit-32)*5)/9 C* ExFmt Fheitr C EndDo C Seton LR @@PHP Server side scripting language often used with MySql. Like ASP or JSP Introduction: variables start with $ surround php commands concatenation . $secondvar = $firstvar . " World"; array associative array $cities = array( 'france' => 'paris', 'germany' => 'berlin', 'uk' => 'london' ); ?> echo $cities['france'] . " " . $cities['germany'] . " " . $cities['uk']; Big Webmaster PHP fundamentals include: include ("config.php"); 6 wk $100 online PHP course PHP Manual @@PMP PMP is certification for Project Management @@powershell Tutorials Here is the link to lesson 1: @@Python REFERENCE MANUAL TUTORIAL Guido van Rossum Fred L. Drake, Jr., editor PythonLabs Email: DOWNLOAD SOFTWARE PYTHON 2.0 QUICK REFERENCE MANUAL @@Salary 2003 Survey: Degree type Average salary High-school diploma $83,182 2-year degree $71,633 BA $70,360 BS $68,875 BSCS $84,136 BSEE* $78,500 MA* $56,250 MBA $98,200 MSCS $77,745 MSEE* $120,000 Other MS $77,143 Ph.D.* $109,000 * Small Sample Language used Average salary C# $98,813 Visual Basic .NET $72,959 Visual Basic 4.0, 5.0, or 6.0 $72,461 Visual C++ 6.0 $75,500 Microsoft Certified Database Administrator (MCDBA) $80,200 Microsoft Certified Professional (MCP) $76,722 Microsoft Certified Solution Developer (MCSD) $86,414 Microsoft Certified Systems Engineer (MCSE) $77,438 Microsoft Certified Trainer (MCT)* $80,000 Experience Less than 1 year* $35,133 1-2 years* $43,000 2-4 years $51,265 4-6 years $72,356 6-8 years $71,286 8-10 years $83,515 10-12 years $84,608 12+ years $90,932 Manager: Engineer/scientist* $67,000 Independent consultant/contractor $83,400 IT manager $82,750 Other manager/supervisor $112,040 Programmer/developer for company (internal software development) $68,354 Programmer/developer for software company (ISV or tools vendor) $67,824 Senior business management (CEO, COO, CFO, VP)* $101,000 Senior technical management (CIO/CTO/VP)* $160,000 Software architect $86,942 Systems analyst $79,167 *Small sample size 24- $45,200 ***** 25-29 $64,692 ****** 30-34 $71,221 ******* 35-39 $74,930 ******* 40-44 $84,139 ******** 45-49 $90,125 ********* --MAX 50-54 $76,714 ******** 55-59 $85,286 ********* Pac Northwest $73,700 California $79,778 Texas $83,000 New York $84,357 Northeast $82,067 South $72,109 2003 Salary Survey: How Do Your Earnings Stack Up? Our salary survey reveals that although developers are earning more, job stability remains uncertain. by Susannah Pfalzer Visual Studio June 2003 Issue Average salary only of sample of magazine readers. @@Scrum The Scrum Alliance lists four core principles based on 2001’s Agile Manifesto: • Individuals and interactions over processes and tools • Completed functionality over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan The ceremonies are: • Sprint planning: The team meets with the product owner to prioritize the work to be delivered during a sprint • Daily scrum: The team meets each day to share struggles and progress • Sprint reviews: The team demonstrates to the product owner what it has completed during the sprint • Sprint retrospectives: The team looks for ways to improve the product and process The artifacts are the product backlog, the sprint backlog and the burndown chart. The product backlog is a list of items that can be added or deleted from the project at any time. The backlog is prioritized, with highest-priority items worked on first. The lowerpriority items are loosely defined but are revisited and refined as they work their way up the priority list. Section I: Are you doing iterative development? • Iterations must be time-boxed to less than four weeks • Software features must be tested and working at the end of each iteration • The iteration must start before the specification is complete Section II: Are you doing Scrum? • You know who the product owner is • There is a product backlog prioritized by business value • The product backlog has estimates created by the team • The team generates burn-down charts and knows its velocity • The are no project managers (or anyone else) disrupting the work of the team —David Rubinstein @@Silverlight Line Chart in Silverlight by Dinesh Beniwal. Mar 04, 2009. This article shows how to create a line chart in Silverlight 2.0 using Silverlight Tooklit. @@SQL %%Interview Questions Here are a series of interview questions %%Delete / Truncate / Drop Delete = deletes WHERE records Truncate = delete all records, but keep empty table Drop = destroy table, breaking any references to table %%Inner Join from rviewQuestions.html 4. Q. What kinds of joins do you know? Give examples. A. We have self join, outer joint (LEFT, RIGHT), , cross-join ( Cartesian product n*m rows returned) Exp: outer joint SELECT Employee.Name, Department. DeptName FROM Employee, Department WHERE Employee.Employee_ID = Department.Employee_ID; cross-join SELECT * FROM table1, table2; self join SELECT | |’ ‘ | | e2.ename FROM emp e1, emp e2 WHERE e1. emp_no = e2.emp_no; The following summarizes the result of the join operations: The result of T1 INNER JOIN T2 consists of their paired rows where the join-condition is true. The result of T1 LEFT OUTER JOIN T2 consists of their paired rows where the join-condition is true and, for each unpaired row of T1, the concatenation of that row with the null row of T2. All columns derived from T2 allow null values. The result of T1 RIGHT OUTER JOIN T2 consists of their paired rows where the join-condition is true and, for each unpaired row of T2, the concatenation of that row with the null row of T1. All columns derived from T1 allow null values. The result of T1 FULL OUTER JOIN T2 consists of their paired rows and, for each unpaired row of T2, the concatenation of that row with the null row of T1 and, for each unpaired row of T1, the concatenation of that row with the null row of T2. All columns derived from T1 and T2 allow null values. %%Join JOIN TWO TABLES SELECT lastname, firstname, tag, vehicles.class FROM drivers, vehicles WHERE drivers.location = vehicles.location AND drivers.class = vehicles.class Notice that in this example we needed to specify the source table for the class attribute in the SELECT clause. This is due to the fact that class is unambiguous – it appears in both tables and we need to specify which table’s column should be included in the query results. In this case it does not make a difference as the columns are identical and they are joined using an equijoin. However, if the columns contained different data this distinction would be critical. Here are the results of this query: lastname FirstName Tag Class -------- --------- --- ----- Baker Roland H122JM Car Smythe Michael D824HA Truck Jacobs Abraham J291QR Car JOIN MORE THAN TWO TABLES could bring a third table into your query by extending the JOIN statement as follows: SELECT lastname, firstname, tag, open_weekends FROM drivers, vehicles, locations WHERE drivers.location = vehicles.location AND vehicles.location = locations.location AND locations.open_weekends = 'Yes' lastname firstname tag open_weekends -------- --------- --- ------------- Baker Roland H122JM yes Jacobs Abraham J291QR yes Jacobs Abraham L990MT yes This powerful extension to the basic SQL JOIN statement allows you to combine data in a complex manner. @@SQLJ Imbed sql into java with preprocessor to reduce lines of code, error checking #sql {select name into :customername from customer where id = :customerid}; @@SQL Server %%API ODBC - generic interface dblib - native interface DBLIB - com interface ADO - precursor to ADO.NET - .net api %%import source: BCP This is one of the options that is mostly widely used. One reason for this is that it has been around for awhile, so DBAs have come quite familiar with this command. This command allows you to both import and export data, but is primarily used for text data formats. In addition, this command is generally run from a Windows command prompt, but could also be called from a stored procedure by using xp_cmdshell or called from a DTS or SSIS package. Here is a simple command for importing data from file C:\ImportData.txt into table dbo.ImportTest. bcp dbo.ImportTest in 'C:\ImportData.txt' -T -SserverName\instanceName For more information about bcp click here. BULK INSERT This command is a T-SQL command that allows you to import data directly from within SQL Server by using T-SQL. This command imports data from file C:\ImportData.txt into table dbo.ImportTest. BULK INSERT dbo.ImportTest FROM 'C:\ImportData.txt' WITH ( FIELDTERMINATOR =',', FIRSTROW = 2 ) For more information about BULK INSERT click here. OPENROWSET This command is a T-SQL command that allows you to query data from other data sources directly from within SQL Server. By using this command along with an INSERT INTO command we can load data from the specified data source into a SQL Server table. This command will pull in all data from worksheet [Sheet1$]. By using the INSERT INTO command you can insert the query results into table dbo.ImportTest. INSERT INTO dbo.ImportTest SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\ImportData.xls', [Sheet1$]) Here is another example where data is pulled from worksheet [Sheet1$] by using a SELECT * FROM command. Again, by using the INSERT INTO command you can insert the query results into table dbo.ImportTest. The query can be any valid SQL query, so you can filter the columns and rows by using this option. INSERT INTO dbo.ImportTest SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\ImportData.xls', 'SELECT * FROM [Sheet1$]') For more information about OPENROWSET click here. OPENDATASOURCE This command is a T-SQL command that allows you to query data from other data sources directly from within SQL Server. This is similar to the OPENROWSET command. INSERT INTO dbo.ImportTest SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\ImportData.xls;Extended Properties=Excel 8.0')...[Sheet1$] For more information about OPENDATASOURCE click here. OPENQUERY Another option is OPENQUERY. This is another command that allows you to issue a T-SQL command to select data and again with the INSERT INTO option we can load data into our table. There are two steps with this process, first a linked server is setup and then second the query is issued using the OPENQUERY command. This option allow you to filter the columns and rows by the query that is issued against your linked data source. EXEC sp_addlinkedserver 'ImportData', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'C:\ImportData.xls', NULL, 'Excel 8.0' GO INSERT INTO dbo.ImportTest SELECT * FROM OPENQUERY(ImportData, 'SELECT * FROM [Sheet1$]') For more information about OPENQUERY click here. Linked Servers Here is yet another option with setting up a linked server and then issuing a straight SQL statement against the linked server. This again has two steps, first the linked server is setup and secondly a SQL command is issued against the linked data source. EXEC sp_addlinkedserver 'ImportData', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'C:\ImportData.xls', NULL, 'Excel 8.0' GO INSERT INTO dbo.ImportTest SELECT * FROM ImportData...Sheet1$ For %%remote data base LINKED DATA BASE q: I'm trying to copy data from one table on a remote database to my local database. I'm using sql 2005 management studio express. I'm looking for an example that uses t-sql to select the data from the remote table into the local table. a: IF you have the remote server set up as a 'LINKED SERVER' (see Books Online: Linked Servers), you can use a query similar to this one: INSERT INTO MyLocalTable ( Column1, Column2, {etc} ) SELECT Column1, Column2, {etc} FROM MyLinkedServer.RemoteDatabase.dbo.RemoteTable WHERE {any filter criteria goes here} source: LINKED SERVER You can add linked server and use it to copy the table data across server. Creating linked server is done using sp_addlinkedserver: EXEC sp_addlinkedserver 'RemoteServer', N'SQL Server' Based on security settings you may need to map remote server logins. This is done using sp_addlinkedsrvlogin: EXEC sp_addlinkedsrvlogin 'RemoteServer', 'false', 'LocalUser', 'RemoteUser', 'RemotePassword' Then you just run a normal query referencing the linked server table with 4 part name: INSERT INTO TargetTable SELECT FROM RemoteServer.RemoteDB.dbo.RemoteTable If you can set up a linked server the other way around (from your remote server to the local server), then executing the query on the remote server will have no problems setting IDENTITY_INSERT ON. The option cannot be set permanently and it has to be set in the same session as the INSERT statement. Alternative is to use BCP or Bulk Insert to insert the data which have option to keep identity. Plamen Ratchev source: SQLBulkCopy In, there is a pretty good method for doing this. The api name is SqlBulkCopy. @@SVG Scalable Vector Graphics Vector graphics extension to XML for web vector based graphics W3C spec z54\clipim\2001\12\svg.pdf from Listing A @@Unit Testing %%Win32 C++ Simplified Unit Testing for Native C++ Applications Maria Blees WinUnit What I really wanted, and what I thought would be the easiest to integrate into an automated build system, was the equivalent of NUnit for native code. That is, I wanted to be able to make a DLL with only tests in it, and have an external test-runner that would run those tests and take care of the reporting and logging. I also wanted to be able to declare each test only once, and to have a minimum of extra code in my test DLL. @@Visual Studio %%Template Introduction to Templates in Visual Studio 2008 By Sateesh Kumar March 04, 2009 Visual Studio provides two kinds of templates: •Project Template: This template will allows us to create a new project based on the exported project. This template will be accessible from New Project dialog window. •Item Template: This template will allows us to add our exported item as a part of their project. @@VXD VxD Questions and Answers What is VxD? A VxD, or Virtual Device Driver, is a 32-bit multiplexing device driver that manages data exchanges between Windows applications and system services. It runs in ring 0 so it can execute any instruction, and it is more powerful than a DLL. You can use it to call a windows 3.0 or Win95 process from DOS @@Windows Mobile %%Programming How to add windows mobile 6 SDK to visual studio projects: Get the sdk here: @@WCF Windows Communication Foundation %%Tutorial WCF Basics By Diptimaya Patra March 03, 2009 This simple tutorial shows how to get started with WCF. @@Windows Phone 7 Peeling the Mango - Win Phone 7 Programming from the Ground Up (Part 1) By Pete O'Hanlon | 14 Jul 2011 Invasion Game in XNA for Windows Phone 7 By Dan Colasanti | 11 Jul 2011 @@Win32 %%mutex MUTEX WORK ACROSS PROCESS, TIMEOUT, NOTIFY ON ABANDON CRITICAL SECTION IS FASTER - mutexes can synchronize threads across process boundaries, you can wait on a mutex by specifying a timeout value, and mutexes notify a thread when they are abandoned. - critical sections are faster. Mutex objects are kernel objects and as such the functions that manipulate them (WaitForSingleObject and ReleaseMutex) require the transition from user mode to kernel mode. %%Semaphore Win32 supports two types of semaphores: mutual exclusion (mutex) and counting. A semaphore is a resource that contains an integer value. Semaphores allow synchronization of processes by testing and setting the integer value in a single atomic operation. A semaphore is similar to a mutext, except that it involves a state of signaled or not signaled. A counted semaphore is a semaphore with a signal count. Typically this involves a semaphore and a count. So if you have a limited resource of say five items, you allow threads to get exclusive control of the item for upto 5 threads. The 6th thread will block waiting to get access. When one of the other users of the resource releases it, then the waiting thread will get it. a binary semaphore is better known as a mutex @@Winforms WinForms Data Validation Controls have validate event the CausesValidation property set to true to another control that has the CausesValidation property set to true, e.g. from a TextBox control to the OK button. The Validating event gives the handler the chance to cancel the move of focus by setting the CancelEventArgs.Cancel property to true. @@XML SOAP Implementations as Frameworks SOAP, by itself, is about as useful as a paper envelope. That is, anything can be put inside, with no rules guiding the process. There have been several initiatives to formalize certain parts of the SOAP specification to provide interoperability and reliable messaging. BizTalk Framework Web Services Description Language (WSDL) Universal Description, Discovery, and Integration (UDDI) Web Services Interoperability (WS-I)


XNA Game Studio and the XNA Framework to develop multiplatform games for Windows, Xbox 360, and Windows Phone.