“Rivals can easily copy your improvements in quality and efficiency.
But they shouldn’t be able to copy your strategic positioning –
what distiguishes your company from all the rest.”

Michael A. Porter, 1996.

Rabu, Oktober 07, 2009

The Steps Of Agile Development

The Steps Of Agile Development
Activity framework (toward construction and delivery)
◦Customer communication
◦Planning
◦Modeling
◦Construction
◦Delivery
◦Evaluation

The Work Products
An operational ‗software increment‘ that is delivered to the customer on the appropriate commitment date
◦Remember: not able to define requirements fully before the project begins

The Assurance
If the agile team agrees that the process worksand the team produces deliverable software increments that satisfy the customer, then it is done right.

Agile Development

Kata Agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan sebagai
kata yang mengambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada.

Konsep Agile Software Development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan
melakukannya dan membantu orang lain membangunnya sekaligus.

Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan
alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Namun demikian, sama seperti model proses yang lain, Agile Software Development memiliki kelebihan dan tidak cocok untuk semua jenis proyek, produk, orang dan situasi.

Agile Software Development memungkinkan model proses yang toleransi terhadap perubahan
kebutuhan sehingga perubahan dapat cepat ditanggapi. Namun di sisi lain menyebabkan produktifitas menurun.

Prinsip Agile Software Development
Salah satu ciri dari Agile Software Development adalah tim yang tanggap terhadap perubahan.
Mengapa? Karena perubahan adalah hal yang utama dalam pembangunan software: perubahan
kebutuhan software, perubahan anggota tim, perubahan teknologi dll. Selain itu Agile Software
Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, antara developer dan managernya. Ciri lain adalah klien menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip yang ditetapkan oleh Agile Alliance.

Menurut Agile Alliance, 12 prinsip ini adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software Development:
1. kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus
menerus
2. menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
3. Penyerahan hasil/software dalam hitungan waktu dua minggu sampai dua bulan.
4. Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung
5. Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam
lingkungan yang mendukun dan yang dipercaya untuk dapat menyelesaikan proyek.
6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
7. Software yang berfungsi adalah ukuran utama dari kemajuan proyek
8. dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga
perkembangan yang berkesinambungan
9. perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
10. kesederhanaan penting
11. arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
12. secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.

Kedua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan prinsip-prinsip tersebur Agile Process Model berusaha untuk menyiasati 3 asumsi penting tentang proyek software pada umumnya:
1. kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien
juga sering berubah seiring berjalannya proyek.
2. Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang
diperlukan sebelum pembangunan.
3. Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.

Faktor Manusia pada Agile Process Model
Kunci faktor manusia pada model ini adalah proses didasari pada kebutuhan orang dan tim bukan sebaliknya, Untuk dapat sukses menerapkan model proses ini, pada faktor manusia ada beberapa kunci penting:
1. kompetensi: ketrampilan dalam membangun dan pengetahuan tentang proses membangun
2. Fokus: memiliki fokus yang sama sekalipun peran dalam tim berbeda
3. Kolaborasi : kerja sama dengan klien, anggota tim dan manajer.
4. Kemampuan ambil keputusan : tim pembangun memiliki otonomi dalam pengambilan
keputusan terkait teknis dan proyek
5. Kemampuan fuzzy problem-solving: mampu menyelesaikan memilah masalah yang penting
untuk dipecahkan segera atau nanti.
6. Saling percaya dan hormat: kekompakan tim yang didukung oleh rasa percaya dan saling
menghargai satu sama lain.
7. Manajemen diri: tim mengatur diri untuk selesaikan proyek, mengatur proses untuk disesuaikan dengan lingkungannya, tim menjadwal dirinya untuk menyerahkan hasil.

Jumat, Oktober 02, 2009

CMM to CMMI




What is CMMI?

Capability Maturity Model Integration atau CMMI (bahasa Indonesia: Integrasi Model Kematangan Kemampuan) adalah suatu pendekatan perbaikan proses yang memberikan unsur-unsur penting proses efektif bagi organisasi. Praktik-praktik terbaik CMMI dipublikasikan dalam dokumen-dokumen yang disebut model, yang masing-masing ditujukan untuk berbagai bidang yang berbeda.
Saat ini terdapat dua bidang minat yang dicakup oleh model CMMI: development (pengembangan) dan acquisition (akuisisi). Versi terkini CMMI adalah versi 1.2 dengan dua model yang tersedia yaitu CMMI-DEV (CMMI for Development) yang dirilis pada Agustus 2006 dan ditujukan untuk proses pengembangan produk dan jasa, serta CMMI-ACQ (CMMI for Acquisition) yang dirilis pada November 2007 dan ditujukan untuk manajemen rantai suplai, akuisisi, serta proses outsourcing di pemerintah dan industri.
Terlepas model mana yang dipilih oleh suatu organisasi, praktik-praktik terbaik CMMI harus disesuaikan oleh masing-masing organisasi tergantung pada sasaran bisnisnya. Organisasi tidak dapat memperoleh sertifikasi CMMI, melainkan dinilai dan diberi peringkat 1-5. Hasil pemeringkatan penilaian ini dapat dipublikasikan jika dirilis oleh organisasi penilainya.

CMMI is:
- a model that provides a set of best practices that address productivity,
performance, costs, and stakeholder satisfaction
- a model which provides a structured view of process improvement across an
organization
 CMMI can help:
- set process improvement goals and priorities
- provide guidance for quality processes
- provide a yardstick for appraising current practices
 CMMI is NOT:
- a set of “bolt-on processes” that last only as long as the wheel is squeaking. CMMI
provides a consistent, enduring framework that accommodates new initiatives.
- restricted to a single discipline (I.e. Software Engineering or Systems Engineering).
CMMI focuses on the total software intensive system problem and integrates
multiple disciplines into one process-improvement framework that eliminates
inconsistencies and reduces duplication

CMMI Design Goals and Benefits

  • Design Goals
    v Integrate the source models, eliminate inconsistencies, reduce duplication
    v Reduce the cost of implementing model-based process improvement
    v Be sensitive to impact on legacy efforts
  • Benefits
    v Efficient, effective assessment and improvement across multiple process
    disciplines
    v Reduced training and assessment costs
    v A common, integrated vision of improvement for all elements of an
    organization
    v Integration of systems engineering and software environments for
    additional productivity & quality gains

Rabu, September 30, 2009

The Capability Maturity Model (CMM)

Capability Maturity Model disingkat CMM adalah model kematangan kapabilitas) adalah suatu model kematangan kemampuan (kapabilitas) proses yang dapat membantu pendefinisian dan pemahaman proses-proses suatu organisasi. Pengembangan model ini dimulai pada tahun 1986 oleh SEI (Software Engineering Institute) Departemen Pertahanan Amerika Serikat di Universitas Carnegie Mellon di Pittsburgh, Amerika Serikat.
CMM awalnya ditujukan sebagai suatu alat untuk secara objektif menilai kemampuan kontraktor pemerintah untuk menangani proyek perangkat lunak yang diberikan. Walaupun berasal dari bidang pengembangan perangkat lunak, model ini dapat juga diterapkan sebagai suatu model umum yang membantu pemahaman kematangan kapabilitas proses organisasi di berbagai bidang. Misalnya rekayasa perangkat lunak, rekayasa sistem, manajemen proyek, manajemen risiko, teknologi informasi, serta manajemen sumber daya manusia.
Meskipun masih secara luas digunakan sebagai alat umum, pada bidang pengembangan perangkat lunak, CMM telah digantikan oleh CMMI (Capability Maturity Model Integration). CMM sendiri telah diganti namanya menjadi SE-CMM (Software Engineering CMM).

Capability Maturity Model (CMM) adalah suatu kerangka untuk menaksir level kedewasaan (maturity) dari pengembangan sistem informasi dari suatu organisasi serta manajemen proses dan produk. CMM terdiri dari 5 maturity level, antara lain :

- Level 1 – Initial :
Level ini hiasa disebut anarchy atau chaos. Pada pengembangan sistem ini masing – masing developer menggunakan peralatan dan metode sendiri. Berhasil atau tidaknya tergantung dari project teamnya. Project ini seringkali menemukan saat – saat krisis, kadang kelebihan budget dan di belakang rencana. Dokumen sering tersebar dan tidak konsisten dari satu project ke project lainnya.

- Level 2 – Repeatable :
Proses project management dan prakteknya telah membuat aturan tentang biaya projectnya, schedule, dan funsionalitasnya. Fokusnya adalah pada project management bukan pada pengembangan sistem. Proses pengembangan sistem selalu diikuti, tetapi akan berubah dari project ke project. Sebuah konsep upaya dibuat untuk mengulang kesuksesan project dengan lebih cepat.

- Level 3 – Defined :
Standard proses pengembangan sistem telah dibeli dan dikembangkan dan ini telah digabungkan seluruhnya dengan unit sistem informasi dari organisasi. Dari hasil penggunaan proses standard, masing – masing project akan mendapatkan hasil yang konsisten dan dokumentasi dengan kualitas yang baik dan dapat dikirim. Proses akan bersifat stabil, terprediksi, dan dapat diulang.

- Level 4 – Managed :
Tujuan yang terukur untuk kualitas dan produktivitas telah dibentuk. Perhitungan yang rinci dari standard proses pengembangan sistem dan kualitas produk secara rutin akan dikumpulkan dan disimpan dalam database. Terdapat suatu usaha untuk mengembangkan individual project management yang didasari dari data yang telah terkumpul.

- Level 5 – Optimized :
Proses pengembangan sistem yang distandardisasi akan terus dimonitor dan dikembangkan yang didasari dari perhitungan dan analisis data yang dibentuk pada level 4. Ini dapat termasuk perubahan teknologi dan praktek – praktek terbaik yang digunakan untuk menunjukkan aktivitas yang diperlukan pada standard proses pengembangan sistem .

Level – level di atas mempengaruhi level – level di bawahnya.

Lantas, apa yang bisa dimanfaatkan dari penerapan CMM?
Jika melihat tingkatan-tingkatan yang harus dilalui untuk memperoleh “predikat matang” menurut standar CMM maka suatu organisasi harus memiliki road-map dari pengembangan aplikasi softwarenya.
Road-map tersebut harus berangkat dari visi dan misi organisasi sehingga aplikasi softwarenya akan berkembang selaras dengan tujuan-tujuan yang ditetapkan oleh organisasi tersebut.
Selain dari sisi internal, CMM sendiri dapat digunakan untuk mengukur “tingkat kemapanan” sebuah organisasi yang akan direkrut sebagai kontraktor proyek-proyek kita.
Misalkan PT. X ingin mengembangkan aplikasi software ERP untuk internal perusahaannya.
Nah, PT. X kemudian mengundang PT. A, PT. B dan PT. C untuk menjadi calon kontraktor yang akan melaksanakan proses pengembangan hingga transfer pengetahuan.
Dengan menggunakan CMM maka PT. X dapat mengukur “tingkat kemapanan” dari masing-masin calon kontraktor tersebut.
Dari hasil penilaian tersebut maka dapat ditentukan perusahaan mana yang akan menjadi kontraktor berdasarkan Level menurut CMM.
PT. X tentunya akan memilih perusahaan yang sudah mencapai setidaknya Level 4 demi menjamin kesuksesan implementasi proyeknya.
Untuk informasi lebih lanjut mengenai CMM maupun CMMI dapat diakses di situs-situs berikut:
http://www.sei.cmu.edu/cmmi/
http://en.wikipedia.org/wiki/Capability_Maturity_Model#Level_1_-_Ad_hoc_.28Chaotic.29
http://www.opengroup.org/architecture/togaf8-doc/arch/chap27.html
http://www.sei.cmu.edu/cmm/
http://www.sei.cmu.edu/cmm/papers/9001-cmm.pdf

PMRPL : Perbedaan Metodologi, Metoda,....

contoh dari :

1. Framework : SW - CMM --> CMMI Dev
2. Motodologi : SDLC , RUP
3. Metoda : UML, Black Box Testing
4. Prosedur : Change Request

Selasa, September 29, 2009

Business Process Reengineering (BRP)


Changes fundamentally how the organization does certain operations

Goal:
Radical redesign of business processes

=========================
Outcome Analysis :
-Consider desirable outcomes from customers’ perspective
-Consider what the organization could enable the customer to do

Technology Analysis :
-Analysts list important and interesting technologies
-Managers list important and interesting technologies
-The group identifies how each might be applied to the business and how the business might benefit

Activity Elimination :
-Identify what would happen if each organizational activity were eliminated
-Use “force-fit” to test all possibilities

Kamis, September 17, 2009

TSBD : Dekomposisi

Dekomposisi adalah teknik memecah sebuah relasi menjadi beberapa relasi. Kemudian setelah relasi tersebut dipecah bila digabungkan kembali harus mendapat hasil yang sama, tidak boleh record yang hiulang maupun record tambahan.

Bila kondisi ini terpenuhi maka ini yang disebut Lessloss-join decomposition.

Contohnya sebuah dekomposisi yang non-Lossless-join:

R1
A B
X 1
X 2
Y 1

Dekomposisi =>
R2
A
X
Y

R3
B
1
2

Bila kedua relasi R2 dan R3 digabung kembali maka akan didapat:

R4
A B
X 1
X 2
Y 1
Y 2

Kondisi ini yang disebut Lossy join decomposition.

Untuk menghindari dekomposisi Lossy-join maka pada relasi hasil dekomposisi harus memiliki attribut yang beririsan. Contohnya adalah pada Relasi StaffBranch diatas didekomposisi menjadi Relasi Staff dan Relasi Branch dimana attribut BranchNo sebagai irisannya.

Ada dua properti penting dalam dekomposisi yaitu Lossless-join Property dan Dependency Preservation Property. Dalam sebuah dekomposisi apakah memenuhi kaidah Lossless-join dan apakah memenuhi kaidah Dependency Preservation.

Masih bingung??? sama saya juga, mari kita lihat lagi.

Untuk mendapatkan dekomposisi yang Lossless-join harus ada attribut yang beririsan namun harus hati hati supaya dekomposisi harus juga Dependency Preserving. Untuk bisa mendapatkan Dependency Preserving syaratnya adalah constraint yang berlaku direlasi awal harus juga berlaku di relasi hasil dekomposisi. Berikut contohnya:

PhoneAddress
Mahasiswa NoHP Operator
Wawan 0815 06 Matrix
Wawan 0817 07 Pro XL
Aan 0815 08 Matrix
Nuri 0812 09 Simpati

Tanda “→” dibaca “menentukan”

Relasi PhoneAddress kemudian dengan cara pertama didekomposisi menjadi:

PA1
Mahasiswa NoHP
Wawan 0815 06
Yoseph 0817 07
Aan 0815 08
Nuri 0812 09

PA2
NoHP Operator
0815 06 Matrix
0817 07 Pro XL
0815 08 Matrix
0812 09 Simpati

Constraint awal adalah {Mahasiswa → NoHP, NoHP → Operator}, kemudian dari dua relasi diatas ada irisan yaitu attribut {NoHP}, dengan demikian ketika kita merujuk salah satu nama Mahasiwa pada relasi PA1 maka kita akan dapat NoHP, berbekal NoHP ketika kita pergi ke PA2 kita bisa mendapat nama Operator.

Sekarang kita pakai cara dekomposisi kedua:

PA1
Mahasiswa NoHP
Wawan 0815 06
Yoseph 0817 07
Aan 0815 08
Nuri 0812 09

PA2
Mahasiswa Operator
Wawan Matrix
Yoseph Pro XL
Aan Matrix
Nuri Simpati

Constraint awal adalah {Mahasiswa → NoHP, NoHP → Operator}, kemudian dari dua relasi diatas ada irisan yaitu attribut {Mahasiswa}, ketika kita merujuk salah satu nama Mahasiwa pada relasi PA1 maka kita akan dapat NoHP, berbekal NoHP kita tidak dapat mendapat nama Operator pada relasi PA2.

Dekomposisi cara kedua diatas juga Lossless-join karena memiliki attribut irisan {Mahasiswa} tapi tidak Dependency Preserving karena constraint yang berlaku pada awal relasi sebelum didekomposisi tidak berlaku lagi.

Untuk ringkasnya lihatyang beriku tini:

  • Ada sebuah Relasi: R = (A, B, C)
    Constraint F = {A → B, B → C}
    • Dapat didekomposisi dalam dua cara.
  • Cara pertama: R1 = (A, B), R2 = (B, C)
    • Lossless-join decomposition: R1 → R2 = {B} dan B → BC
    • Dependency preserving
  • Cara kedua: R1 = (A, B), R2 = (A, C)
    • Lossless-join decomposition: R1 → R2 = {A} dan A → AB
    • Not dependency preserving

Apa itu dependency (ketergantungan)? Dependency secara garis geras ada dua macam yaitu Functional Dependency dan Multivalued Denpendency.

TSBD: NORMALIZATION

Normalizationis a technique for producing a set of suitable relations that support the data requirements of an enterprise.
Characteristics of a suitable set of relations include:
the minimalnumber of attributes necessary to support the data requirements of the enterprise;
minimalredundancy with each attribute represented only once with the important exception of attributes that form all or part of foreign keys.
The benefits of using a database that has a suitable set of relations is that the database will be:
easier for the user to access and maintain the data;
take up minimal storage space on the computer

Normalisasi Tabel

Pada OLTP (online transaction processing), normalisai adalah suatu upaya penting yang dilakukan untuk menghindari agar tidak terjadi redundansi data yang bisa berakibat kepada anomali update. Anomali update meliputi anomali insert, anomali delete, anomali modification. Untuk lebih jelasnya bisa dilihat ilustrasi dari contoh berikut :

---------------------------------------------------------

StaffBranch = {staffNo, sName, position, salary, branchNo, bAddress }

Staff = {staffNo, sName, position, salary, branchNo }

Branch = {branchNo, bAddress}

---------------------------------------------------------

Berdasarkan atas contoh tabel (relation) di atas, data yang terkait staf dan cabang dapat direpresentasikan dalam dua cara :

  • Cukup disediakan satu tabel, yaitu StaffBranch
  • Disediakan dua tabel, yaitu Staf dan Branch

Pada tabel StaffBranch terdapat redundansi data cabang, dimana detil dari cabang terjadi pengulangan untuk setiap staf. Sebaliknya, informasi cabang hanya muncul sekali untuk setiap cabang pada tabel Branch, dan hanya branchNo yang berulang di dalam tabel Staff untuk merepresentasikan lokasi kerja staf.

Bagaimana anomali bisa terjadi pada StaffBranch?

  • Contoh 1 : Misalkan terjadi transaksi penambahan (insert) staf baru, maka yang dilakukan tidak cukup hanya mengisi data staf tetapi berikut data cabangnya. Jika data cabang untuk staf baru sudah ada sebelumnya, maka ada kemungkinan pengisian ulang data cabang dengan nilai yang berbeda. Dengan demikian, akan terjadi inkonsistensi data cabang.
  • Contoh 2 : Misalkan terjadi transaksi penghapusan data (delete) staf dan pada target record tidak terdapat pengulangan data cabang, proses akan berdampak pada hilangnya data cabang yang mestinya tidak ikut terhapus.
  • Contoh 3 : Misalkan terjadi transaksi perubahan/modifikasi (update) data cabang untuk data cabang yang mengalami perulangan. Proses bisa menimbulkan inkonsistensi data jika proses perubahan tidak untuk seluruh record terkait.

Untuk melakukan proses normalisasi, perlu dipahami terlebih dahulu konsep utama dalam normalisasi yaitu ketergantungan fungsional (functional dependency). Functional dependency adalah hubungan antar antribut di dalam suatu tabel. Jika A dan B adalah atribut-atribut yang ada di dalam tabel R, B tergantung secara fungsional terhadap A, jika setiap nilai A di dalam R berelasi hanya dengan satu nilai B (ditulis A àB). Dalam hal ini, A disebut sebagai determinant.

Karakteriktik dari ketergantungan fungsional pada normalisasi adalah :

  • Berelasi satu dan hanya satu (1:1).
  • Berlaku (terjaga konsistensinya) untuk kapan saja.
  • Nontrivial. Trivial dependency adalah ketergantungan fungsional dimana non determinant tergantung pada superset. Contoh StaffNo, StaffAddress → StaffAddress adalah trivial selama StaffAddress → StaffAddress.

Selain memahami ketergantungan fungsional, beberapa jenis ketergantungan berikut ini perlu untuk diketahui :

  • Trivial dependency, adalah ketergantungan fungsional dimana non determinant tergantung pada superset. Contoh StaffNo, StaffAddress → StaffAddress adalah trivial selama StaffAddress → StaffAddress.
  • Full functional depencey, adalah ketergantungan dimana non determinant tergantung penuh pada (seluruh) determinant. Misalkan OrderNo, PoductNo → Price.
  • Transitive dependency, adalah suatu hubungan ketergantungan fungsional yang terjadi secara tidak langsung.Contoh A → B, B → C, maka secara tidak langsung terjadi ketergantungan A → C.

Dalam proses normalisasi, perlu juga memahami konsep beberapa tingkatan nilai kunci (key) berikut ini:

· Superkey, adalah sebuah atribuat atau sebuah himpunan atribut yang secara unik dapat mengidentifikasi record dalam tabel. Contoh informasi keahlian staf dalam tabel StaffSkill bisa memiliki superkey StaffNo, StaffAddress, Skill, atau cukup StaffNo, Skill.


· Candidate key, adalah superkey yang tidak terdapat subset yang merupakan superkey.Dari kedua contoh superkey di atas, candidate key yang tepat adalah StaffNo, Skill.


· Primary key, adalah candidate key yang terpilih untuk mengidentifikasi nilai yang unik dalam suatu tabel.


· Alternate key, adalah candidate key yang tidak terpilih.

Tahapan normalisasi :

· UNF (unnormalized form), adalah tabel yang masih memiliki satu atau lebih kelompok berulang (repeating group).


· 1NF (first normal form), adalah tabel yang hanya terdapat satu dan hanya satu nilai untuk irisan baris dan kolomnya. Diperoleh dengan menghilangkan kelompok berulang pada UNF, antara lain dengan membentuk tabel baru pada kelompok yang berulang dengan menyertakan (kopi) kuncinya.


· 2NF (second normal form), adalah tabel yang seluruh non determinannya bergantung penuh (bukan subset) pada determinant, jadi tidak terjadi partial dependency. Diperoleh dengan menghilangkan partial dependency dengan membentuk tabel baru yang menyertakan determinannya.


· 3NF (third normal form), adalah tabel yang tidak terdapat hubungan transitive di dalamnya. Diperoleh dengan menghilangkan transitive dependency dengan membentuk tabel baru yang menyertakan determinannya.


· BCNF(Boyce–Codd Normal Form), adalah tabel yang memiliki persyaratan 3NF dengan tambahan batasan determinan harus candidate key.Perbedaan antara 3NF dengan BCNF adalah (misalkan untuk relasi A → B), pada 3NF B boleh sebuah atribute primary key dan A bukan candidate key, sedangkan pada BCNF untuk relasi tersebut A harus candidate key. Dengan demikian BCNF tentu 3NF, tetapi 3NF belum tentu BCNF.


· 4NF (fourth normal form), adalah tabel yang memiliki persyaratan BCNF dan non-trivial MVD(multivalued dependency). Contoh di dalam tabel BranchStaffOwner terdapat relasi MVD branchNo StaffName, OwnerName. Antara StaffName dan OwnerName masing-masing independen. Jadi untuk 4NF bisa dikembangkan menjadi branchNo StaffName dan branchNo OwnerName.


· 5NF (fifth normal form), adalah tabel yang tidak memiliki join dependency.Kasus ini jarang terjadi.


· Higher normal forms.


Dalam suatu proses normalisasi kemungkinan bisa terjadi lompatan kondisi dari suatu level normal ke dua atau bahkan lebih level di atasnya. Hal ini lebih besar kemungkinannya pada tabel-tabel atau entitas-entitas memiliki relationship yang sederhana, atau dengan kata lain jumlah entitas yang terkait sedikit. Misalkan pada proses normalisasi 1NF ke 2NF telah dilakukan proses penghilangan partial depency, dan hasilnya terbentuk relationship baru yang bisa saja sudah tidak terdapat transitive depdendency, atau bahkan sudah memenuhi kriteria level di atasnya.Namun demikian, validasi normalisasi masih penting untuk dilakukan untuk bisa lebih memastikannya.

Rabu, Maret 18, 2009

C#.NET : konversi string to percent and dolars


untuk button1 adalah nameid dari tombol Format Text
ini untuk melakukan conversi ke dolar dan percent :

private void Button1_Click(object sender, System.EventArgs e)
{
this.TextBox2.Text = formatText(Convert.ToSingle(TextBox1.Text));
}

private void percentRadioButton_CheckedChanged(object sender, System.EventArgs e)
{
if (this.percentRadioButton.Checked)
{
formatText = new FormatNumbers.FormatSingle(FormatNumbers.returnPercentage);
}
}

private void dollarRadioButton_CheckedChanged(object sender, System.EventArgs e)
{
if (this.dollarRadioButton.Checked)
{
formatText = new FormatNumbers.FormatSingle(FormatNumbers.returnDollars);
}

}

private void Form1_Load(object sender, System.EventArgs e)
{
formatText = new FormatNumbers.FormatSingle(FormatNumbers.returnPercentage);
}

ORA : Reset Password "Connect Internal" di Oracle DB 8.i

ini masalahnya yang buat 4 jam standby di server yang bersuhu 15 derajat C :

Oracle Server Manager Release 3.1.7.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.

Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SVRMGR> connect internal
Password: ******
ORA-01017: invalid username/password; logon denied

SVRMGR> connect internal
Password:**********
ORA-01031: insufficient privileges

SVRMGR> connect internal
Password:&*^*^%%*&
ORA-01031: insufficient privileges

SVRMGR> exit

Server Manager complete.

---------- ke toilet dulu akh... mungkin aja di toilet akan ada informasi tentang passwordnya!!
.... tapi cuma dalam mimpi kali..!!! ngak ada inspirasi.
pertanyaan : gimana cara reset password secara passwordnya dibuat sejak 2003 hmm

ini jawabannya , pakai Oracle 8i... kalau 9i,10g etc, kemungkinan sama..... coba aja:

C:\>orapwd file=c:\oracle\ora81\database\pwdherru.ora password=herrudonk entries=5
C:\>set oracle_sid=herru
C:\>svrmgrl
Oracle Server Manager Release 3.1.7.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SVRMGR> connect internal
Password:*****
Connected.

SVRMGR> startup nomount

alhamdulillah...........

lalu cek-and ricek :

SVRMGR> select tablespace_name, status from dba_data_files;
SVRMGR> select tablespace_name, status from dba_tablespaces;
SVRMGR>
select group#,status,member from V$logfile;

-- tidur nyenyak!!


C#.NET : konversi string to float/int ,messagebox

untuk merubah hasil string dalam textbox agar dapat di kalkulasi maka, dapat dibuat argument sintax sbb :

private void btnSubmit_Click(object sender, EventArgs e)
{
float hasil;

hasil = float.Parse(txtTr1.Text) + float.Parse(txtTr2.Text);
txtJumTr.Text = hasil.ToString();

}

- untuk menampilkan messagebox
private void btnProses_Click(object sender, EventArgs e)
{
string message;
message = "Proses transfer telah di jalankan.... terima kasih";

MessageBox.Show(message);
}
-untuk menutup form

private void button1_Click(object sender, EventArgs e)
{
this.Close();
}

Senin, Maret 16, 2009

Kuliah : Pre Praktikum C# .NET

dear rekan-rekan mhs polman astra tk.1
untuk dapat memulai 16 kali pertemuan .NET , rekan-rekan diwajibkan untuk memiliki kasus/tema dari proses yang akan dijadikan bahan prkatikum.
adapun tema yang dimaksud adalah , contoh :
a. Proses penjualan A
b. Proses pembelian F
c. Proses registrasi G
d. Proses pemesanan H
e. etc
diwajibkan tiap - tiap rekan memilki tema yang berbeda antara 1 dengan lainnya.

siap kan diri anda. !!

thanks

Kamis, Maret 12, 2009

SQL Server : Membangun Kembali Database Northwind Pada SQL Server

Database Northwind ini menggambarkan database milik suatu perusahaan fiktif yang bernama Northwind Traders dimana perusahaan ini bergerak dalam bidang eksport import makanan. Dalam database ini terdapat tabel-tabel seperti layaknya dalam suatu perusahaan eksport import seperti tabel Customers, Orders, Suppliers dan lain sebagainya.
Database Northwind ini akan secara otomatis tersedia setiap Anda meng-install SQL Server. Demikian juga jika Anda membaca buku-buku mengenai SQL Server maka akan sering sekali Anda jumpai demo, tutorial, contoh kasus yang menggunakan database Northwind ini.

Jika kita seringkali menggunakan database Northwind sebagai sarana latihan database terutama dengan operasi insert, update atau delete maka secara otomatis data dalam database Northwind ini akan mengalami perubahan dan tidak asli lagi. Bagaimanakah caranya untuk mengembalikan data maupun struktur database Northwind ini seperti aslinya?

Ikuti saja solusi berikut ini.
Pada folder instalasi SQL Server Anda (yang biasanya terdapat pada path C:/Program
Files/Microsoft SQL Server) terdapat sub folder /MSSQL/Install dimana di dalamnya terdapat
suatu file yang bernama instnwnd.sql. File instnwnd.sql ini adalah suatu script yang berfungsi untuk membangun kembali (rebuild) database Northwind ke bentuk aslinya.

Untuk membangun kembali database Northwind Anda silakan saja lakukan langkah-langkah berikut :
1. Masuklah kedalam command prompt DOS di Windows Anda.
2. Silakan Anda masuk ke dalam folder instalasi SQL Server Anda sampai pada subfolder
/MSSQL/Install, contohnya sebagai berikut:
C:/cd "C:/program files/microsoft sql server/mssql/install"
3. Gunakan utility osql untuk menjalankan file instnwnd.sql dengan syntax
sebagai berikut,
osql -U[userdb] -P[password] -S[servername] -iinstnwnd.sql -oinstnwnd.rpt

misalnya nama server database anda adalah karebosi, username database menggunakan sa
dan passwordnya adalah sablank, maka Anda mengetik syntaxnya adalah sebagai berikut:

osql -Usa -Psablank -Skarebosi -iinstnwnd.sql -oinstnwnd.rpt

Anda bisa melihat error yang terjadi pada file instnwnd.rpt. Utility osql akan menjalankan script
instnwnd.sql, tunggu sampai selesai dan secara otomatis database Northwind akan dikembalikan lagi bentuknya seperti semula dan siap Anda gunakan kembali sesuai dengan kebutuhan Anda.
selamat manikmati.........

Selasa, Maret 10, 2009

tugas : MS Access

tugas :

  1. Buatlah Blogger IT anda
  2. buatlah arti / fungsi dari masing masing keterngan dibawah ini dan buatkan contoh-contoh dari penggunaan fungsi-fungsi dibawh ini :
    1. OLE OBJECT (untuk memasukkan data gambar)
    2. Hyperlink (untuk link ke halaman lain atau website)
    3. MEMO
    4. AUTO NUMBER
    5. Inputmask (password atau format lainnya)
    6. Key
    7. Foreign Key
    8. Required
    9. Allow Zero Lenght
    10. Currency
    11. Boolean dalam ACCESS
    12. Queries
    13. indexed

  1. Buatkan relasi dibawah ini didalam access
    1. tampilkan seluruh data product di dalam table product beserta catagori name dari table categories , untuk semua product yang tidak di produksi lagi
    2. apa maksud dari query ini, buatlah query dibawh ini dan berikan nama orders_quesry dan berikan penjelasan dari query dibawah ini :

SELECT Orders.OrderID, Orders.CustomerID, Orders.EmployeeID, Orders.OrderDate, Orders.RequiredDate, Orders.ShippedDate, Orders.ShipVia, Orders.Freight, Orders.ShipName, Orders.ShipAddress, Orders.ShipCity, Orders.ShipRegion, Orders.ShipPostalCode, Orders.ShipCountry, Customers.CompanyName, Customers.Address, Customers.City, Customers.Region, Customers.PostalCode, Customers.Country

FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Senin, Maret 02, 2009

ORA : Transfer to e-SPT

script dibawah hanya untuk menampilkan kebutuhan dari e-SPT, dan dari haasil eksekusi script dibawah, dapat di copy paste ke Excell dan lakukan import dari e-SPT.

------------------------------------
select a.NAME "Nama Pegawai",a.NRP, a.ADDRESS1 Alamat, c.ref_name Jabatan,
d.ref_name "Status Kepegawaian", a.MARITAL_STATUS "Status Kawin",a.GENDER "Jenis Kelamin",
a.DEPENDANT_OF_CHILD "Jumlah Anak", decrypt(a.nrp,e.amount) "Upah",
decrypt(a.nrp,f.amount) "Tunjangan Lain"
from HERRU_general_datas a, HERRU_employments b, HERRU_references c, HERRU_references d,
HERRU_taxes e, HERRU_taxes f
where b.gendat_nrp=a.nrp and c.ref_code=b.POSITION and d.ref_code=b.EMP_STATUS
and e.gendat_nrp=a.nrp and e.res_code='SP01' and to_char(e.PAYRESULT_DATE,'YYYY') = :vYEAR
and f.gendat_nrp=a.nrp and f.res_code='SP03' and to_char(f.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A4-A5
select a.NRP, decrypt(a.nrp,c.amount) "Honorarium", decrypt(a.nrp,d.amount) "Premi Asuransi"
from HERRU_general_datas a, HERRU_employments b, HERRU_taxes c, HERRU_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP04'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP05'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A6,A8
select a.NRP, decrypt(a.nrp,c.amount) "Natura", decrypt(a.nrp,d.amount) "Tantiem,Bonus"
from HERRU_general_datas a, HERRU_employments b, HERRU_taxes c, HERRU_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP06'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP08'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A12,A15
select a.NRP, decrypt(a.nrp,c.amount) "Iuran THT", decrypt(a.nrp,d.amount) "Penghasilan Net"
from HERRU_general_datas a, HERRU_employments b, HERRU_taxes c, HERRU_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP12'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP15'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A20,A24
select a.NRP, decrypt(a.nrp,c.amount) "PPH21 Dipotong Masa Sebelumnya",
decrypt(a.nrp,d.amount) "PPH21 Terpotong & Terlunasi"
from HERRU_general_datas a, HERRU_employments b, HERRU_taxes c, HERRU_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP20'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP21'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

Jumat, Februari 27, 2009

PHP : Bilangan Prima

$a = $_POST[txtawal];
$c = $_POST[txtakhir];
$p="prima_prima";
$b="bukan prima";
for($a==1;$a<=$c;$a++)
{
if($a == 1) echo $a." ".$b."
";
elseif(($a==2)($a==3)($a==5)($a==7)) echo $a." ".$p."
";
else cek($a);
}
function cek()
{
global $a,$b,$p;
if(($a%2==0)($a%3==0)($a%5==0)($a%7==0)) echo $a." ".$b."
";
else echo $a." ".$p."
";
}

Rabu, Februari 18, 2009

PHP & Mysql : list data pada combo box


Hasil nya :

Senin, Februari 16, 2009

ASP.Net : Encrypt

-- file ini diletakkan pada webservice

[WebMethod]
public string Encrypt(string toEncrypt)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
// Get the key from config file
string key = "HondaKey";

MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tdes.Clear();
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

ASP.Net : Decrypt

-- file ini diletakkan pada webservice

[WebMethod]
public string Decrypt(string cipherString)
{
byte[] keyArray;
byte[] toEncryptArray = Convert.FromBase64String(cipherString);

System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
//Get your key from config file to open the lock!
string key = "HondaKey";

MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();


TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

tdes.Clear();
return UTF8Encoding.UTF8.GetString(resultArray);
}

ASP.Net : koneksi ke database SQL

-- file ini diletakkan pada webservice

[WebMethod]
public bool MyConnection()
{
//connection to server
// ditambah fungsi decrypt pada connecting string
string strCon = "xG2InqSpM9K9imPkVdrZ7mzmnW/uLX7nC6ooId0kssXilyYK1At2qnWqzo5w747LpmF4e/lb7mAynqGZC/BCJZaxapd7B7rIoJkH9KUx9Y6PctmceL95+f2xrQ/GQiIW5GnmXkVn/MvWVex3GslaB4usmiMuAdjBjlfbzSCx0AE=";
objcon = new SqlConnection(Decrypt(strCon).ToString());

try
{
objcon.Open();
return true;
}
catch
{
return false;
}
}

PHP & PostGre : Koneksi Select

//$conn=pg_Connect ("testing","test","test");
$conn_string = "host=localhost dbname=testing user=test password= test";
$conn = pg_connect($conn_string);
//$conn=pg_Connect("dbname=testing");
if (!$conn){
echo "Error Koneksi";
}else {


$sql = "select * from testah";


$result =pg_query($conn, $sql);

while ($row = pg_fetch_array($result)){

echo $row["id"]. " - " . $row["nama"] . " - " . $row["alamat"] . "
";
}
}

hasilnya :
2 - alisyahbanas - jl. japati no. 1
1 - sentots - jl. arwana no. 1

Jumat, Februari 13, 2009

PHP & Mysql : PHP select

$conn=mysql_connect ("localhost","root","");
if (!$conn){
echo "Error Koneksi";
}else {
mysql_select_db("sistem_kuliah",$conn);
$sql = "select * from mahasiswa";

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)){

echo $row["nim"]. "-" . $row["nama"] . "
";
}
}


hasilnya :

0180000536-andri
0280000254-tung desem
085555-indira
0925000-adi
0925000-adi

PHP & Mysql : PHP insert

$conn=mysql_connect ("localhost","root","");
if (!$conn){
echo "Error Koneksi";
}else {
mysql_select_db("sistem_kuliah",$conn);
$sql = "insert into mahasiswa (nim,nama)
values ('0925000', 'adi')";
mysql_query($sql,$conn);
echo " data insert 1 row";
}

PHP & Mysql : Koneksi PHP ke MySQL (2)

awal tag php

// kneksi 2 : konseksi dengan pesan error , penggunaan fungsi if
$conn=mysql_connect ("localhost","root","");
if ($conn){
echo "
Koneksi Berhasil";
}else {
echo "Koneksi Gagal";
}

?>

hasilnya :

Koneksi Berhasil

PHP & Mysql : Koneksi PHP ke MySQL (1)

//mulai script php
//koneksi 1 : koneksi ke mysql yang benar dengan konsisi password kosong
$conn = mysql_connect ("localhost","root","");
echo $conn;
echo "
";

// koneksi 1 : jika salah koneksi akan muncul pesan error atau error handling
$conn= mysql_connect ("localhost","root","salah") or die ("error connection");

?>

hasilnya :

untuk conn pertama yang berhasil akan muncul :

"Resource id #2"

untuk conn ke 2 karena passwordnya salah maka akan muncul :

"Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\hari4\koneksi1.php on line 9
error connection"

SQL : Insert, Update data, delete data dan tambah field

tambah field:
ALTER TABLE `mahasiswa` ADD `value` INT( 5 ) NULL DEFAULT '0';

insert :
INSERT INTO `sistem_kuliah`.`mahasiswa` (
`nim` ,
`nama` ,
`alamat` ,
`angkatan` ,
`status` ,
`value`
)
VALUES (
'085555', 'indira', 'jl. sunter II', '2008', 'aktif', '5'
);

update data:
UPDATE `sistem_kuliah`.`mahasiswa`
SET `status` = 'tidak aktif'
WHERE `nim`= '0180000536';

delete:
DELETE FROM [tabel]
WHERE [kondisi];

Mysql : View pada Mysql 5.0.41

View bisa dikatakan summary dari tabel atau beberapa tabel, dengan view, kita bisa gabungkan beberapa tabel sekaligus dan view ini tersimpan di sisi server, sehingga nanti penggunaannya tinggal panggil saja, berikut contohnya, :
D:\its me\xampp\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.41-community-nt MySQL Community Edition (GPL)

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> create database forum;
Query OK, 1 row affected (0.00 sec)

mysql> use forum;
Database changed
mysql> create table barang(kode_barang char(3) not null primary key default’0′,n
ama_barang char(30),harga_barang int);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into barang values(’001′,’mobil’,50000000);
Query OK, 1 row affected (0.05 sec)

mysql> create table jual(tgl date,kode char(3),jml_jual int);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into jual values(’2007-01-01′,’001′,3);
Query OK, 1 row affected (0.00 sec)

mysql> create view jualan_view as select DATE_FORMAT(b.tgl,’%d %M %Y’) as tgl,b.kode,a.nama_barang, a.harga_barang,b.jml_jual,(a.harga_barang*b.jml_jual) as total from jual b, barang a where
b.kode=a.kode_barang;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from jualan_view;
==========================================
| tgl | kode | nama_barang | harga_barang | jml_jual | total |
===========================================
| 01 January 2007 | 001 | mobil | 50000000 | 3 | 150000000 |
+———————–+——+————-+————–+———-+
1 row in set (0.00 sec)

PHP & Mysql : Paging dengan SQL

syntax untuk select statement

SELECT FROM [tabel]
WHERE [kondisi]
ORDER BY [kolom] [asc/desc]
GROUP BY [kolom]
LIMIT [offset] , [row]

// untuk paging dalam php menggunakan SQL

$jmlsatupage = 5;
$pageno = $_get["p"];
$query= "select * from a limit "
.(($pageno * $jmlsatupage) - ($pageno -1) . ","
. ($pageno *$jmlsatupage );

-- eksekusi $query
mysql_query($query,$conn);

//$conn untuk variable koneksi php.. (lihat judul PHP : Koneksi (3))

PHP : CLASS

class Cart
{
var $items;
//item in our shopping cart

// ada $num articles of $artnr to the cart
function add_item ($artnr, $num)
{ $this->items[$artnr]+= $num;
}

//take $num article of $artnr out of the cart
function remove_item($artnr,$num)
{
if($this->items[$artnr]>$num)
{
$this->items[$artnr]-=$num; return true;
}
else
{
return false;
}
}
}

//how to use it?
$cart = new Cart;
echo "test";
$cart->add_item("10",1);

?>

Rabu, Februari 11, 2009

PHP palindrom

//palindrom cara cepat
$word = abcfcba;

if ($word == strrev ($word)) {
echo 'The word is a palindrome';
} else {
echo 'This is not a palindrome';
}

//palindrom array
$arr = array('a','h','a');

if(count($arr) % 2) {
$stopat = ((count($arr) - 1) / 2) - 1;
} else {
$stopat = count($arr) / 2;
}

echo "
". $stopat;

$ispalarr = 0;

for($i = 0; $i < $stopat; $i++) {
if($arr[$i] == $arr[count($arr) - ($i + 1)]) {
echo "
masuk ke for";
$ispalarr = 1;
}
}

echo "
". $ispalarr;

echo "
";
if($ispalarr == 0) {

echo " The array is not a palindrome array.";
} else {
echo "The array is a palindrome array.";
}

?>

ORA : permasalahan rekap TAX

permasalahan pada report Rekap TAX
1. form1721_a1_upper.rep
2. form1721_a1_lower.rep

solusi

* menu--> report --> tax--> annual--> tax--> form 1721-a1_upper
file : spt_pph21_1721_a1_3_upper.rep date 23-3-2004 05.40
perubahan :
file master adalah spt_pph21_1721_A_upper_3_2004.rdf
- dihapuskannya kolom pph ditanggung pemerintah
- npwp membuat jadi bermasalah pada tampilan karena ukuran kolom npwp yang terlalu kecil (type Expand)
- parameter npwp di report pada properti--> general layout -->vertikal = fixed

(sebelumnya expand), fixed yang dimaksud jika data npwp terlalu lebar dari kolom maka akan di

potong.
- perapihan lebar kolom pada report pph21 upper tersebut sesuai data
- pengecilan font pada data (menjadi courier new 7pt )
- eksekusi file rep : cntr+T

file kemudian disimpan dengan nama :
file master adalah spt_pph21_1721_A_upper_3_2009.rdf

* begitu pula dengan format file lower
spt_pph21_1721_A_lower_3_2009.rdf

Jumat, Februari 06, 2009

PHP Counter kunjungan

nah ini ilmu dari php yang berguna banget untuk di pelajari.... couse untuk tau seberapa banyak yang datang ke web kita... nich source code nya...
ini juga diajarin di hari ke 3...


$filename = "filecounter.txt";

// untuk membuat counter bertambah setiap page di klik
$count_my_page = ($filename);
$count = file($count_my_page);
$count[0] ++;
$fp = fopen($count_my_page , "w");
fputs($fp , "$count[0]");
fclose($fp);
echo $count[0];

// end conter

// melihat IP yang sama melihat page kita, perhitungan mengunakan IP
$filename2 = "ipcounter.txt";
// file harus dibedakan dengan diatas diakrenakan untuk menuliskan log ipyang read

//memaasukkan no IP komputer yang browse ke dalam file ipcounter.txt
$count_my_address = ($_SERVER['REMOTE_ADDR']);

$f=fopen($filename2,"a");
fwrite($f," \r\n\n ".$count_my_address);
fclose($f);
// end -- membuka file dan menuliskan ke file ipcounter

// menghitung jumlah ip yang telah di simpan pada ipcounter.txt
$count = file($filename2);
$counter = 0;
while (list($line_num, $line) = each($count))
{
if(trim($line)== $count_my_address) {
++$counter;
}

}
echo "Anda telah mengunjungi kami sebanyak ", $counter. "kali";

?>

PHP predifine dan FOR

hari ini... ane belajar PHP hari ketiga,...
but karena hari pertama loading nya masih lama + hari ke dua nya ngak hadir secara hujan! hehehe soo hari ketiga harus diteken dikit nich isi kepala untuk bisa in progress!!!!

hari ini belajar predifine, sama sedikit ngejar hari kedua yaitu fungsi FOR :
predifine ini bertujuan untuk mengetahui seperti IP , PORT dari user yang mengunjungi web kita.


echo $_SERVER['HTTP_HOST']. "
";
echo $_SERVER['REMOTE_ADDR']. "
";
echo $_SERVER['SERVER_PORT']. "
" ;
echo $_SERVER['HTTP_ACCEPT']. "
";

//in iuntuk ngejar pertemuan ke 2 ttg if, switch , for dan while...
// lucu juga sich karena ini biasnya gw yang ngajar logika berfikir.. but jalanin aja dech... hitung2 ng-refresh isi kepala lagi dengan logika algoritma!! YES WE CAN

$i=0;
$y=0;

for ($y=1;$y<=5;$y++)
{
for ($i=1;$i<=$y;$i++)
{
echo "*";
}
echo "
";
}
?>
-----------

Rabu, Februari 04, 2009

ORA : kolom NPWP dan penandatanganan

penetapan NPWP diletakkan di Table Tersendiri.
tetapi sebanarnya sudah ada table yang fieldnya berisi NPWP yaitu di herru_employments
-
dicoba untuk ditambahkan data NPWP ke dalam field NPWP

dengan
update herru_employments set npwp= :npwp
where gendat_nrp = :nrp
and gendat_vend_vnd_code = :perush;

dan saat run report... berhasil npwpnya muncul...
sekarang maslahnya, bagaimana isi 300 data npwp ke dalam table tanpa harus input 1 per 1 ?

ask my wife!!!!! she have a brillian answer!!! please ...

solusi :
melakukan pembuatan syntax pada excell dengan penggabungan syntax1&syntax2&syntax3 yang dihubungan dengan data yang dibutuhkan seperti Gendat_nrp dan NPWP

- lalu dari excell di paste by value ke notepad
- dari notepad.. si save menjadi NPWP.SQL
- buka SQLPLUS pada deskstop
- lakukan perintah @d:/npwp.sql; di dalam board sql>
"progressssssss"
"done"
... row update!

- commit;

- cek data dengan select statement

select gendat_nrp, npwp from herru_employments
where gendat_nrp = :nrp
and gendat_vend_vnd_code = :perush ;

- setelah keluar semua dan yakin... alhamdulillah
- run report... dan MUNCUL

thanks god

ORA : Tanggal Keluar Karyawan Oracle

-- lihat tanggal keluar
select a.GENDAT_NRP, a.EMP_STATUS, b.REF_NAME, a.EMP_STATUS_DATE
from HERRU_EMPLOYMENTS a, HERRU_References b
where GENDAT_NRP= :gendat
and b.ref_code = a. emp_status

-- update tanggal keluar
update HERRU_EMPLOYMENTS
set EMP_STATUS_DATE= :mmhhyy
where GENDAT_NRP= :gendat

ORA : honorarium, natura, iuran THT, PPH 21 dipotong masa sebelumnya

select a.NAME "Nama Pegawai",a.NRP, a.ADDRESS1 Alamat, c.ref_name Jabatan,
d.ref_name "Status Kepegawaian", a.MARITAL_STATUS "Status Kawin",a.GENDER "Jenis Kelamin",
a.DEPENDANT_OF_CHILD "Jumlah Anak", decrypt(a.nrp,e.amount) "Upah",
decrypt(a.nrp,f.amount) "Tunjangan Lain"
from herru_general_datas a, herru_employments b, herru_references c, herru_references d,
herru_taxes e, herru_taxes f
where b.gendat_nrp=a.nrp and c.ref_code=b.POSITION and d.ref_code=b.EMP_STATUS
and e.gendat_nrp=a.nrp and e.res_code='SP01' and to_char(e.PAYRESULT_DATE,'YYYY') = :vYEAR
and f.gendat_nrp=a.nrp and f.res_code='SP03' and to_char(f.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A4-A5
select a.NRP, decrypt(a.nrp,c.amount) "Honorarium", decrypt(a.nrp,d.amount) "Premi Asuransi"
from herru_general_datas a, herru_employments b, herru_taxes c, herru_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP04'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP05'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A6,A8
select a.NRP, decrypt(a.nrp,c.amount) "Natura", decrypt(a.nrp,d.amount) "Tantiem,Bonus"
from herru_general_datas a, herru_employments b, herru_taxes c, herru_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP06'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP08'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A12,A15
select a.NRP, decrypt(a.nrp,c.amount) "Iuran THT", decrypt(a.nrp,d.amount) "Penghasilan Net"
from herru_general_datas a, herru_employments b, herru_taxes c, herru_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP12'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP15'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

-- mulai dari A20,A24
select a.NRP, decrypt(a.nrp,c.amount) "PPH21 Dipotong Masa Sebelumnya",
decrypt(a.nrp,d.amount) "PPH21 Terpotong & Terlunasi"
from herru_general_datas a, herru_employments b, herru_taxes c, herru_taxes d
where b.gendat_nrp=a.nrp
and c.gendat_nrp=a.nrp and c.res_code='SP20'and to_char(c.PAYRESULT_DATE,'YYYY') = :vYEAR
and d.gendat_nrp=a.nrp and d.res_code='SP21'and to_char(d.PAYRESULT_DATE,'YYYY') = :vYEAR
order by a.nrp asc;

ORA : Menampilkan Data Gaji Pokok dan Tanggal Berlaku Karyawan (All)

Menampilkan Data Gaji Pokok dan Tanggal Berlaku Karyawan (All)
--
select a.nrp NRP, a.name NAMA, b.grade GOLONGAN, b.GRADE_DATE "Tanggal Berlaku Gol",
decrypt(b.gendat_nrp,salary) "GAJI POKOK (GP)",
b.salary_date "Tanggal Berlaku GP"
from herru_general_datas a,
herru_employments b where b.gendat_nrp=a.nrp and
substr(b.grade,0,1) in ('1','2','3')
order by a.nrp asc;

ORA : Gaji Pokok dan Tanggal Berlaku Karyawan Berdasarkan Tahun Grade

Menampilkan Data Gaji Pokok dan Tanggal Berlaku Karyawan Berdasarkan Tahun Grade
--
select a.nrp NRP, a.name NAMA, b.grade GOLONGAN, b.GRADE_DATE "Tanggal Berlaku Gol",
decrypt(b.gendat_nrp,salary) "GAJI POKOK (GP)",
b.salary_date "Tanggal Berlaku GP"
from herru_general_datas a,
herru_employments b where b.gendat_nrp=a.nrp and
substr(b.grade,0,1) in ('1','2','3')
and to_char(b.GRADE_DATE,'YYYY') = :tahun
order by a.nrp asc;

ORA: Gaji Pokok dan Tanggal Berlaku Karyawan Berdasarkan Tahun&Bulan Grade

Menampilkan Data Gaji Pokok dan Tanggal Berlaku Karyawan Berdasarkan Tahun&Bulan Grade
--
select a.nrp NRP, a.name NAMA, b.grade GOLONGAN, b.GRADE_DATE "Tanggal Berlaku Gol",
decrypt(b.gendat_nrp,salary) "GAJI POKOK (GP)",
b.salary_date "Tanggal Berlaku GP"
from herru_general_datas a,
herru_employments b where b.gendat_nrp=a.nrp and
substr(b.grade,0,1) in ('1','2','3')
and to_char(b.GRADE_DATE,'MM') = :bulan
and to_char(b.GRADE_DATE,'YYYY') = :tahun
order by a.nrp asc;

ORA : adjusment SPT PT.HERRU

Perubahan yang dilakukan dengan TOAD untuk koneksi ke ORacle HRis

-- SELECT no 6

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP06'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS';

-- UPDATE NO 6

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP06'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS';

-- SELECT no 7

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP07'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS';

-- UPDATE NO 7

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP07'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS';

-- SELECT no 9

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP09'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS';

-- UPDATE NO 9

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP09'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS';

-- Lihat data No.10 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP10'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update NO. 10

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP10'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--**************************************************

-- Lihat data No.13 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP13'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update No. 13

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP13'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--******************************************************

-- Lihat data No.14 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP14'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'


-- Update No.14

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP14'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--********************************************************

-- Lihat data No.16 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP16' and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update No.16

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP16'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--*****************************************************

-- Lihat data No.17 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP17'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update No.17

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP17'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--************************************************************

-- Lihat data No.18 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP18'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update No.18

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP18'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--************************************************************

-- Lihat data No.19 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP19'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update No.19

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP19'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

--************************************************************

-- Lihat data No.21 sebelumnya

select gendat_NRP,decrypt(:NRP,amount) --into varamount

from herru_taxes

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP21'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'

-- Update No.21

Update herru_taxes set amount =encrypt(:NRP,:Vmount)

where gendat_nrp = :NRP

and gendat_vend_vnd_code = :perush

and res_code = 'SP21'

and to_char(payresult_date,'YYYY') = :tahun

and res_mode = 'MDSS'