Selamat Datang Di Blog Decka

Selamat Datang Di Blog Decka

Selasa, 04 November 2008

JavaScript

JavaScript is a scripting language most often used for client-side web development. It was the originating dialect of the ECMAScript standard. It is a dynamic, weakly typed, prototype-based language with first-class functions. JavaScript was influenced by many languages and was designed to look like Java, but be easier for non-programmers to work with.[1][2]

Although best known for its use in websites (as client-side JavaScript), JavaScript is also used to enable scripting access to objects embedded in other applications (see below).

JavaScript, despite the name, is essentially unrelated to the Java programming language, although both have the common C syntax, and JavaScript copies many Java names and naming conventions. The language was originally named "LiveScript" but was renamed in a co-marketing deal between Netscape and Sun, in exchange for Netscape bundling Sun's Java runtime with their then-dominant browser. The key design principles within JavaScript are inherited from the Self and Scheme programming languages.[3]

"JavaScript" is a trademark of Sun Microsystems. It was used under license for technology invented and implemented by Netscape Communications and current entities such as the Mozilla Foundation.[4]

Contents

[hide]

[edit] History and naming

JavaScript was originally developed by Brendan Eich of Netscape under the name Mocha, which was later renamed to LiveScript, and finally to JavaScript. The change of name from LiveScript to JavaScript roughly coincided with Netscape adding support for Java technology in its Netscape Navigator web browser. JavaScript was first introduced and deployed in the Netscape browser version 2.0B3 in December 1995. The naming tae has caused confusion, giving the impression that the language is a spin-off of Java, and it has been characterized by many as a marketing ploy by Netscape to give JavaScript the cachet of what was then the hot new web-programming language.[5][6]

Microsoft named its dialect of the language JScript to avoid trademark issues. JScript was first supported in Internet Explorer version 3.0, released in August 1996, and it included Y2K-compliant date functions, unlike those based on java.util.Date in JavaScript at the time. The dialects are perceived to be so similar that the terms "JavaScript" and "JScript" are often used interchangeably (including in this article). Microsoft, however, notes dozens of ways in which JScript is not ECMA compliant.

Netscape submitted JavaScript to Ecma International for standardization resulting in the standardized version named ECMAScript.[7]

[edit] Features

[edit] Structured programming

JavaScript supports all the structured programming syntax in C (e.g., if statements, while loops, switch statements, etc.). One partial exception is scoping: C-style block-level scoping is not supported. JavaScript 1.7, however, supports block-level scoping with the let keyword. Like C, JavaScript makes a distinction between expressions and statements.

[edit] Dynamic programming

dynamic typing
As in most scripting languages, types are associated with values, not variables. For example, a variable x could be bound to a number, then later rebound to a string. JavaScript supports various ways to test the type of an object, including duck typing.[8]
objects as associative arrays
JavaScript is almost entirely object-based. Objects are associative arrays, augmented with prototypes (see below). Object property names are associative array keys: obj.x = 10 and obj["x"] = 10 are equivalent, the dot notation being merely syntactic sugar. Properties and their values can be added, changed, or deleted at run-time. The properties of an object can also be enumerated via a for...in loop.
run-time evaluation
JavaScript includes an eval function that can execute statements provided as strings at run-time.

[edit] Functional programming

first-class functions
Functions are first-class; they are objects themselves. As such, they have properties and can be passed around and interacted with like any other object.
inner functions and closures
Inner functions (functions defined within other functions) are created each time the outer function is invoked, and variables of the outer functions for that invocation continue to exist as long as the inner functions still exist, even after that invocation is finished (e.g. if the inner function was returned, it still has access to the outer function's variables) — this is the mechanism behind closures within JavaScript.

[edit] Prototype-based

prototypes
JavaScript uses prototypes instead of classes for defining object properties, including methods, and inheritance. It is possible to simulate many class-based features with prototypes in JavaScript.
functions as object constructors
Functions double as object constructors along with their typical role. Prefixing a function call with new creates a new object and calls that function with its local this keyword bound to that object for that invocation. The function's prototype property determines the new object's prototype.
functions as methods
Unlike many object-oriented languages, there is no distinction between a function definition and a method definition. Rather, the distinction occurs during function calling; a function can be called as a method. When a function is invoked as a method of an object, the function's local this keyword is bound to that object for that invocation.

[edit] Others

run-time environment
JavaScript typically relies on a run-time environment (e.g. in a web browser) to provide objects and methods by which scripts can interact with "the outside world". (This is not a language feature per se, but it is common in most JavaScript implementations.)
variadic functions
An indefinite number of parameters can be passed to a function. The function can both access them through formal parameters and the local arguments object.
array and object literals
Like many scripting languages, arrays and objects (associative arrays in other languages) can each be created with a succinct shortcut syntax. In fact, these literals form the basis of the JSON data format.
regular expressions
JavaScript also supports regular expressions in a manner similar to Perl, which provide a concise and powerful syntax for text manipulation that is more sophisticated than the built-in string functions.

[edit] Syntax

Main article: JavaScript syntax

As of 2008, the latest version of the language is JavaScript 1.8. It is a superset of ECMAScript (ECMA-262) Edition 3. Extensions to the language, including partial E4X (ECMA-357) support and experimental features considered for inclusion into ECMAScript Edition 4, are documented here.

Sample code:

var c = (function(id){


/**
* FunctionDeclaration to be used as a constructor.
*/

function MyConstructor(id) {
this.id = id;
this.init();
}

MyConstructor.prototype = {
init : function() { // function expression.

// block statement with label.
incrementI : {
// Function scope (no block scope).
var x = 10;
}
this.id += x;
},
toString : function() {
return "MyConstructor: id = " + this.id;
}
};
return new MyConstructor(id); // statement.
})(12);

The result of c + "" is "MyConstructor: id = 22";

[edit] Use in web pages

See also: Ajax (programming)

The primary use of JavaScript is to write functions that are embedded in or included from HTML pages and interact with the Document Object Model (DOM) of the page. Some simple examples of this usage are:

  • Opening or popping up a new window with programmatic control over the size, position, and attributes of the new window (i.e. whether the menus, toolbars, etc. are visible).
  • Validation of web form input values to make sure that they will be accepted before they are submitted to the server.
  • Changing images as the mouse cursor moves over them: This effect is often used to draw the user's attention to important links displayed as graphical elements.

Because JavaScript code can run locally in a user's browser (rather than on a remote server) it can respond to user actions quickly, making an application feel more responsive. Furthermore, JavaScript code can detect user actions which HTML alone cannot, such as individual keystrokes. Applications such as Gmail take advantage of this: much of the user-interface logic is written in JavaScript, and JavaScript dispatches requests for information (such as the content of an e-mail message) to the server. The wider trend of Ajax programming similarly exploits this strength.

A JavaScript engine (also known as JavaScript interpreter or JavaScript implementation) is an interpreter that interprets JavaScript source code and executes the script accordingly. The first ever JavaScript engine was created by Brendan Eich at Netscape Communications Corporation, for the Netscape Navigator web browser. The engine, code-named SpiderMonkey, is implemented in C. It has since been updated (in JavaScript 1.5) to conform to ECMA-262 Edition 3. The Rhino engine, created primarily by Norris Boyd (also at Netscape) is a JavaScript implementation in Java. Rhino, like SpiderMonkey, is ECMA-262 Edition 3 compliant.

The most common host environment for JavaScript is by far a web browser. Web browsers typically use the public API to create "host objects" responsible for reflecting the DOM into JavaScript. The web server is another common application of the engine. A JavaScript webserver would expose host objects representing an HTTP request and response objects, which a JavaScript program could then manipulate to dynamically generate web pages.

A minimal example of a web page containing JavaScript (using HTML 4.01 syntax) would be:



"http://www.w3.org/TR/html4/strict.dtd">

</span></span>simple page<span class="sc2"><span class="kw2">

type="text/javascript">
document.write('Hello World!');



[edit] Compatibility considerations

The DOM interfaces for manipulating web pages are not part of the ECMAScript standard, or of JavaScript itself. Officially, they are defined by a separate standardization effort by the W3C; in practice, browser implementations differ from the standards and from each other, and not all browsers execute JavaScript.

To deal with these differences, JavaScript authors can attempt to write standards-compliant code which will also be executed correctly by most browsers; failing that, they can write code that checks for the presence of certain browser features and behaves differently if they are not available.[9] In some cases, two browsers may both implement a feature but with different behavior, and authors may find it practical to detect what browser is running and change their script's behavior to match.[10][11] Programmers may also use libraries or toolkits which take browser differences into account.

Furthermore, scripts will not work for all users. For example, a user may:

  • use an old or rare browser with incomplete or unusual DOM support,
  • use a PDA or mobile phone browser which cannot execute JavaScript,
  • have JavaScript execution disabled as a security precaution,
  • or be visually or otherwise disabled and use a speech browser

To support these users, web authors can try to create pages which degrade gracefully on user agents (browsers) which do not support the page's JavaScript.

[edit] Security

JavaScript and the DOM provide the potential for malicious authors to deliver scripts to run on a client computer via the web. Browser authors contain this risk using two restrictions. First, scripts run in a sandbox in which they can only perform web-related actions, not general-purpose programming tasks like creating files. Second, scripts are constrained by the same origin policy: scripts from one web site do not have access to information such as usernames, passwords, or cookies sent to another site. Most JavaScript-related security bugs are breaches of either the same origin policy or the sandbox.

[edit] Cross-site vulnerabilities

A common JavaScript-related security problem is cross-site scripting, or XSS, a violation of the same-origin policy. XSS vulnerabilities occur when an attacker is able to cause a trusted web site, such as an online banking website, to include a malicious script in the webpage presented to a victim. The script in this example can then access the banking application with the privileges of the victim, potentially disclosing secret information or transferring money without the victim's authorization.

XSS vulnerabilities can also occur because of implementation mistakes by browser authors.[12]

XSS is related to cross-site request forgery or XSRF. In XSRF one website causes a victim's browser to generate fraudulent requests to another site with the victim's legitimate HTTP cookies attached to the request.

[edit] Misunderstanding the client-server boundary

Client-server applications, whether they involve JavaScript or not, must assume that untrusted clients may be under the control of attackers. Thus any secret embedded in JavaScript could be extracted by a determined adversary, and the output of JavaScript operations should not be trusted by the server. Some implications:

  • Web site authors cannot perfectly conceal how their JavaScript operates, because the code is sent to the client, and obfuscated code can be reverse engineered.
  • JavaScript form validation only provides convenience for users, not security. If a site verifies that the user agreed to its terms of service, or filters invalid characters out of fields that should only contain numbers, it must do so on the server, not only the client.
  • It would be extremely bad practice to embed a password in JavaScript (where it can be extracted by an attacker), then have JavaScript verify a user's password and pass "password_ok=1" back to the server (since the "password_ok=1" response is easy to forge).[13]

It also does not make sense to rely on JavaScript to prevent user interface operations (such as "view source" or "save image"). This is because a client could simply ignore such scripting. [14]

[edit] Browser and plugin coding errors

JavaScript provides an interface to a wide range of browser capabilities, some of which may have flaws such as buffer overflows. These flaws can allow attackers to write scripts which would run any code they wish on the user's system.

These flaws have affected major browsers including Firefox[15], Internet Explorer[16], and Safari.[17]

Plugins, such as video players, Macromedia Flash, and the wide range of ActiveX controls enabled by default in Microsoft Internet Explorer, may also have flaws exploitable via JavaScript, and such flaws have been exploited in the past.[18][19] In Windows Vista, Microsoft has attempted to contain the risks of bugs such as buffer overflows by running the Internet Explorer process with limited privileges.[20]

[edit] Sandbox implementation errors

Web browsers are capable of running JavaScript outside of the sandbox, with the privileges necessary to, for example, create or delete files. Of course, such privileges aren't meant to be granted to code from the web.

Incorrectly granting privileges to JavaScript from the web has played a role in vulnerabilities in both Internet Explorer[21] and Firefox[22]. In Windows XP Service Pack 2, Microsoft demoted JScript's privileges in Internet Explorer.[23]

Some versions of Microsoft Windows allow JavaScript stored on a computer's hard drive to run as a general-purpose, non-sandboxed program. This makes JavaScript (like VBScript) a theoretically viable vector for a Trojan horse, although JavaScript Trojan horses are uncommon in practice.[24] (See Windows Script Host.)

[edit] Uses outside web pages

Outside the web, JavaScript interpreters are embedded in a number of tools. Each of these applications provides its own object model which provides access to the host environment, with the core JavaScript language remaining mostly the same in each application.

  • ActionScript, the programming language used in Adobe Flash, is another implementation of the ECMAScript standard.
  • Apple's Dashboard Widgets, Microsoft's Gadgets, Yahoo! Widgets, Google Desktop Gadgets are implemented using JavaScript.
  • The Mozilla platform, which underlies Firefox and some other web browsers, uses JavaScript to implement the graphical user interface (GUI) of its various products.
  • Adobe's Acrobat and Adobe Reader (formerly Acrobat Reader) support JavaScript in PDF files.
  • Tools in the Adobe Creative Suite, including Photoshop, Illustrator, Dreamweaver and InDesign, allow scripting through JavaScript.
  • Microsoft's Active Scripting technology supports the JavaScript-compatible JScript as an operating system scripting language.
  • The Java programming language, in version SE 6 (JDK 1.6), introduced the javax.script package, including a JavaScript implementation based on Mozilla Rhino. Thus, Java applications can host scripts that access the application's variables and objects, much like web browsers host scripts that access the browser's Document Object Model (DOM) for a webpage.[25][26]
  • Applications on the social network platform OpenSocial are implemented in JavaScript.
  • Newer versions of the Qt C++ toolkit include a QtScript module to interpret JavaScript, analogous to javax.script.[27]
  • The interactive music signal processing software Max/MSP released by Cycling '74, offers a JavaScript model of its environment for use by developers. It allows much more precise control than the default GUI-centric programming model.
  • Late Night Software's JavaScript OSA (aka JavaScript for OSA, or JSOSA), is a freeware alternative to AppleScript for Mac OS X. It is based on the Mozilla 1.5 JavaScript implementation, with the addition of a MacOS object for interaction with the operating system and third-party applications.[28]
  • ECMAScript was included in the VRML97 standard for scripting nodes of VRML scene description files.
  • Some high-end Philips universal remote panels, including TSU9600 and TSU9400, can be scripted using JavaScript.[29]
  • Sphere is an open source and cross platform computer program designed primarily to make role-playing games that uses JavaScript as scripting language.
  • Adobe Integrated Runtime is a JavaScript runtime that allows developers to create desktop applications.
  • GeoJavaScript enables access to the geospatial extensions in PDF files using TerraGo Technologies GeoPDF Toolbar and Adobe Acrobat and Reader.

[edit] Debugging

Within JavaScript, access to a debugger becomes invaluable when developing large, non-trivial programs. Because there can be implementation differences between the various browsers (particularly within the Document Object Model) it is useful to have access to a debugger for each of the browsers a web application is being targeted at.

Currently, Internet Explorer, Firefox, Safari, and Opera all have third-party script debuggers available for them.

Internet Explorer has three debuggers available for it: Microsoft Visual Studio is the richest of the three, closely followed by Microsoft Script Editor (a component of Microsoft Office[30]), and finally the free Microsoft Script Debugger which is far more basic than the other two. The free Microsoft Visual Web Developer Express provides a limited version of the JavaScript debugging functionality in Microsoft Visual Studio.

Web applications within Firefox can be debugged using the Firebug plug-in, or the older Venkman debugger, which also works with the Mozilla browser. Firefox also has a simpler built-in Error Console, which logs JavaScript and CSS errors and warnings.

Drosera is a debugger for the WebKit engine[31] on Macintosh and Windows[32] powering Apple's Safari.

There are also some free tools such as JSLint, a code quality tool that will scan JavaScript code looking for problems[33], as well as a non-free tool called SplineTech JavaScript HTML Debugger.[34]

Since JavaScript is interpreted, loosely-typed, and may be hosted in varying environments, each with their own compatibility differences, a programmer has to take extra care to make sure the code executes as expected in as wide a range of circumstances as possible, and that functionality degrades gracefully when it does not.

[edit] Versions

Version Release date Equivalent to Netscape
Navigator
Mozilla
Firefox
Internet
Explorer
Opera Safari
1.0 March 1996
2.0
3.0

1.1 August 1996
3.0



1.2 June 1997
4.0-4.05



1.3 October 1998 ECMA-262 1st edition / ECMA-262 2nd edition 4.06-4.7x
4.0

1.4

Netscape
Server




1.5 November 2000 ECMA-262 3rd edition 6.0 1.0 5.5 (JScript 5.5),
6 (JScript 5.6),
7 (JScript 5.7),
8 (JScript 6)
6.0,
7.0,
8.0,
9.0

1.6 November 2005 1.5 + Array extras + Array and String generics + E4X
1.5


1.7 October 2006 1.6 + Pythonic generators + Iterators + let
2.0

3.x
1.8 June 2008 1.7 + Generator expressions + Expression closures
3.0


1.9
1.8 + New Features
3.1


The next major version of JavaScript, 2.0, will conform to ECMA-262 4th edition.[35]

[edit] Related languages

There is not a particularly close genealogical relationship between Java and JavaScript; their similarities are mostly in basic syntax because both are ultimately derived from C. Their semantics are quite different and their object models are unrelated and largely incompatible. In Java, as in C and C++, all data is statically typed, whereas JavaScript variables, properties, and array elements may hold values of any type.

The standardization effort for JavaScript also needed to avoid trademark issues, so the ECMA 262 standard calls the language ECMAScript, three editions of which have been published since the work started in November 1996.

Microsoft's VBScript, like JavaScript, can be run client-side in web pages. VBScript has syntax derived from Visual Basic and is only supported by Microsoft's Internet Explorer.

JSON, or JavaScript Object Notation, is a general-purpose data interchange format that is defined as a subset of JavaScript.

JavaScript is also considered a functional programming language like Scheme and OCaml because it has closures and supports higher-order functions.[36]

Mozilla browsers currently support LiveConnect, a feature that allows JavaScript and Java to intercommunicate on the web. However, support for LiveConnect is scheduled to be phased out in the future.


Sumber : Wikipedia, the free encyclopedia

Histogram Modelling dengan MatLab

Histogram citra menyatakan frekuensi kemunculan berbagai derajat keabuan dalam citra. Teknik pemodelan histogram mengubah citra hingga memiliki histogram sesuai keinginan. Teknik pemodelan yang sering dipakai adalah ekualisasi histogram. Ekualisasi histogram bertujuan untuk mendapatkan histogram citra dengan distribusi seragam.
Langkah-langkah melakukan ekualisasi histogram:
  1. Baca image dan dapatkan nilai tingkat keabuan dari setiap pixel penyusunnya, dan simpan dalam array. Gunakan fungsi imread().
  2. Cari nilai maksimum tingkat keabuan citra tersebut. Nilai ini nantinya akan dipakai untuk menentukan histogram ekualisasinya. Gunakan fungsi max()
  3. Buat histogram citra asal. Simpan frekuensi kemunculan derajat keabuan tersebut dalam array(vector). Mula-mula kita siapkan array(vector) kosong yang ukurannya mengacu kepada nilai maksimum derajat keabuan citra dibulatkan ke 2n. Untuk selajutnya hitung frekuensi kemunculan derajat keabuan pada masing-masing posisi vector.
  4. Buat histogram ekualisasinya. Histogram ekualisasi dicari dengan menghitung prosentase kemunculan derajat keabuan yang ada dikalikan dengan derajat keabuan maksimum dari citra asal.
  5. Cari nilai tingkat keabuan dari citra bari hasil ekualisasi dengan menggunakan histogram ekualisasinya.
  6. Untuk memetakan histogram ekualisasi menjadi citra baru, kita siapkan array (matrik) kosong yang ukurannya sama dengan citra asal. Selanjutnya masing-masing nilai matrik baru dihitung dari nilai histogram ekualisasi bedasarkan nilai matrik gambar lama.
  7. Petakan ke citra baru.
Dengan menggunakan MatLab algoritma tersebut dapat diimplementasikan sebagai berikut:























Atau juga dapat dituliskan sebagai berikut:










Berikut ini adalah perbandingan image sebelum dan setelah
dilakukan ekualisasi.






Noise Pada Citra

Ada banyak jenis noise yang dapat mempengaruhi kualitas citra, diantaranya adalah salt and pepper, gaussian, speckle, localvar dan poisson. Efek masing-masing noise tentunya berbeda-beda. Ada yang efeknya sangat mempengaruhi tampilan citra, tapi ada juga yang tidak begitu berpengaruh terhadap citra.

Salt & Peper

Seperti namanya noise jenis ini terlihat seperti salt and pepper. Pada citra akan nampak seperti titik-titik. Untuk citra RGB titik-titik muncul dalam tiga warna yakni merah (red), hijau (green) dan biru (blue), sedangkan pada citra GRAY noise akan muncul dalam dua warna yakni hitam (black) dan putih (white). Noise ini memberikan efek ”on dan off” pada pixel. Pada MatLab kita dapat mengatur ”konstanta” noise. Konstanta berupa angka numerik non negatif dengan range 0 sampai dengan 1. Makin besar konstantanya citra akan semakin kabur, sebaliknya makin kecil konstantanya efek pada citra makin tidak terlihat. Nilai default untuk konstanta noise adalah 0.05.


Gaussian

Disebut juga Gaussian White Noise. Untuk menambahkan noise ini pada MatLab memerlukan input tambahan berupa rata-rata dan variasi. Rata-rata dan variasi merupakan suatu konstanta real. Nilainya bisa positif maupun negative. Makin besar rata-rata dan variasinya maka
citra akan semakin kabur, sebaliknya makin kecil konstantanya efek pada citra makin tidak terlihat. Nilai default adalah 0 untuk mean dan 0.01 untuk variance. Disebut white noise karena pada saat nilai rata-rata dan variasinya besar maka citra seolah-olah hanya terlihat seperti citra putih saja.

Poisson
Poisson noise bukan merupakan noise buatan. Poisson merupakan noise yang ditambahkan langsung pada citra tanpa kita menambahkan parameter apapun, sehingga efeknya pada citra pun tetap, berbeda dengan tipe noise yang sudah dijelaskan sebelumnya. Pada MatLab, jika matrik citra adalah double precision, maka nilai piksel inputnya dianggap sebagai mean dari distribusi Poisson dengan skala 10^12. Sebagai contoh jika piksel inputnya mempunyai nilai 5.5 10^-12, maka piksel output akan dibangkitkan dari distribusi Poisson dengan mean 5.5 di kembalikan lagi ke skala 10^12. Jika matrik citra adalah single precision, maka factor skalanya menggunakan 10^6. Jika matrik citra adalah uint8 atau uint16, maka nilai input piksel digunakan langsung tanpa factor skala. Sebagai contoh jika input piksel uint8 mempunyai nilai 10, maka piksel output akan dibangkitkan dari distribusi Poisson dengan mean 10.


Speckle
Speckle merupakan noise ganda. Noise ini ditambahkan pada citra menggunakan persamaan
J=I+n*I, dimana n terdistribusi random seragam dengan mean 0 dan variance V. V adalah konstanta non negative yang besarnya dapat berubah-ubah. Default nilai untuk V adalah 0.04. Makin besar nilai V maka citra akan semakiin kabur.

Localvar

Pada MatLab kita harus mengunakan dua parameter untuk menambahkan noise ini pada citra. Dua parameter tersebut berupa vector yang ukurannya sama, dan grafik kedua parameter tersebut menggambarkan relasi fungsional antara varians noise dan intensitas citra. Vektor intensitas citra harus bernilai antara 0 dan 1 (normal). Localvar merupakan Gaussian noise dengan mean 0, dengan variance noise adalah fungsi dari intensitas citra yang nilainya berada dalam matrik citra. Vektor intensitas citra tidak boleh bernilai sama karena citra akan nampak sebagai layar putih (Gaussian White Noise).

Metode Cramer untuk Penyelesaian SPL dengan Matlab

Sebenarnya kalo mau menyelesaikan SPL dengan Matlab, gampang sih....tingal ketikkan tik tik tik...enter... ketemu penyelesaiannya. Beres. Tapi inget kan...dulu kita pernah pelajari Metode Crammer, yang rumusannya seperti ini:
Nah...dari sini dapat kita buat algoritmanya:

Pertama : Masukkan matrik A dan B.

Kedua : Cek dulu ukuran matrik A dan B, matrik A haris bujur sangkar dan B harus matrik kolom yang jumlah barisnya sama dengan A.

Ketiga : Musti dicek juga, determinan matrik A, Karena jika determina matrik A = 0, ya kita gak bisa dapatkan satu penyelesaian dong. Karena bisa jadi ada banyak penyelesaian, dan bisa jadi juga nggak ada penyelesaian.

Keempat: Kita cari matrik A1 sampai dengan Aj berikut determinannya. Setelah itu masing-masing matrik dicari determinannya.

Kelima : Penyelesaian didapat dengan membegi determinan matrik A1 s.d Aj dengan determinan matrik A.

Senin, 03 November 2008

Istilah - Istilah Dalam Teknologi Informasi

ADSL - Asymetric Digital Subscriber Line. Sebuah tipe DSL dimana upstream dan downstream berjalan pada kecepatan yang berbeda. Dalam hal ini, downstream biasanya lebih tinggi. Konfigurasi yang umum memungkinkan downstream hingga 1,544 mbps (megabit per detik) dan 128 kbps (kilobit per detik) untuk upstream. Secara teori, ASDL dapat melayani kecepatan hingga 9 mbps untuk downstream dan 540 kbps untuk upstream.

Anonymous FTP - Situs FTP yang dapat diakses tanpa harus memiliki login tertentu. Aturan standar dalam mengakses Anonymous FTP adalah dengan mengisikan “Anonymous” pada isian Username dan alamat email sebagai password.

ARPANet - Advanced Research Projects Agency Network. Jaringan yang menjadi cikal-bakal terbentuknya Internet. Dibangun pada akhir dasawarsa 60-an hingga awal dasawarsa 70-an oleh Departemen Pertahanan Amerika Serikat sebagai percobaan untuk membentuk sebuah jaringan berskala besar (WAN) yang menghubungkan komputer-komputer di berbagai lokasi dengan sistem yang berbeda-beda pula namun dapat diakses sebagai sebuah kesatuan untuk dapat saling memanfaatkan resource masing-masing.

ASCII - American Standard Code for Information Interchange. Standar yang berlaku di seluruh dunia untuk kode berupa angka yang merepresentasikan karakter-karakter, baik huruf, angka, maupun simbol yang digunakan oleh komputer. Terdapat 128 karakter standar ASCII yang masing-masing direpresentasikan oleh tujuh digit bilangan biner mulai dari 0000000 hingga 1111111.

B
Backbone - Jalur berkecepatan tinggi atau satu seri koneksi yang menjadi jalur utama dalam sebuah network.

Bandwidth - Besaran yang menunjukkan seberapa banyak data yang dapat dilewatkan dalam koneksi melalui sebuah network.

Binary - Biner. Yaitu informasi yang seluruhnya tersusun atas 0 dan 1. Istilah ini biasanya merujuk pada file yang bukan berformat teks, seperti halnya file grafis.

Bit - BInary digiT. Satuan terkecil dalam komputasi, terdiri dari sebuah besaran yang memiliki nilai antara 0 atau 1.

bps - Bit Per Seconds. Ukuran yang menyatakan seberapa cepat data dipindahkan dari satu tempat ke tempat lain.

Browser - Sebutan untuk perangkat lunak (software) yang digunakan untuk mengakses World Wide Web

Byte - Sekumpulan bit yang merepresentasikan sebuah karakter tunggal. Biasanya 1 byte akan terdiri dari 8 bit, namun bisa juga lebih, tergantung besaran yang digunakan.

C
CGI - Common Gateway Interface. Sekumpulan aturan yang mengarahkan bagaimana sebuah server web berkomunikasi dengan sebagian software dalam mesin yang sama dan bagaimana sebagian dari software (CGI Program) berkomunikasi dengan server web. Setiap software dapat menjadi sebuah program CGI apabila software tersebut dapat menangani input dan output berdasarkan standar CGI.

cgi-bin - Nama yang umum digunakan untuk direktori di server web dimana program CGI disimpan.

Chat - Secara harfiah, chat dapat diartikan sebagai obrolan, namun dalam dunia internet, istilah ini merujuk pada kegiatan komunikasi melalui sarana baris-baris tulisan singkat yang diketikkan melalui keyboard.

D
DNS - Domain Name Service. Merupakan layanan di Internet untuk jaringan yang menggunakan TCP/IP. Layanan ini digunakan untuk mengidentifikasi sebuah komputer dengan nama bukan dengan menggunakan alamat IP (IP address). Singkatnya DNS melakukan konversi dari nama ke angka. DNS dilakukan secara desentralisasi, dimana setiap daerah atau tingkat organisasi memiliki domain sendiri. Masing-masing memberikan servis DNS untuk domain yang dikelola.

DSL - Digital Subscriber Line. Sebuah metode transfer data melalui saluran telepon reguler. Sirkuit DSL dikonfigurasikan untuk menghubungkan dua lokasi yang spesifik, seperti halnya pada sambungan Leased Line (DSL berbeda dengan Leased Line). Koneksi melalui DSL jauh lebih cepat dibandingkan dengan koneksi melalui saluran telepon reguler walaupun keduanya sama-sama menggunakan kabel tembaga. Konfigurasi DSL memungkinkan upstream maupun downstream berjalan pada kecepatan yang berbeda (lihat ASDL) maupun dalam kecepatan sama (lihat SDSL). DSL menawarkan alternatif yang lebih murah dibandingkan dengan ISDN.

Download - Istilah untuk kegiatan menyalin data (biasanya berupa file) dari sebuah komputer yang terhubung dalam sebuah network ke komputer lokal. Proses download merupakan kebalikan dari upload.

Downstream - Istilah yang merujuk kepada kecepatan aliran data dari komputer lain ke komputer lokal melalui sebuah network. Istilah ini merupakan kebalikan dari upstream.

E
Email - Electronic Mail. Pesan, biasanya berupa teks, yang dikirimkan dari satu alamat ke alamat lain di jaringan internet. Sebuah alamat email yang mewakili banyak alamat email sekaligus disebut sebagai mailing list. Sebuah alamat email biasanya memiliki format semacam username@host.domain, misalnya: myname@mydomain.com.

F
Firewall - Kombinasi dari hardware maupun software yang memisahkan sebuah network menjadi dua atau lebih bagian untuk alasan keamanan.

FTP - File Transfer Protocol. Protokol standar untuk kegiatan lalu-lintas file (upload maupun download) antara dua komputer yang terhubung dengan jaringan internet. Sebagian sistem FTP mensyaratkan untuk diakses hanya oleh mereka yang memiliki hak untuk itu dengan mengguinakan login tertentu. Sebagian lagi dapat diakses oleh publik secara anonim. Situs FTP semacam ini disebut Anonymous FTP.

G
Gateway - Dalam pengertian teknis, istilah ini mengacu pada pengaturan hardware maupun software yang menterjemahkan antara dua protokol yang berbeda. Pengertian yang lebih umum untuk istilah ini adalah sebuah mekanisme yang menyediakan akses ke sebuah sistem lain yang terhubung dalam sebuah network.

GPRS - General Packet Radio Service. Salah satu standar komunikasi wireless (nirkabel). Dibandingkan dengan protokol WAP, GPRS memiliki kelebihan dalam kecepatannya yang dapat mencapai 115 kbps dan adanya dukungan aplikasi yang lebih luas, termasuk aplikasi grafis dan multimedia.

H
Home Page/Homepage - Halaman muka dari sebuah situs web. Pengertian lainnya adalah halaman default yang diset untuk sebuah browser.

Host - Sebuah komputer dalam sebuah network yang menyediakan layanan untuk komputer lainnya yang tersambung dalam network yang sama.

HTML - Hypertext Markup Language, merupakan salah satu varian dari SGML yang dipergunakan dalam pertukaran dokumen melalui protokol HTTP.

HTTP - Hyper Text Transfer Protocol. Protokol yang didisain untuk mentransfer dokumen HTML yang digunakan dalam World Wide Web.

HTTPD - Lihat World Wide Web.

I
IMAP - Internet Message Access Protocol. Protokol yang didisain untuk mengakses e-mail. protokol lainnya yang sering digunakan adalah POP.

Internet - Sejumlah besar network yang membentuk jaringan inter-koneksi (Inter-connected network) yang terhubung melalui protokol TCP/IP. Internet merupakan kelanjutan dari ARPANet dan kemungkinan merupakan jaringan WAN yang terbesar yang ada saat ini.

Intranet - Sebuah jaringan privat dengan sistem dan hirarki yang sama dengan internet namun tidak terhubung dengan jaringan internet dan hanya digunakan secar internal.

IP Address - Alamat IP (Internet Protocol), yaitu sistem pengalamatan di network yang direpresentasikan dengan sederetan angka berupa kombinasi 4 deret bilangan antara 0 s/d 255 yang masing-masing dipisahkan oleh tanda titik (.), mulai dari 0.0.0.1 hingga 255.255.255.255.

ISDN - Integrated Services Digital Network. Pada dasarnya, ISDN merupakan merupakan jalan untuk melayani transfer data dengan kecepatan lebih tinggi melalui saluran telepon reguler. ISDN memungkinkan kecepatan transfer data hingga 128.000 bps (bit per detik). Tidak seperti DSL, ISDN dapat dikoneksikan dengan lokasi lain seperti halnya saluran telepon, sepanjang lokasi tersebut juga terhubung dengan jaringan ISDN.

ISP - Internet Service Provider. Sebutan untuk penyedia layanan internet.

L
Leased Line - Saluran telepon atau kabel fiber optik yang disewa untuk penggunaan selama 24 jam sehari untuk menghubungkan satu lokasi ke lokasi lainnya. Internet berkecepatan tinggi biasanya menggunakan saluran ini.

Login - Pengenal untuk mengakses sebuah sistem yang tertutup, terdiri dari username (juga disebut login name) dan password (kata kunci).

M
Mailing List - Juga sering diistilahkan sebagai milis, yaitu sebuah alamat email yang digunakan oleh sekelompok pengguna internet untuk melakukan kegiatan tukar menukar informasi. Setiap pesan yang dikirimkan ke alamat sebuah milis, secara otomatis akan diteruskan ke alamat email seluruh anggotanya. Milis umumnya dimanfaatkan sebagai sarana diskusi atau pertukaran informasi diantara para anggotanya.

MIME - Multi Purpose Internet Mail Extensions. Ekstensi email yang diciptakan untuk mempermudah pengiriman berkas melalui attachment pada email.

MTA - Mail Transport Agent. Perangkat lunak yang bekerja mengantarkan e-mail kepada user. Adapun program untuk membaca e-mail dikenal dengan istilah MUA (Mail User Agent).

MUA - Lihat MTA.

N
Network - Dalam terminologi komputer dan internet, network adalah sekumpulan dua atau lebih sistem komputer yang digandeng dan membentuk sebuah jaringan. Internet sebenarnya adalah sebuah network dengan skala yang sangat besar.

NNTP - Network News Transfer Protocol. protokol yang digunakan untuk mengakses atau transfer artikel yang diposkan di Usenet news. Program pembaca news (news reader) menggunakan protokol ini untuk mengakses news. NNTP bekerja di atas protokol TCP/IP dengan menggunakan port 119.

Node - Suatu komputer tunggal yang tersambung dalam sebuah network.

P
Packet Switching - Sebuah metode yang digunakan untuk memindahkan data dalam jaringan internet. Dalam packet switching, seluruh paket data yang dikirim dari sebuah node akan dipecah menjadi beberapa bagian. Setiap bagian memiliki keterangan mengenai asal dan tujuan dari paket data tersebut. Hal ini memungkinkan sejumlah besar potongan-potongan data dari berbagai sumber dikirimkan secara bersamaan melalui saluran yang sama, untuk kemudian diurutkan dan diarahkan ke rute yang berbeda melalui router.

PERL - Sebuah bahasa pemrograman yang dikembangkan oleh Larry Wall yang sering dipakai untuk mengimplementasikan script CGI di World Wide Web. Bahasa Perl diimplementasikan dalam sebuah interpreter yang tersedia untuk berbagai macam sistem operasi, diantaranya Windows, Unix hingga Macintosh.

POP - Post Office Protocol. Protokol standar yang digunakan untuk mengambil atau membaca email dari sebuah server. protokol POP yang terakhir dan paling populer digunakan adalah POP3. protokol lain yang juga sering digunakan adalah IMAP. Adapun untuk mengirim email ke sebuah server digunakan protokol SMTP.

PPP - Point to Point Protocol. Sebuah protokol TCP/IP yang umum digunakan untuk mengkoneksikan sebuah komputer ke internet melalui saluran telepon dan modem.

Protokol - Protocol. Seperangkat aturan yang mengatur secara tepat format komunikasi antar sistem. Sebagai contoh, protokol HTTP mengatur format komunikasi antara browser web dan browser server. Protokol IMAP mengatur format komunikasi antara server email IMAP dengan klien.

PSTN - Public Switched Telephone Network. Sebutan untuk saluran telepon konvensional yang menggunakan kabel.

R
RFC - Request For Comments. Sebutan untuk hasil dan proses untuk menciptakan sebuah standar dalam internet. Sebuah standar baru diusulkan dan dipublikasikan di internet sebagai sebuah Request For Comments. Proposal ini selanjutnya akan di-review oleh Internet Engineering Task Force (IETF), sebuah badan yang mengatur standarisasi di internet. Apabila standar tersebut kemudian diaplikasikan, maka ia akan tetap disebut sebagai RFC dengan referensi berupa nomor atau nama tertentu, misalnya standar format untuk email adalah RFC 822.

Router - Sebuah komputer atau paket software yang dikhususkan untuk menangani koneksi antara dua atau lebih network yang terhubung melalui packet switching. Router bekerja dengan melihat alamat tujuan dan alamat asal dari paket data yang melewatinya dan memutuskan rute yang harus digunakan oleh paket data tersebut untuk sampai ke tujuan.

S
SDSL - Symmetric Digital Subscriber Line. Salah satu tipe DSL yang memungkinkan transfer data untuk upstream maupun downstream berjalan pada kecepatan yang sama. SDSL umumnya berkerja pada kecepatan 384 kbps (kilobit per detik).

SGML - Standard Generalized Markup Language. Nama populer dari ISO Standard 8879 (tahun 1986) yang merupakan standar ISO (International Organization for Standarization) untuk pertukaran dokumen secara elektronik dalam bentuk hypertext.

SMTP - Simple Mail Transfer Protocol. Protokol standar yang digunakan untuk mengirimkan email ke sebuah server di jaringan internet. Untuk keperluan pengambilan email, digunakan protokol POP.

SSH - Secure Shell. Protokol pengganti Telnet yang memungkinkan akses yang lebih secure ke remote-host.

T
TCP/IP - Transmission Control Protocol/Internet Protocol. Satu set protokol standar yang digunakan untuk menghubungkan jaringan komputer dan mengalamati lalu lintas dalam jaringan. protokol ini mengatur format data yang diijinkan, penanganan kesalahan (error handling), lalu lintas pesan, dan standar komunikasi lainnya. TCP/IP harus dapat bekerja diatas segala jenis komputer, tanpa terpengaruh oleh perbedaan perangkat keras maupun sistem operasi yang digunakan.

Telnet - Perangkat lunak yang didesain untuk mengakses remote-host dengan terminal yang berbasis teks, misalnya dengan emulasi VT100. Penggunaan Telnet sangat rawan dari segi sekuriti. Saat ini penggunaan Telnet telah digantikan oleh protokol SSH dengan tingkat keamanan yang lebih baik.

U
UDP - User Datagram Protocol. Salah satu protokol untuk keperluan transfer data yang merupakan bagian dari TCP/IP. UDP merujuk kepada paket data yang tidak menyediakan keterangan mengenai alamat asalnya saat paket data tersebut diterima.

Upload - Kegiatan pengiriman data (berupa file) dari komputer lokal ke komputer lainnya yang terhubung dalam sebuah network. Kebalikan dari kegiatan ini disebut download.

Upstream - Istilah yang merujuk kepada kecepatan aliran data dari komputer lokal ke komputer lain yang terhubung melalui sebuah network. Istilah ini merupakan kebalikan dari downstream.

URI - Uniform Resource Identifier. Sebuah alamat yang menunjuk ke sebuah resource di internet. URI biasanya terdiri dari bagian yang disebut skema (scheme) yang diikuti sebuah alamat. URI diakses dengan format skema://alamat.resource atau skema:alamat.resource. Misalnya, URI http://yahoo.com menunjukkan alamat resource yahoo.com yang dipanggil lewat skema HTTP Walaupun HTTP adalah skema yang sering digunakan, namun masih tersedia skema-skema lain, misalnya telnet, FTP, News, dan sebagainya.

URL - Uniform Resource Locator. Istilah ini pada dasarnya sama dengan URI, tetapi istilah URI lebih banyak digunakan untuk menggantikan URL dalam spesifikasi teknis.

Usenet - Usenet news, atau dikenal juga dengan nama “Net news”, atau “news” saja, merupakan sebuah buletin board yang sangat besar dan tersebar di seluruh dunia yang dapat digunakan untuk bertukar artikel. Siapa saja dapat mengakses Usenet news ini dengan program-program tertentu, yang biasanya disebut newsreader. Akses ke server news dapat dilakukan dengan menggunakan protokol NNTP atau dengan membaca langsung ke direktori spool untuk news yaitu direktori dimana artikel berada (cara terakhir ini sudah jarang dilakukan).

UUENCODE - Unix to Unix Encoding. Sebuah metode untuk mengkonfersikan file dalam format Biner ke ASCII agar dapat dikirimkan melalui email.

V
VOIP - Voice over IP. VoIP adalah suatu mekanisme untuk melakukan pembicaraan telepon (voice) dengan menumpangkan data dari pembicaraan melalui Internet atau Intranet (yang menggunakan teknologi IP).

VPN - Virtual Private Network. Istilah ini merujuk pada sebuah network yang sebagian diantaranya terhubung dengan jaringan internet, namun lalu lintas data yang melalui internet dari network ini telah mengalami proses enkripsi (pengacakan). Hal ini membuat network ini secara virtual “tertutup” (private).

W
WAP - Wireless Application Protocol. Standar protokol untuk aplikasi wireless (seperti yang digunakan pada ponsel). WAP merupakan hasil kerjasama antar industri untuk membuat sebuah standar yang terbuka (open standard). WAP berbasis pada standar Internet, dan beberapa protokol yang sudah dioptimasi untuk lingkungan wireless. WAP bekerja dalam modus teks dengan kecepatan sekitar 9,6 kbps. Belakangan juga dikembangkan protokol GPRS yang memiliki beberapa kelebihan dibandingkan WAP.

Webmail - Fasilitas pengiriman, penerimaan, maupun pembacaan email melalui sarana web.

WML - Wireless Markup Language. Salah satu turunan dari format HTML yang khusus dikembangkan untuk dipakai pada protokol WAP.

World Wide Web - Sering disingkat sebagai WWW atau “web” saja, yakni sebuah sistem dimana informasi dalam bentuk teks, gambar, suara, dan lain-lain dipresentasikan dalam bentuk hypertext dan dapat diakses oleh perangkat lunak yang disebut browser. Informasi di web pada umumnya ditulis dalam format HTML. Informasi lainnya disajikan dalam bentuk grafis (dalam format GIF, JPG, PNG), suara (dalam format AU, WAV), dan objek multimedia lainnya (seperti MIDI, Shockwave, Quicktime Movie, 3D World). WWW dijalankan dalam server yang disebut HTTPD.

X
XML - Extensible Markup Language. Pengembangan lebih lanjut dari format HTML yang digunakan dalam World Wide Web. XML memiliki sejumlah kelebihan dibandingkan HTML, diantaranya dokumen lebih terstruktur, memungkinkan manipulasi tampilan data tanpa harus berhubungan dengan webserver, serta pertukaran data antar dokumen.

Java

SEJARAH

Java pertama lahir dari The Green Project, yang berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut belum menggunakan versi yang dinamakan Oak. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill Joy, beserta sembilan pemrogram lainnya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.

Pertemuan proyek berlangsung di sebuah gedung perkantoran Sand Hill Road di Menlo Park. Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program Java Oak pertama, yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar sentuh (touch screen), seperti pada PDA sekarang ini. Teknologi baru ini dinamai "*7" (Star Seven).

Setelah era Star Seven selesai, sebuah anak perusahaan TV kabel tertarik ditambah beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah ruangan kantor di 100 Hamilton Avenue, Palo Alto.

Perusahaan baru ini bertambah maju: jumlah karyawan meningkat dalam waktu singkat dari 13 menjadi 70 orang. Pada rentang waktu ini juga ditetapkan pemakaian Internet sebagai medium yang menjembatani kerja dan ide di antara mereka. Pada awal tahun 1990-an, Internet masih merupakan rintisan, yang dipakai hanya di kalangan akademisi dan militer.

Mereka menjadikan perambah (browser) Mosaic sebagai landasan awal untuk membuat perambah Java pertama yang dinamai Web Runner, terinsipirasi dari film 1980-an, Blade Runner. Pada perkembangan rilis pertama, Web Runner berganti nama menjadi Hot Java.

Pada sekitar bulan Maret 1995, untuk pertama kali kode sumber Java versi 1.0a2 dibuka. Kesuksesan mereka diikuti dengan untuk pemeritaan pertama kali pada surat kabar San Jose Mercury News pada tanggal 23 Mei 1995.

Sayang terjadi perpecahan di antara mereka suatu hari pada pukul 04.00 di sebuah ruangan hotel Sheraton Palace. Tiga dari pimpinan utama proyek, Eric Schmidt dan George Paolini dari Sun Microsystems bersama Marc Andreessen, membentuk Netscape.

Nama Oak, diambil dari pohon oak yang tumbuh di depan jendela ruangan kerja "bapak java", James Gosling. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi "Java". Nama ini diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan Gosling.

VERSI

Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya:

· java.lang: Peruntukan kelas elemen-elemen dasar.

· java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.

· java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.

· java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.

· java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)

· java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.

KELEBIHAN

· Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.

· OOP (Object Oriented Programming - Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis oebjek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.

· Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.

· Bergaya C++, memiliki sintaks seperti bahasa pemrograman [C++] sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.

· Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).

KEKURANGAN

· Tulis sekali, perbaiki di mana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.

· Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena koe jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.

· Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.

Minggu, 02 November 2008

Algoritma Thinning

Algoritma Thinning dan Penjelasannya

Thinning merupakan metode yang digunakan untuk skeletonizing yang salah satu penggunaanya adalah dalam aplikasi pattern recognition. Terdapat cukup banyak algoritma untuk image thinning dengan tingkat kompleksitas, efisiensi dan akurasi yang berbeda-beda. Kami hanya akan membahas beberapa algoritma yang tersedia. Citra yang digunakan adalah citra biner, jika citra itu merupakan suatu citra grayscale, biasanya dilakukan thresholding terlebih dahulu sedemikian rupa sehingga citra tersebut menjadi citra biner. Citra biner adalah citra yang hanya memiliki 2 kemungkinan nilai pada setiap piksel-pikselnya, yaitu 0 atau 1. Nilai 0 adalah background points, biasanya bukan merupakan bagian dari citra sesungguhnya. Sedangkan nilai 1 adalah region points, yaitu bagian dari citra sebenarnya (bukan latar belakang). Citra hasil dari algoritma thinning biasanya disebut dengan skeleton.

Umumnya suatu algoritma thinning yang dilakukan terhadap citra biner seharusnya memenuhi kriteria-kriteria sebagai berikut:

  • Skeleton dari citra kira-kira berada di bagian tengah dari citra awal sebelum dilakukan thinning.
  • Citra hasil dari algoritma thinning harus tetap menjaga struktur keterhubungan yang sama dengan citra awal.
  • Suatu skeleton seharusnya memiliki bentuk yang hampir mirip dengan citra awal.
  • Suatu skeleton seharusnya mengandung jumlah pixel yang seminimal mungkin namun tetap memenuhi kriteria-kriteria sebelumnya.

Algoritma Zhang-Suen

Algoritma ini adalah salah satu algoritma thinning yang cukup populer dan telah digunakan sebagai suatu basis perbandingan untuk thinning. Algoritma ini cepat dan mudah diimplementasikan.

Setiap iterasi dari metode ini terdiri dari dua sub-iterasi yang berurutan yang dilakukan terhadap contour points dari wilayah citra. Contour point adalah setiap pixel dengan nilai 1 dan memiliki setidaknya satu 8-neighbor yang memiliki nilai 0.

Dengan informasi ini, langkah pertama adalah menandai contour point p untuk dihapus jika semua kondisi ini dipenuhi:

(a) 2 ≤ N(p1) ≤ 6;

(b) S(p1) = 1;

(c) p2 . p4 . p6 = 0;

(d) p4 . p6 . p8 = 0;

dimana N(p1) adalah jumlah tetangga dari p1 yang tidak 0; yaitu,

N(p1) = p2 + p3 + ... + p8 + p9

p9

p2

p3

p8

p1

p4

p7

p6

p5

dan S(p1) adalah jumlah dari transisi 0-1 pada urutan p2, p3, ..., p8, p9.

Dan pada langkah kedua, kondisi (a) dan (b) sama dengan langkah pertama, sedangkan kondisi (c) dan (d) diubah menjadi:

(c’) p2 . p4 . p8 = 0;

(d’) p2 . p6 . p8 = 0;

Langkah pertama dilakukan terhadap semua border pixel di citra. Jika salah satu dari keempat kondisi di atas tidak dipenuhi atau dilanggar maka nilai piksel yang bersangkutan tidak diubah. Sebaliknya jika semua kondisi tersebut dipenuhi maka piksel tersebut ditandai untuk penghapusan.

Piksel yang telah ditandai tidak akan dihapus sebelum semua border points selesai diproses. Hal ini berguna untuk mencegah perubahan struktur data. Setelah langkah 1 selesai dilakukan untuk semua border points maka dilakukan penghapusan untuk titik yang telah ditandai (diubah menjadi 0). Setelah itu dilakukan langkah 2 pada data hasil dari langkah 1 dengan cara yang sama dengan langkah 1 sehingga, dalam satu kali iterasi urutan algoritmanya terdiri dari:

(1) Menjalankan langkah 1 untuk menandai border points yang akan dihapus,

(2) hapus titik-titik yang ditandai dengan menggantinya menjadi angka 0,

(3) menjalankan langkah 2 pada sisa border points yang pada langkah 1 belum dihapus lalu yang sesuai dengan semua kondisi yang seharusnya dipenuhi pada langkah 2 kemudian ditandai untuk dihapus,

(4) hapus titik-titik yang ditandai dengan menggantinya menjadi angka 0.

Prosedur ini dilakukan secara iteratif sampai tidak ada lagi titik yang dapat dihapus, pada saat algoritma ini selesai maka akan dihasilkan skeleton dari citra awal.

Algoritma Stentiford

Metode ini adalah algoritma thinning dengan menggunakan teknik template-based mark-and-delete. Metode ini cukup terkenal karena reliable dan kefektifannya. Metode thinning jenis ini menggunakan template untuk dicocokkan dengan citra yang akan di-thinning. Algoritma ini bersifat iteratif yang berguna untuk mengikis lapisan pixel terluar sampai tidak ada lapisan lagi yang dapat dihilangkan.

Template yang dipakai adalah 4 buah template 3 x 3 yaitu,

Berikut ini akan dijelaskan langkah–langkah algoritma Stentiford :

  1. Cari pixel pada lokasi (i,j) dimana pixel-pixel pada image cocok dengan template T1. Dengan template ini, maka semua pixel di bagian atas dari image akan dihilangkan (remove). Pencocokkan template ini bergerak dari kiri ke kanan dan dari atas ke bawah.
  2. Bila pixel tengah bukan merupakan endpoint dan mempunyai jumlah konektivitas (connectivity number) 1, maka tandai pixel tersebut untuk kemudian dihilangkan (remove).

Endpoint pixel : pixel yang merupakan batas akhir dan hanya terhubung dengan 1 pixel saja. Contoh : suatu pixel hitam hanya mempunyai satu tetangga saja yang hitam juga dari kemungkinan delapan tetangga.

Connectivity number : merupakan suatu ukuran berapa banyak obyek yang terhubung dengan pixel tertentu (dihitung berdasarkan rumus di bawah).

Nk merupakan nilai dari 8 tetangga di sekitar pixel yang akan dianalisa (central pixel) dan nilai S = {1,3,5,7}. N0 adalah nilai dari pixel tengah (central pixel). N1 adalah nilai dari pixel pada sebelah kanan central pixel dan sisanya diberi nomor berurutan dengan arah berlawanan jarum jam.

4

3

2

5

0

1

6

7

8

Contoh :

Bagian a) menjelaskan tentang jumlah konektivitas (connectivity number) = 0.

Bagian b) menjelaskan tentang jumlah konektivitas (connectivity number) = 1.

Bagian c) menjelaskan tentang jumlah konektivitas (connectivity number) = 2.

Bagian d) menjelaskan tentang jumlah konektivitas (connectivity number) = 3.

Bagian e) menjelaskan tentang jumlah konektivitas (connectivity number) = 3

  1. Ulangi langkah 1 dan 2 untuk semua pixel yang cocok dengan template T1.
  2. Ulangi langkah 1–3 untuk template T2, T3 dan T4.

Pencocokkan template T2 akan dilakukan pada sisi kiri dari obyek dengan arah dari bawah ke atas dan dari kiri ke kanan.

Pencocokkan template T3 akan dilakukan pada sisi bawah dari obyek dengan arah dari kanan ke kiri dan dari bawah ke atas.

Pencocokkan template T4 akan dilakukan pada sisi kanan dari obyek dengan arah dari atas ke bawah dan dari kanan ke kiri.

  1. Pixel-pixel yang ditandai untuk dihilangkan (remove) dibuat sama dengan background (di-set 0 untuk binary image).

Contoh Hasil

Gambar Original

Gambar 1

Gambar 2

Dengan algoritma Zhang-Suen

Citra setelah di-thinning :

Gambar 1:

Gambar 2:

Dengan algoritma Stentiford

Citra setelah di-thinning :

Gambar 1:

Gambar 2:

Bagaimana Menurut Anda Blog Saya