ช่องค้นหา

Custom Search

Iphone

Sunday, August 10, 2008

BitComet



BitComet (originally named SimpleBT client from versions 0.11 to 0.37) is a cross-protocol BitTorrent, HTTP and FTP client written in C++ for Microsoft Windows and available in 43 different languages.[1] Its first public release was version 0.28. The current BitComet logo has been used since version 0.50.[2]
Features
The BitComet program is a multi-threaded multi-protocol hybrid download manager and BitTorrent Peer-to-peer (P2P) file-sharing application. It supports simultaneous download tasks. To complete a particular download, it can draw parts of files from many sources across different P2P and Client-server protocols.
BitComet's chief features include an embedded Internet Explorer window for the purpose of allowing users to search for torrents within the program. Along with the features typical of contemporary BitTorrent clients, it supports UPnP gateway configuration, bandwidth scheduling, Webseeding, selecting downloads inside a torrent package, and NAT traversal.[3]
When downloading, BitComet prioritizes the first and last portions of media files so that files may be previewed before they are completely downloaded. BitComet also allows users to share their torrent files on a searchable P2P network. BitComet uses the Kademlia (mainline) DHT to operate even when the tracker is offline. BitComet is capable of downloading files over HTTP and FTP as well as bittorrent, and it includes download plugins for Firefox, Internet Explorer, and Maxthon.[3]
An optional plugin is available to connect to the eD2K network. The plugin is a modified version of the GPL eMule program. When installed, it connects automatically to a server.[4]

BitComet FLV Player version 1.3
The software includes a application to play Flash Video files (.flv and .swf files). [5]
Optional Standalone Software
BitComet.com offers a BitTorrent tracker available for download from the official site.[6] The FLV player program can also be downloaded separately and used independent of the BitComet software.
Controversy and Criticism
Hash reporting
Since version 0.86 BitComet includes discussion and stat-tracking features which send information about torrents to the Bitcomet.com servers, including the torrent hash.[7][verification needed].

Adware
The official BitComet website claims that "BitComet does not contain any adware or spyware"[8]. However, versions 0.85 to 0.97 contained advertising[9]. The current versions no longer contain advertising, except in the web-based search window[10][verification needed].

DHT Exploit
During version 0.60, BitComet received bad publicity because its implementation of the DHT feature, which was new at the time, could be exploited to not respect the private flag of a tracker. This allowed users to avoid download and upload ratio restrictions, which are common on private trackers. Some private trackers responded to this by blacklisting version 0.60.[11] BitComet developer RnySmile reverted the client back to version 0.59 in response to the blacklisting.[12]
The DHT exploit was fixed in version 0.61.[13][14]

Super-seeding
In early 2007, John Hoffman, the creator of super-seeding and author of the BitTornado client, harshly criticized BitComet for using abusive tactics to "game" and "cheat" super-seeding at the expense of other peers: "Since BitComet has proven itself to be a harmful codebase, and since they have forced me to take steps I’d rather not have, I will also be banning connections from that client to my own client and tracker codebases." [15]

Padding Files
Starting with version 0.85 (Early 2007), BitComet added an option to its torrent maker that ensures that no two data files in a multi-file torrent occupy the same BitTorrent "piece." This helps enable BitComet to download different parts of a multi-file torrent from non-BitTorrent sources such as http/ftp servers or the ED2K network. To accomplish this, BitComet fills the remainder of each last "piece" with an intervening padding file. While these small and harmless files are transparent to the BitComet user, they can be an annoyance to users of other clients who must deal with them both during and after the download. [16] Creation of padding files was enabled by default in version 0.85, and disabled by default in version 0.86 onward.[verification needed]

Validity of criticism
In July 2007 professional networking specialist Robb Topolski conducted an independent analysis of most accusations leveled against BitComet including the DHT Exploit and Super-seeding controversies mentioned above. He found all but one of the claims to be false or unverifiable. He found that BitComet is not detrimental or malicious to the download or upload speeds of a BitTorrent swarm or the tracker.[17]
The one claim he verified as partially correct was that, "BitComet is a poor peer due to no upload slot control; upload bandwidth is stretched too thin.". Topolski's tests indicated that BitComet does lack upload slot control, but only when BitComet is initially seeding a torrent—that is, when BitComet is the only seeding peer in a swarm, it tends to seed less efficiently than the two other clients he tested. Topolski asserts that when BitComet is not the only seeding peer in the swarm, or when it is a non-seeding peer, upload slot control is managed exceptionally well.[18]

Server (computing)



A server is a computer dedicated to running a server application. A server application is a computer program that accepts network connections in order to service requests by sending back responses.[1] Examples of server applications include mail servers, file servers, and proxy servers.


Term usage in information technology


A server is simply a computer that provides services or resources to other computers.[2]
Server is an adjective in the term server operating system. A server operating system is intended or better enabled to run server applications. The differences between the server version and the workstation version of an operating system vary. Sometimes the difference can be the removal of an arbitrary limit due to licensing, as in the case of Windows 2000, or it can be the addition of bundled applications as in Mac OS X Server. Some server applications (e.g. Microsoft IIS) impose arbitrary limits on the number of HTTP connections they will accept, depending on whether they are running under a server operating system or not.
A server is a computer system that has been designated for running a specific server application. A computer that is designated for only one server application is often named for that application. For example, when the software Apache HTTP Server is used as the web server for a company's website, the computer running Apache is also called the web server. Server applications can be divided among server computers over an extreme range, depending upon the workload. Every server application can run concurrently on a single computer under light loading, but multiple server computers may be required for each application under a heavy load. Under medium loading, it is common to use one server computer per server application, in order to limit the amount of damage caused by failure of any single server computer or security breach of any single server application. Any server computer can also be used as a workstation, but it is avoided in practice, again to contain risk.
Server is also a designation for computer models intended for use in running server applications, often under heavy workloads, unattended, for an extended period of time. While any workstation computer can run server operating systems and server applications, a server computer usually has special features intended to make it more suitable. These features can include a faster CPU, faster and more plentiful RAM, and larger hard drives, but these traits are shared with high-end desktops. More obvious distinctions include redundancy in power supplies, network connections, and storage devices as well as modular design. Blade servers are an example of the latter and are often used in server farms.
The name server or server appliance also applies to network-connected computer appliances or "appliance hardware" that provide specific services for other clients on the network. Though the appliance is a server computer, loaded with a server operating system and running a server application, the user need not configure any of it — it is a black box that does a specific job. The simplest servers are most often sold as appliances, like switches, routers, gateways, and print servers.


Server hardware


Hardware requirements for servers vary, depending on the server application. Absolute CPU speed is not as critical to a server as it is to a desktop. Servers' duties to provide service to many users over a network lead to different requirements like fast network connections and high I/O throughput. Since servers are typically accessed over a network, servers emphasize function over form, without regard to aesthetics like appearance and noise level, because users may never lay eyes on the machine itself. Servers may accordingly run in headless mode without a monitor in order to free up processing cycles for other tasks. In general, a server becomes more specialized and therefore more efficient as unnecessary and unused services are eliminated. For this reason, many servers lack a graphical user interface, or GUI, because it consumes resources that could be allocated elsewhere. Similarly, servers often lack audio and USB interfaces.
By definition, servers provide services, but it is not always possible to predict when users will need those services. For this reason, servers are often online for weeks or months without interruption, making hardware durability extremely important. Although servers can be built from commodity computer parts, mission-critical servers use specialized hardware with low failure rates in order to maximize uptime. For example, servers may incorporate faster, higher-capacity hard drives, larger computer fans or water cooling to help remove heat, and uninterruptible power supplies that ensure the servers continue to function in the event of a power failure. These components offer higher performance and reliability at a correspondingly higher price. The dominant paradigm in servers is parallel computing, and thus high-performance servers are often placed in rack-mounted configurations to save space inside server rooms or "closets." These special rooms help mute the large amount of noise produced and also restrict physical access to the system administrators for security purposes.
Servers have a unique property in that, the more powerful and complex the system, the longer it takes for the hardware to turn on and begin loading the operating system. Servers often do extensive preboot memory testing and verification and start up of remote management services. The hard drive controllers then start up banks of drives sequentially, rather than all at once, so as not to overload the power supply, and afterwards they initiate RAID system prechecks for correct operation of redundancy. It is not uncommon for a machine to take several minutes to turn on and yet not require a restart for the next calendar year.
Server operating system
Some popular operating systems for servers — such as FreeBSD, Solaris, and Linux — are derived from or are similar to UNIX. UNIX was originally a minicomputer operating system, and as servers gradually replaced traditional minicomputers, UNIX was a logical and efficient choice of operating system for the servers. UNIX-based systems, many of which are free in both senses, are the most popular.
Server-oriented operating systems tend to have certain features in common that make them more suitable for the server environment, such as
an optional or absent GUI,
ability to reconfigure both hardware and software to some extent without restart,
advanced backup facilities to permit online backups of critical data at regular and frequent intervals,
transparent data transfer between different volumes or devices,
flexible and advanced networking capabilities,
automation capabilities like daemons in UNIX and services in Windows, and
tight system security, with advanced user, resource, data, and memory protection.
Server-oriented operating systems can in many cases interact with hardware sensors to detect conditions such as overheating, processor and disk failure, and consequently alert an operator and/or take remedial measures itself.
Because the requirements of servers are, in some cases, almost diametrically opposed to those of desktop computers,[citation needed] it is extremely difficult to design an operating system that handles both environments well; thus, operating systems that are well suited to the desktop may not be ideal for servers and vice versa. Regardless of OS vendor, system configurations that are ideal for servers may be unsatisfactory for desktop use, and configurations that perform well on the desktop may leave much to be desired on servers. This results in many operating systems' release in both server and desktop versions. Nevertheless, the desktop versions of the Windows and Mac OS X operating systems are deployed on a minority of servers, as are some proprietary mainframe operating systems, such as z/OS. The dominant operating systems among servers are UNIX-based and open source kernel distributions.[citation needed]
The rise of the microprocessor-based server was facilitated by the development of Unix to run on the x86 microprocessor architecture. The Microsoft Windows family of operating systems also runs on x86 hardware, and versions beginning with Windows NT have incorporated features that making them suitable for use as server operating systems.
While the role of server and desktop operating systems remains distinct, improvements in the reliability of both hardware and operating systems have blurred the distinction between the two classes. Today, many desktop and server operating systems share similar code bases, differing mostly in configuration. The shift towards web applications and middleware platforms has also lessened the demand for specialist application servers.

Java (programming language)

Java is a programming language originally developed by Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture.
The original and reference implementation Java compilers, virtual machines, and class libraries were developed by Sun from 1995. As of May 2007, in compliance with the specifications of the Java Community Process, Sun made available most of their Java technologies as free software under the GNU General Public License. Others have also developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java and GNU Classpath.

Syntax

The syntax of Java is largely derived from C++. Unlike C++, which combines the syntax for structured, generic, and object-oriented programming, Java was built exclusively as an object oriented language. As a result, almost everything is an object and all code is written inside a class. The exceptions are the intrinsic data types (ordinal and real numbers, boolean values, and characters), which are not classes for performance reasons.

Hello world program
This is a minimal Hello world program in Java with syntax highlighting:


// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}


A more comprehensive example

// OddEven.java
import javax.swing.JOptionPane;

public class OddEven {
public static void main(String[] args) {
// This is the main method. It gets called when this class is run through a Java interpreter.
OddEven number = new OddEven();
/* This line of code creates a new instance of this class called "number" and
* initializes it, and the next line of code calls the "showDialog()" method,
* which brings up a prompt to ask you for a number
*/
number.showDialog();
}
private int input; // A whole number("int" means integer)
// "input" is the number that the user gives to the computer

public OddEven() {
/* This is the constructor method. It gets called when an object of the OddEven type
* is created.
*/
}

public void showDialog() {
try
/* This makes sure nothing goes wrong. If something does,
* the interpreter skips to "catch" to see what it should do.
*/
{
input = Integer.parseInt(JOptionPane.showInputDialog("Please Enter A Number"));
calculate();
/*
* The code above brings up a JOptionPane, which is a dialog box
* The String returned by the "showInputDialog()" method is converted into
* an integer, making the program treat it as a number instead of a word.
* After that, this method calls a second method, calculate() that will
* display either "Even" or "Odd."
*/
}
catch (NumberFormatException e)
/* This means that there was a problem with the format of the number
* (Like if someone were to type in 'Hello world' instead of a number).
*/
{
System.err.println("ERROR: Invalid input. Please type in a numerical value.");
}
}

private void calculate() {
if (input % 2 == 0)
System.out.println("Even");
/* When this gets called, it sends a message to the interpreter.
* The interpreter usually shows it on the command prompt (For Windows users)
* or the terminal (For Linux users).(Assuming it's open)
*/
else
System.out.println("Odd");
}
}