Custom Search

Friday, December 17, 2010

CAD

Definition:

The letters CAD stand for computer-aided design. Architects, drafters, engineers, and artists use CAD software to create plans and construction drawings.

Before the age of computers, drawings and blueprints were drafted by hand. CAD is more efficient because the software records lines as vectors based on mathematical equations. Portions of a drawing can be twisted, stretched, or moved. The picture as a whole will automatically adjust.

CAD Software will let the designer:

     Switch between two-dimensional (2D) and three-dimensional (3D) views.
     Zoom in and out for close-up and distant views.
     Rotate images to view them from different perspectives.
     Change the scale of images: When one value changes, related values are automatically adjusted.
     Manipulate the shape of images: Changing one portion of an image automatically changes the entire picture.

Also Known As:

CAD is also known as CADD, which stands for Computer-Aided Design & Drafting
Examples:

Popular CAD programs used by architects and engineers include:

     Autocad
     TurboCAD
     Vectorworks

SAP

What is SAP?

SAP, started in 1972 by five former IBM employees in Mannheim, Germany, states that it is the world's largest

inter-enterprise software company and the world's fourth-largest independent software supplier, overall

The original name for SAP was German: Systeme, Anwendungen, Produkte, German for "Systems Applications and

Products." The original SAP idea was to provide customers with the ability to interact with a common corporate

database for a comprehensive range of applications. Gradually, the applications have been assembled and today many

corporations, including IBM and Microsoft, are using SAP products to run their own businesses.

SAP applications, built around their latest R/3 system, provide the capability to manage financial, asset, and cost

accounting, production operations and materials, personnel, plants, and archived documents. The R/3 system runs on

a number of platforms including Windows 2000 and uses the client/server model. The latest version of R/3 includes a

comprehensive Internet-enabled package.

SAP has recently recast its product offerings under a comprehensive Web interface, called mySAP.com, and added new

e-business applications, including customer relationship management (CRM) and supply chain management (SCM).

As of January 2007, SAP, a publicly traded company, had over 38,4000 employees in over 50 countries, and more than

36,200 customers around the world. SAP is turning its attention to small- and-medium sized businesses (SMB). A

recent R/3 version was provided for IBM's AS/400 platform.

programming

What Does A Programming Language Do

A programming language is used to write computer programs such as

 Applications
 Utilities
 Servers
 Systems Programs

A program is written as a series of human understandable computer instructions that can be read by a compiler and

linker, and translated into machine code so that a computer can understand and run it.

Examples Of Programming Languages:

These languages include Assembler, C or C++. A computer motherboard with the CPU, RAM and ROM), the instructions to

boot the computer are limited to a small amount of memory in the boot ROM chip and so are usually written in

assembler. Operating systems like Linux or Windows are written in C and C++.

What Programming Languages Are Now In Use?:

It is mainly Java and C++ with C# starting to gain popularity and C holding its own. There have been many attempts

to automate this process, and have computers write computer programs but the complexity is such that for now,

humans still write the best computer programs.

More advanced techniques, for instance using

     Objects
     Generics
     Multi-threading

mean that the modern programming languages are far more powerful.

     Programming Languages - What Are They?

How Are These Newer Programming Languages Better?:

Lower level languages like

     Assembly Language
     C,
     C++

Force the programmer to think more about the problem in computer terms, instead of the business logic. Less about

payrolls and more about how the data is stored.

C# though does not use pointers, so that removes the chances of a pointer being corrupted or not freed. The .NET

runtime handles things like garbage collection, so the developer doesn't have to reinvent this wheel.

WLAN

Definition: WLANs provide wireless network communication over short distances using radio or infrared signals instead of traditional network cabling.

A WLAN typically extends an existing wired local area network. WLANs are built by attaching a device called the access point (AP) to the edge of the wired network. Clients communicate with the AP using a wireless network adapter similar in function to a traditional Ethernet adapter.

Network security remains an important issue for WLANs. Random wireless clients must usually be prohibited from joining the WLAN. Technologies like WEP raise the level of security on wireless networks to rival that of traditional wired networks.
Also Known As: wireless LAN
Examples:
For WLANs that connect to the Internet, Wireless Application Protocol (WAP) technology allows Web content to be more easily downloaded to a WLAN and rendered on wireless clients like cell phones and PDAs.

Friday, December 10, 2010

Linux

Linux is a complete operating system that is similar but not identical to UNIX. It runs on a wide variety of hardware, ranging from 386's/486's/Pentiums/Pentium II's to more exotic hardware such as Digital Alpha computers, PowerPCs, and Silicon Graphics workstations. Probably the most unique characterisitc of Linux is that it is freely distributable. Freely distributable means that the source code for the kernel and most software cannot be withheld. It does not mean that companies cannot charge for it.
Originally the term Linux referred strictly to the kernel (the core of the operating system), but the phrase itself refers nowadays to a collection of configured software that runs on top of the Linux kernel. These 'collections of software' are known as distributions. Although these distributions often have their own unique (together with some proprietary software) flavour they are essentially the same. Just a few years ago there were only two popular distributions, Slackware and SLS. However, nowadays there is a wide choice from such companies as Red Hat, Caldera, S.U.S.E, Stampede. These companies do not just compile and configure the software. Caldera, Red Hat and others have added their own proprietary software to their distribution, which help to make such tasks as installation no harder than say Windows 95.

The easiest way to obtain a Linux distribution is to purchase a CD-ROM containing the software. Unless you have a very fast connection to the Internet a CD-ROM represents the most convenient method. Two American companies stand out in offering these distributions at incredibly cheap prices (just a couple of dollars); Cheapbytes and LSL. If you live in the UK and Europe the Linux Emporium offers the popular distributions for 2 pounds, which includes postage. I have purchased from all three companies in the past, and they offer a reliable service. One thing they can't offer is technical support. If you think you will need some help in installing Linux I would recommend you purchase from one of the distribution companies; for example Red Hat offer 30 days free technical support in installing their distribution.

If I had to recommend one distribution to a newcomer it would be Red Hat 5.0. Why, you ask? This is an up-to-date distribution which has some excellent utilities for configuring Linux, it has arguably the best package manager (for easy installation and de-installation of software), and has wide support among the Linux community.

Most UNIX software runs on Linux and there are many commercial applications that have been ported over to Linux, such as the excellent graphics package Corel DRAW, wordprocessors such as WordPerfect, and spreadsheets such as NeXS. Additionally the commercial WABI program allows you to run many 16-bit Windows applications under Linux, if you so wish.

C

A tool called a compiler is then used to convert the high-level code into machine language. A program can be written in C and compiled for any computer, it's up to the compiler to get the hardware-specific instructions right.

To see just how readable C is compared to Assembly language, take a look at the following tiny program written in each:

Example 1-1. C vs. Assembly language

          .section  .rodata
.LC0:
          .string   "Tax Due: %d\n"
          .text
          .align 2
.globl main
          .type     main,@function
main:
          pushl     %ebp
          movl      %esp, %ebp
          subl      $24, %esp
          andl      $-16, %esp
          movl      $0, %eax
          subl      %eax, %esp
          movl      $1000, %eax
          movl      $400, %edx
          movl      $0x3e6147ae, -12(%ebp)
          subl      %edx, %eax
          pushl     %eax
          fildl     (%esp)
          leal      4(%esp), %esp
          fmuls     -12(%ebp)
          fnstcw    -18(%ebp)
          movw      -18(%ebp), %ax
          movb      $12, %ah
          movw      %ax, -20(%ebp)
          fldcw     -20(%ebp)
          fistpl    -16(%ebp)
          fldcw     -18(%ebp)
          subl      $8, %esp
          pushl     -16(%ebp)
          pushl     $.LC0
          call      printf
          addl      $16, %esp
          movl      $1, %eax
          leave
          ret
.Lfe1:
          .size     main,.Lfe1-main
    
And the program in C:
#include <stdio.h>

int
main()
{
  int wages = 1000;
  int tax_allowance = 400;
  float tax_rate = 0.22;
  int tax_due;

  tax_due = (wages - tax_allowance) * tax_rate;

  printf("Tax Due: %d euro\n", tax_due);

  return 0;
}
 

C++

C++ is an "object oriented" programming language created by Bjarne Stroustrup and released in 1985. It implements "data abstraction" using a concept called "classes", along with other features to allow object-oriented programming. Parts of the C++ program are easily reusable and extensible; existing code is easily modifiable without actually having to change the code. C++ adds a concept called "operator overloading" not seen in the earlier OOP languages and it makes the creation of libraries much cleaner.

C++ maintains aspects of the C programming language, yet has features which simplify memory management. Additionally, some of the features of C++ allow low-level access to memory but also contain high level features.

C++ could be considered a superset of C. C programs will run in C++ compilers. C uses structured programming concepts and techniques while C++ uses object oriented programming and classes which focus on data. Read about the History of C and also about the History of C++.

oracle

I guess the first question is really, "What is a database"? A database is an organized collection of data. The data can be textual, like order or inventory data, or it can be pictures, programs or anything else that can be stored on a computer in binary form.

A relational database stores the data in the form of tables and columns. A table is the category of data, like Employee, and the columns are information about the category, like name or address.

Some databases have minimal feature sets and only store data, while others include programming languages, facilities and utilities to support enterprise-level applications like ERP and data warehousing. Oracle is the #1 database and has the most advanced feature set.

Oracle is made up of a set of processes running in your operating system. These processes manage how data is stored and how it is accessed. I will cover these processes in detail in the future; but for now we just need to understand that Oracle is a program that is running in the background, maintaining your data for you and figuring out where it should go on your hard drive.

In almost all relational databases, data is accessed through SQL, or Structured Query Language, and Oracle is no exception. SQL allows you to SELECT your data, INSERT new records, UPDATE existing records and DELETE records you want to get rid of. SQL can be embedded in other languages or you can run scripts of SQL directly against the database.

PL/SQL is the procedural language extension to SQL. PL/SQL is a programming language like C, Java or Pascal. In the Oracle world, there is no better way to access your data from inside a program. SQL can be natively embedded in PL/SQL programs. I will be using both SQL and PL/SQL very heavily in my future articles.

PL/SQL is a feature-rich language geared toward developing database applications. PL/SQL is the procedural language of the database, but it is also the procedural language for most of Oracle's tools. Programs that run inside the database are called stored procedures. These stored procedures are almost always PL/SQL, but can be written in Java.

Some of Oracle's tools to access the database and create programs are:

SQL*Plus has a command line interface. With it, you can access the database and write stored procedures, you can run SQL commands to retrieve data and you can run scripts of either SQL, PL/SQL or built-in SQL*Plus commands, or a mixture of those three things.

Oracle Developer is a 4GL GUI application Builder. With Developer, you can create forms, reports, and graphics. Oracle*Forms and Oracle*Reports are two components of Oracle Developer. Earlier versions created client-server applications, but the more recent versions create web applications that run under the Oracle Application Server (OAS). OAS is a web-based application server sold by Oracle. OAS is licensed separately and is very expensive (as are its closed source competitors). The current version is OAS 10g.

HTML DB is a fairly new application builder geared toward web development (added to the DB with release 9iR2). HTML DB does not need an application server. This tool runs from the database and can be presented to the web using the Apache web server that comes with the database. Since this is not an additional license, it provides a cheaper way to develop applications. Developer is a feature-rich thick client with all of the normal GUI widgets. HTML DB is HTML-based and is very thin and limited to the HTML provided widgets.

Oracle Enterprise Manager (OEM) is the Enterprise GUI tool to manage the database. From this tool, you can perform any action in the database that is required. This tool is primarily used for administration but can also be provided to developers for application tuning and monitoring. In Oracle 10g, OEM also provides Grid control.

There are also a lot of third party tools for accessing the database. For our purposes, our primary tool for data access will be SQL*Plus. In the future, I will cover creating applications with HTML DB and accessing your data with some choice third-party tools.

How about Java? Java is the current hot language, especially on the web. I will also be covering Java in the database in future articles. Java is natively supported by Oracle. Technically, you could use Java to create your stored procedures if you chose, but I am not a proponent of that. When you are working inside the database, I believe that you should only resort to Java when you cannot accomplish a task in PL/SQL. As you'll see, there is very little you cannot accomplish with PL/SQL.

It will be hard to learn Oracle if you can't play with it. So where can you get access to this software? Oracle has a technical web site called OTN (Oracle Tech Net) that provides access to all of Oracle's software and all of the documentation for that software. There are also forums and many other tools to use to help you learn Oracle. You have to register to access it, but registration is free. Go to http://otn.oracle.com/ and get an ID today. In future articles, I will be spending a lot of time accessing this web site to download software and documentation. My next article will cover downloading Oracle 10g and installing it.

As a side note, Oracle provides all of their software with a developer's license. This license allows you to try out the software free of charge. You may not create production applications without a paid license, but development with the tools is acceptable. I am not a lawyer, so I recommend that you review the license when you download any software from OTN.

Also, a note about versioning in Oracle; all products released by Oracle have a version. The current version of the database is 10g Release 1, also written as 10gR1. In addition to this semantic release name, each release has a numeric version. The numeric release for 10gR1 is 10.0.1.3.

Saturday, December 4, 2010

ANDROID

What is Android?
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

Features
Application framework enabling reuse and replacement of components
Dalvik virtual machine optimized for mobile devices
Integrated browser based on the open source webkit engine
Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
SQLite for structured data storage
Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
GSM Telephony (hardware dependent)
Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
Camera, GPS, compass, and accelerometer (hardware dependent)
Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE

Android Architecture
The following diagram shows the major components of the Android operating system. Each section is described in more detail below.





Applications
Android will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others. All applications are written using the Java programming language.


Application Framework
By providing an open development platform, Android offers developers the ability to build extremely rich and innovative applications. Developers are free to take advantage of the device hardware, access location information, run background services, set alarms, add notifications to the status bar, and much, much more.

Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities (subject to security constraints enforced by the framework). This same mechanism allows components to be replaced by the user.

Underlying all applications is a set of services and systems, including
A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser
Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
A Notification Manager that enables all applications to display custom alerts in the status bar
An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack


Libraries
Android includes a set of C/C++ libraries used by various components of the Android system. These capabilities are exposed to developers through the Android application framework. Some of the core libraries are listed below:

System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
SGL - the underlying 2D graphics engine
3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
FreeType - bitmap and vector font rendering
SQLite - a powerful and lightweight relational database engine available to all applications


Android Runtime
Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.

Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.

Linux Kernel
Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.