Pages

ads ads ads ads ads ads ads ads

Jumat, 29 Oktober 2010

Arrays for c++

Arrays
Published by Juan Soulie
Last update on Sep 29, 2009 at 10:53am UTC
An array is a series of elements of the same type placed in contiguous memory locations that can be individually referenced by adding an index to a unique identifier.

That means that, for example, we can store 5 values of type int in an array without having to declare 5 different variables, each one with a different identifier. Instead of that, using an array we can store 5 different values of the same type, int for example, with a unique identifier.

For example, an array to contain 5 integer values of type int called billy could be represented like this:



where each blank panel represents an element of the array, that in this case are integer values of type int. These elements are numbered from 0 to 4 since in arrays the first index is always 0, independently of its length.

Like a regular variable, an array must be declared before it is used. A typical declaration for an array in C++ is:


type name [elements];


where type is a valid type (like int, float...), name is a valid identifier and the elements field (which is always enclosed in square brackets []), specifies how many of these elements the array has to contain.

Therefore, in order to declare an array called billy as the one shown in the above diagram it is as simple as:



int billy [5];



NOTE: The elements field within brackets [] which represents the number of elements the array is going to hold, must be a constant value, since arrays are blocks of non-dynamic memory whose size must be determined before execution. In order to create arrays with a variable length dynamic memory is needed, which is explained later in these tutorials.

Initializing arrays.
When declaring a regular array of local scope (within a function, for example), if we do not specify otherwise, its elements will not be initialized to any value by default, so their content will be undetermined until we store some value in them. The elements of global and static arrays, on the other hand, are automatically initialized with their default values, which for all fundamental types this means they are filled with zeros.

In both cases, local and global, when we declare an array, we have the possibility to assign initial values to each one of its elements by enclosing the values in braces { }. For example:



int billy [5] = { 16, 2, 77, 40, 12071 };



This declaration would have created an array like this:



The amount of values between braces { } must not be larger than the number of elements that we declare for the array between square brackets [ ]. For example, in the example of array billy we have declared that it has 5 elements and in the list of initial values within braces { } we have specified 5 values, one for each element.

When an initialization of values is provided for an array, C++ allows the possibility of leaving the square brackets empty [ ]. In this case, the compiler will assume a size for the array that matches the number of values included between braces { }:



int billy [] = { 16, 2, 77, 40, 12071 };



After this declaration, array billy would be 5 ints long, since we have provided 5 initialization values.

Accessing the values of an array.

In any point of a program in which an array is visible, we can access the value of any of its elements individually as if it was a normal variable, thus being able to both read and modify its value. The format is as simple as:


name[index]


Following the previous examples in which billy had 5 elements and each of those elements was of type int, the name which we can use to refer to each element is the following:



For example, to store the value 75 in the third element of billy, we could write the following statement:



billy[2] = 75;



and, for example, to pass the value of the third element of billy to a variable called a, we could write:



a = billy[2];



Therefore, the expression billy[2] is for all purposes like a variable of type int.

Notice that the third element of billy is specified billy[2], since the first one is billy[0], the second one is billy[1], and therefore, the third one is billy[2]. By this same reason, its last element is billy[4]. Therefore, if we write billy[5], we would be accessing the sixth element of billy and therefore exceeding the size of the array.

In C++ it is syntactically correct to exceed the valid range of indices for an array. This can create problems, since accessing out-of-range elements do not cause compilation errors but can cause runtime errors. The reason why this is allowed will be seen further ahead when we begin to use pointers.

At this point it is important to be able to clearly distinguish between the two uses that brackets [ ] have related to arrays. They perform two different tasks: one is to specify the size of arrays when they are declared; and the second one is to specify indices for concrete array elements. Do not confuse these two possible uses of brackets [ ] with arrays.

1
2


int billy[5]; // declaration of a new array
billy[2] = 75; // access to an element of the array.



If you read carefully, you will see that a type specifier always precedes a variable or array declaration, while it never precedes an access.

Some other valid operations with arrays:

1
2
3
4


billy[0] = a;
billy[a] = 75;
b = billy [a+2];
billy[billy[a]] = billy[2] + 5;



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


// arrays example
#include
using namespace std;

int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;

int main ()
{
for ( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout << result; return 0; } 12206 Multidimensional arrays Multidimensional arrays can be described as "arrays of arrays". For example, a bidimensional array can be imagined as a bidimensional table made of elements, all of them of a same uniform data type. jimmy represents a bidimensional array of 3 per 5 elements of type int. The way to declare this array in C++ would be: int jimmy [3][5]; and, for example, the way to reference the second element vertically and fourth horizontally in an expression would be: jimmy[1][3] (remember that array indices always begin by zero). Multidimensional arrays are not limited to two indices (i.e., two dimensions). They can contain as many indices as needed. But be careful! The amount of memory needed for an array rapidly increases with each dimension. For example: char century [100][365][24][60][60]; declares an array with a char element for each second in a century, that is more than 3 billion chars. So this declaration would consume more than 3 gigabytes of memory! Multidimensional arrays are just an abstraction for programmers, since we can obtain the same results with a simple array just by putting a factor between its indices: 1 2 int jimmy [3][5]; // is equivalent to int jimmy [15]; // (3 * 5 = 15) With the only difference that with multidimensional arrays the compiler remembers the depth of each imaginary dimension for us. Take as example these two pieces of code, with both exactly the same result. One uses a bidimensional array and the other one uses a simple array: multidimensional array pseudo-multidimensional array #define WIDTH 5 #define HEIGHT 3 int jimmy [HEIGHT][WIDTH]; int n,m; int main () { for (n=0;n
using namespace std;

void printarray (int arg[], int length) {
for (int n=0; n cout << arg[n] << " ";
cout << "\n";
}

int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8, 10};
printarray (firstarray,3);
printarray (secondarray,5);
return 0;
}



5 10 15
2 4 6 8 10



As you can see, the first parameter (int arg[]) accepts any array whose elements are of type int, whatever its length. For that reason we have included a second parameter that tells the function the length of each array that we pass to it as its first parameter. This allows the for loop that prints out the array to know the range to iterate in the passed array without going out of range.

In a function declaration it is also possible to include multidimensional arrays. The format for a tridimensional array parameter is:



base_type[][depth][depth]



for example, a function with a multidimensional array as argument could be:



void procedure (int myarray[][3][4])



Notice that the first brackets [] are left blank while the following ones are not. This is so because the compiler must be able to determine within the function which is the depth of each additional dimension.

Arrays, both simple or multidimensional, passed as function parameters are a quite common source of errors for novice programmers. I recommend the reading of the chapter about Pointers for a better understanding on how arrays operate.

Arrays for c++

Arrays
Published by Juan Soulie
Last update on Sep 29, 2009 at 10:53am UTC
An array is a series of elements of the same type placed in contiguous memory locations that can be individually referenced by adding an index to a unique identifier.

That means that, for example, we can store 5 values of type int in an array without having to declare 5 different variables, each one with a different identifier. Instead of that, using an array we can store 5 different values of the same type, int for example, with a unique identifier.

For example, an array to contain 5 integer values of type int called billy could be represented like this:



where each blank panel represents an element of the array, that in this case are integer values of type int. These elements are numbered from 0 to 4 since in arrays the first index is always 0, independently of its length.

Like a regular variable, an array must be declared before it is used. A typical declaration for an array in C++ is:


type name [elements];


where type is a valid type (like int, float...), name is a valid identifier and the elements field (which is always enclosed in square brackets []), specifies how many of these elements the array has to contain.

Therefore, in order to declare an array called billy as the one shown in the above diagram it is as simple as:



int billy [5];



NOTE: The elements field within brackets [] which represents the number of elements the array is going to hold, must be a constant value, since arrays are blocks of non-dynamic memory whose size must be determined before execution. In order to create arrays with a variable length dynamic memory is needed, which is explained later in these tutorials.

Initializing arrays.
When declaring a regular array of local scope (within a function, for example), if we do not specify otherwise, its elements will not be initialized to any value by default, so their content will be undetermined until we store some value in them. The elements of global and static arrays, on the other hand, are automatically initialized with their default values, which for all fundamental types this means they are filled with zeros.

In both cases, local and global, when we declare an array, we have the possibility to assign initial values to each one of its elements by enclosing the values in braces { }. For example:



int billy [5] = { 16, 2, 77, 40, 12071 };



This declaration would have created an array like this:



The amount of values between braces { } must not be larger than the number of elements that we declare for the array between square brackets [ ]. For example, in the example of array billy we have declared that it has 5 elements and in the list of initial values within braces { } we have specified 5 values, one for each element.

When an initialization of values is provided for an array, C++ allows the possibility of leaving the square brackets empty [ ]. In this case, the compiler will assume a size for the array that matches the number of values included between braces { }:



int billy [] = { 16, 2, 77, 40, 12071 };



After this declaration, array billy would be 5 ints long, since we have provided 5 initialization values.

Accessing the values of an array.

In any point of a program in which an array is visible, we can access the value of any of its elements individually as if it was a normal variable, thus being able to both read and modify its value. The format is as simple as:


name[index]


Following the previous examples in which billy had 5 elements and each of those elements was of type int, the name which we can use to refer to each element is the following:



For example, to store the value 75 in the third element of billy, we could write the following statement:



billy[2] = 75;



and, for example, to pass the value of the third element of billy to a variable called a, we could write:



a = billy[2];



Therefore, the expression billy[2] is for all purposes like a variable of type int.

Notice that the third element of billy is specified billy[2], since the first one is billy[0], the second one is billy[1], and therefore, the third one is billy[2]. By this same reason, its last element is billy[4]. Therefore, if we write billy[5], we would be accessing the sixth element of billy and therefore exceeding the size of the array.

In C++ it is syntactically correct to exceed the valid range of indices for an array. This can create problems, since accessing out-of-range elements do not cause compilation errors but can cause runtime errors. The reason why this is allowed will be seen further ahead when we begin to use pointers.

At this point it is important to be able to clearly distinguish between the two uses that brackets [ ] have related to arrays. They perform two different tasks: one is to specify the size of arrays when they are declared; and the second one is to specify indices for concrete array elements. Do not confuse these two possible uses of brackets [ ] with arrays.

1
2


int billy[5]; // declaration of a new array
billy[2] = 75; // access to an element of the array.



If you read carefully, you will see that a type specifier always precedes a variable or array declaration, while it never precedes an access.

Some other valid operations with arrays:

1
2
3
4


billy[0] = a;
billy[a] = 75;
b = billy [a+2];
billy[billy[a]] = billy[2] + 5;



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


// arrays example
#include
using namespace std;

int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;

int main ()
{
for ( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout << result; return 0; } 12206 Multidimensional arrays Multidimensional arrays can be described as "arrays of arrays". For example, a bidimensional array can be imagined as a bidimensional table made of elements, all of them of a same uniform data type. jimmy represents a bidimensional array of 3 per 5 elements of type int. The way to declare this array in C++ would be: int jimmy [3][5]; and, for example, the way to reference the second element vertically and fourth horizontally in an expression would be: jimmy[1][3] (remember that array indices always begin by zero). Multidimensional arrays are not limited to two indices (i.e., two dimensions). They can contain as many indices as needed. But be careful! The amount of memory needed for an array rapidly increases with each dimension. For example: char century [100][365][24][60][60]; declares an array with a char element for each second in a century, that is more than 3 billion chars. So this declaration would consume more than 3 gigabytes of memory! Multidimensional arrays are just an abstraction for programmers, since we can obtain the same results with a simple array just by putting a factor between its indices: 1 2 int jimmy [3][5]; // is equivalent to int jimmy [15]; // (3 * 5 = 15) With the only difference that with multidimensional arrays the compiler remembers the depth of each imaginary dimension for us. Take as example these two pieces of code, with both exactly the same result. One uses a bidimensional array and the other one uses a simple array: multidimensional array pseudo-multidimensional array #define WIDTH 5 #define HEIGHT 3 int jimmy [HEIGHT][WIDTH]; int n,m; int main () { for (n=0;n
using namespace std;

void printarray (int arg[], int length) {
for (int n=0; n cout << arg[n] << " ";
cout << "\n";
}

int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8, 10};
printarray (firstarray,3);
printarray (secondarray,5);
return 0;
}



5 10 15
2 4 6 8 10



As you can see, the first parameter (int arg[]) accepts any array whose elements are of type int, whatever its length. For that reason we have included a second parameter that tells the function the length of each array that we pass to it as its first parameter. This allows the for loop that prints out the array to know the range to iterate in the passed array without going out of range.

In a function declaration it is also possible to include multidimensional arrays. The format for a tridimensional array parameter is:



base_type[][depth][depth]



for example, a function with a multidimensional array as argument could be:



void procedure (int myarray[][3][4])



Notice that the first brackets [] are left blank while the following ones are not. This is so because the compiler must be able to determine within the function which is the depth of each additional dimension.

Arrays, both simple or multidimensional, passed as function parameters are a quite common source of errors for novice programmers. I recommend the reading of the chapter about Pointers for a better understanding on how arrays operate.

source code c++

Probably the best way to start learning a programming language is by writing a program. Therefore, here is our first program:

1
2
3
4
5
6
7
8
9
10


// my first program in C++

#include
using namespace std;

int main ()
{
cout << "Hello World!"; return 0; } Hello World! The first panel (in light blue) shows the source code for our first program. The second one (in light gray) shows the result of the program once compiled and executed. To the left, the grey numbers represent the line numbers - these are not part of the program, and are shown here merely for informational purposes. The way to edit and compile a program depends on the compiler you are using. Depending on whether it has a Development Interface or not and on its version. Consult the compilers section and the manual or help included with your compiler if you have doubts on how to compile a C++ console program. The previous program is the typical program that programmer apprentices write for the first time, and its result is the printing on screen of the "Hello World!" sentence. It is one of the simplest programs that can be written in C++, but it already contains the fundamental components that every C++ program has. We are going to look line by line at the code we have just written: // my first program in C++ This is a comment line. All lines beginning with two slash signs (//) are considered comments and do not have any effect on the behavior of the program. The programmer can use them to include short explanations or observations within the source code itself. In this case, the line is a brief description of what our program is. #include

Lines beginning with a hash sign (#) are directives for the preprocessor. They are not regular code lines with expressions but indications for the compiler's preprocessor. In this case the directive #include tells the preprocessor to include the iostream standard file. This specific file (iostream) includes the declarations of the basic standard input-output library in C++, and it is included because its functionality is going to be used later in the program.
using namespace std;

All the elements of the standard C++ library are declared within what is called a namespace, the namespace with the name std. So in order to access its functionality we declare with this expression that we will be using these entities. This line is very frequent in C++ programs that use the standard library, and in fact it will be included in most of the source codes included in these tutorials.
int main ()

This line corresponds to the beginning of the definition of the main function. The main function is the point by where all C++ programs start their execution, independently of its location within the source code. It does not matter whether there are other functions with other names defined before or after it - the instructions contained within this function's definition will always be the first ones to be executed in any C++ program. For that same reason, it is essential that all C++ programs have a main function.

The word main is followed in the code by a pair of parentheses (()). That is because it is a function declaration: In C++, what differentiates a function declaration from other types of expressions are these parentheses that follow its name. Optionally, these parentheses may enclose a list of parameters within them.

Right after these parentheses we can find the body of the main function enclosed in braces ({}). What is contained within these braces is what the function does when it is executed.
cout << "Hello World!"; This line is a C++ statement. A statement is a simple or compound expression that can actually produce some effect. In fact, this statement performs the only action that generates a visible effect in our first program. cout is the name of the standard output stream in C++, and the meaning of the entire statement is to insert a sequence of characters (in this case the Hello World sequence of characters) into the standard output stream (cout, which usually corresponds to the screen). cout is declared in the iostream standard file within the std namespace, so that's why we needed to include that specific file and to declare that we were going to use this specific namespace earlier in our code. Notice that the statement ends with a semicolon character (;). This character is used to mark the end of the statement and in fact it must be included at the end of all expression statements in all C++ programs (one of the most common syntax errors is indeed to forget to include some semicolon after a statement). return 0; The return statement causes the main function to finish. return may be followed by a return code (in our example is followed by the return code with a value of zero). A return code of 0 for the main function is generally interpreted as the program worked as expected without any errors during its execution. This is the most usual way to end a C++ console program. You may have noticed that not all the lines of this program perform actions when the code is executed. There were lines containing only comments (those beginning by //). There were lines with directives for the compiler's preprocessor (those beginning by #). Then there were lines that began the declaration of a function (in this case, the main function) and, finally lines with statements (like the insertion into cout), which were all included within the block delimited by the braces ({}) of the main function. The program has been structured in different lines in order to be more readable, but in C++, we do not have strict rules on how to separate instructions in different lines. For example, instead of 1 2 3 4 5 int main () { cout << " Hello World!"; return 0; } We could have written: int main () { cout << "Hello World!"; return 0; } All in just one line and this would have had exactly the same meaning as the previous code. In C++, the separation between statements is specified with an ending semicolon (;) at the end of each one, so the separation in different code lines does not matter at all for this purpose. We can write many statements per line or write a single statement that takes many code lines. The division of code in different lines serves only to make it more legible and schematic for the humans that may read it. Let us add an additional instruction to our first program: 1 2 3 4 5 6 7 8 9 10 11 12 // my second program in C++ #include

using namespace std;

int main ()
{
cout << "Hello World! "; cout << "I'm a C++ program"; return 0; } Hello World! I'm a C++ program In this case, we performed two insertions into cout in two different statements. Once again, the separation in different lines of code has been done just to give greater readability to the program, since main could have been perfectly valid defined this way: int main () { cout << " Hello World! "; cout << " I'm a C++ program "; return 0; } We were also free to divide the code into more lines if we considered it more convenient: 1 2 3 4 5 6 7 8 int main () { cout << "Hello World!"; cout << "I'm a C++ program"; return 0; } And the result would again have been exactly the same as in the previous examples. Preprocessor directives (those that begin by #) are out of this general rule since they are not statements. They are lines read and processed by the preprocessor and do not produce any code by themselves. Preprocessor directives must be specified in their own line and do not have to end with a semicolon (;). Comments Comments are parts of the source code disregarded by the compiler. They simply do nothing. Their purpose is only to allow the programmer to insert notes or descriptions embedded within the source code. C++ supports two ways to insert comments: 1 2 // line comment /* block comment */ The first of them, known as line comment, discards everything from where the pair of slash signs (//) is found up to the end of that same line. The second one, known as block comment, discards everything between the /* characters and the first appearance of the */ characters, with the possibility of including more than one line. We are going to add comments to our second program: 1 2 3 4 5 6 7 8 9 10 11 12 /* my second program in C++ with more comments */ #include
using namespace std;

int main ()
{
cout << "Hello World! "; // prints Hello World!
cout << "I'm a C++ program"; // prints I'm a C++ program
return 0;
}



Hello World! I'm a C++ program



If you include comments within the source code of your programs without using the comment characters combinations //, /* or */, the compiler will take them as if they were C++ expressions, most likely causing one or several error messages when you compile it.

For Application Developers with Complex Object Models

For Application Developers with Complex Object Models

Database requirements, e.g. for network management, simulation, transportation, and online gaming applications are pushing relational database systems to their limits. Application models are increasingly complex, often hierarchical, and evolve rapidly. Using relational databases for these application domains has proven to be difficult because of the need to maintain the so-called object to relational mapping and the inability to achieve acceptable database performance.

Versant Object Database (V/OD) provides powerful advantages to developers creating C++, Java or .NET object models, supporting massive concurrency and large data sets.
Explore Technical Resources at the Versant Developer Center

Versant provides a variety of technical resources to help you getting into object-oriented data management and to support you become productive using the Versant Object Database:

Free Evaluation Downloads

White papers

Data sheets
SELECTED APPLICATION DOMAINS USING V/OD
Versant Industries

V/OD’s performance and scalability advantages provide a more efficient production environment, often supporting 10x more concurrent users and 10x faster data access speed compared to relational databases.

More performance, lower hardware costs and shorter development time – V/OD gives you a true and measurable competitive advantage.

“We cannot afford to keep breaking up objects into SQL databases and then to reconstitute them when we load them into the program.” “In addition, we did get an order of magnitude speed improvement on complex objects compared to SQL.”

Eugene Joseph, CEO

North Side, Inc.

FEATURE HIGHLIGHTS

* Transparent object persistence from C++, Java and .NET
* Support for standards, e.g., JDO
* Seamless data base distribution
* Enterprise-class high availability
* Dynamic schema evolution
* Low to zero administration
* Multi-threading, multi-session
* End-to-end object architecture
* Fine-grained concurrency control

KEY BENEFITS

* Fast storage, retrieval, navigation of object hierarchies and graphs
* Cut development time up to 40%
* 10X performance of RDBMS
* Lower server hardware costs

NEW FOR VERSION 8

* Improved database administration tools (e.g., monitoring, dbcheck, dbreorg)
* Improved multi core scalability
* FTS for .NET and JDO based applications
* .NET binding with LINQ support
* “Black Box” recorder and analysis

V/OD 8 OBJECT DATABASE FEATURES
AGILE DEVELOPMENT ENVIRONMENT
TRANSPARENT C++ OBJECT PERSISTENCE

C++ objects, STL classes, and standard C++ collections such as dictionaries, maps, and the like are persisted in the database as-is. State changes are automatically tracked behind the scenes. When the associated transaction commits, all the changes are automatically sent to the database. The result is a very natural, low intrusion programming style that enables fast development and the agility of easy changes to the application model.
TRANSPARENT JAVA OBJECT PERSISTENCE

V/OD’s JVI & JDO 2.0 API provide transparent persistence of POJOs, including Java 2 collection classes, interfaces, and any defined user class. State changes are automatically tracked behind the scenes. Commits automatically push all the changes to the database. You get this lightweight programming style in managed and unmanaged deployments.
TRANSPARENT .NET OBJECT PERSISTENCE

New in V/OD 8 is a programming language binding for the Microsoft .NET framework. A complete integration into Visual Studio makes Versant a perfect persistence solution for any .NET developer.
DYNAMIC DATABASE SCHEMA EVOLUTION

V/OD supports “lazy schema evolution”, meaning the objects are converted dynamically from an old schema to a new schema as they are touched. No explicit mapping, coding or database reorganization is required.
HIGH PERFORMANCE DATABASE
CONCURRENCY CONTROL

V/OD enables fine-grained object-level locking and supports pessimistic and optimistic locking protocols. While page-based locking might result in “phantom” concurrency hotspots, V/OD object-level locking minimizes potential locking conflicts - and maximizes concurrency.
SEAMLESS DATA DISTRIBUTION ACROSS MULTIPLE DATABASES

Clients seamlessly interact with one or many databases. The seamless federation of individual databases lets you partition data, and increase read and write capacity/performance. Database distribution is transparent and operate like one seamless database with great scalability.
OODBMS Application Architecture
VOD Block Diagram Architecture

Objects are managed via logical identity, allowing physical distribution of objects for archiving and partitioning without any code changes to the application.
Enterprise Database Features
HIGH AVAILABILITY DATABASE SERVER

The Fault Tolerant Server (FTS) module enables automatic fail-over/recovery in the case of hardware or software failures. FTS uses synchronous replication between two database server instances and supports automatic re-synchronization in the event of a failure.
PRODUCTION DATABASE REPLICATION

The Asynchronous Replication server supports both master-slave and peer to-peer configuration between multiple Versant server instances. This can be used for instance to replicate a database to a distributed recovery site or to replicate data between multiple Versant servers for increased performance and reliability.
HIGH AVAILABILITY BACKUP SOLUTION

High Availability Backup solution enables Versant to use the disk mirroring features of EMC Symmetrix or other enterprise storage systems to perform an online backup of large data volumes without impacting availability.
ONLINE DATABASE MAINTENANCE

Versant Database Reorganizer helps maintain the optimum internal database structure, e.g., for applications that create and delete large numbers of objects. The tool reclaims unused space in the database during normal operation to decrease potential fragmentation, increase available free space and to improve overall performance.

Read more
Why Versant?
TIME TO MARKET BY REDUCING DEVELOPMENT TIME

Object–relational mapping code can be 40% or more of your application. With V/OD 8, mapping code is no longer required, and your development team is no longer restricted by the limitations of the relational database.
INCREASE PERFORMANCE AND THROUGHPUT

V/OD 8 provides significantly higher performance, in particularly in applications with complex object models, navigational access and in memory persistence operations. As an example, when an application retrieves an object from the Versant Object Database, a single operation with the server fetches the object, irrespective of its complexity, compared to one or more expensive join operations in an RDBMS.

Objects with moderate complexity perform typically at least 3x faster with Versant, objects with high levels of complexity, such as many-to many relationships perform 30x and more times faster when using Versant.
speed_advantage.gif
EVOLVE YOUR APPLICATION AT THE SPEED OF YOUR BUSINESS

Today’s rate of change in business process and structure and application requirements makes the ability to change, and to change quickly, extremely valuable. The Versant Object Database provides the programming interfaces and development tools to move at the speed of the business.
ROI – LOWER HARDWARE COSTS, FASTER TIME TO MARKET

V/OD is the preferred solution when it comes to managing complex persistent object models and large databases. 10 of 10 of the leading telecommunications companies are using V/OD for their network management software, saving money every day with lower hardware costs and staying competitive in a highly competitive world by meeting the ever changing demand of their business.
Requirements
Languages spacer30px.png C++, Java, .NET
Operating Systems Microsoft Windows XP, Vista, Windows 7, Windows Server 2008
Sun Solaris 5.10 (x86), 64 bit
Sun Solaris 5.10 (SPACRC), 32&64bit
HP-UX 11iv3
Red Hat RHEL 5.4
JDK Support JDK 1.5, 1.6
Technical Resources at the Versant Developer Center

Versant provides a variety of technical resources to help you getting into object-oriented data management and to support you become productive using the Versant Object Database:

Screencasts: First Steps

Compatibility Overview

Whitepapers

Datasheets

Trial Downloads
PRODUCTS

Kamis, 28 Oktober 2010

Cara Install Ubuntu 9.10. kumpulan tips

Cara Install Ubuntu 9.10


Berikut panduan langkah demi langkah instalasi Ubuntu 9.10

Ubuntu 9.10 yang juga dikenal dengan sebutan Karmic Koala telah dirilis pada tanggal 29 Oktober 2009 yang merupakan rilis kesebelas dari OS Ubuntu. Tutorial ini dibuat untuk memberikan panduan kepada siapaun yang ingin menginstall Ubuntu 9.10 pada komputer pribadinya.

Cara install Ubuntu 9.10 ini ditujukan untuk orang-orang yang belum pernah menginstall Ubuntu pada komputernya namun menginginkan os ini beroperasi pada komputernya. Tutorial ini akan memudahkan pekerjaan Anda dalam melakukan instalasi Ubuntu 9.10, namun jika Anda mengalami permasalahan dalam proses instalasi, jangan ragu untuk menggunakan media komentar di bawah postingan ini, kami atau teman-teman pengunjung blog KomputerTips.com akan membantu Anda.

Update: Spesifikasi Minimum Ubuntu

Persyaratan:

Anda butuh Ubuntu 9.10 Desktop ISO image yang sesuai dengan arsitektur komputer Anda (i386 atau amd64), dan bisa didownload dari sini. Bila download Anda sudah selesai, bakar ISO image tersebut dengan aplikasi CD/DVD burning favorit Anda (Nero, CDBurnerXP, Roxio) pada CD blank dengan speed 8x.

Pilih bahasa yang Anda inginkan…

instalasi ubuntu 9.10 satu

Pilih opsi kedua “Install Ubuntu” dan tekan tombol “enter”…

instalasi ubuntu 9.10 dua

Tunggu sampai CD dimuat ke dalam RAM…

instalasi ubuntu 9.10 tiga

Anda akan melihat wallpaper untuk beberapa saat. Ketika installer muncul, Anda akan bisa memilih bahasa yang Anda inginkan untuk keseluruhan proses instalasi. Klik tombol “Forward” untuk melanjutkan…

instalasi ubuntu 9.10 empat

Dimana Anda?

Layar kedua akan menampilkan peta bumi. Waktu dari sistem komputer Anda akan menggunakan pilihan lokasi yang Anda tentukan. Anda juga dapat memilih lokasi menggunakan drop down list yang terletak pada bagian bawah layar. Klik tombol “Forward” setelah Anda memilih lokasi yang diinginkan…

instalasi ubuntu 9.10 empat

Test keyboard Anda

Pada layar ketiga, Anda bisa memilih layout keyboard yang Anda inginkan. Namun layout default biasanya adalah yang sering digunakan. Klik tombol “Forward” jika konfigurasi keyboard telah selesai Anda tentukan.

layout keyboard ubuntu 9.10

Partisi Hard Disk

Anda memiliki empat pilihan:

1. Jika komputer Anda sudah ada os lain (misalnya Windows 7) dan Anda menginginkan sistem dual boot, pilih opsi pertama: “Install them side by side, choosing between them at each startup”.

partisi harddisk ubuntu 9.10

Catatan: Opsi ini hanya akan muncul apabila Anda memiliki operating system lain di komputer Anda, seperti Microsoft Windows. Perlu diingat, bahwa setelah instalasi Windows boot loader akan ditimpa oleh Ubuntu boot loader!

2. Jika Anda ingin menghapus operating system yang ada, atau hard drive sudah kosong dan Anda ingin installer secara otomatis melakukan partisi hard drive, pilihlah opsi kedua, “Use the entire disk”.

partisi hard disk ubuntu 9.10 opsi kedua

Catatan: Opsi ini sangat direkomendasikan kepada pengguna yang tidak memiliki os lain di komputernya atau yang ingin menghapus os yang ada, contohnya OS Windows.

3. Opsi ketiga adalah “Use the largest continuous free space” dan akan menginstall Ubuntu 9.10 pada space yang belum dipartisi pada hard drive yang dipilih.

4. Opsi keempat adalah “Specify partitions manually” dan pilihan ini sangat direkomendasikan untuk pengguna level advanced, pilihan ini untuk membuat partisi khusus atau melakukan format hard drive dengan sistem file lain. Ini juga dapat digunakan untuk membuat partisi /home yang sangat berguna untuk melakukan instalasi ulang keseluruhan sistem.

Berikut cara yang digunakan apabila Anda melakukan partisi manual dengan /home:

- Pilih “Specifiy partitions manually (advanced)” dan klik tombol “Forward”.

- Pastikan hard drive yang dipilih sudah benar. /dev/sda adalah physical hard drive pertama. /dev/sdb adalah hard drive kedua pada komputer Anda. Jadi, pastikan hard drive mana yang ingin Anda format! Kalau tidak, Anda akan kehilangan seluruh data pada hard drive tersebut!

- Misalkan hard drive yang dipilih kosong (tidak ada operating system atau data penting pada hard drive yang dipilih), namun ada sedikit partisi. Pilih setiap partisi dan klik tombol “Delete”. Setelah beberapa saat, akan muncul kata “free space”. Lakukan hal yang sama dengan partisi lain pada hard drive yang dipilih sampai semuanya terhapus dan muncul kata “free space”.

- Pilih kata “free space”, lalu klik tombol “Add”. Pada jendela yang baru, ketikkan 2000 pada kolom “New partition size in megabytes” dan pilih opsi “swap area” dari drop down list “Use as:”. Klik tombol OK dan dalam beberapa saat Anda akan melihat baris “swap” dengan ukuran yang telah ditentukan.

- Pilih kata “free space”, klik tombol “Add”. Pada jendela baru, pilih opsi “Primary”, ketikkan nilai antara 10.000 dan 50.000 pada kolom “New partition size in megabytes” dan pilih / sebagai “Mount point”. Klik tombol OK dan dalam beberapa saat Anda akan diberitahukan baris “ext4 /” dengan ukuran yang telah ditentukan.

- Pilih kata “free space”, klik tombol “Add”. Pada jendela baru yang munbul, pilih opsi “Primary”, ketikkan nilai antara 30.000 dan 50.000 (atau space yang tersisa pada hard drive Anda) pada kolom “New partition size in megabytes” dan pilih /home sebagai “Mount point”. Klik tombol OK dan dalam beberapa saat Anda akan diberitahukan baris “ext4 /home” dengan ukuran yang telah ditentukan.

Persiapan partisi

Tampilan partisi Anda seharusnya seperti gambar di bawah ini. Jika benar, klik tombol “Forward” untuk melanjutkan instalasi…

Partisi ubuntu 9.10 yang benar

Warning: Seluruh data pada hard drive yang dipilih akan dihapus dan tidak dapat dikembalikan.

Klik tombol “Forward” untuk melanjutkan instalasi.

Siapa Anda?

Pada layar ini, Anda harus memasukkan data yang benar sesuai pertanyaannya. Isilah kolom yang tersedia dengan nama asli Anda, nama yang Anda inginkan untuk login pada OS Ubuntu (yang disebut juga dengan “username” yang dibutuhkan untuk login pada system), password dan nama komputer (secara otomatis sudah tertulis, namun bisa Anda ganti).

Pada tahapan ini, ada opsi yang disebut “Log in automatically”. Jika kotak pilihan ini Anda centang, maka Anda akan login secara otomatis pada Ubuntu Desktop. Klik tombol “Forward” untuk melanjutkan…

Login pada Ubuntu 9.10

Apakah Anda sudah benar-benar siap menggunakan Ubuntu?

Ini adalah langkah akhir instalasi. Pada tahapan ini, Anda dapat memilih untuk menginstall boot loader pada partisi lain atau hard drive, namun ini sangat direkomendasikan bagi yang sudah advanced saja.

Untuk itu, klik tombol “Advanced” dan pilih drive yang benar (USB stick)…

Ubuntu Boot Loader

Klik tombol “Install” untuk memulai proses instalasi…

Memulai instalasi Ubuntu 9.10

Operating System Ubuntu 9.10 (Karmic Koala) akan segera diinstall…

Proses instalasi Karmic Koala

Setelah kira-kira 10 sampai 18 menit (tergantung pada spesifikasi komputer Anda), pop-up window akan muncul, mengingatkan Anda bahwa instalasi sudah selesai, Anda perlu melakukan restart komputer untuk melihat operating system Ubuntu berjalan. Klik tombol “Restart now”…

Instalasi Ubuntu 9.10 selesai

CD akan dikeluarkan dari CD ROM, lalu tekan tombol “Enter” untuk reboot. Komputer akan direset, dalam beberapa saat Anda akan melihat Ubuntu boot splash dan Xsplash…

Ubuntu boot splash dan Xsplash

Ubuntu boot splash dan Xsplash 2

Pada layar login, klik pada username Anda dan masukkan passwordnya. Klik Log in atau tombol enter…

Login pertama kali Ubuntu 9.10

Silakan menikmati Ubuntu 9.10 Anda…

Silakan menikmati Ubuntu 9.10

SEJARAH JAVA.kumpulan tips

. SEJARAH JAVA berawal pada tahun 1991 ketika perusahaan sun microsystem memulai green project ,yakni projek penelitian untuk membuat bahasa yang akan digunakan pada chip-chip embedded untuk device intelligent consumer electronic .bahasa tersebut harus bersipat multi platform,tidak tergantung kepada vendor yang memanufactur chip tersebut.
Dalam penelitiannya, projek green berhasil membuat prototype semacam PDA (personal data assistance) yang dapat berkomunikasi antara satu dengan yang lain dan diberi nama star 7. Ide berawal untuk membuat system operasi bagi star 7 berbasis c dan c++. Setelah berjalan beberapa lama, james gosling , salah seorang angota team, merasa kurang puas dengan beberapa karakteristik dari kedua bahasa tersebut berusaha megembangkan bahasa lain. Bahsa tersebut kemudian dinamakan oak , diinspirasi ketika dia melihat pohon di seberang kaca ruang kantornya, karena nama oak sudah ada yang mengunakan ,, kemudian dia mencari nama baru,, tapi nama itu juga belum di temukannya,, dia memutuskan untuk break pencarian nama, di sela2 break dia mampir di sebuah kafe, dia memesan kopi, setelah kopinya di minum, dia bertanya kepada pelayannya ” kopinya kok enak,, kopi dari mana ni?? Pelayan menjawab,, dari java..” sejak itulah nama oak berubah menjadi java, yang nama itu sampai sekarang di kenal.

Selasa, 26 Oktober 2010

TIPS CARA MENGHILANGKAN STRES. kumpulan tips

JIKA ANDA MERASA STRES , bingung dan pusing dengan suatu masalah.. ini ada beberapa tips :
1. dengan cara menarik napas yang panjang.. dan kemudian menghembuskanya secara perlahan.
2. denagn cara pergi ketempat yang sepi,, agar otak anda dapat berpikir lebih tenang
3. dengan cara bertemu dengan oarang yang anda sayang.
4. dengan cara curhat dengan oarang terdekat, agar persaan anda lebih lega
5. dngan cara pergi ketempat ibadah,, dan anda melakuna sembahyang.. memohon pada tuhan untuk diberikan ketenangan hidup.

kayaknya itu aja yang aku tau,, karena hal itu yang bisa bikin aku tenang.. selamat mencoba n moga anda bisa lebih rilexs

tips nembak cwek agar di terima.kumpulan tips

buat kamu2 yang sering cintanya ditolak ama cewek,, jangan menyerah n jangan patah semangat.. ni aku ada tips buat kalian...
dulu aku juga sering ditolak ama cwe... karena tampang aku pas passan...
gini sob,, jika loe sukA ma seseorang,, dan loe pengen ngungkapin perasaaan loe k dia. langkah2 nya sebagai berikut:
1. loe tunjukin lok loe itu suka ama dia,, dengan cara loe mmberi perhatian lbih buat dia.
2. lo harus bisa menarik simpatinya dia.
3. loe harus coba untuk berbuat baik di depan dia,, meski itu terpaksa ... he ehe he
4. loe cari tau hal2 yang dia sukai... misal makanan favorit.. dll
5. setelah cara loe itu berhasil,, langkah berikutnya loe tinggal ungkapkan prsaan loe ke dia.. dengan kata I LOVE U.
6. SATU HAL yang harus loe ingat cwe paling suka di sanjung... ok.

itu aja sob.. semoga berhasilll ... good luck..

jika cinta loe masih di tolak juga atau ada masalh lain yang berhubungan dengan cinta,, HUBUNGI AKU DI 081936356259

Learn more about Website Hosting

Learn more about Website Hosting



Trying to identify a web hosting can be a very daunting task especially when there are so many available nowadays and all of them promise one thing or another because looking for and buying a reliable web hosting solution is an imperative decision. inding the best hosting service for your website can be complicated. The best way to select a quality web hosting is to take the selection process one step at a time.

If you are currently engaged in any facet of ecommerce, even service sectors, a website makes up a great deal of your business. Therefore, it is a safe assumption that you pay for hosting your website in some fashion. If you do not already have a dedicated server, perhaps you should revisit the decision for the best hosting options for your business.

Green hosting was scarce a few years ago, however, recently this type of web hosting has come into the limelight. There are a handful of companies who started off 100% green while others have gradually converted. Even some of the most widely known providers have made the switch to offer a more eco-friendly web hosting product. Many begin in the office by recycling waste paper and utilizing bio-fuel for heating purposes. This leads to the data centers where servers thrive off alternative sources such as wind, solar and geothermal energy. Some have went out and purchased RECs (Renewable Energy Credits), a certification which assures the company is using alternatives forms of power.

There are some who question the performance and overall reliability you receive with a green hosting platform. In actuality, renewable energy is proven to be just as reliable and effective as conventional electricity. Green hosts are successfully running their businesses just as everyone else is. Like the traditional provider is equipped with electrical backup sources, these companies are prepared to produce renewable energy to keep the operation flourishing.

In today's competitive world reliable web hosting is very critical especially for the success of online businesses. You need to seek a web hosting company that can provide you with these critical components and much more.

permasalahan umum yang biasanya terjadi dalam polymorphisme.lan tips

kumpuKonsep Dasar Polymorphism dalam Java

Polymorphism adalah salah satu dari tiga kemampuan yang mendasar yang dimiliki oleh OOP, setelah data abstraction dan inheritance.

Polymorphism menyediakan cara yang berbeda pada pemisahan interface dari implementasinya, untuk memasangkan ulang apa dari bagaimana. Polymorphism memberikan organisasi kode yang lebih baik dan kode menjadi lebih mudah dibaca, juga memberikan suatu kemampuan pada program untuk berkembang secara terus menerus baik pada tahap pengembangan awal ataupun pada saat ingin menambahkan kemampuan-kemampuan yang baru.

Encapsulation membuat tipe data yang baru dengan mengkombinasikan karakteristik-karakteristik dan perilaku-perilaku. Dengan menggunakan kata kunci private kita dapat menyembunyikan interface dari implementasi. Cara yang seperti ini dapat memudahkan para programmer yang mempunyai background prosedural. Tetapi polymorphism menangani decoupling dalam bentuk types. Kita mengetahui kalau inheritance memperbolehkan perlakuan yang sama pada object turunan maupun object asal. Kemampuan ini sangat penting karena memperbolehkan beberapa tipe yang ada (turunan dari tipe asal yang sama) mendapat perlakuan seperti kalau mereka itu satu tipe, dan hanya dibutuhkan satu kode saja untuk mengakses keseluruhan tipe yang ada. Metode polymorphism ini memperbolehkan untuk memanggil satu tipe untuk mengekspresikan perbedaannya dari tipe yang lainnya, yang sejenis, selama mereka diturunkan dari tipe asal yang sama. Perbedaan ini diekspresikan melalui perbedaan-perbedaan dalam perilaku dari metoda-metoda yang dapat kita panggil dari class asal.

Dalam pembahasan ini kita akan menjelaskan tentang polymorphism (juga disebut sebagai dynamic binding atau late binding atau run-time binding) mulai dari yang paling dasar, dengan contoh yang membeberkan tentang pengaruh polymophism dalam program yang akan dibuat.

Sebelumnya kita mengetahui kalau sebuah object dapat digunakan sebagai tipenya sendiri atau sebagai object dari tipe asalnya. Mengambil handle sebuah object dan memperlakukannya sebagai handle dari tipe asal disebut sebagai upcasting karena urutan dari cabang-cabang inheritance digambarkan class asal terletak yang paling atas.

Kita juga akan menemui sebuah masalah seperti yang tertera dari kode berikut ini:

//: Music.java

// Inheritance & upcasting

package c07;

class Note {

private int value;

private Note(int val) { value = val; }

public static final Note

middleC = new Note(0),

cSharp = new Note(1),

cFlat = new Note(2);

} // Etc.

class Instrument {

public void play(Note n) {

System.out.println(\"Instrument.play()\");

}

}

// Wind objects are instruments

// because they have the same interface:

class Wind extends Instrument {

// Redefine interface method:

public void play(Note n) {

System.out.println(\"Wind.play()\");

}

}

public class Music {

public static void tune(Instrument i) {

// ...

i.play(Note.middleC);

}

public static void main(String[] args) {

Wind flute = new Wind();

tune(flute); // Upcasting

}

} ///:~

Metode diatas Music.tune() menerima sebuah handle Instrument, tetapi juga segala sesuatunya yang diturunkan dari Instrument. Didalam main(), kita dapat melihat semua ini terjadi sebagai sebuah handle Wind dilewatkan ke tune(), dengan tanpa cast sama sekali. Ini semua masih dapat diterima, interface dari Instrument harus muncul didalam Wind, karena Wind diturunkkan dari Instrument. Upcasting dari Wind ke Instrument bisa membuat “narrow” pada interface tersebut, tapi semua ini tidak dapat mengurangi interface keseluruhan dari Instrument.

Program berikut ini mungkin akan tampak aneh. Mengapa kita secara sengaja melupakan tipe dari sebuah object ? Ini semua dapat terjadi bila kita melakukan upcast, dan menjadikannya kelihatan seperti kalau tune() secara langsung mengambil handle dari Wind sebagai sebuah argumen. Ini semua membuat sesuatu yang mendasar : Kalau kita melakukannya, kita harus menuliskan tune() yang baru untuk setiap Instrument didalam system kita. Anggap saja kita mengikuti alasan ini dan menambahkan instrument Stringed dan Brass :

//: Music2.java

// Overloading instead of upcasting

class Note2 {

private int value;

private Note2(int val) { value = val; }

public static final Note2

middleC = new Note2(0),

cSharp = new Note2(1),

cFlat = new Note2(2);

} // Etc.

class Instrument2 {

public void play(Note2 n) {

System.out.println(\"Instrument2.play()\");

}

}

class Wind2 extends Instrument2 {

public void play(Note2 n) {

System.out.println(\"Wind2.play()\");

}

}

class Stringed2 extends Instrument2 {

public void play(Note2 n) {

System.out.println(\"Stringed2.play()\");

}

}

class Brass2 extends Instrument2 {

public void play(Note2 n) {

System.out.println(\"Brass2.play()\");

}

}

public class Music2 {

public static void tune(Wind2 i) {

i.play(Note2.middleC);

}

public static void tune(Stringed2 i) {

i.play(Note2.middleC);

}

public static void tune(Brass2 i) {

i.play(Note2.middleC);

}

public static void main(String[] args) {

Wind2 flute = new Wind2();

Stringed2 violin = new Stringed2();

Brass2 frenchHorn = new Brass2();

tune(flute); // No upcasting

tune(violin);

tune(frenchHorn);

}

} ///:~

Kode diatas dapat dijalankan, tetapi disana ada kekurangan terbesar. Kita harus menuliskan metoda tipe yang spesifik untuk setiap class Instrument2 yang baru kita tambahkan. Ini semua berarti makin banyak kode yang akan kita tulis, tetapi juga berarti kalau kita ingin menambahkan sebuah metoda baru seperti tune() atau sebuah tipe baru dari Instrument, kita mendapatkan kalau perkerjaan kita makin banyak. Dengan menambahkan fakta bahwa kompiler tidak akan memberikan pesan-pesan kesalahan kalau kita lupa meng overload salah satu dari metoda-metoda kita dan seluruh proses pekerjaan dengan tipe menjadi tidak dapat ditangani.

Bukankah dapat menjadi lebih menyenangkan kalau kita hanya menuliskan satu metoda saja yang dapat mengambil class asal sebagai argumennya, dan bukan dari semua class-class turunannya. Itulah memang lebih memudahkan bila kita melupakan adanya class-class turunan, dan menuliskan kode yang hanya berkomunikasi dengan class asal?

Itulah apa yang disediakan oleh polymorphism. Walau bagaimanapun kebanyakan programmer (yang berasal dari latar belakang prosedural) mempunyai sedikit kesulitan untuk beradaptasi dengan polymorphism.

Jumat, 22 Oktober 2010

CARA MENAMBAH KECEPATAN DOWNLOAD.kumpulan tips

Waktu aku lagi Blogwalking disini, aku nemuin satu artikel yang sangat-sangat menarik untuk di baca. Artikel ini di tulis oleh "Agungosx" sebetulnya Artikel ini aslinya berjudul "Yahoo Messenger jadi-jadian". kenapa kok di bilang "YM jadi-jadian" makanya baca tulisan yang satu ini dulu... Tulisan ini sengaja dipajang disini karena ini sangat berkaitan dengan tips untuk berinternet. Aku pajang tulisan ini tanpa mengurangi dan menambah isi dari tulisan... Silahkan Baca dan terapkan bagi yang mau menerapkannya...

Begitu banyak file yang ada di internet.Mulai dari music,video,operating system sampai data-data backup yang ukurannya luar biasa besar.


Terus apa hubungannya dengan Artikel ini?.
Diinternet kebanyakan orang menghabiskan waktunya untuk mendownload.Jika seorang Newbie mungkin dia akan langsung mengklik link download.dan secara otomatis download manager default browser menanganinya,dan setelah proses download berjalan dia akan melanjutkan browsing-browsing lagi.

Asal kamu tau saja download manager yang ada pada bawaan browser diset pada setingan standard dan membuat proses download menjadi lama

Saat ini banyak sekali software download manager yang menawarkan kecepatan download 400% lebih cepat dari biasanya seprti Dap.Idm,Flasget dan masih banyak lainnya.

Sebenarnya apa sich kelebihannya IDM(Internet Download Manager)
-bisa download video dari youtube dan video sharing lainnya
-Menambah kecepatan download sampai 400%
-Auto Resume (jika koneksi internet terputus dan setelah menyala lagi maka download bisa dilanjutkan kapan saja kamu mau tanpa harus mendownload dari awal.
-Limitasi (pembatasan),jika kamu ingin mendownload sambil browsing ada baiknya kamu mengaktifkan fitur ini, sebagai contoh jika koneksi kamu berkecepatan 40Kbps Limitasi untuk download 30 Kbps dan 10 Kbps sisanya cukup untuk browsing.

Ada kelebihan dari fitur limitasi ini yaitu “bottle neck”.Kamu bisa membayangkan kalau koneksi internet kamu seperti Air yang ada didalam Drum terus dibawah drum itu ada kerannya. Dan ketika keran ditutup maka air akan penuh,setelah keran dibuka air akan mengalir dengan derasnya seperti itulah “bottle neck”.

Untuk mendapatkan bottle neck kamu aktifkan fitur limitasi selama beberapa saat, ya sekitar sejamlah. Sesuai pengalaman penulis, saya pernah mencapai kecepatan 900Kbps lebih. Padahal saya hanya menggunakan koneksi telkomspeedy yang kecepatan maksimalnya 384Kbps.Mengagumkan Bukan!

Tanpa basa-basi langsung saja saya jelaskan Downloader Portabel Rakitan Saya yang saya beri nama Yahoo Messenger Jadi-Jadian

Latar belakang saya membuat IDM Versi portabel adalah karena.Di Waktu saya lagi nge-net di warnet dekat rumah temen. Si Operatornya Nyebelin bener Baru aja install nih program eh dia dah negor ”Mas.ga boleh make IDM nyedot koneksi, kasian yang lain”(dia bisa tau aktivitas computer saya karena pake radmin)

Memang sih saya berpikiran seperti itu tetapi pada saat itu saya lagi butuh koneksi cepet untuk mengambil file dari sekolah saya yang ukurannya lumayan gede.

Maka dari itulah saya buat IDM versi Portabel. Jadi tanpa di-instal tinggal Double Click dan langsung bisa di pake, biar lebih ga mencurigakan icon IDm yang semula berwarna Hijau seperti tombol Play saya ganti dengan iCon Yahoo Messenger, semua nya saya modifikasi sampai bahasanya juga. agar ga kelihatan seperti IDM. Jadi tuh Operator warnet kalo pengen negur mikir dua kali.

Klik disini untuk mendownload Yahoo Messenger Jadi-jadian Gratis kok.

Original Portable Version V. 5.14 buid 4 (1 september 2008).

“Ingat pakai program ini secara bijak, kecuali kalo lagi mepet.”

PROGRAM ANIMASI PADA C++.kumpulan tips

#include
#include
//prosedur untuk menggerakkan kalimat dengan memanfaatkan perintah for
//prosedur gerak1 dari kiri ke kanan
void gerak1()
{
int i,x,y,d;
for(i=1;i<=60;i++)
{
clrscr();
for(d=1;d<=500;d++){gotoxy(i,3);printf("Darma Persada");}
}
}//akhir prosedur gerak1
//prosedur untuk menggerakkan kalimat dengan memanfaatkan perintah for
//prosedur gerak2 dari kanan ke kiri
void gerak2()
{
printf("Belum ada programnya, silahkan dibuat sendiri !");
}//akhir prosedur gerak2
//prosedur untuk menggerakkan kalimat dengan memanfaatkan perintah for
//prosedur gerak3 dari atas ke bawah
void gerak3()
{
int i,x,y,d;
for(i=1;i<=20;i++)
{
clrscr();
for(d=1;d<=500;d++){gotoxy(3,i);printf("Darma Persada");}
}
}//akhir prosedur gerak3
//prosedur untuk menggerakkan kalimat dengan memanfaatkan perintah for
//prosedur gerak4 dari bawah ke atas
void gerak4()
{
printf("Belum ada programnya, silahkan dibuat sendiri !");
}//akhir prosedur gerak4
//PROGRAM UTAMA
int main()
{
int ulang,pil;
ulang=4;
do
{
clrscr();
printf("MENU UTAMA\n");
printf("==========\n");
printf("1. Prosedur gerak1 kiri ke kanan\n");
printf("2. Prosedur gerak2 kanan ke kiri\n");
printf("3. Prosedur gerak3 atas ke bawah\n");
printf("4. Prosedur gerak4 bawah ke atas \n");
printf("5. Selesai\n\n");
printf("Tentukan pilihan anda :");scanf("%d",&pil);
switch(pil)
{
case 1 :
clrscr(); gerak1(); getch();
break;
case 2 :
clrscr(); gerak2(); getch();
break;
case 3 :
clrscr(); gerak3(); getch();
break;
case 4 :
clrscr(); gerak4(); getch();
break;
case 5 :
return(0);
}
}while (ulang!=0);
return(0);
}


untukprogram lebih jelasnya DONLOAT DINI

Tips Memelihara/Merawat Notebook/Laptop Agar Tetap Awet Cara Merawat Notebook/Laptop Agar Tetap Awet.kumpulan tips

Tips Memelihar.a/Merawat Notebook/Laptop Agar Tetap Awet
Cara Merawat Notebook/Laptop Agar Tetap Awet

Jangan remehkan perawatan sebuah notebook / laptop, karena sekali dia bermasalah maka masalah-masalah pekerjaan kita juga akan semakin bertambah. Ikuti trik cara merawat notebook berikut ini agar laptop kamu bebas dari masalah.
Tips Merawat Baterai

* Jangan membongkar, menghancurkan, menusuk, membuka, menjatuhkan, merusak, melakukan hubungan singkat, membuang ke dalam air atau api, atau meletakkan baterai di tempat yang suhunya di atas 60C.
* Isilah baterai sesuai dengan penjelasan yang ada di buku panduan dan hanya di area yang berventilasi.
* Jangan pernah menggunakan adaptor lain dari Adaptor yang telah disediakan di notebook Anda.
* Jangan meninggalkan baterai di tempat yang panas lebih dari satu atau dua hari.
* Jangan membiarkan baterai di notebook Anda lebih dari 1 bulan tanpa menghubungkan dengan adaptor AC.
* Jangan membiarkan baterai di dalam penyimpanan lebih dari 2 bulan tanpa mengisi ulang untuk mencegah over discharger karena akan merusak baterai tersebut.
* Tempatkan baterai yang tidak terpakai dengan baik untuk melindungi lingkungan. Baterai mengandung bahan kimia yang berbahaya, sebaiknya jangan membuangnya dengan sampah rumah tangga atau sampah kantor.

Tips Memaksimalkan Umur Baterai
* Jangan meninggalkan notebook terhubung ke listrik dan tidak terpakai selama beberapa jam.
* Lepaskan baterai jika Anda tidak menggunakan notebook dalam waktu yang lama.
* Pakailah bergantian jika Anda memiliki baterai cadangan.
* Apabila anda bekerja dengan adaptor untuk waktu yang cukup lama, lepaskanlah baterai dari notebook anda.
* Pastikan notebook dalam keadaan mati pada saat mengganti baterai.
* Simpan baterai di tempat kering dan jauhkan dari sinar matahari secara langsung.

Tips Merawat Harddisk

* Selalu backup file data yang ada di harddisk.
* Instal program anti virus untuk mengawasi virus yang dapat merusak file Anda.
* Gunakan scandisk untuk mengoreksi error yang ditemukan di direktori dan File Allocation Table.
* Jangan memindahkan notebook selama harddisk sedang diakses.
* Jangan menggoncangkan harddisk karena dapat membuatnya rusak.
* Gunakan program perawatan harddisk seperti Disk Defragmenter dari Windows berfungsi untuk merapikan data-data yang ada di harddisk.
* Instal password sistem di komputer Anda sehingga orang lain yang tidak dapat menggunakan notebook Anda.

Tips Merawat Kualitas LCD Notebook

* Biarkan penutup notebook dalam keadaan terbuka sekitar 10 menit setelah komputer dimatikan.
* Buatlah manajemen power dari notebook Anda untuk mematikan power LCD dan layar ketika sistem sedang tidak aktif.
* Sebaiknya gunakan screen saver.

Tips Membersihkan Notebook

* Untuk membersihkan pelindung plastik dan keyboard, gunakan kain yang lembut, basahi sedikit dengan deterjen atau cleaning kit.
* Jangan menggunakan alkohol, bahan pelarut petroleum-based, atau deterjen kasar untuk membersihkan notebook.
* Jangan menyemprotkan cairan apapun secara langsung di atas notebook, keyboard, atau layar.
* Bersihkan layar dengan pembersih kaca yang lembut dan bersih secara hati-hati.
* Jangan menggunakan kertas untuk membersihkan layar, kertas dapat menyebabkan goresan.

Tips Perawatan dan Operasi

* Hindarkan notebook dari goncangan atau getaran.
* Jangan meletakkan note-book pada permukan yang tidak rata/stabil.
* Jangan meletakkan apa-pun yang berat di atas notebook.
* Hindarkan notebook dari panas yang berlebihan atau terkena sinar matahari langsung.
* Jangan meletakkan notebook pada tempat dimana benda asing atau uap yang lembab bisa mempengaruhi sistemnya.
* Jangan menggunakan atau menyimpan notebook di tempat yang lembab.
* Jangan meletakkan notebook di tempat yang bisa menutupi ventilasinya.
* Jangan mematikan powernya sampai Anda sudah menutup semua program dengan benar.
* Jangan mematikan perangkat peripheral apapun selama Anda notebook sedang menyala.
* Jangan melepas perangkat notebook sendiri.
* Lakukan perawatan rutin pada notebook Anda.
* Lepaskan kabel power sebelum memasang perangkat peripheral
* Satu lagi yang tak kalah penting, baca habis manual notebook yang diberikan produsen notebook anda, sering2 lihat review dan support dari website tentang notebook anda.

SEJARAH LINUK UBUNTU.kumpulan tips

Sejarah Linux

Ubuntu adalah salah satu distribusi Linux yang berbasiskan pada Debian dan memiliki interface desktop. Proyek Ubuntu disponsori oleh Canonical Ltd (perusahaan milik Mark Shuttleworth).

http://media.arstechnica.com/news.media/mark_keynote.png

Nama Ubuntu diambil dari nama sebuah konsep ideologi di Afrika Selatan. “Ubuntu” berasal dari bahasa kuno Afrika, yang berarti “rasa perikemanusian terhadap sesama manusia”. Ubuntu juga bisa berarti “aku adalah aku karena keberadaan kita semua”. Tujuan dari distribusi Linux Ubuntu adalah membawa semangat yang terkandung di dalam Ubuntu ke dalam dunia perangkat lunak.

3. Mengapa harus Ubuntu?

Ubuntu adalah [sistem operasi] lengkap berbasis Linux, tersedia secara bebas dan mempunyai dukungan baik yang berasal dari komunitas maupun tenaga ahli profesional.

Komunitas Ubuntu dibentuk berdasarkan gagasan yang terdapat di dalam filosofi Ubuntu:

* bahwa perangkat lunak harus tersedia dengan bebas biaya
* bahwa aplikasi perangkat lunak tersebut harus dapat digunakan dalam bahasa lokal masing-masing dan untuk orang-orang yang mempunyai keterbatasan fisik, dan
* bahwa pengguna harus mempunyai kebebasan untuk mengubah perangkat lunak sesuai dengan apa yang mereka butuhkan.

Perihal kebebasan inilah yang membuat Ubuntu berbeda dari perangkat lunak berpemilik (proprietary); bukan hanya peralatan yang Anda butuhkan tersedia secara bebas biaya, tetapi Anda juga mempunyai hak untuk memodifikasi perangkat lunak Anda sampai perangkat lunak tersebut bekerja sesuai dengan yang Anda inginkan.

KUMPULAN SERIAL NUMBER IDM.kumpulan tips

1.idm v 5.14 :
SN = Y30OZ-DNQH7-FRWPW-YYZMA
2.idm v 5.18 :
SN =SV8SX-FAFRT-0HZGT-6UG7S
SN =YGF6Z-EHXJ3-GXSKJ-5XI8B
SN =BBY1Q-XPXXW-793UP-HPMLZ
SN =098EM-6F1D5-FUT6O-3D0Q0
SN =AMX7L-7B4Y3-P3OQK-HKFXT
SN =UGLHD-J7QXS-U0CFU-AUDA0
SN =Z7CBC-4DKD9-VVZE8-I1EA2
SN =N5L02-1XWC4-ES3SA-WI8O9
SN =8VIGV-K6TJI-Z4Q0R-1YSKK
SN =GC1JH-QWT26-1DJJR-KLHDY
SN =TE78G-A9DU5-ZF5J2-CWFN0
SN =88Q6A-BF2G9-GKU3M-WGTZ2
SN =OR77C-WH4AQ-PU0PH-6E9LF

cara menyadap sms.kumpulan tips

ini adalah trik untuk menyadap ponsel, bisa anda gunakan sebagai mata-mata untuk pacar biar tidak selingkuh.
hehehehehehe .
oke langsung saja.
syarat:
# HP adalah HP symbian. Baik HP anda maupun HP teman anda.
# Merek NOKIA
# Memiliki aplikasi simbyan smsanywherelite.sis
hp korban juga harus sama yah punya aplikasi simbyan smsanywherelite.sis
Ikuti instruksi berikut ini untuk menyadap dan sadap sms hp :

1. download smsanywherelite.sis untuk software menyadap.
direct link :
DOWNLOAD
kalau tidak bisa disitu, silahkan download di :
DOWNLOAD
2. Masukkan aplikasi symbian itu di HP anda dan korban
3. Begitu aplikasi ini diinstal, kamu tidak bisa melihat program maupun ikon aplikasi itu dalam ponsel. Seluruh pengontrolannya harus lewat sms, mulai dari pengaktifan dan mematikan program, mengubah password, hingga pengiriman sms ke ponsel lain. Tapi justru itu keuntungannya jika digunakan sebagai alat sadap. Berarti sang target kan tidak tahu kalau diponselnya telah dipasangi aplikasi tersebut. Justru itu, teman anda tidak akan tahu kan kalo smsnya disadap? Karena aplikasi symbian ini belum mendukung GUI (Graphics User Interface).
4. Siapkan hp/ponsel korban anda
5. Siapkan HP anda yang akan menerima sms masuk dari korban anda.
6. Aktifkan aplikasi ini di ponsel korban kamu dengan mengetik format sms -[ SA(spasi)(password)(spasi)ON ]-. Panjang password maksimal 8 karakter. Misal, jika password kamu adalah 123456, ketikkan SA 123456 ON kirim sms ini ke nomor ponsel kedua/ponsel kamu. Untuk mematikannya, ketik SA 123456 OFF ke nomor yang sama.
7. Lalu, jika anda ingin menyadap lebih dari 5 hari..atau setiap sms masuk di hp korban akan selalu diteruskan ke hp anda, ketik sms ini di hp korban anda : SA(spasi)(password)(spasi)R1, misal SA 1234567 R1. Untuk mematikan fungsi ini ganti parameter di belakang “R” menjadi nol. Jadi, tuliskan SA 1234567 R0. Sedangkan untuk meneruskan setiap sms keluar, kirim sms bertuliskan SA 1234567 S1 ke nomer kamu. Matikan fungsi ini dengan mengirim SMS SA 1234567 S0
8. Sekarang, setiap korban menerima dan mengirim sms..kamu akan mendapat terusannya sama persis dengan sms aslinya 36
selamat mencoba . . .



gunakan hal ini dengan bijak
ads Tukar Link
>>>>TERIMA KASIH ANDA TELAH BERKUNJUNG DI BLOG SUGIK>>>>>
 
Copyright (c) sugik boy - dunia info di dukung oleh kumpulan tugas kuliah - di seponsori oleh kumpullbloger