VB.net => Generic Class
Generic List stores Generic Class
(selamat mencoba yaaa....)
Imports System.Collections
Imports System.Collections.Generic
Public Class MainClass
Public Shared Sub Main()
Dim custColl As New List(Of Customer)()
Dim cust As New Customer("1", "Name")
cust.AddItem(New Order(DateTime.Parse("10/01/2004"), "1", "N"))
cust.AddItem(New Order(DateTime.Parse("10/03/2004"), "2", "X"))
cust.AddItem(New Order(DateTime.Parse("10/07/2004"), "3", "P"))
custColl.Add(cust)
cust = New Customer("2", "name 1")
cust.AddItem(New Order(DateTime.Parse("11/04/2004"), "6", "P"))
cust.AddItem(New Order(DateTime.Parse("11/07/2004"), "8", "Y"))
cust.AddItem(New Order(DateTime.Parse("12/12/2004"), "9", "K"))
custColl.Add(cust)
cust = New Customer("3", "Name 3")
cust.AddItem(New Order(DateTime.Parse("10/01/2004"), "4", "W"))
custColl.Add(cust)
For custIdx As Int32 = 0 To (custColl.Count - 1)
cust = custColl(custIdx)
Console.Out.WriteLine("Customer-) ID: {0}, Name: {1}", cust.Id, cust.Name)
Dim orders() As Order = cust.Items
For orderIdx As Int32 = 0 To (orders.Length - 1)
Dim ord As Order = orders(orderIdx)
Console.Out.WriteLine(" Order-> Date: {0}, Item: {1}, Desc: {2}", ord.OrderDate, ord.ItemId, ord.Description)
Next
Next
Dim empColl As New List(Of Employee)()
Dim emp As New Employee("1", "R")
empColl.Add(emp)
emp = New Employee("2", "M")
empColl.Add(emp)
emp = New Employee("3", "B")
emp.AddItem(New Employee("6", "S"))
emp.AddItem(New Employee("7", "B"))
emp.AddItem(New Employee("8", "T"))
empColl.Add(emp)
For mgrIdx As Int32 = 0 To (empColl.Count - 1)
Dim manager As Employee = empColl(mgrIdx)
Console.Out.WriteLine("Manager-) ID: {0}, Name: {1}", manager.Id, manager.Name)
For idx As Int32 = 0 To (manager.Items.Length - 1)
emp = manager.Items(idx)
Console.Out.WriteLine(" Employee-) Id: {0}, Name: {1}", emp.Id, emp.Name)
Next
Next
End Sub
End Class
Public Class Customer
Inherits Person(Of Order)
Public Sub New(ByVal Id As String, ByVal Name As String)
MyBase.New(Id, Name)
End Sub
End Class
Public Class Employee
Inherits Person(Of Employee)
Public Sub New(ByVal Id As String, ByVal Name As String)
MyBase.New(Id, Name)
End Sub
End Class
Public Class Order
Public OrderDate As DateTime
Public ItemId As String
Public Description As String
Public Sub New(ByVal OrderDate As DateTime, ByVal ItemId As String, ByVal Description As String)
Me.OrderDate = OrderDate
Me.ItemId = ItemId
Me.Description = Description
End Sub
End Class
Public Class Person(Of T)
Public Name As String
Public Id As String
Private _items As List(Of T)
Public Sub New(ByVal Id As String, ByVal Name As String)
Me.Id = Id
Me.Name = Name
Me._items = New List(Of T)
End Sub
Public ReadOnly Property Items() As T()
Get
Return Me._items.ToArray()
End Get
End Property
Public Sub AddItem(ByVal newItem As T)
Me._items.Add(newItem)
End Sub
End Class
Password MIDlet
/*
Wireless Java 2nd edition
Jonathan Knudsen
Publisher: Apress
ISBN: 1590590775
*/
import java.io.*;
import java.util.Random;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.SHA1Digest;
public class PasswordMIDlet extends MIDlet implements CommandListener, Runnable {
private Display mDisplay;
private Form mForm;
private TextField mUserField, mPasswordField;
private Random mRandom;
public void startApp() {
mDisplay = Display.getDisplay(this);
mRandom = new Random(System.currentTimeMillis());
if (mForm == null) {
mForm = new Form("Login");
mUserField = new TextField("Name", "jonathan", 32, 0);
mPasswordField = new TextField("Password", "happy8", 32, 0);
mForm.append(mUserField);
mForm.append(mPasswordField);
mForm.addCommand(new Command("Exit", Command.EXIT, 0));
mForm.addCommand(new Command("Login", Command.SCREEN, 0));
mForm.setCommandListener(this);
}
mDisplay.setCurrent(mForm);
}
public void commandAction(Command c, Displayable s) {
if (c.getCommandType() == Command.EXIT) notifyDestroyed();
else {
Form waitForm = new Form("Connecting...");
mDisplay.setCurrent(waitForm);
Thread t = new Thread(this);
t.start();
}
}
public void run() {
// Gather the values we'll need.
long timestamp = System.currentTimeMillis();
long randomNumber = mRandom.nextLong();
String user = mUserField.getString();
byte[] userBytes = user.getBytes();
byte[] timestampBytes = getBytes(timestamp);
byte[] randomBytes = getBytes(randomNumber);
String password = mPasswordField.getString();
byte[] passwordBytes = password.getBytes();
// Create the message digest.
Digest digest = new SHA1Digest();
// Calculate the digest value.
digest.update(userBytes, 0, userBytes.length);
digest.update(timestampBytes, 0, timestampBytes.length);
digest.update(randomBytes, 0, randomBytes.length);
digest.update(passwordBytes, 0, passwordBytes.length);
byte[] digestValue = new byte[digest.getDigestSize()];
digest.doFinal(digestValue, 0);
// Create the GET URL. The hex encoded message digest value is
// included as a parameter.
URLBuilder ub = new URLBuilder(getAppProperty("PasswordMIDlet-URL"));
ub.addParameter("user", user);
ub.addParameter("timestamp",
new String(HexCodec.bytesToHex(timestampBytes)));
ub.addParameter("random",
new String(HexCodec.bytesToHex(randomBytes)));
ub.addParameter("digest",
new String(HexCodec.bytesToHex(digestValue)));
String url = ub.toString();
try {
// Query the server and retrieve the response.
HttpConnection hc = (HttpConnection)Connector.open(url);
InputStream in = hc.openInputStream();
int length = (int)hc.getLength();
byte[] raw = new byte[length];
in.read(raw);
String response = new String(raw);
Alert a = new Alert("Response", response, null, null);
a.setTimeout(Alert.FOREVER);
mDisplay.setCurrent(a, mForm);
in.close();
hc.close();
}
catch (IOException ioe) {
Alert a = new Alert("Exception", ioe.toString(), null, null);
a.setTimeout(Alert.FOREVER);
mDisplay.setCurrent(a, mForm);
}
}
private byte[] getBytes(long x) {
byte[] bytes = new byte[8];
for (int i = 0; i < 8; i++)
bytes[i] = (byte)(x >> ((7 - i) * 8));
return bytes;
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
}
class URLBuilder {
private StringBuffer mBuffer;
private boolean mHasParameters;
public URLBuilder(String base) {
mBuffer = new StringBuffer(base);
mHasParameters = false;
}
public void addParameter(String name, String value) {
// Append a separator.
if (mHasParameters == false) {
mBuffer.append('?');
mHasParameters = true;
}
else
mBuffer.append('&');
// Now tack on the name and value pair. These should
// really be URL encoded (see java.net.URLEncoder in
// J2SE) but this class appends the name and value
// as is, for simplicity. Names or values with spaces
// or other special characters will not work correctly.
mBuffer.append(name);
mBuffer.append('=');
mBuffer.append(value);
}
public String toString() {
return mBuffer.toString();
}
}
class HexCodec {
private static final char[] kDigits = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'
} ;
public static char[] bytesToHex(byte[] raw) {
int length = raw.length;
char[] hex = new char[length * 2];
for (int i = 0; i < length; i++) {
int value = (raw[i] + 256) % 256;
int highIndex = value >> 4;
int lowIndex = value & 0x0f;
hex[i * 2 + 0] = kDigits[highIndex];
hex[i * 2 + 1] = kDigits[lowIndex];
}
return hex;
}
public static byte[] hexToBytes(char[] hex) {
int length = hex.length / 2;
byte[] raw = new byte[length];
for (int i = 0; i < length; i++) {
int high = Character.digit(hex[i * 2], 16);
int low = Character.digit(hex[i * 2 + 1], 16);
int value = (high << 4) | low;
if (value > 127) value -= 256;
raw[i] = (byte)value;
}
return raw;
}
public static byte[] hexToBytes(String hex) {
return hexToBytes(hex.toCharArray());
}
}
* SoundAlert.java
*
* Example from the book: Core J2ME Technology
* Copyright John W. Muchow http://www.CoreJ2ME.com
* You may use/modify for any non-commercial purpose
*-------------------------------------------------*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class SoundAlert extends MIDlet implements ItemStateListener, CommandListener
{
private Display display; // Reference to display object
private Form fmMain; // Main form
private Command cmExit; // Command to exit the MIDlet
private ChoiceGroup cgSound; // Choice group
public SoundAlert()
{
display = Display.getDisplay(this);
// Create an exclusive (radio) choice group
cgSound = new ChoiceGroup("Choose a sound", Choice.EXCLUSIVE);
// Append options, with no associated images
cgSound.append("Info", null);
cgSound.append("Confirmation", null);
cgSound.append("Warning", null);
cgSound.append("Alarm", null);
cgSound.append("Error", null);
cmExit = new Command("Exit", Command.EXIT, 1);
// Create Form, add components, listen for events
fmMain = new Form("");
fmMain.append(cgSound);
fmMain.addCommand(cmExit);
fmMain.setCommandListener(this);
fmMain.setItemStateListener(this);
}
public void startApp()
{
display.setCurrent(fmMain);
}
public void pauseApp()
{ }
public void destroyApp(boolean unconditional)
{ }
public void commandAction(Command c, Displayable s)
{
if (c == cmExit)
{
destroyApp(false);
notifyDestroyed();
}
}
public void itemStateChanged(Item item)
{
switch (cgSound.getSelectedIndex())
{
case 0:
AlertType.INFO.playSound(display);
break;
case 1:
AlertType.CONFIRMATION.playSound(display);
break;
case 2:
AlertType.WARNING.playSound(display);
break;
case 3:
AlertType.ALARM.playSound(display);
break;
case 4:
AlertType.ERROR.playSound(display);
break;
}
}
}
REMASTERING PCLinuxOS 2007
Tuliskan script seperti berikut ini… --nodir ^/mnt/* --bootopt noagp --bootloader iso --splash verbose --fstab=rw,auto --md5sum livecd.iso
Uji Kinerja Katalis ZSM-5 dalam Konversi Aseton menjadi Hidrokarbon Aromatik
abstraksi
Aseton merupakan senyawa organik yang dapat diproduksi dari proses fermentasi maupun dari hasil reaksi katalitik produk turunan biomassa. Akan menjadi suatu skema rute baru, apabila dari senyawa aseton tersebut dapat ditransformasi menjadi senyawa hidrokarbon aromatis. Senyawatersebut merupakan bahan baku utama yang penting dalam proses industri petrokimia. Apabila proses katalitik untuk produksihidrokarbon tersbut dapat diupayakan, maka dimasa depan bisa melepas ketergantungan pada minyak bumi.Penelitian ini bermaksud untuk mengembangkan proses reaksi katalitik untuk memproduksi senyawa monoaromatik dari aseton menggunakan katalis ZSM-5. Reaksi dilakukan didalam reaktor pipa pada suhu 673 K, space velocity 4 h-1, bertekanan atmosferik. Tiga macam sampel katalis ZSM-5 dengan rasio Si/Al=25, 75 dan 100 diuji kinerjanya untuk dievaluasi konversi, yield aromatik serta kestabilan kinerjanya (catalytic durability test) selama 10 jam.Hasil pengujian memperlihatkan ketiga katalis tersebut memiliki kinerja yang hampir sama selama 2 jam uji reaksi. Konversi aseton hampir mendekati 100 %, dengan yield diatas 70 %. Namun, katalis ZSM-5 rasio Si/Al=25 masih mampu mempertahankan kemampuan kinerjanya, sedangkan katalis ZSM-5 dengan rasio Si/Al=75 dan 100, lebih mudah mengalami deaktivasi. Hasil karakterisasi permukaan katalis baik sebelum maupun sesudah reaksi, memperlihatkan ketiga rasio katalis ZSM-5 tersebut semuanya mengalami penurunan luas permukaan katalis (luasan total maupun luasan pori katalis). Oleh karenanya, deaktivasi katalis tersebut sangat dimungkinkan karena terbentuknya kokas dan menutupi pori-pori katalis (pore blocking).
Kata kunci : Konversi aseton; rasio Si/Al; aromatik; ZSM-5, deaktivasi
FAST, sama seperti metodologi komersil lainnya, mengandung fase pengembangan. Jumlah fase pada masing-masing metodologi berbeda-beda. Output dari metodologi pengembangan mana pun adalah solusi bisnis yang dapat membantu memecahkan masalah, peluang, dan lain-lain. Metodologi FAST mendukung sistem pengembangan dan tahap operasi dan pendukung dari siklus hidup sistem.
Berikut akan dijelaskan fase-fase yang digunakan dalam metode FAST.
Phase 1 : Preliminary Investigation Phase
Tahap ini merupakan tahap awal dari pengembangan sistem. Fase ini berisikan investigasi awal ketika ingin merancang sebuah sistem, seperti wawancara, tinjauan langsung dan mempelajari dokumen perusahaan.
Tujuan dari tahap ini ialah :
- Menjawab pertanyaan mengenai apakah proyek ini cukup berharga untuk diperhatikan. Untuk menjawab pertanyaan ini perlu didefinisikan terlebih dahulu masalah, kesempata, dan resiko-resiko dalam melanjutkan proyek. Kerangka kerja PIECES dapat digunakan untuk menjawab pertanyaan ini namun hasilnya bukanlah solusi permasalahan melainkan kategori-kategori masalah
- (dengan asumsi bahwa proyek ini berharga untuk diperhatikan) menetapkan rincian proyek yang akan menetapkan lingkup, kebutuhan dan hambatan proyek, anggota proyek, biaya, dan jadwal.
Phase 2 : Problem Analysis Phase
Problem Analysis ialah menganalisa masalah-masalah yang terdapat di lapangan. Tahap ini merupakan pengembangan dari tahap pertama. Pada tahap ini dilakukan analisis terhadap sistem yang telah ada saat itu. Tahap ini memberikan pemahaman yang lebih dalam bagi tim proyek mengenai permasalahan yang dihadapi. Analisis ini dilakukan untuk menjawab pertanyaan apakah keuntungan yang diperoleh setelah pemecahan masalah lebih besar daripada biaya yang dikeluarkan.
Input utama dari tahap ini adalah project charter dari tahap sebelumnya. Informasi yang digunakan dalam memperlajari permasalahan yang dihadapi adalah fakta-fakta yang terdapat dalam sistem, masalah, akibat, penyebab dari permasalahan, dan spesialis IT yang merancang sistem yang telah ada.
Output yang dihasilkan adalah system improvement objectives yang menyatakan kriteria bisnis yang akan digunkana untuk mengevaluasi sistem. Kadang-kadang dilakukan rpesentasi pada tahap ini.
Pada akhir tahap ini, pemillik sistem kembali akan memutuskan salah satu dari 3 alternatif berikut :
- Membatalkan proyek jika masalah tidak cukup berharga untuk dipecahkan
- Menyetujui kelanjutan proyek
- Memperkecil atau memperbesar lingkup dan menyetujui kelanjutan tahap berikutnya
Phase 3 : Requirement Analysis Phase
Requirement Analysis ialah melakukan analisa terhadap kebutuhan perusahaan. Tahap ini akan dilakukan bila manajemen menyetujui untuk melanjutkan proyek. Pekerjaan pada tahap ini adalah mendefinisikan apa saja yang perlu dilakukan oleh sistem, apa yang dibutuhkan dan diinginkan oleh pengguna dari sistem baru. Tahap ini memerlukan perhatian yang besar karena jika terjadi kesalahan dalam menerjemahkan kebutuhan dan keinginan pengguna sistem maka dapat mengakibatkan adanya rasa tidak puas pada sistem final dan perlu diadakan modifikasi yang tentunya akan kembali mengeluarkan biaya.
Input dari tahap ini adalah system improvement objectives yang dihasilkan pada tahap sebelumnya. Pada tahap ini, tim akan mengumpulkan dan mendiskusikan kebutuhan dan prioritas berdasarkan informasi yang diperoleh dari kuesioner, wawancara, dan rapat-rapat. Tantangannya adalah untuk memvalidasi semua kebutuhan informasi.
Output yang dihasilkan dari tahap ini adalah business requirement statement. Tahap ini pun merupakan tahap yang penting karena dapat menimbulkan ketidakpuasan dari pengguna sistem yang merasa kebutuhannya tidak terpenuhi. Tim proyek harus dapat membedakan antara apa yang dibutuhkan oleh pengguna dan bagaiman sebaiknya sistem yang baru bekerja.
Phase 4 : Decision Analysis Phase
Decision Analysis ialah melakukan analisa terhadap keputusan yang akan diambil berdasarkan solusi-solusi yang ditawarkan.
Dalam analisis keputusan, umumnya terdapat berbagai alternatif untuk mendesain sistem informasi yang baru. Beberapa pertanyaan yang dapat membantu dalam proses analisis keputusan :
- Berapa banyak sistem akan dikomputerisasi
- Apakah kita sebaiknya membeli software atau mengembangkannya sendiri
- Apakah kita sebaiknya mendesain sistem untuk jaringan internal atau berbasis web
- Teknologi informasi apa yang dapat digunakan dalam apilkasi ini
Evaluasi kandidat dilakukan dengan memeriksa kriteria-kriteria berikut ini:
- Technical feasibility : apakah solusi tersebut praktis? Apakah staff yang ada memiliki kemampuan untuk mendesain dan membangun solusi ini?
- Operational feasibility : apakah solusi memenuhi kebutuhan pengguna? Pada tingkat berapa? Bagaimana solusi merubah lingkungan kerja pengguna? Bagaiaman perasaan pengguna mengenai solusi tersebut?
- Economis feasibility : apakah solusi yang ada efektif dari segi biaya?
- Schedule feasibility : apakah solusi dapat didesain dan diimplementasikan dalam periode waktu tertentu?
- Risk feasibility : berapa probabilitas dari kesuksesan implementasi menggunakan teknologi dan pendekatan tertentu?
- Menyetujui dan mendanai proposal sistem untuk didesain dan dikonstruksikan
- Menyetujui dan mendanai salah satu dari alternatif solusi
- Menolak semua kandidat solusi dan membatalkan proyek atau mengirimkannya kembali untuk rekomendasi yang baru
- Menyetujui versi lingkup yang diperkecil dari solusi yang diajukan
Setelah diperoleh proposal sistem yang disetujui, maka dapat mulai dilakukan proses desain dari sistem target. Tujuan dari tahap ini adalah untuk mentransformasikan business requirement statement menjadi spesifikasi desain untuk proses construksi. Dengan kata lain, tahap desain menyatakan bagaimana teknologi akan digunakan dalam sistem yang baru. Tahap ini memerlukan ide dan opini dari pengguna, vendor, dan spesialis IT.
Pada akhir tahap ini masih terdapat beberapa alternatif keputusan mengenai proyek walaupun pembatalan proyek jarang dilakukan pada tahap ini (kecuali benar-benar over budget atau sangat terlambat dari jadwal). Perubahan lingkup menjadi lebih kecil masih dapat terjadi. Selain itu, mungkin juga terjadi perubahaan ulang jadwal untuk menghasilkan solusi yang lebih lengkap.
Phase 6 : Construction Phase
Construction Phase ialah tahapan melaksanakan pengujian pada komponen sistem secara individu dan sistem secara keseluruhan.
Tujuan dari tahap ini adalah :
- Membangun dan menguji sistem yang memenuhi business requirement dan spesifikasdi desain
- Mengimplementasikan penghubung antara sitem baru dan sistem lama, termasuk instalasi dari software yang dibeli atau disewa
Setelah dilakukan pengujian, maka sistem dapat mulai diimplementasikan.
Phase 7 : Implementation Phase
Implementation ialah menerapkan hasil rancangan yang telah disusun sedemikian rupa ke dalam sistem perusahaan untuk mendapatkan kondisi yang sesuai dengan kebutuhan perusahaan. Input dari tahap ini adalah sistem fungsional dari tahap konstruksi. Analis harus mampu menyediakan transisi yang sederhana dari sistem lama ke sistem baru dan membantu pengguna menghadapi masalah utama saat mulai menggunakan sistem baru. Selain itu, analis harus melatih pengguna, menuliskan cara-cara penggunaan manual, menginput file dan basis data, dan melakukan tes akhir. Pengguna sistem akan memberikan feedback bagi tim proyek sebagai masalah baru dan isu baru. Output dari tahap ini adalah sistem operasional yang akan memasuki tahap operasi dan pendukung dalam siklus hidup perusahaan.
Phase 8 : Operation and Support Stage Phase
Sistem pendukung : pendukung teknis berkelanjutan bagi para pengguna, seperti kebutuhan maintenance untuk memperbaiki kesalahan, penghilangan, dan kebutuhan-kebutuhan baru. Aktivitas-aktivitas dalam sistem pendukung :
- Assisting users : tak peduli seberapa baiknya pelatihan yang diberikan pada pengguna, pasti tetap akan ada kebutuhan asistensi tambahan bagi para pengguna terutama saat muncul masalah baru, muncul tambahan pengguna, dan lain-lain
- Fixing software, defects : memperbaiki kesalahan-kesalahan yang muncul saat operasional maupun pengujian
- Recovering system : kegagalan sistem dapat menyebabkan terjadinya kehilangan atau ‘crash’ data yang memerlukan perbaikan pada sistemnya seperti pemasukan ulang file basis data dan merestart ulang sistem
- Adapting the system to new requirements : kebutuhan yang selalu berkembang menimbulkan kebutuhan akan perbaikan berkelanjutan dalam sistem informasi agar sistem yagn ada dapat terus mengikuti perubahan yang sedang terjadi seperti munculnya kebutuhan bisnis baru, masalah teknis baru, atau kebutuhan teknologi baru.