Database abstraction layer

A database abstraction layer is an application programming interface which unifies the communication between a computer application and databases such as MySQL, PostgreSQL, Oracle or SQLite. Traditionally, all database vendors provide their own interface tailored to their products which leaves it to the application programmer to implement code for all database interfaces he would like to support. Database abstraction layers reduce the amount of work by providing a consistent API to the developer and hide the database specifics behind this interface as much as possible. There exist many abstraction layers with different interfaces in numerous programming languages.


API level abstraction

Libraries like OpenDBX unify access to databases by providing a single low-level programming interface to the application developer. Their advantages are most often speed and flexibility because they are not tied to a specific query language (subset) and only have to implement a thin layer to reach their goal. The application developer can choose from all language features but has to provide configurable statements for querying or changing tables. Otherwise his application would also be tied to one database.

Popular use for database abstraction layers are among object-oriented programming languages, which are similar to API level abstraction layers. In an object oriented language like C++ or Java, a database can be represented through an object, whose methods and members (or the equivalent thereof in other programming languages) represent various functionalities of the database. They also share the same advantages and disadvantages as API level interfaces.


Language level abstraction

An example of a database abstraction layer on the language level would be ODBC. ODBC is a platform-independent implementation of a database abstraction layer. The user installs specific driver-software, through which ODBC can communicate with a database or set of databases. The user then has the ability to have programs communicate with ODBC, which then relays the results back and forth between the user programs and the database. The downside of this abstraction level is the increased overhead to transform statements into constructs understood by the target database.

Network analysis (electrical circuits)


A network, in the context of electronics, is a collection of interconnected components. Network analysis is the process of finding the voltages across, and the currents through, every component in the network. There are a number of different techniques for achieving this. However, for the most part, they assume that the components of the network are all linear. The methods described in this article are only applicable to linear network analysis except where explicitly stated.

Definitions::

Component:: A device with two or more terminals into which, or out of which, charge may flow.
Node:: A point at which terminals of more than two components are joined. A conductor with a substantially zero resistance is considered to be a node for the purpose of analysis.
Branch:: The component(s) joining two nodes.
Mesh:: A group of branches within a network joined so as to form a complete loop.
Port ::Two terminals where the current into one is identical to the current out of the other.
Circuit:: A current from one terminal of a generator, through load component(s) and back into the other terminal. A circuit is, in this sense, a one-port network and is a trivial case to analyse. If there is any connection to any other circuits then a non-trivial network has been formed and at least two ports must exist.
Transfer function:: The relationship of the currents and/or voltages between two ports. Most often, an input port and an output port are discussed and the transfer function is described as gain or attenuation.
Component transfer function:: For a two-terminal component (i.e. one-port component), the current and voltage are taken as the input and output and the transfer function will have units of impedance or admittance (it is usually a matter of arbitrary convenience whether voltage or current is considered the input). A three (or more) terminal component effectively has two (or more) ports and the transfer function cannot be expressed as a single impedance. The usual approach is to express the transfer function as a matrix of parameters. These parameters can be impedances, but there is a large number of other approaches, see two-port network.

Equivalent circuits


A useful procedure in network analysis is to simplify the network by reducing the number of components. This can be done by replacing the actual components with other notional components that have the same effect. A particular technique might directly reduce the number of components, for instance by combining impedances in series. On the other hand it might merely change the form in to one in which the components can be reduced in a later operation. For instance, one might transform a voltage generator into a current generator using Norton's theorem in order to be able to later combine the internal resistance of the generator with a parallel impedance load.

A resistive circuit is a circuit containing only resistors, ideal current sources, and ideal voltage sources. If the sources are constant (DC) sources, the result is a DC circuit. The analysis of a circuit refers to the process of solving for the voltages and currents present in the circuit. The solution principles outlined here also apply to phasor analysis of AC circuits.

Two circuits are said to be equivalent with respect to a pair of terminals if the voltage across the terminals and current through the terminals for one network have the same relationship as the voltage and current at the terminals of the other network.

If V2 = V1 implies I2 = I1 for all (real) values of V1, then with respect to terminals ab and xy, circuit 1 and circuit 2 are equivalent.

The above is a sufficient definition for a one-port network. For more than one port, then it must be defined that the currents and voltages between all pairs of corresponding ports must bear the same relationship. For instance, star and delta networks are effectively three port networks and hence require three simultaneous equations to fully specify their equivalence.

Source transformation::




A generator with an internal impedance (ie non-ideal generator) can be represented as either an ideal voltage generator or an ideal current generator plus the impedance. These two forms are equivalent and the transformations are given below. If the two networks are equivalent with respect to terminals ab, then V and I must be identical for both networks. Thus,
 or 
Norton's theorem states that any two-terminal network can be reduced to an ideal current generator and a parallel impedance.
Thévenin's theorem states that any two-terminal network can be reduced to an ideal voltage generator plus a series impedance.



Social Network Services

Social network services allow people to come together online around shared interests, hobbies, or causes. For example, some sites provide dating services where users post personal profiles, locations, ages, gender, etc, and are able to search for a partner. Other services enable business networking (Ryze, XING, and LinkedIn) and social event meetups (Meetup).

Some large wikis effectively become social network services by encouraging user pages and portals.

Anyone can create their own social networking service using hosted offerings like Ning or rSitez, or more flexible, installable software like Elgg.


Social network search engines::

Social network search engines are a class of search engines that use social networks to organize, prioritize, or filter search results. There are two subclasses of social network search engines: those that use explicit social networks, and those that use implicit social networks:
Explicit social network search engines allow people to find each other according to explicitly stated social relationships such as XFN social relationships. XHTML Friends Network, for example, allows people to share their relationships on their own sites, thus forming a decentralized/distributed online social network, in contrast to centralized social network services listed in the previous section.
Implicit social network search engines allow people to filter search results based upon classes of social networks they trust, such as a shared political viewpoint. This was called an epistemic filter in a United Nations University report from 1993 which predicted that this would become the dominant means of search for most users.

Lacking trustworthy explicit information about such viewpoints, this type of social network search engine mines the web to infer the topology of online social networks. For example, the NewsTrove search engine infers social networks from content - sites, blogs, pods, and feeds - by examining, among other things, subject matter, link relationships, and grammatical features to infer social networks.

Deliberative social networks

Deliberative social networks are webs of discussion and debate for decision-making purposes. They are built for the purpose of establishing sustained relationships between individuals and their government. They rely upon informed opinion and advice that is given with a clear expectation of outcomes.


Commercial social networks

Commercial social networks are designed to support business transaction and to build a trust between an individual and a brand, which relies on opinion of product, ideas to make the product better, enabling customers to participate with the brands in promoting development, service delivery, and a better customer experience.[citation needed]. an example of these networks is Dell IdeaStorm.


Social guides

A social guide recommending places to visit or contains information about places in the real world such as coffee shops, restaurants, and wifi hotspots, etc. One such application is WikiTravel.


Social bookmarking
Main article: Social bookmarking

Some Web sites allow users to post their list of bookmarks or favorites websites for others to search and view them. These sites can also be used to meet others sharing common interests. Examples include digg, del.icio.us, StumbleUpon, reddit, Netvouz, and furl.


Social cataloging

In Social cataloging much like social bookmarking, this software is aimed towards academics, and allows the user to post a citation for an article found on the internet or a website, online database like Academic Search Premier or LexisNexis Academic University, a book found in a library catalog, and so on. These citations can be organized into predefined categories or a new category defined by the user through the use of tags. This allows academics researching or interested in similar areas to connect and share resources. Examples for those services include CiteULike, Connotea, BibSonomy and refbase.


Social libraries

This applications allows visitors to keep track of their collectibles, books, records, and DVDs. Users can share their collections. Recommendations can be generated based on user ratings, using statistical computation and network theory. Some sites offer a buddy system, as well as virtual "check outs" of items for borrowing among friends. Folksonomy or tagging is implemented on most of these sites. Examples include discogs.com, imdb.com and LibraryThing.


Virtual worlds
Main article: Virtual world

Virtual Worlds are services where it is possible to meet and interact with other people in a virtual environment reminiscent of the real world. Thus the term virtual reality. Typically, the user manipulates an avatar through the world, interacting with others using chat or voice chat.


Massively Multiplayer Online Games (MMOGs)
Main article: Massively Multiplayer Online Games

MMOGs are virtual worlds that add various sorts of point systems, levels, competition, and winners and losers to virtual world simulation. Commercial MMOGs (or, more accurately, massively multiplayer online role-playing games or MMORPGs,) include Everquest and World of Warcraft. The Dotsoul Cyberpark is one of the more innovative non-commercial worlds, with the look and feel of Second Life and Active Worlds, but an adamantly anti-corporate stance. Other open-source and experimental examples include Planeshift, Croquet project, VOS and Solipsis.


Non-game worlds

Another development are the worlds that are less game-like, or not games at all. Games have points, winners, and losers. Instead, some virtual worlds are more like social networking services like MySpace and Facebook, but with 3D simulation features. Examples include Second Life, ActiveWorlds, The Sims Online, and There.


Economies

Very often a real economy emerges in these worlds, extending the non-physical service economy within the world to service providers in the real world. Experts can design dresses or hairstyles for characters, go on routine missions for them, and so on, and be paid in game money to do so. This emergence has resulted in expanding social possibility and also in increased incentives to cheat. In the case of Second Life, the in-world economy is one of the primary features of the world.


Other specialized social applications

There are many other applications with social software characteristics that facilitate human connection and collaboration in specific contexts. Project management and e-learning applications are among these.




Emerging technologies

Emerging technological capabilities to more widely distribute hosting and support much higher bandwidth in real time are bypassing central content arbiters in some cases.


Peer-to-peer social networks

A hybrid of web-based social networks, instant messaging technologies and peer-to-peer connectivity and file sharing, peer-to-peer social networks generally allow users to share blogs, files (especially photographs) and instant messages. Some examples are imeem, SpinXpress, Bouillon, Wirehog, and Soulseek. Also, Groove, WiredReach and Kerika have similar functionality, but with more of a work-based, collaboration bias.


Virtual presence

Widely viewed, virtual presence means being present via intermediate technologies, usually radio, telephone, television, or the internet. In addition, it can denote apparent physical appearance, such as voice, face, and body language.

More narrowly, the term virtual presence denotes presence on World Wide Web locations which identified by URLs. People who are browsing a web site are considered to be virtually present at web locations. Virtual presence is a social software in the sense that people meet on the web by chance or intentionally. The ubiquitous(in the web space) communication transfers behavior patterns from the real world and virtual worlds to the web. Research  has demonstrated effects  of online indicators

Social software

Social software encompasses a range of software systems that allow users to interact and share data. This computer-mediated communication has become very popular with social sites like MySpace and Facebook, media sites like Flickr and YouTube, and commercial sites like Amazon.com and eBay. Many of these applications share characteristics like open APIs, service oriented design, and the ability to upload data and media. The terms Web 2.0 and (for large-business applications) Enterprise 2.0 are also used to describe this style of software.

The more specific term collaborative software applies to cooperative information sharing systems, and is usually narrowly applied to the software that enables collaborative work functions. Distinctions among usage of the terms "social", "trusted", and "collaborative" are in the applications or uses, not the tools themselves, although there are some tools that are only rarely used for work collaboration.

Social technologies or Conversational technologies used in organizations, in particular a network-centric organization, are other terms used to describe knowledge creation and storage that is carried out through collaborative writing. Constructivist learning theorists such as Vygotsky; Leidner & Jarvenpaa explained that the process of expressing knowledge aids its creation and conversations benefits the refinement of knowledge. Conversational KM fulfills this purpose because conversations, e.g. questions and answers, become the source of relevant knowledge in the organization. Conversational technologies are seen as tools to support work units and the individual knowledge worker.

Many advocates of using these tools believe (and actively argue or assume) that they create actual communities, and have adopted the term "online communities" to describe the resulting social structures.


Tools for online communication::

The tools used in social software applications include communication tools and interactive tools. Communication tools typically handle the capturing, storing, and presentation of communication, usually written but increasingly including audio and video also. Interactive tools handle mediated interactions between a pair or group of users. They differ from communication tools in their focus on establishing and maintaining a connection among users, facilitating the mechanics of conversation and talk. Communication tools are generally asynchronous. Interactive tools are generally synchronous, allowing users to communicate in real time (phone, Net phone, video chat) or near-synchronous (IM, text chat).

We can add to this distinction one that describes the primary user experience of each: communication involves the content of talk, speech, or writing; interaction involves the interest users establish in one another as individuals. In other words, a communication tool may want to make access and searching of text both simple and powerful. An interactive tool may want to present as much of a user's expression, performance, and presence as possible. The organization of texts, and providing access to archived contributions differs from the facilitation of interpersonal interactions between contributors enough to warrant the distinction in media