Tampilkan postingan dengan label Komputer. Tampilkan semua postingan
Tampilkan postingan dengan label Komputer. Tampilkan semua postingan

Sabtu, 26 September 2015

SQL vs NoSQL: How to Choose


SQL databases:
    • store related data in tables
    • require a schema which defines tables prior to use
    • encourage normalization to reduce data redundancy
    • support table JOINs to retrieve related data from multiple tables in a single command
    • implement data integrity rules
    • provide transactions to guarantee two or more updates succeed or fail as an atomic unit
    • can be scaled (with some effort)
    • use a powerful declarative language for querying
    • offer plenty of support, expertise and tools.

NoSQL databases:
    • store related data in JSON-like, name-value documents
    • can store data without specifying a schema
    • must usually be denormalized so information about an item is contained in a single document
    • should not require JOINs (presuming denormalized documents are used)
    • permit any data to be saved anywhere at anytime without verification
    • guarantee updates to a single document — but not multiple documents
    • provide excellent performance and scalability
    • use JSON data objects for querying
    • are a newer, exciting technology.
SQL databases are ideal for projects where requirements can be determined and robust data integrity is essential. NoSQL databases are ideal for unrelated, indeterminate or evolving data requirements where speed and scalability are more important. In simpler terms:
    • SQL is digital. It works best for clearly defined, discrete items with exact specifications. Typical use cases are online stores and banking systems.
    • NoSQL is analog. It works best for organic data with fluid requirements. Typical use cases are social networks, customer management and web analytics systems.
Few projects will be an exact fit. Either option could be viable if you have shallower or naturally denormalized data. But please be aware these simplified example scenarios with sweeping generalizations! You know more about your project than I do, and I wouldn’t recommend switching from SQL to NoSQL or vice versa unless it offers considerable benefits. It’s your choice. Consider the pros and cons at the start of your project and you can’t go wrong.

Scenario One: a Contact List

Let’s re-invent the wheel and implement an SQL-based address book system. Our initial naive contact table is defined with the following fields:
    • id
    • title
    • firstname
    • lastname
    • gender
    • telephone
    • email
    • address1
    • address2
    • address3
    • city
    • region
    • zipcode
    • country
Problem one: few people have a single telephone number. We probably need at least three for land-line, mobile and workplace, but it doesn’t matter how many we allocate — someone, somewhere will want more. Let’s create a separate telephone table so contacts can have as many as they like. This also normalizes our data — we don’t need a NULL for contacts without a number:
  • contact_id
  • name (text such as land-line, work mobile, etc.)
  • number
Problem two: we have the same issue with email addresses, so let’s create a similar email table:
  • contact_id
  • name (text such as home email, work email, etc.)
  • address
Problem three: we may not wish to enter a (geographic) address, or we may want to enter multiple addresses for work, home, holiday homes, etc. We therefore need a new address table:
    • contact_id
    • name (text such as home, office, etc.)
    • address1
    • address2
    • address3
    • city
    • region
    • zipcode
    • country
Our original contact table has been reduced to:
    • id
    • title
    • firstname
    • lastname
    • gender

Great — we have a normalized database which can store any number of telephone numbers, email addresses and addresses for any contact. Unfortunately …

The schema is rigid
We’ve not considered the contact’s middle name(s), date of birth, company or job role. It doesn’t matter how many fields we add, we’ll soon receive update requests for notes, anniversaries, relationship statuses, social media accounts, inside leg measurements, favorite type of cheese etc. It’s impossible to foresee every option, so we’d possibly create an otherdata table with name-value pairs to cope.

The data is fragmented
It’s not easy to for developers or system administrators to examine the database. The program logic will also become slower and more complex, because it’s not practical to retrieve a contact’s data in a single SELECT statement with multiple JOIN clauses. (You could, but the result would contain every combination of telephone, email and address: if someone had three telephone numbers, five emails and two addresses, the SQL query would generate thirty results.)

Finally, full-text search is difficult. If someone enters the string “SitePoint”, we must check all four tables to see if it’s part of a contact name, telephone, email or address and rank the result accordingly. If you’ve ever used WordPress’s search, you’ll understand how frustrating that can be.

The NoSQL Alternative
Our contact data concerns people. They are unpredictable and have differing requirements at different times. The contact list would benefit from using a NoSQL database, which stores all data about an individual in a single document in the contacts collection:

{
  name: [
    "Billy", "Bob", "Jones"
  ],
  company: "Fake Goods Corp",
  jobtitle: "Vice President of Data Management",
  telephone: {
    home: "0123456789",
    mobile: "9876543210",
    work: "2244668800"
  },
  email: {
    personal: "bob@myhomeemail.net",
    work: "bob@myworkemail.com"
  },
  address: {
    home: {
      line1: "10 Non-Existent Street",
      city: "Nowhere",
      country: "Australia"
    }
  },
  birthdate: ISODate("1980-01-01T00:00:00.000Z"),
  twitter: '@bobsfakeaccount',
  note: "Don't trust this guy",
  weight: "200lb",
  photo: "52e86ad749e0b817d25c8892.jpg"
}

In this example, we haven’t stored the contact’s title or gender, and we’ve added data which need not apply to anyone else. It doesn’t matter — our NoSQL database won’t mind, and we can add or remove fields at will.

Because the contact’s data is contained in a single document, we can retrieve some or all information using a single query. A full-text search is also simpler; in MongoDB we can define an index on all contact text fields using:

db.contact.createIndex({ "$**": "text" });
then perform a full-text search using:
db.contact.find({
  $text: { $search: "something" }
});

Scenario Two: a Social Network

A social network may use similar contact data stores, but it expands on the feature set with options such as relationship links, status updates, messaging and “likes”. These facilities may be implemented and be dropped in response to user demand — it’s impossible to predict how they will evolve.

In addition:

Most data updates have a single point of origin: the user. It’s unlikely we’ll need to update two or more records at any one time, so transaction-like functionality is not required.
Despite what some users may think, a failed status update is unlikely to cause a global meltdown or financial loss. The application’s interface and performance take a higher priority than robust data integrity.

NoSQL appears to be a good fit. The database allows us to quickly implement features storing different types of data. For example, all the user’s dated status updates could be placed in a single document in the status collection:

{
  user_id: ObjectID("65f82bda42e7b8c76f5c1969"),
  update: [
    {
      date: ISODate("2015-09-18T10:02:47.620Z"),
      text: "feeling more positive today"
    },
    {
      date: ISODate("2015-09-17T13:14:20.789Z"),
      text: "spending far too much time here"
    }
    {
      date: ISODate("2015-09-17T12:33:02.132Z"),
      text: "considering my life choices"
    }
  ]
}

While this document could become long, we can fetch a subset of the array, such as the most recent update. The whole status history for every user can also be searched quickly.


Now presume we wanted to introduce an emoticon choice when posting an update. This would be a matter of adding a graphic reference to new entries in the update array. Unlike an SQL store, there’s no need to set previous message emoticons to NULL — our program logic can show a default or no image if an emoticon isn’t set.

Scenario Three: a Warehouse Management System

Consider a system which monitors warehoused goods. We need to record:

    • products arriving at the warehouse and being allocated to a specific location/bay
    • movements of goods within the warehouse, e.g. rearranging stock so the same products are in adjacent locations
    • orders and the subsequent removal of products from the warehouse for delivery.

Generic product information such as box quantities, dimensions and color can be stored, but it’s discrete data we can identify and apply to anything. We’re unlikely to be concerned with specifics, such as laptop processor speed or estimated smartphone battery life.

Our data requirements:

  1. It’s imperative to minimize mistakes. We can’t have products disappearing or being moved to a location where different products are already being stored.
  2. I hope these scenarios help, but every project is different and, ultimately, you need to make your own decision. (Although, we developers are adept at justifying our technological choices, regardless of how good they are!)
  3. In its simplest form, we’re recording the transfer of items from one physical area to another — or removing from location A and placing in location B. That’s two updates for the same action.
We need a robust store with enforced data integrity and transaction support. Only an SQL database will (currently) satisfy those requirements.


Source : http://www.sitepoint.com/sql-vs-nosql-choose/

Sabtu, 16 Agustus 2014

MEMBUAT WEB DENGAN MENGGUNAKAN BOOTSTRAP V.3

Sobat sekalian mungkin untuk orang yang sudah pernah membuat website sudah tidak asing lagi dengan Framework Bootstrap. Boostrap merupakan style web yang tinggal pake saja, jadi untuk memuat web yang responsive sekalipun gak usah pusing script css-nya gimana....hehehe.
Oh ya gw jelasin dulu apa itu yang namanya web responsive, web responsive merupakan web yang memiliki variasi tampilan untuk berbagai layar. Misalnya kita mau browsing di Desktop, Tablet, dan juga Mobile akan memiliki tampilan yang berbeda-beda. Mungkin orang yang masih awam akan bertanya kenapa kok bisa beda? Bukankah klo beda tampilan informasi jadi acak-acakan nanti? Jawabannya adalah perbedaan yang dimaksud disini adalah dari segi struktur tampilan informasi tetapi untuk informasi yang disampaikan tidak berkurang alias gunanya responsive adalah membuat tampilan di berbagai devisce lebih menarik.
Konsepnya seperti ini, kita punya berbagai device.
Layar Device

Untuk membuat tampilan web di berbagai device ini kita tidak perlu koding untuk masing-masing device jika kita sudah bisa menggunakan yang namanya bootstrap yang saya maksud. Karena walaupun ukuran layar berbeda-beda bootstrap bisa handle semuanya tanpa mengurangi informasi. Dan pastinya yang gak jago CSS gw saranin pake yang satu ini nih....hehhee.
  1. Oke langkah pertama kalian download dulu bootstrapnya disini.
  2. Kemudian Download Jquery Download the compressed, production jQuery 1.11.1
  3. Setelah itu ekstrak boostrap yang sudah kalian download sehingga bentuknya seperti ini.
  4. Hasil Ekstraksi Bootstrap
  5. Setelah itu masukkan JQuery yang telah di download tadi ke folder js diatas, sehingga isinya seperti ini.
  6. Memasukkan file Jquery
  7. Kemudian kita coba membuat halaman simple dengan codingan seperti di bawah ini.
  8. Tuliskan script di bawah ini pada notepad/notepad++ dan simpan dengan nama index.html
  9. 1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <html>
    <head>
    <title>Tutorial Pertama</title>
    <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
    </head>
    <body>
    <div class="container">
    <nav class="navbar navbar-default" role="navigation">
      <!-- Brand and toggle get grouped for better mobile display -->
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">Brand</a>
      </div>
    
      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
          <li class="active"><a href="#">Link</a></li>
          <li><a href="#">Link</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="#">Action</a></li>
              <li><a href="#">Another action</a></li>
              <li><a href="#">Something else here</a></li>
              <li class="divider"></li>
              <li><a href="#">Separated link</a></li>
              <li class="divider"></li>
              <li><a href="#">One more separated link</a></li>
            </ul>
          </li>
        </ul>
        <form class="navbar-form navbar-left" role="search">
          <div class="form-group">
            <input type="text" class="form-control" placeholder="Search">
          </div>
          <button type="submit" class="btn btn-default">Submit</button>
        </form>
        <ul class="nav navbar-nav navbar-right">
          <li><a href="#">Link</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="#">Action</a></li>
              <li><a href="#">Another action</a></li>
              <li><a href="#">Something else here</a></li>
              <li class="divider"></li>
              <li><a href="#">Separated link</a></li>
            </ul>
          </li>
        </ul>
      </div><!-- /.navbar-collapse -->
    </nav>
    <div class="row">
    <div class="col-md-8 col-xs-8 col-sm-6">
    <h3>Bagian Content</h3>
    <br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    </div>
    <div class="col-md-4 col-xs-4">
    <h4>Bagian Widget</h4>
    </div>
    
    
    </div>
    
    
    <div class="well well-sm text-center">Copyright &copy by Indra Tobing</div>
    </div>
    <script src="js/jquery-1.11.1.min.js" ></script>
    <script src="js/bootstrap.min.js" ></script>
    
    </body>
    
    </html>
    
  10. Jika kalian jalankan di web browser dengan cara double click pada index.html yang disimpan tadi.
  11. Hasilnya adalah seperti pada gambar  bawah ini.
Output
Untuk download source code bisa disini.
Untuk memudahkan kalian mempelajari bootstrap memasang Bootstrap Twitter Offline Docs pada Google Chrome  kalian yaitu di webstore

Selasa, 13 Mei 2014

Quantum Computing

Komputer kuantum adalah alat hitung yang menggunakan sebuah fenomena mekanika kuantum, misalnya superposisi dan keterkaitan, untuk melakukan operasi data. Dalam komputasi klasik, jumlah data dihitung dengan bit; dalam komputer kuantum, hal ini dilakukan dengan qubit. Prinsip dasar komputer kuantum adalah bahwa sifat kuantum dari partikel dapat digunakan untuk mewakili data dan struktur data, dan bahwa mekanika kuantum dapat digunakan untuk melakukan operasi dengan data ini. Dalam hal ini untuk mengembangkan komputer dengan sistem kuantum diperlukan suatu logika baru yang sesuai dengan prinsip kuantum.
Ide mengenai komputer kuantum ini berasal dari beberapa fisikawan antara lain Charles H. Bennett dari IBM, Paul A. Benioff dari Argonne National Laboratory, Illinois, David Deutsch dari University of Oxford, dan Richard P. Feynman dari California Institute of Technology (Caltech).
Pada awalnya Feynman mengemukakan idenya mengenai sistem kuantum yang juga dapat melakukan proses penghitungan. Fenyman juga mengemukakan bahwa sistem ini bisa menjadi simulator bagi percobaan fisika kuantum.
Selanjutnya para ilmuwan mulai melakukan riset mengenai sistem kuantum tersebut, mereka juga berusaha untuk menemukan logika yang sesuai dengan sistem tersebut. Sampai saat ini telah dikemukaan dua algoritma baru yang bisa digunakan dalam sistem kuantum yaitualgoritma shor dan algoritma grover.
Walaupun komputer kuantum masih dalam pengembangan, telah dilakukan eksperimen dimana operasi komputasi kuantum dilakukan atas sejumlah kecil Qubit. Riset baik secara teoretis maupun praktik terus berlanjut dalam laju yang cepat, dan banyak pemerintah nasional dan agensi pendanaan militer mendukung riset komputer kuantum untuk pengembangannya baik untuk keperluan rakyat maupun masalah keamanan nasional seperti kriptoanalisis.
Telah dipercaya dengan sangat luas, bahwa apabila komputer kuantum dalam skala besar dapat dibuat, maka komputer tersebut dapat menyelesaikan sejumlah masalah lebih cepat daripada komputer biasa. Komputer kuantum berbeda dengan komputer DNA dan komputer klasik berbasis transistor, walaupun mungkin komputer jenis tersebut menggunakan prinsip kuantum mekanik. Sejumlah arsitektur komputasi seperti komputer optik walaupun menggunakan superposisi klasik dari gelombang elektromagnetik, namun tanpa sejumlah sumber kuantum mekanik yang spesifik seperti keterkaitan, maka tak dapat berpotensi memiliki kecepatan komputasi sebagaimana yang dimiliki oleh komputer kuantum.

1. Algoritma Shor
Algoritma Shor, dinamai matematikawan Peter Shor , adalah algoritma kuantum yaitu merupakan suatu algoritma yang berjalan pada komputer kuantum yang berguna untuk faktorisasi bilangan bulat. Algoritma Shor dirumuskan pada tahun 1994.  Inti dari algoritma ini merupakan bagaimana cara menyelesaikan faktorisasi terhaadap bilanga interger atau bulat yang besar.
Efisiensi algoritma Shor adalah karena efisiensi kuantum Transformasi Fourier , dan modular eksponensial. Jika sebuah komputer kuantum dengan jumlah yang memadai qubit dapat beroperasi tanpa mengalah kebisingan dan fenomena interferensi kuantum lainnya, algoritma Shor dapat digunakan untuk memecahkan kriptografi kunci publik skema seperti banyak digunakan skema RSA. Algoritma Shor terdiri dari dua bagian:
- Penurunan yang bisa dilakukan pada komputer klasik, dari masalah anjak untuk masalah ketertiban -temuan.
- Sebuah algoritma kuantum untuk memecahkan masalah order-temuan.
Hambatan runtime dari algoritma Shor adalah kuantum eksponensial modular yang jauh lebih lambat dibandingkan dengan kuantum Transformasi Fourier dan pre-/post-processing klasik. Ada beberapa pendekatan untuk membangun dan mengoptimalkan sirkuit untuk eksponensial modular. Yang paling sederhana dan saat ini yaitu pendekatan paling praktis adalah dengan menggunakan meniru sirkuit aritmatika konvensional dengan gerbang reversibel , dimulai dengan penambah ripple-carry. Sirkuit Reversible biasanya menggunakan nilai pada urutan n ^ 3, gerbang untuk n qubit. Teknik alternatif asimtotik meningkatkan jumlah gerbang dengan menggunakan kuantum transformasi Fourier , tetapi tidak kompetitif dengan kurang dari 600 qubit karena konstanta tinggi.
Algoritma Shor
2. Algoritma Grover
Algoritma Grover adalah sebuah algoritma kuantum untuk mencari database disortir dengan entri N di O ( N1 / 2 ) waktu dan menggunakan O ( log N ) ruang penyimpanan (lihat notasi O besar ) . Lov Grover dirumuskan itu pada tahun 1996 . Dalam model komputasi klasik , mencari database unsorted tidak dapat dilakukan dalam waktu kurang dari waktu linier (jadi hanya mencari melalui setiap item optimal ) . Algoritma Grover menggambarkan bahwa dalam model kuantum pencarian dapat dilakukan lebih cepat dari ini ; sebenarnya waktu kompleksitas O ( N1 / 2 ) adalah asimtotik tercepat mungkin untuk mencari database unsorted dalam model kuantum linear . Ini menyediakan percepatan kuadrat , seperti algoritma kuantum lainnya , yang dapat memberikan percepatan eksponensial atas rekan-rekan mereka klasik . Namun, bahkan percepatan kuadrat cukup besar ketika N besar . Seperti banyak algoritma kuantum , algoritma Grover adalah probabilistik dalam arti bahwa ia memberikan jawaban yang benar dengan probabilitas tinggi . Kemungkinan kegagalan dapat dikurangi dengan mengulangi algoritma.
Implementasi Quantum Computing
Bayangkan sebuah komputer masa depan, yang kecepatannya ribuan kali lebih cepat darisupercomputer tercepat sekarang. Ribuan kali lebih cepat dan efisien dari IBM ”Roadrunner” di Los Alamos yang kecepatannya mencapai 1.7 petaflops (1 petaflop = 10^15 operasi per detik).

Inilah kedahsyatan komputer kuantum. Komputer ini begitu dahsyat karena diciptakan memakai fenomena keajaiban dunia kuantum, Superposition dan Quantum Entanglement.

Dalam pemecahan kode misalnya (kriptografi), untuk memecahkan kode yang digitnya sampai 140, komputer biasa akan memerlukan waktu milyaran tahun untuk memecahkannya. Tapi dengan komputer kuantum, ini bisa dipecahkan hanya dalam waktu beberapa puluh menit saja.
Dengan komputer ini manusia juga akan bisa memprediksikan cuaca di bumi dan gejala-gejala alam lain yang sangat kompleks dengan sangat akurat berbulan-bulan sebelumnya, seperti gempa bumi dan tornado. Dan tentu saja ini akan makin merevolusikan lagi kecepatan pengembangan seluruh teknologi canggih yang ada sekarang.

Referensi :
http://id.wikipedia.org/wiki/Komputer_kuantum
http://seto.citravision.com/berita-45-pengantar-quantum-computation--algoritma-shor.html
http://rullyyy.wordpress.com/2014/05/12/definisi-implementasi-dan-algoritma-dari-quantum-computing/




Sabtu, 12 April 2014

Mamfaat Cloud Computing


     Dewasa ini cloud computing sangatlah populer di dunia teknologi dan informasi.Tidak menutup kemungkinan jika nantinya dimasa depan penggunaan komputasi awan menjadi sesuatu yang dipilih untuk menjalankan bisnis bagi perusahaan. Beberapa manfaat yang bisa dirasakan oleh perusahaan adalah meningkatnya produktivitas perusahaan melalui kolaborasi antar staf dan manajemen sesuai kebutuhan dengan tetap mengedepankan pengendalian biaya IT dan Dewasa ini pemanfaatan cloud computing bagi perusahaan semakin berkembang. Tidak komunikasi perusahaan. Selain itu cloud computing tidak membutuhkan investasi, tetapi penggunaan IT dikompensasi dalam biaya rutin.Jika dilihat dari segi biaya implementasi cloud computing cukup menghemat biaya yang artinya tidak membutuhkan unit pengelolahan khusus serta tidak membutuhkan pembayaran lisensi terhadap server yang digunakan. 
Ditinjau dari penggunaan hardware dan software, cloud computing cukup membutuhkan hardware dan software yang dibutuhkan saja. Dan dengan menggunakan cloud computing ini juga mengakibatkan proses peningkatan kapasitas sistem lebih cepat. Adapun kemampuan lain dari cloud computing yaitu sebagai berikut :
  • Jaringan dan Data Center menyatu.
  • Website menggunakan secured connection https.
  • Kemampuan melakukan Kirim Terima Email yg terintegrasi dengan Sistem Callender
  • Kemampuan sharing PC to PC audio & video
  • Kemampuan Editing Document sharing & Collaboration editing
  • Kemampuan PC to PC File transfer
  • Kemampuan Integrasi dengan MS Office
  • Kemampuan Remote Access over IP
  • Kemampuan melakukan Voice & Video Conference Call
  • Kemampuan melakukan messenger
  • Kemampuan Presence dari pemilik account
  • Kemampuan Share Point & assigment
  • Kemampuan handling informasi bisnis selama 24 jam.
  • Kemampuan mendukung mailbox sebesar 2 GB per account
Klasifikasi cloud computing berdasarkan pelayanan :
  • Saas( Software as a Service) 
Software as a Service adalah perangkat lunak atau program computer yang di persediakan online sebagai layanan atau jasa yang siap di pakai.jadi, SaaS adalah aplikasi web yang di inangi dan di operasikan oleh penyelenggara SaaS untuk digunakan oleh pelanggannya melalui internet. Oleh sebab itu, pengguna tidak perlu beli perangkat lunak yang digunakannya.
Contohnya :  Google docs, Facebook, Aplikasi CRM berbayar.
  • Paas (Platform as a Service)
Platform as a Service Platform as a Service adalah suatu aplikasi yang sifatnya packpage tidak dapat memenuhi kebutuhan proses bisnis kita.Demikian pula dengan SaaS, di mana aplikasi yang di tawarkan sebagai layanan tidak sesuai dengan proses bisnis kita.
Contohnya : Microsoft azure dan Amazon Web services
  • Iaas (Infrastructure as a Service) 
Infrastructure as a Service adalah penyedia layanan hanya menyediakan sumber daya komputasi seperti memori,prosesor dan storage,tapi layanan ini tidak memasang sistem operasi maupun aplikasi di atas.
Contohnya : Amazon EC2, GoGrid dan Rackspace Cloud.

Contoh perusahaan pelayanan jasa yang menggunakan cloud computing
       Pada bahasan kali ini kita memilih perusahaan google sebagai media jasa pelayanan yang menggunakan cloud computing. Adapun jenis layanan yang diberikan oleh google adalah sebagai berikut :
  1. Google drive 
Google drive berfungsi sebagai media layanan penyimpanan data. Setiap pengguna dapat menyimpan berbagai file di awan. Manfaat nya adalah pengguna bisa mengakses file dimana saja tanpa membawa media penyimpanan data secara real time dengan syarat pengguna dapat terhubung dengan internet. Selain itu juga pengguna tidak perlu merasa khawatir dengan data yang tersimpan dicloud karena setiap perusahaan seperti google sudah menjamin keamanan dari setiap data pengguna layananya. Jika dilihat dari segi biaya tentu google drive merupakan salah satu pilihan yang cukup dipertimbangkan karena pengguna gratis layanan ini sudah bisa menikmati kapasitas penyimpanan sebesar 5GB. Penyimpanan yang dimaksud disini merupakan bebas dalam arti apapun file yang kita miliki bisa kita upload di google drive, seperti file pengolah kata, gambar, video maupun suara bisa diupload pada layanan ini.
  1. Google Latitude
Google Latitude adalah sebuah layanan yang dari maps yang bisa digunakan untuk mengetahui lokasi. Dengan layanan ini kita bisa mencari lokasi dari teman kita jika sudah tersedia alamatnya dah bahkan kita bisa memamfaatkan layanan navigator untuk menuntun perjalanan kita. Dengan aplikasi ini juga kita bisa mengontrol lokasi kita seperti berbagi lokasi ke media sosial, menyembunyikan lokasi atau bahkan keluar dari aplikasi layanan latitude. Kelebihan lain dari aplikasi ini adalah kita juga bisa menghubungi teman atau kerabat kita melalui SMS, pesan instan dan juga telepon.


  1. Google Mailbox
Mailbox disini adalah kotak pesan yang dapat kita mammfaatkan untuk berkirim pesan melalui email ke teman kita, baik yang sesama memiliki akun google maupun akun yang sejenisnya. Kapasitas penyimpanan yang ditawarkan disini adalah sebesar 15 GB.
  1.  Google Youtube
Layanan ini merupakan media sosial untuk berbagi siaran video. Dengan menggunakan layanan ini para pengguna bisa berbagi video dengan semua orang pengguna youtube di dunia maya.
  1. Picasa WEB Albums
Layanan ini merupakan layanan google berbasis gambar, artinya kita bisa mengupload hanya gambar saja untuk jenis layanan ini. Dengan layanan ini foto-foto kita bisa kita bagikan ke teman-teman atau kerabat melalui dunia maya. Selain itu, penggunaan web picasa album bisa dimamfaatkan sebagai server penyimpanan pihak ketiga pada suatu web. Artinya kita bisa mengambil foto yang di picasa untuk ditempelkan pada web kita.

Referensi :
http://www.google.com/intl/id_ALL/mobile/latitude/
http://id.wikipedia.org/wiki/Kategori:Layanan_Google
https://support.google.com/a/answer/1186436?hl=en
12046-if-unsika blogspot.com

Selasa, 17 Desember 2013

KISI-KISI UTS SOFTWARE ENGINEERING

SEJARAH SOFTWARE ENGINEERING
Istilah software engineering digunakan pertama kali pada akhir 1950-an dan awal 1960-an. Saat itu, masih terdapat perdebatan tajam mengenai aspek engineering dari pengembangan perangkat lunak. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap pengembangan rekayasa perangkat lunak. Banyak yang menganggap dua konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak.

PENGERTIAN RPL
RPL sendiri adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan.
TUJUAN RPL
a. Memperoleh biaya produksi perangkat lunak yang rendah 
b. Menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu
c. Menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform
d. Menghasilkan perangkat lunak yang biaya perawatannya rendah
ARTI SOFTWARE
1. Instruksi
Atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.
2. Struktur data
Yang memungkinkan program memanipulasi informasi
3. Dokumen
Yang menggambarkan operasi dan penggunaan program.


ELEMEN KUNCI REKAYASA PERANGKAT LUNAK
Software engineering terdiri dari 3 elemen kunci, yaitu :
1. Metode,
2. Peralatan (tools),
3. Prosedur, yang memungkinkan manajer mengontrol proses pengembangan software dan memberikan praktisi dasar yang baik untuk pembentukan software berkualitas tinggi.

1. Metode Software Enginnering
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Metode ini terdiri dari serangkaian tugas :
a. Perencanaan & estimasi proyek
b. Analisis kebutuhan sistem dan software
c. Desain struktur data
d. Arsitektur program dan prosedur algoritma
e. Coding
f. Testing dan pemeliharaan

2. Peralatan Software Engineering
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
a. CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hardware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
b. Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
c. Analogi dengan CASE pada hardware adalah : CAD (Computer Aided Design), CAM (Computer Aided Manufacturing), CAE (Computer Aided Engineering)

3. Prosedur Software Engineering
Terdiri dari :
a. urut-urutan di mana metode tersebut diterapkan
b. dokumen
c. laporan-laporan
d. formulir-formulir yang diperlukan
e. mengontrol kualitas software
f. mengkoordinasi perubahan yang terjadi pada software

PENGERTIAN SISTEM
Sistem adalah sekumpulan elemen yang saling berinteraksi untuk mencapai suatu tujuan.

SPEKTRUM MANAJEMEN
Manajemen proyek perangkat lunak  yang efektif berfokus pada :
1. PEOPLE : Elemen terpenting dari suksesnya proyek
2. PRODUCT / PROBLEM : Software yang dikembangkan
3. PROCESS : Suatu kerangka kerja dari suatu aktifitas dan kumpulan tugas untuk memgembangkan perangkat lunak
4. PROJECT (tambahan) : Penggabungan semua kerja untuk membuat produk menjadi kenyataan
 
Tujuan perencanaan proyek perangkat lunak:
Menyediakan sebuah kerangka kerja yang memungkinkan manajer membuat estimasi yang dapat dipertanggungjawabkan terhadap sumber daya, biaya dan jadwal pada awal proyek yang dibatasi oleh waktu 

Metodologi software engineer

1. Model Linear Sequential/Waterfall
Model Linear Sequential/Waterfall merupakan paradigma rekayasa perangkat lunak yang paling tua dan paling banyak dipakai.

Kelebihan model Linear Sequential/Waterfall : 
  • Mudah diaplikasikan.
  • Memberikan template tentang metode analisis, desain, pengkodean, pengujian, dan pemeliharaan.
  • Cocok digunakan untuk produk software yang sudah jelas kebutuhannya di awal, sehingga minim kesalahannya.
Kekurangan model Linear Sequential/Waterfall :
  • Terjadinya pembagian proyek menjadi tahap-tahap yang tidak fleksibel, karena komitmen harus dilakukan pada tahap awal proses.
  • Sulit untuk mengalami perubahan kebutuhan yang diinginkan customer.
  • Customer harus sabar untuk menanti produk selesai, karena dikerjakan tahap pertahap, menyelesaikan tahap awal baru bisa ke tahap selanjutnya.
  • Perubahan ditengah-tengah pengerjaan produk akan membuat bingung team work yang sedang membuat produk.
  • Adanya waktu menganggur bagi pengembang, karena harus menunggu anggota tim proyek lainnya menuntaskan pekerjaannya

      2.  Model Spiral
Model ini cukup baru ditemukan,yaitu tahun 1988 oleh Barry Boehm. Spiral adalah salah satu bentuk evolusi yang menggunakan metode iterasi natural yang dimiliki oleh model prototyping dan digabungkan dengan aspek sistematis yang dikembangkan model waterfall.

Kelebihan model Spiral : 
  • Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak komputer. 
  • Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar
  • Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap   tingkat evolusi karena perangkat lunak terus bekerja selama proses .
Kelemahan model Spiral : 
  • Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol. 
  • Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
  • Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolute

      3. Extreme Programming
Extreme Programming (XP) merupakan salah satu metodologi dalam rekayasa perangkat lunak dan juga merupakan satu dari beberapa agile software development methodologies yang berfokus pada coding sebagai aktivitas utama di semua tahap pada siklus pengembangan perangkat lunak (software development lifecycle). Metodologi ini mengedepankan proses pengembangan yang lebih responsive terhadap kebutuhan customer (”agile”) dibandingkan dengan metode-metode tradisional sambil membangun suatu software dengan kualitas yang lebih baik.

Kelebihan model Extreme Programming :  
  • Komunikasi dalam XP dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien dalam melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer. Selain itu perkiraan beban tugas juga diperhitungkan.
  • Menekankan pada kesederhanaan dalam pengkodean: “What is the simplest thing that could possibly work?” Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan. Komunikasi yang lebih banyak mempermudah, dan rancangan yang sederhana mengurangi penjelasan.
  • Setiap feed back ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).
  • Banyak ide baru dan berani mencobanya, berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki.
Kelemahan model Extreme Programming :
  • Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
  • Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).

     4.  Model incremental
Model Incremental dalam rekayasa perangkat lunak, menerapkan rekayasa perangkat lunak perbagian, hingga menghasilkan perangkat lunak yang lengkap.  Proses membangun berhenti jika produk telah mencapai seluruh fungsi yang diharapkan. 

Kelebihan model Increment :
  • Cocok digunakan bila pembuat software tidak banyak/kekurangan pembuat.
  • Mampu mengakomodasi perubahan kebutuhan customer.
Kekurangan model Increment : 
  • Hanya akan berhasil jika tidak ada staffing untuk penerapan secara menyeluruh.
  • Penambahan staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut.
  • Hanya cocok untuk proyek dengan skala kecil.

      5.  Model RAD (Rapid Application Development)
Model RAD merupakan model proses pengembangan perangkat lunak secara linear sequential yang menekankan pada siklus pengembangan yang sangat singkat.

Kelebihan model RAD :
  • Setiap fungsi mayor dapat dimodulkan dalam waktu tertentu kurang dari 3 bulan dan dapat dibicarakan oleh tim RAD yang terpisah dan kemudian diintegrasikan sehingga waktunya lebih efisien.
  • RAD mengikuti tahap pengembangan sistem seperti umumnya, tetapi mempunyai kemampuan untuk menggunakan kembali komponen yang ada sehingga pengembang tidak perlu membuat dari awal lagi dan waktu yang lebih singkat.
Kelemahan model RAD :
  • Model yang besar (skala proyek), membutuhkan resources yg baik dan solid. 
  • Membutuhkan komitmen pengembang dan user yang sama agar cepat selesai sesuai dengan rencana.

Sabtu, 08 Juni 2013

Membuat Sertifikat pada Localhost

Setelah postingan sebelumnya saya sudah berbagai apa itu sertifikat. Postingan kali ini saya akan menjelaskan bagaimana membuat sebuah sertifikat pada web browser. Yang akan kita gunakan kali ini adalah localhost dengan menggunakan xampp. Adapun yang kita butuhkan adalah xampp dan Command Prompt bawaan windows.
          Langkah yang anda lakukan adalah sebagai berikut ini.
  1. Buka Commnd Prompt anda dari menu start >> All Programs >> Accessories >> Command Prompt atau anda bisa langsung ketikkan CMD pada kotak seach programs and files yang ada pada menu start.
  2. Selanjutnya masuk ke path C:\ xampp\apache\bin\openssl.exe seperti pada gambar berikut ini. 
    Open SSL

  3. Setelah itu ketikkan perintah genrsa -aes256 -out pass.key 2048 pada CMD. Perintah tersebut digunakan untuk membuat general key dan jika ada permintaan password masukkan password sesuai dengan keinginan anda.
    General Key

  4. Selanjutnya kita membuat kunci untuk sertifikatnya sebagai contoh nama sertifikatnya adalah indra.key(nama kunci bebas) dan daftarkan key/kunci ini ke general key yang sudah dibuat sebelumnya. Ketikkan perintah rsa -in pass.key -out indra.key.
    Membuat kunci Sertifikat

  5. Selanjutnya kita membuat sertifikat kita dengan mengetikkan req -new -x509 -nodes -sha1 -key indra.key -out indra.crt -days 999 config openssl.cnf.
    Membuat Sertifikat

  6. Setelah itu instal sertifikat yang telah kita buat dengan masuk ke path C:\xampp\apache\bin pada komputer. Kemudian cari indra.key dan double klik setelah itu instal certifikat maka akan muncul kotak dialog certifikat import wizard dan klik next hingga finish.
    Pemasangan sertifikat
  7. Kemudian copy indra.key tadi ke folder C:\xampp\apache\conf\ssl.key dan untuk indra.crt copy ke C:\xampp\apache\conf\ssl.crt.
  8. Setelah itu buka C:\xampp\apache\conf\extra dan klik kanan pada httpd-ssl.conf dan pilih edit with Notepad++ atau pilih Edit jika tidak ada Notepad++.
  9. Cari kodingan SSLCertificateFile "conf/ssl.crt/server.crt" dan SSLCertificateKeyFile "conf/ssl.key/server.key" gantikan server menjadi indra seperti pada gambar berikut ini.
    Mengganti Sertifikat Default Localhost
  10. Setelah itu simpan file yang telah dirubah kemudian buka XAMPP anda dan start untuk Apache dan MySQL kemudian akses https://localhost/ dari web browser anda maka akan anda tanda gembok pada alamat url anda dan klik gembok dan anda bisa melihat sertifikat yang telah anda buat.

Selasa, 22 Januari 2013

Windows 7 VS Windows 8

Belakangan ini kita dihadirkan sosok system operasi yang baru yang merupakan keluaran dari Microsoft. Windows hingga saat ini merupakan system operasi pada computer yang paling banyak digunakan oleh masyarakat. Kemampuan dan kebutuhan setiap konsumen yang dapat dipenuhi dengan system operasi ini, para konsumen diberikan berbagai kemudahan, baik dari segi kinerja, fitur ddan aplikasi untuk memudahkan pekerjaan. Pada tulisan ini kami dari kelompok 1 menjelaskan perbedaan yang ada pada kedua system opeasi ini, baik dari segi visual, kinerja maupun kompetibelnya aplikasi-aplikasi pada kedua system opeasi ini.

A.   Perbedaan dari segi Visual/ Tampilan
Bila dilihat dari segi visual, bisa dikatakan keduanya memilik keunikan masing-masing. Bahkan memberikan fitur hamper sama sebab berasal dari keluaran pabrik yang sama. Berikut ini beberapa perbedaan yang cukup mencolok bila dilihat dari segi visual.

1.      Fitur Touch Screen
Perbedaan yang sangat mencolok antara windows 7 dan windows 8 adalah fitur touch screen. Sebenarnya duluwindows 7 pernah menerapkan fitur yang sama tetapi belum bias bekerja sejara maksimal, dan pada windows 8 fitur touch screen semakin dipertajam dan dimaksimalkan sehingga tampilannya lebih baru. Fitur touch screen ini tentunya harus didukung dengan hardware seperti monitor yang menerapkan fitur touch screen atau dapat menggunakan trackpad buatan microsoft.

2.  Tombol Start
Berbeda dengan windows 7 yang tombol startnya selalu terlihat, tetapi pada windows 8 memiliki tombol start yang disembunyikan di pojok kiri bawah. Untuk melihat atau menggunakannya kita sorot pointer ke posisi kiri bawah. Fitur ini irip dengan home pada windows phone dan hanya muncul ketika kursor berada di pojok kiri bawah.


3. Fitur Multi Monitor yang lebih baik
      Menggunakan lebih dari satu monitor memerlukan manajemen desktop yang baik. Pada windows 8 membuka  2 layar yang berbeda dapat dilakukan di windows 8 dan tidak memelukan memori yang cukup besar yang bias menyebabkan kinerja computer berkurang. Fitur yang seperti ini tidak dimiliki oleh windows 7, pada windows 7, menampilkan 2 layar yang berbeda membutuhkan memori yang besar sehingga membuat kinerja computer melambat.

4.  Fitur Charm
Pada windows 7 fitur ini ini tidak ada, sehingga untuk mengakses fitur seperti setting, device, share dan search dilakukan secara manual atau diketikkan pada menu start yang ada di sebelak kiri bawah sedangkan pada windows 8 sudah diberikan, sehingga pengguna dimudahkan untuk mengakses menu atau keperluan yang sering kita gunakan dengan cepat.

5. Search dan Social Windows 8
Selain fitur charm, menu search juga terdapat pada windows 8, jika pada windows 7 menu search diberikan bila kita mengklik menu start maka berbeda dengan windows 8 yang secara otomati bias dilakukan dari layar utama. Selain itu juga fitur social lebih keliahat di windows 8. Social media akan otomatis tersikronisasi dengan computer jika aplikasi tersebut sudah terinstall dan bahkan pemberitahuan sekalipun akan diterima secara realtime bila terkoneksi dengan internet.

6.   Windows 8 memiliki device ARM
Jika pada sebelumnya Windows hanya mendukung PC desktop dengan prosesor AMD dan Intel yang x86-based, namun untuk sekarang ini Windows 8 juga bisa digunakan pada beberapa device yang menggunakan ARM. Dalam hal ini dilakukan hanya untuk bisa bersaing dengan iPad dan tablet Android. Namun, hanya Windows 8 jenis RT (Run Time) saja yang memiliki device ARM ini.

7. Fitur Cloud Computing

Fitur Cloud Windows 8 ini juga merupakan fitur terbaru dari windows 8 karena pengguna dapat mudah menyimpan data, gambar, foto, dan lain sebagainya ke sistem cloud windows secara online, karena fitur ini telah tersingkronisasi dengan aplikasi skydrive. Dengan adanya fitur ini pengguna dapat mudah membackup data pengguna sesuai dengan keinginan, dan jika suatu saat pengguna mau mengambilnya kembali pengguna dapat dengan mudah mendownload nya.

8.   Menyalin, mengubah, menghapus mapun memindahkan file

Dalam proses ini, jendela menjadi disatukan dengan tampilan yang lebih menarik, berbeda dengan windows 7 yang membuat jendela baru untuk melakukan proses menghapus atau mengirim file.

9.  Task Manager
     Task Manager pada windows 8 lebih simple dan lengkap dibandingkan dengan windows 7. Tampilan detail dari memory yang dimiliki higga kecepatan dan penggunaan dari masing-masing perangkat dapat dilihat disana.


Untuk penjelasan lebih lanjut bisa anda unduh file PDF disini