Saturday, September 12, 2015

How do I get Java for Embedded Devices


Java for embedded devices (Java Embedded) is generally integrated by the device manufacturers. It is NOT available for download or installation by consumers. You need to check with your device manufacturer about availability of this technology in your device.
Embedded devices, or embedded systems, are specialized computer systems that constitute components of larger electromechanical systems with which they interface. These can range from the tiny chips on your office identification card or credit card, to components of very larger server class systems. Many of the sophisticated and connected devices supporting our daily activities are "embedded devices". Some common examples include SIM cards, VOIP phones, Blu-ray Disc players, televisions, utility meters, healthcare gateways, industrial controls, and countless other devices. Oracle's Java Embedded technologies provide the software development platform and runtime for billions of these embedded devices.
Developers should refer to the Oracle Technology Network (OTN) for more information about Java Embedded technologies and Oracle's Java Embedded solutions. Oracle offers a variety of Java Embedded products that allow you to develop highly functional, reliable, portable, and secure solutions for small to large embedded devices while reducing costs, improving product quality, and speeding time to market.

Wednesday, September 9, 2015

Defining a database

All this data needs to reside somewhere; specifically, within a database.
Databases are complex software programs that catalog and provide access to
data. Although the data is usually stored on a disk storage system, the database
software manages how that data is stored and managed.
Businesses use databases to store their data because the size and complexity
of their data often exceed what can be stored on a spreadsheet. Most business
and scientific activities, and many social activities involving technology
will require the creation, access, updating, or deleting of data at some level.
It is database software that allows these activities occur in a fast, efficient
manner.

Sunday, August 30, 2015

Intel Develops Programming Language For Multi-Core Computers

The language is an extension of C/C++, which are very familiar to software developers getting applications ready to run on Intel or AMD platforms.

As Intel and rival Advanced Micro Devices increase computer performance by adding cores to microprocessors, software makers are left with the daunting task of writing applications that take full advantage of the complex environment. Intel hopes to lend a hand through a new programming language -- called Ct -- the chipmaker has developed specifically for multi-core computing.
Ct was among the dozens of projects Intel had on display Wednesday at the Computer History Museum, Mountain View, Calif. While most of the technology demonstrated at the open house for Intel labs is years away from being productized, Ct is relatively close.
The language is an extension of C/C++, which are very familiar to software developers getting applications ready to run on Intel or AMD platforms. Where the languages require developers to manually partition code to run on specific cores, Ct does it automatically. "With Ct, it's almost like you're writing to a single-core machine," Mohan Rajagopalan, a senior researcher for Intel, said. "You leave it to the compiler and runtime to parallelize."

The Ct compiler developed by Intel chops up the code to run on separate cores based on the type of data and the operation being performed on the data, Rajagopalan said. Intel also has developed the runtime and an API for the compiler.
Most C/C++ programmers should be able to pick up Ct quickly, since less than 5% of the language will be new, according to Rajagopalan. In addition, programs compiled in Ct can scale to as many cores as are available. "Once the code is compiled, the runtime figures out the platform and adjusts accordingly," Rajagopalan said.
Intel is working with independent software vendors in developing the documentation and support that will be needed to adopt Ct. Intel has yet to decide whether to release the language to the open source community or take another route in distributing it. "We have the technology in place, so it's now about adoption," Rajagopalan said.
Among the developers that would find Ct particularly helpful will be those making financial analytics applications and software that performs lots of image processing or video decoding.

Subview and Superview(IOS 8)

A view (an object whose class is UIView or a subclass of UIView) knows how to draw
itself into a rectangular area of the interface. Your app has a visible interface thanks to
views. Creating and configuring a view can be extremely simple: “Set it and forget it.”
For example, you can drag an interface object, such as a UIButton, into a view in the
nib editor; when the app runs, the button appears, and works properly. But you can also
manipulate views in powerful ways, in real time. Your code can do some or all of the
view’s drawing of itself  it can make the view appear and disappear, move,
resize itself, and display many other physical changes, possibly with animation


Because view objects are the main way your application interacts with the user, they have many responsibilities. Here are just a few:
  • Layout and subview management
    • A view defines its own default resizing behaviors in relation to its parent view.
    • A view can manage a list of subviews.
    • A view can override the size and position of its subviews as needed.
    • A view can convert points in its coordinate system to the coordinate systems of other views or the window.
  • Drawing and animation
    • A view draws content in its rectangular area.
    • Some view properties can be animated to new values.
  • Event handling
    • A view can receive touch events.
    • A view participates in the responder chain.

Thursday, August 27, 2015

8051 Microcontroller

is a Harvard architecture, CISC instruction set, single chip microcontroller (µC) series which was developed by Intel in 1980 for use in embedded systems. Intel's original versions were popular in the 1980s and early 1990s and enhanced binary compatible derivatives remain popular today.
The Intel 8051 microcontroller is one of the most popular general purpose microcontrollers in use today. The success of the Intel 8051 spawned a number of clones which are collectively referred to as the MCS-51 family of microcontrollers, which includes chips from vendors such as Atmel, Philips, Infineon, and Texas Instruments.


The Intel 8051 is an 8-bit microcontroller which means that most available operations are limited to 8 bits. There are 3 basic "sizes" of the 8051: Short, Standard, and Extended. The Short and Standard chips are often available in DIP (dual in-line package) form, but the Extended 8051 models often have a different form factor, and are not "drop-in compatible". All these things are called 8051 because they can all be programmed using 8051 assembly language, and they all share certain features (although the different models all have their own special features).
Some of the features that have made the 8051 popular are:
  • 4 KB on chip program memory.
  • 128 bytes on chip data memory(RAM)
[ 32 bank reg + 16 bit addressable reg + 80 general purpose reg ]
  • 4 reg banks.
  • 128 user defined software flags.
  • 8-bit data bus
  • 16-bit address bus
  • 16 bit timers (usually 2, but may have more, or less).
  • 3 internal and 2 external interrupts.
  • Bit as well as byte addressable RAM area of 16 bytes.
  • Four 8-bit ports, (short models have two 8-bit ports).
  • 16-bit program counter and data pointer.
  • 1 Microsecond instruction cycle with 12 MHz Crystal.
8051 models may also have a number of special, model-specific features, such as UART, ADC, Op_Amps, etc... it is a very powerful micro controller.

Wednesday, August 26, 2015

The Advantages of MATLAB for Problem Solving

MATLAB has many advantages compared to conventional computer languages
for technical problem solving. Among them are:
1. Ease of Use. MATLAB is very easy to use. The program can be used as
a scratch pad to evaluate expressions typed at the command line, or it can
be used to execute large pre-written programs. Programs may be easily
written and modified with the built-in integrated development environment,
and debugged with the MATLAB debugger. Because the language
is so easy to use, it is ideal for educational use, and for the rapid prototyping
of new programs.
Many program development tools are provided to make the program
easy to use. They include an integrated editor / debugger, on-line documentation
and manuals, a workspace browser, and extensive demos.
2. Platform Independence. MATLAB is supported on many different computer
systems, providing a large measure of platform independence. At
the time of this writing, the language is supported on Windows
XP/Vista/7, Linux, Unix, and the Macintosh. Programs written on any
platform will run on all of the other platforms, and data files written on
any platform may be read transparently on any other platform. As a result,
programs written in MATLAB can migrate to new platforms when the
needs of the user change.
3. Pre-defined Functions. MATLAB comes complete with an extensive
library of pre-defined functions that provide tested and pre-packaged
solutions to many basic technical tasks. For example, suppose that you are
writing a program that must calculate the statistics associated with an
input data set. In most languages, you would need to write your own subroutines
or functions to implement calculations such as the arithmetic
mean, standard deviation, median, etc. These and hundreds of other functions
are built right into the MATLAB language, making your job much
easier.
The built-in functions can solve an astonishing range of problems,
such as solving systems of simultaneous equations, sorting, plotting, finding
roots of equations, numerical integration, curve fitting, solving ordinary
and partial differential equations, and much, much more.
In addition to the large library of functions built into the basic MATLAB
language, there are many special-purpose toolboxes available to help
solve complex problems in specific areas. For example, a user can buy
standard toolboxes to solve problems in Signal Processing, Control
Systems, Communications, Image Processing, and Neural Networks,
among many others.
4. Device-Independent Plotting. Unlike other computer languages, MATLAB
has many integral plotting and imaging commands. The plots and
images can be displayed on any graphical output device supported by
the computer on which MATLAB is running. This capability makes
MATLAB an outstanding tool for visualizing technical data. Plotting is
introduced in Chapter 2, and covered extensively in Chapters 3 and 8.
Advanced features such as animations and movies are covered in
Chapter 10.
5. Graphical User Interface. MATLAB includes tools that allow a program
to interactively construct a Graphical User Interface (GUI) for his
or her program. With this capability, the programmer can design sophisticated
data analysis programs that can be operated by relatively-inexperienced

Friday, August 21, 2015

HTTP and HTML: Berners-Lee’s Basics


HTTP is a communication standard governing the requests and responses that take
place between the browser running on the end user’s computer and the web server. The
server’s job is to accept a request from the client and attempt to reply to it in a meaningful
way, usually by serving up a requested web page—that’s why the term server is used. The
natural counterpart to a server is a client, so that term is applied both to the web browser
and the computer on which it’s running.
Between the client and the server there can be several other devices, such as routers,
proxies, gateways, and so on. They serve different roles in ensuring that the requests
and responses are correctly transferred between the client and server. Typically, they
use the Internet to send this information.
A web server can usually handle multiple simultaneous connections and—when not
communicating with a client—spends its time listening for an incoming connection.
When one arrives, the server sends back a response to confirm its receipt.
The Request/Response Procedure
At its most basic level, the request/response process consists of a web browser asking
the web server to send it a web page and the server sending back the page. The browser
then takes care of displaying the page (see Figure 1-1).
Each step in the request and response sequence is as follows:
1. You enter http://server.com into your browser’s address bar.
2. Your browser looks up the IP address for server.com.
3. Your browser issues a request for the home page at server.com.
4. The request crosses the Internet and arrives at the server.com web server.
5. The web server, having received the request, looks for the web page on its hard disk.
6. The web page is retrieved by the server and returned to the browser.
7. Your browser displays the web page.
For an average web page, this process takes place once for each object within the page:
a graphic, an embedded video or Flash file, and even a CSS template.
In step 2, notice that the browser looked up the IP address of server.com. Every machine
attached to the Internet has an IP address—your computer included. But we generally
access web servers by name, such as google.com. As you probably know, the browser
consults an additional Internet service called the Domain Name Service (DNS) to find
its associated IP address and then uses it to communicate with the computer.
For dynamic web pages, the procedure is a little more involved, because it may bring
both PHP and MySQL into the mix (see Figure 1-2).
Here are the steps for a dynamic client/server request/response sequence:
1. You enter http://server.com into your browser’s address bar.
2. Your browser looks up the IP address for server.com.
3. Your browser issues a request to that address for the web server’s home page.
4. The request crosses the Internet and arrives at the server.com web server.
5. The web server, having received the request, fetches the home page from its hard
disk.
6. With the home page now in memory, the web server notices that it is a file incorporating
PHP scripting and passes the page to the PHP interpreter.
7. The PHP interpreter executes the PHP code.
8. Some of the PHP contains MySQL statements, which the PHP interpreter now
passes to the MySQL database engine.
9. The MySQL database returns the results of the statements back to the PHP
interpreter.
10. The PHP interpreter returns the results of the executed PHP code, along with the
results from the MySQL database, to the web server.
11. The web server returns the page to the requesting client, which displays it.
Although it’s helpful to be aware of this process so that you know how the three elements
work together, in practice you don’t really need to concern yourself with these details,
because they all happen automatically.
HTML pages returned to the browser in each example may well contain JavaScript,
which will be interpreted locally by the client, and which could initiate another request—
the same way embedded objects such as images would.
The Benefits of PHP, MySQL, JavaScript, CSS,

Wednesday, August 19, 2015

Preliminaries

In a computer, the driver is a set of instructions called a program. More formally, a
computer program is a self-contained set of instructions used to operate a computer to produce
a specific result.
At its most basic level, a program is a solution developed to solve a particular problem,
written in a form that can be executed on a computer. Therefore, writing a program is almost
the last step in a process that first determines the problem to be solved and the method to be
used in the solution. Each field of study has its own name for the systematic method of designing
solutions to solve problems. In science and engineering, the approach is referred to as the
scientific method, and in quantitative analysis, the approach is called the systems approach.
Professional software developers use the software development procedure for understanding
the problem to be solved and for creating an effective, appropriate software solution. This
procedure, illustrated.
 Phase I: Development and Design
Phase I begins with a statement of a problem or a specific request for a program, which is
referred to as a program requirement. After a problem has been stated or a specific request for
a program solution has been made, the development and design phase begins. This phase
consists of four well-defined steps, illustrated in Figure 1.3
 Step 1: Analyze the Problem The analysis of a problem can consist of up to two parts. The
first part is a basic analysis that must be performed on all problems; it consists of extracting
the complete input and output information supplied by the problems. For this analysis,
you must
1. Determine and understand the output items the program must produce.
2. Determine the input items.
Together, these two items are referred to as the problem’s input/output (I/O). Only after
determining a problem’s I/O can you select specific steps for transforming inputs into outputs.
At this point, doing a hand calculation to verify that the output(s) can indeed be obtained from
the inputs is sometimes necessary and/or useful. Clearly, if you have a formula that relates
inputs to the output, you can omit this step. If the required inputs are available and the desired
outputs can be produced, the problem is said to be clearly defined and can be solved.
For a variety of reasons, completing a basic analysis might not be possible. If so, an
extended analysis might be necessary. An extended analysis simply means you must gather
more information about the problem so that you thoroughly understand what’s being asked for
and how to achieve the result. In this book, any additional information required to understand
the problem is supplied along with the problem statement.
Step 2: Develop a Solution In this step, you select the exact set of steps, called an
“ algorithm,” to be used to solve the problem. Typically, you find the solution by a series of
refinements, starting with the initial solution you find in the analysis step, until you have an
acceptable and complete solution. This solution must be checked, if it wasn’t done in the
analysis step, to make sure it produces the required outputs correctly. The check is usually
carried out by doing one or more hand calculations that haven’t been done already.
For small programs, the selected solution might be extremely simple and consist of only
one or more calculations. More typically, you need to refine the initial solution and organize it
into smaller subsystems, with specifications for how the subsystems interface with each other.
To achieve this goal, the solution’s description starts from the highest level (top) requirement
and proceeds downward to the parts that must be constructed to meet this requirement. To
make this explanation more meaningful, consider a computer program that must track the



Tuesday, August 18, 2015

C++

C++ is a compiled language. For a program to run, its source text has to be processed by a compiler,
producing object files, which are combined by a linker yielding an executable program. A
C++ program typically consists of many source code files (usually simply called source files).
compiler
Computers understand only one language and that language consists of sets of instructions made of ones and zeros. This computer language is appropriately called machine language.

A single instruction to a computer could look like this:


0000010011110

A particular computer's machine language program that allows a user to input two numbers, adds the two numbers together, and displays the total could include these machine code instructions:

0000010011110
0000111110100
0001010011110
0001111010100
0010010111111
0010100000000

As you can imagine, programming a computer directly in machine language using only ones and zeros is very tedious and error prone. To make programming easier, high level languages have been developed. High level programs also make it easier for programmers to inspect and understand each other's programs easier.

link
 refers to the creation of a single executable file from multiple object files. In this step, it is common that the linker will complain about undefined functions (commonly, main itself). During compilation, if the compiler could not find the definition for a particular function, it would just assume that the function was defined in another file. If this isn't the case, there's no way the compiler would know -- it doesn't look at the contents of more than one file at a time. The linker, on the other hand, may look at multiple files and try to find references for the functions that weren't mentioned.
 An executable program is created for a specific hardware/system combination; it is not portable,
say, from a Mac to a Windows PC. When we talk about portability of C++ programs, we usually
mean portability of source code; that is, the source code can be successfully compiled and run on a
variety of systems.

The ISO C++ standard defines two kinds of entities:

• Core language features, such as built-in types (e.g., char and int) and loops (e.g., for-statements
and while-statements)
• Standard-library components, such as containers (e.g., vector and map) and I/O operations
(e.g., << and getline())
The standard-library components are perfectly ordinary C++ code provided by every C++ implementation.
That is, the C++ standard library can be implemented in C++ itself (and is with very
minor uses of machine code for things such as thread context switching). This implies that C++ is
sufficiently expressive and efficient for the most demanding systems programming tasks.
C++ is a statically typed language. That is, the type of every entity (e.g., object, value, name,
and expression) must be known to the compiler at its point of use. The type of an object determines
the set of operations applicable to it.

Monday, August 17, 2015

THE BASICS OF WEB HACKING: OUR APPROACH


Our approach is made up of four phases that cover all the necessary tasks during
an attack.
1. Reconnaissance
2. Scanning
3. Exploitation
4. Fix
It’s appropriate to introduce and discuss how these vulnerabilities and attacks
can be mitigated, thus there is a fix phase to our approach. As a penetration tester
or ethical hacker, you will get several questions after the fact related to how
the discovered vulnerabilities can be fixed. Consider the inclusion of the fix
phase to be a resource to help answer those questions.
Our Targets
Our approach targets three separate, yet related attack vectors: the web server, the
web application, and the web user. For the purpose of this book, we will define
each of these attack vectors as follows:
1. Web server: the application running on an operating system that is hosting
the web application. We are NOT talking about traditional computer hardware
here, but rather the services running on open ports that allow a web
application to be reached by users’ internet browsers. The web server may be
vulnerable to network hacking attempts targeting these services in order to
gain unauthorized access to the web server’s file structure and system files.
2. Web application: the actual source code running on the web server that provides
the functionality that web users interact with is the most popular
target for web hackers. The web application may be susceptible to a vast collection
of attacks that attempt to perform unauthorized actions within the
web application.
3. Web user: the internal users that manage the web application (administrators
and programmers) and the external users (human clients or customers) of the
web applications are worthy targets of attacks. This is where a cross-site scripting
(XSS) or cross-site request forgery (CSRF) vulnerabilities in the web application
rear their ugly heads. Technical social engineering attacks that target web users
and rely on no existing web application vulnerabilities are also applicable here.
The vulnerabilities, exploits, and payloads are unique for each of these targets,
so unique tools and techniques are needed to efficiently attack each of them.
Our Tools
For every tool used in this book, there are probably five other tools that can do
the same job. (The same goes for methods, too.) We’ll emphasize the tools that
are the most applicable to beginner web hackers. We recommend these tools not
because they’re easy for beginners to use, but because they’re fundamental tools
that virtually every professional penetration tester uses on a regular basis. It’s
paramount that you learn to use them from the very first day. Some of the tools
that we’ll be using include:
■ Burp Suite, which includes a host of top-notch web hacking tools, is a musthave
for any web hacker and it’s widely accepted as the #1 web hacking tool
collection.
■ Zed Attack Proxy (ZAP) is similar to Burp Suite, but also includes a free vulnerability
scanner that’s applicable to web applications.
■ Network hacking tools such as Nmap for port scanning, Nessus and Nikto for
vulnerability scanning, and Metasploit for exploitation of the web server.
■ And other tools that fill a specific role such as sqlmap for SQL injection,
John the Ripper (JtR) for offline password cracking, and the Social Engineering
Toolkit (SET) for technical social engineering attacks against web users!

Noteworthy HTTP Headers


Each HTTP cycle also includes headers in both the client request and the server
response that transmit details about the request or response. There are several of
these headers, but we are only concerned with a few that are most applicable to
our approach covered in this book.
The headers that we are concerned about that are set by the web server and sent
to the client’s browser as part of the response cycle are:
■ Set-Cookie: This header most commonly provides the session identifier
(cookie) to the client to ensure the user’s session stays current. If a hacker can
steal a user’s session (by leveraging attacks covered in later chapters), they
can assume the identity of the exploited user within the application.
■ Content-Length: This header’s value is the length of the response body in
bytes. This header is helpful to hackers because you can look for variation
in the number of bytes of the response to help decipher the application’s
response to input. This is especially applicable when conducting brute force
(repetitive guessing) attacks.
■ Location: This header is used when an application redirects a user to a new page.
This is helpful to a hacker because it can be used to help identify pages that are
only allowed after successfully authenticating to the application, for example.

The headers that you should know more about that are sent by the client’s
browser as part of the web request are:
■ Cookie: This header sends the cookie (or several cookies) back to the server
to maintain the user’s session. This cookie header value should always match
the value of the set-cookie header that was issued by the server. This header is
helpful to hackers because it may provide a valid session with the application
that can be used in attacks against other application users. Other cookies are
not as juicy, such as a cookie that sets your desired language as English.
■ Referrer: This header lists the webpage that the user was previously on when
the next web request was made. Think of this header as storing the “the
last page visited.” This is helpful to hackers because this value can be easily
changed. Thus, if the application is relying on this header for any sense of
security, it can easily be bypassed with a forged value.

Noteworthy HTTP Status Codes
As web server responses are received by your browser, they will include a status
code to signal what type of response it is. There are over 50 numerical HTTP
response codes grouped into five families that provide similar type of status
codes. Knowing what each type of response family represents allows you to gain
an understanding of how your input was processed by the application.
■ 100s: These responses are purely informational from the web server and usually
mean that additional responses from the web server are forthcoming.
These are rarely seen in modern web server responses and are usually followed
close after with another type of response introduced below.
■ 200s: These responses signal the client’s request was successfully accepted
and processed by the web server and the response has been sent back to your
browser. The most common HTTP status code is 200 OK.
■ 300s: These responses are used to signal redirection where additional
responses will be sent to the client. The most common implementation of
this is to redirect a user’s browser to a secure homepage after successfully
authenticating to the web application. This would actually be a 302 Redirect
to send another response that would be delivered with a 200 OK.
■ 400s: These responses are used to signal an error in the request from the
client.
This means the user has sent a request that can’t be processed by the
web application, thus one of these common status codes is returned: 401
Unauthorized, 403 Forbidden, and 404 Not Found.
■ 500s: These responses are used to signal an error on the server side. The most
common status codes used in this family are the 500 Internal Server Error
and 503 Service Unavailable.
Full details on all of the HTTP status codes can be reviewed in greater detail at
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.

Usual Arithmetic Conversions

 Most C operators perform type conversions to bring the operands of an expression to a common type or to extend short values to the integer size used in machine operations. The conversions performed by C operators depend on the specific operator and the type of the operand or operands. However, many operators perform similar conversions on operands of integral and floating types. These conversions are known as "arithmetic conversions." Conversion of an operand value to a compatible type causes no change to its value.

These conversions are performed on the operands of a binary operator to bring them to a common
type, which is then used as the type of the result:
[1] If either operand is of type long double, the other is converted to long double.
• Otherwise, if either operand is double, the other is converted to double.
• Otherwise, if either operand is float, the other is converted to float.
• Otherwise, integral promotions (§10.5.1) are performed on both operands.
[2] Otherwise, if either operand is unsigned long long, the other is converted to unsigned long
long.

• Otherwise, if one operand is a long long int and the other is an unsigned long int, then
if a long long int can represent all the values of an unsigned long int, the unsigned long
int is converted to a long long int; otherwise, both operands are converted to unsigned
long long int. Otherwise, if either operand is unsigned long long, the other is converted
to unsigned long long.
• Otherwise, if one operand is a long int and the other is an unsigned int, then if a long
int can represent all the values of an unsigned int, the unsigned int is converted to a
long int; otherwise, both operands are converted to unsigned long int.
• Otherwise, if either operand is long, the other is converted to long.
• Otherwise, if either operand is unsigned, the other is converted to unsigned.
• Otherwise, both operands are int.
These rules make the result of converting an unsigned integer to a signed one of possibly larger size
implementation-defined. That is yet another reason to avoid mixing unsigned and signed integers.

Sunday, August 16, 2015

Synchronous Ethernet and IEEE 1588 in Telecommunications

would wireless mobile (based on technologies such as global system for mobile
communications (GSM), code division multiple access (CDMA) and LTE)
communications work without synchronization? Clearly it would not and Qualityof-
Service issues would arise if it were not considered.
Quality-of-Service and synchronization have always had close links. This has
been true in the TDM world where accurate synchronization is required to limit the
occurrence of slips.
Synchronization is still needed today and in future for mobile applications and
networks:
– to stabilize the radio frequencies used by the mobile base station;
– to allow efficient spectrum usage;
– to avoid radio interference between neighboring cells;
– to allow seamless hand over between cells.
Poor synchronization within a telecommunications network may have important
impacts on the end user:
– The communication can degrade (voice communication can become
inaudible).
– The throughput of data connections in the networks can reduce.
– The network’s connections (in the case of the internet) might even be totally
lost.
– In the case of mobile communications, hand over between cells could fail and
quality of experience degrade.
Ensuring a proper design for a synchronization network

Programming Style

Languages features exist to provide support for programming styles. Please don’t look at an individual
language feature as a solution, but as one building brick from a varied set which can be combined
to express solutions.
The general ideals for design and programming can be expressed simply:
• Express ideas directly in code.
• Express independent ideas independently in code.
• Represent relationships among ideas directly in code.
• Combine ideas expressed in code freely – where and only where combinations make sense.
• Express simple ideas simply.
These are ideals shared by many people, but languages designed to support them can differ dramatically.

The C++ language features most directly support four programming styles:
• Procedural programming
• Data abstraction
• Object-oriented programming
• Generic programming
However, the emphasis is on the support of effective combinations of those. The best (most maintainable,
most readable, smallest, fastest, etc.) solution to most nontrivial problems tends to be one
that combines aspects of these styles.
My ideal is language facilities that can be used elegantly in combination to support a continuum
of programming styles and a wide variety of programming techniques.
• Procedural programming: This is programming focused on processing and the design of
suitable data structures. It is what C was designed to support (and Algol, and Fortran, as
well as many other languages). C++’s support comes in the form of the built-in types, operators,
statements, functions, structs, unions, etc. With minor exceptions, C is a subset of
C++. Compared to C, C++ provides further support for procedural programming in the
form of many additional language constructs and a stricter, more flexible, and more supportiv
e type system.
• Data abstraction: This is programming focused on the design of interfaces, hiding implementation
details in general and representations in particular. C++ supports concrete and
abstract classes. The facilities for defining classes with private implementation details, constructors
and destructors, and associated operations directly support this. The notion of an
abstract class provides direct support for complete data hiding.
• Object-oriented programming: This is programming focused on the design, implementation,
and use of class hierarchies. In addition to allowing the definition lattices of classes, C++
provides a variety of features for navigating class lattices and for simplifying the definition
of a class out of existing ones. Class hierarchies provide run-time polymorphism (§20.3.2,
§21.2) and encapsulation (§20.4, §20.5).
• Generic programming: This is programming focused on the design, implementation, and use
of general algorithms. Here, ‘‘general’’ means that an algorithm can be designed to accept a
wide variety of types as long as they meet the algorithm’s requirements on its arguments.
The template is C++’s main support for generic programming. Templates provide (compiletime)
parametric polymorphism.
Just about anything that increases the flexibility or efficiency of classes improves the support of all
of those styles. Thus, C++ could be (and has been) called class oriented.
Each of these styles of design and programming has contributed to the synthesis that is C++.
Focusing exclusively on one of these styles is a mistake: except for toy examples, doing so leads to
wasted development effort and suboptimal (inflexible, verbose, poorly performing, unmaintainable,
etc.) code.

Friday, August 14, 2015

JAVASCRIPT HOW ITS WORK

JavaScript is fairly unique in the programming world. With your typical
programming language you have to write it, compile it, link it and deploy
it. JavaScript is much more fluid and flexible. With JavaScript all you
need to do is write JavaScript right into your page, and then load it into a
browser. From there, the browser will happily begin executing your code.

His first did in programming relationships between C # and java


have seen among the programming and integration that collaborative work but day kept going evident that it has collaborated with c # java.
what does c # and java what

C#
  is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines. It was developed by Microsoft within its .NET initiative and later approved as a standard by Ecma (ECMA-334) and ISO (ISO/IEC 23270:2006). C# is one of the programming languages designed for the Common Language Infrastructure.
     FAMILY OF C
JAVA
Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA),meaning that compiled Java code can run on all platforms that support Java without the need for recompilation.

This article compares the C# programming language with the Java programming language. While the focus of this article is mainly the programming languages and their features, such a comparison will necessarily also consider some platform features and some library features. For a more detailed comparison of the platforms, please see Comparison of the Java and .NET platforms.

Java and C# are similar programming languages that are statically, strongly, and manifestly typed, both are class-based object-oriented, both are designed with semi-interpretation or runtime compilation in mind, both use garbage-collection, and both are "curly brace languages" like C and C++.

Java Related to C#

 

  1. After the creation of Java, Microsoft developed the C# language and C# is closely related to Java.
  2. Many of C#’s features directly parallel Java. Both Java and C# share the same general C++-style syntax, support distributed programming, and utilize the same object model.
  3. Though there are some differences between Java and C#, but the overall feel of these languages is very similar.
  4. If you already know C#, then learning Java will be easy and vice versa
  5. Java and C# are optimized for two different types of computing environments.
  6. C# and Java Both Languages are drew from C++.
  7. Both Languages are capable of creating cross platform portable program code.

Tuesday, August 11, 2015

PROGRAMMING(PROCESSING)


Open-source language and environment for learning the fundamentals of electronic art and computer programming paradigm that separates the concerns of data structures and the concurrent processes that act upon them.open source programming language and environment for people who want to create images, animations, and interactions

 Processing is an open source programming language and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching the fundamentals of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks. The project was initiated in 2001 by Casey Reas and Benjamin Fry, both formerly of the Aesthetics and Computation Group at the MIT Media Lab. One of the stated aims of Processing is to act as a tool to get non-programmers started with programming, through the instant gratification of visual feedback. The language builds on the Java language, but uses a simplified syntax and graphics programming model.

programming(modeling )

A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure.

Modeling and Programming

Modeling and programming are often considered two different things. Programming languages are (perceived to be) different from modeling languages. DSLs are different from GPLs. But are they? Should there be a difference between the two worlds? How closely should the two approaches be integrated? In this talk I will argue that programming and modeling are really essentially the same thing; they are only different in terms of the abstraction level



 Finally we will also perhaps agree that software engineering is some kind of composite engineering encompassing program engineering, model engineering, language engineering, and many other forms of engineering. But this is a more ambitious subject.

Graphical user interface builder(GUI)


A graphical user interface builder (or GUI builder), also known as GUI designer, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements (often called widgets) using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in source-code, with no visual feedback until the program is run.
Graphical user interface builders are often incorrectly called rapid application ... to wxDev-C++, Embarcadero C++ Builder and Microsoft Visual C++/MFC now.

User interfaces are commonly programmed using an event-driven architecture, so GUI builders also simplify creating event-driven code. This supporting code connects widgets with the outgoing and incoming events that trigger the functions providing the application logic.

Some graphical user interface builders, such as e.g. Glade Interface Designer, automatically generate all the source code for a graphical control element. Others, like Interface Builder, generate serialized object instances that are then loaded by the application

Monday, August 10, 2015

International Mobile Station Equipment Identity(IMEI)


is a number, usually unique, to identify 3GPP (i.e., GSM, UMTS and LTE) and iDEN mobile phones, as well as some satellite phones. It is usually found printed inside the battery compartment of the phone, but can also be displayed on-screen on most phones by entering *#06# on the dialpad, or alongside other system information in the settings menu on smartphone operating systems.
IMEI (International Mobile Equipment Identity) is a 15- or 17-digit code that uniquely identifies mobile phone sets. The IMEI code can enable a GSM (Global System for Mobile communication) or UMTS (Universal Mobile Telecommunications Service) network to prevent a misplaced or stolen phone from initiating calls

The IMEI number is used by a GSM network to identify valid devices and therefore can be used for stopping a stolen phone from accessing that network. For example, if a mobile phone is stolen, the owner can call his or her network provider and instruct them to "blacklist" the phone using its IMEI number. This renders the phone useless on that network and sometimes other networks too, whether or not the phone's SIM is changed.

Every GSM mobile phone has a unique serial number, called an International Mobile Equipment Identity (IMEI) number. This number is built into the phone's hardware by the manufacturer, not the SIM card which is supplied by the mobile carrier and can be removed and inserted into another phone.
The IMEI is only used for identifying the device and has no permanent or semi-permanent relation to the subscriber. Instead, the subscriber is identified by transmission of an IMSI number, which is stored on a SIM card that can (in theory) be transferred to any handset. However, many network and security features are enabled by knowing the current device being used by a subscriber.

integrated development environment (IDE)

is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion.

You can easily combine language support and other features into any of our default packages
Some IDEs contain a compiler, interpreter, or both, such as NetBeans and Eclipse; others do not, such as SharpDevelop and Lazarus. The boundary between an integrated development environment and other parts of the broader software development environment is not well-defined. Sometimes a version control system, or various tools to simplify the construction of a Graphical User Interface (GUI), are integrated. Many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram, for use in object-oriented software development.is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion.
With its editors, code analyzers, and converters, you can quickly and smoothly upgrade your applications to use new Java 8 language constructs, such as lambdas, functional operations, and method references.(in Java)

Some IDEs contain a compiler, interpreter, or both, such as NetBeans and Eclipse; others do not, such as SharpDevelop and Lazarus. The boundary between an integrated development environment and other parts of the broader software development environment is not well-defined. Sometimes a version control system, or various tools to simplify the construction of a Graphical User Interface (GUI), are integrated. Many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram, for use in object-oriented software development.

KNOW XAMARIN IN VISUAL STUDIO


Xamarin is a based softby the engineers that created Mono,Mono touch and Mono android  which are cross platform implementations of the common Language Infrastructure (CLI) and Common Language Specifications (often called Microsoft .NET).
ware company created
With a C# shared codebase, developers can use Xamarin tools to write native iOS, Android, and Windows apps with native user interfaces and share code across multiple platforms.Xamarin has over 1 million developers in more than 120 countries around the world as of May 2015


 Mono is a free and open source project led by Xamarin (formerly by Novell and originally by Ximian) to create an Ecma standard-compliant, .NET Framework-compatible set of tools including, among others, a C# compiler and a Common Language Runtime.

The stated purpose of Mono is not only to be able to run Microsoft .NET applications cross-platform, but also to bring better development tools to Linux developers.[4] Mono can be run on many software systems including Android, most Linux distributions, BSD, OS X, Windows, Solaris, and even some game consoles such as PlayStation 3, Wii, and Xbox 360.
 Xamarin for Visual Studio

Xamarin claims to be the only IDE that allows for native iOS, Android and Windows app development within Microsoft Visual Studio.Xamarin supplies add-ins to Microsoft Visual Studio that allows developers to build iOS, Android, and Windows apps within the IDE using code completion and IntelliSense. Xamarin for Visual Studio also has extensions within Microsoft Visual Studio that provide support for the building, deploying, and debugging of apps on a simulator or a device.In late 2013, Xamarin and Microsoft announced a partnership that included further technical integration and customer programs to make it possible for their joint developer bases to build for all mobile platforms. In addition, Xamarin now includes support for Microsoft Portable Class Libraries and most C# 5.0 features such as async/await. CEO and co-founder of Xamarin, Nat Friedman, announced the alliance at the launch of Visual Studio 2013 in New York.

VISUAL STUDIO 2015


Welcome to Visual Studio! We’ve got everything you need to create great apps for devices or desktop apps, for the web and in the cloud. Write code for iOS, Android, and Windows in one IDE. Get great IntelliSense, easy code navigation, fast builds, and quick deployment. Visual Studio increases your productivity and makes it easy to do your work alone or as part of a larger team.

Download Visual Studio Community for free to start coding right away. If you want to do cross-platform development, make sure that you install the optional packages. (You can get more features with other editions of Visual Studio.)

Jump right in, create a new project, and start writing code. Choose the type of app you want to create. Or you can take a tour of the Visual Studio IDE to get familiar with the tools.

And don’t forget to explore our code gallery to find samples to help you write your app more quickly!
 Extend Visual Studio

Add your own Visual Studio extension to include a tool or script that you often use while coding. You can create custom menu items and tool windows to integrate your own tools into the Visual Studio IDE. You can extend the Visual Studio editor to analyze and fix code, or add a new project type to include just what you need.

To find the latest version of the Visual Studio Extensibility Tools (VS SDK), see Visual Studio SDK.

You can use the .NET Compiler Platform (Roslyn) to write your own code analyzers and code generators. Find everything you need at Roslyn.

Find existing extensions for the VS IDE created by Microsoft developers as well as our development community.
Build apps for Android, iOS, and Windows

You can use Visual Studio to build apps for Android, iOS, and Windows devices. Learn more about it at Cross-Platform Development in Visual Studio.

For information about Universal Windows Apps (UWP), see Universal Windows Apps.

Choose the tools you need based on your app requirements and the language you want to use.

    Xamarin for Visual Studio: A common code base in C# for all devices

    Apache Cordova with Visual Studio: A common code base for HTML, CSS, and JavaScript or Typescript

    Visual Studio Tools for Unity: 2D/3D game development in C#

    C++ for Cross-Platform Development: Shared code libraries and apps in C++

    Visual Studio Emulator for Android : Visual Studio Emulator for Android: Debug and test your Android apps no matter the IDE

Sunday, August 9, 2015

HOW DEBUGGER WORK IN PROGRAMMING


A debugger or debugging tool is a computer program that is used to test and debug other programs (the "target" program). The code to be examined might alternatively be running on an instruction set simulator (ISS), a technique that allows great power in its ability to halt when specific conditions are encountered but which will typically be somewhat slower than executing the code directly on the appropriate (or the same) processor. Some debuggers offer two modes of operation—full or partial simulation—to limit this impact.

 a debugging interface that allows debuggers and IDEs to debug managed code can do four main kinds of things (plus other things in support of these) to help you catch bugs in the act:
  • Start your program, specifying anything that might affect its behavior.
  • Make your program stop on specified conditions.
  • Examine what has happened, when your program has stopped.
  • Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another. 

Friday, August 7, 2015

HTML5, Hybrid or Native Mobile App Development

Intro
Many organizations taking their first steps to implement a mobile strategy are facing an important decision that will influence the results of this initiative. The process of choosing a development approach for a mobile application, namely native, web or hybrid, entails many parameters such as budget, project timeframe, target audience and application functionality to name a few. Each approach carries inherent benefits and limitations, and finding the one that best addresses the organization’s needs could be a challenging task.
The purpose of this whitepaper is not to identify the best development approach, as such does not exist, but rather to list the pros and cons each carries and describe the different scenarios, or enterprise requirements, that best fit one or the other.

Introducing the Approaches
Native Applications
Native applications have binary executable files that are downloaded directly to the device and stored locally. The installation process can be initiated by the user, or in some cases, by the IT department of the organization. The most popular way to download a native app is by visiting an application store such as Apple’s App Store, Android’s Marketplace, or BlackBerry’s App World, but other methods exist and are sometimes provided by the mobile vendor.
Once the app has been installed on the device, the user launches it like any other service the device offers. Upon initialization, the native app interfaces directly with the mobile operating system, without any intermediary or container. The native app is free to access all of the APIs that are made available by the OS vendor and, in many cases, has a unique look and feel that is typical of that specific mobile OS.
To create a native app, developers must write the source code (in human-readable form) and create additional resources such images, audio segments and various OS-specific declaration files. Using tools provided by the OS vendor, the source code is compiled (and sometimes also linked) in order to create
an executable in binary form that can be packaged along with the rest of the resources and made ready for distribution.
These tools, as well as other utilities and files, are normally called the SDK of the mobile OS. Although the development process is often similar across different operating systems, the SDK is platform-specific and each mobile OS comes with its own unique tools. The following table presents the different tools, languages, formats and distribution channels associated with the leading mobile operating systems.
These differences across platforms result in one of the most critical disadvantages of the native development approach – code written for one mobile platform cannot be used on another, making the development and maintenance of native apps for multiple OSs a very long and expensive undertaking.
So why is it that in spite of this costly disadvantage, many companies choose to develop natively? To answer that question we will need to better understand the role of the APIs.