From 30795649ead5b7212cad32f9d5a9ca6152beba27 Mon Sep 17 00:00:00 2001 From: kabayan <> Date: Wed, 29 Aug 2007 11:55:06 +0000 Subject: Indonesian Blog tutorial day 3,4, and 5 3rd tries --- .../protected/pages/Day5/id/ErrorLogging.page | 159 +++++++++++++++++++++ .../protected/pages/Day5/id/Performance.page | 67 +++++++++ .../protected/pages/Day5/id/Summary.page | 36 +++++ .../protected/pages/Day5/id/UseTheme.page | 138 ++++++++++++++++++ .../protected/pages/Day5/id/output.gif | Bin 0 -> 4282 bytes .../protected/pages/Day5/id/output2.gif | Bin 0 -> 7798 bytes .../protected/pages/Day5/id/output3.gif | Bin 0 -> 5190 bytes 7 files changed, 400 insertions(+) create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/Performance.page create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/Summary.page create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/output.gif create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/output2.gif create mode 100644 demos/blog-tutorial/protected/pages/Day5/id/output3.gif (limited to 'demos/blog-tutorial/protected/pages/Day5/id') diff --git a/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page new file mode 100644 index 00000000..9d69f1dd --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page @@ -0,0 +1,159 @@ + + +

Penanganan Kesalahan dan Pencatatan

+ +

+Jika kita mencoba mengakses URL http://hostname/blog/index.php?page=EditPost&id=100, kita akan melihat halaman kesalahan berikut karena tulisan dengan ID 100 belum ada dalam sistem blog kita. Kita ingin mengkustomisasi halaman kesalahan ini agar ia terlihat lebih konsisten dengan tata letak halaman blog lain. Kita juga ingin mencatat jenis kesalahan ini untuk mempelajari kebiasaan pengguna. Dalam bagian ini, kita akan melaksanakan dua tugas ini. +

+ + + + +Tugas penting dalam aplikasi Web adalah penanganan kesalahan yang sering dikaitkan dengan pencatatan. Ada dua jenis kesalahan yang bisa terjadi dalam aplikasi PRADO: yang disebabkan oleh para pengembang dan yang disebabkan oleh pengguna-akhir. Pembentuk harus dipecahkan sebelum aplikasi dijadikan tahap produksi, sementara yang terakhir biasanya di dalam lingkup desain awal dan harus ditangani dengan baik (misalnya mencatat kesalahan dan menampilkan halaman khusus yang menginstruksikan pengguna-akhir apa yang harus dilakukan selanjutnya). PRADO mengimplementasikan kerangka kerja yang fleksibel serta bertenaga untuk menangani kesalahan dan pencatatan. + + + +

Mengkustomisasi Penanganan Kesalahan

+ +

+PRADO secara implisit mengambil modul TErrorHandler untuk menangani kesalahan. Kita ingin mengkustomisasi modul ini agar sistem blog kita dapat menampilkan halaman terkustomisasi untuk kesalahan yang disebabkan oleh pengguna-akhir. Selanjutnya memodifikasi konfigurasi aplikasi seperti berikut: +

+ + +...... + + ...... + + ...... + +...... + + +

+Kelas BlogErrorHandler seperti ditetapkan di atas adalah modul pengendali kesalahan baru as yang akan dibuat berikutnya. Ia memperluas dan mengganti modul standar TErrorHandler. +

+ +

+Kita membuat sebuah file bernama protected/BlogErrorHandler.php seperti berikut. Kelas BlogErrorHandler mengganti dua metode TErrorHandler: +

+ + +Prado::using('System.Exceptions.TErrorHandler'); +Prado::using('Application.BlogException'); + +class BlogErrorHandler extends TErrorHandler +{ + /** + * Mengambil template yang dipakai untuk menampilkan eksepsi eksternal. + * Metode ini mengganti implementasi leluhurnya. + */ + protected function getErrorTemplate($statusCode,$exception) + { + // gunakan template sendiri untuk BlogException + if($exception instanceof BlogException) + { + // ddapatkan path file template kesalahan: protected/error.html + $templateFile=Prado::getPathOfNamespace('Application.error','.html'); + return file_get_contents($templateFile); + } + else // sebaliknya gunakan template yang didefinisikan oleh PRADO + return parent::getErrorTemplate($statusCode,$exception); + } + + /** + * Menangani kesalahan eksternal yang disebabkan oleh pengguna-akhir. + * Metode ini mengganti implementasi leluhurnya. + * Ini dipanggil oleh PRADO saat eksepsi eksternal dikeluarkan. + */ + protected function handleExternalError($statusCode,$exception) + { + // catat kesalahan (hanya untuk BlogException) + if($exception instanceof BlogException) + Prado::log($exception->getErrorMessage(),TLogger::ERROR,'BlogApplication'); + // panggil implementasi leluhur untuk menampilkan kesalahan + parent::handleExternalError($statusCode,$exception); + } +} + + +

+Dalam kode di atas, kita menetapkan bahwa saat BlogException dikeluarkan, kita menggunakan template baru protected/error.html untuk menampilkan kesalahan. Oleh karena itu, kita perlu membuat kelas BlogException dan mengganti semua THttpException yang ada dalam kode kita (seperti misalnya EditUser dan halaman ReadPost). Kita juga perlu membuat template kesalahan protected/error.html. Kelas BlogException memperluas THttpException dan kosong. File kelas disimpan sebagai protected/BlogException.php. + +

+ + +class BlogException extends THttpException +{ +} + + +

+Di bawah ini konten dalam template kesalahan kita protected/error.html. Catatan, template bukan template PRADO karena ia hanya mengenal jumlah token yang sangat terbatas, seperti %%ErrorMessage%%, %%ServerAdmin%%. +

+ + + + +%%ErrorMessage%% + + +
+ +
+

%%ErrorMessage%%

+

+The above error happened when the server was processing your request. +

+

+If you think this is a server error, please contact the webmaster. +

+
+ + + + + +

Mencatat Kesalahan

+ +

+Dalam metode handleExternalError() pada BlogErrorHandler, kita memanggil Prado::log() untuk mencatat kesalahan jika tipenya adalah BlogException. Kesalahan dicatat dalam memori. Untuk menyimpan catatan ke dalam medium permanen seperti file atau database, kita perlu menghidupkan rute pencatatan kesalahan yang sesuai. Ini dikerjakan dalam konfigurasi aplikasi seperti berikut: +

+ + +...... + + ...... + + + + ...... + +...... + + +

+Dalam konfigurasi di atas, kita menambahkan rute log yang menyimpan catatan ke dalam sebuah file. Kita juga menetapkan filter kategori sebagai BlogApplication agar hanya mencatat pesan pada kategori yang dipilih yang disimpan. Ini membantu mengurangi ukuran file catatan dan juga meningkatkan pembacaannya. +

+ +

Pengujian

+

+Untuk melihat bagaimana sistem blog kita merespon permintaan tidak benar dari pengguna, kita menguji URL http://hostname/blog/index.php?page=posts.ReadPost&id=100. Kita akan melihat halaman kesalahan berikut yang berbeda dari apa yang telah kita lihat sebelumnya. +

+ + + +

+Jika kita mencari di bawah direktori protected/runtime, kita akan menemukan file bernama prado.log. Ini adalah file log yang baru dikonfigurasi untuk menyimpan pesan kesalahan. File dapat berisi konten seperti berikut, +

+ + +Jun 28 22:15:27 [Error] [BlogApplication] Unable to find the specified post. +Jun 29 08:42:57 [Error] [BlogApplication] Unable to find the specified post. + + + \ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/id/Performance.page b/demos/blog-tutorial/protected/pages/Day5/id/Performance.page new file mode 100644 index 00000000..62a195b3 --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day5/id/Performance.page @@ -0,0 +1,67 @@ + + +

Penyesuaian Performansi

+ +

+Sebelum kita menyebarkan sistem blog, kita ingin menyesuaikan performansi sistem. +

+ +

Mengubah Mode Aplikasi

+ +

+Aplikasi PRADO dapat dikonfigurasi untuk berjalan dalam mode berbeda. Standarnya, ia berjalan dalam mode debug yang membuat banyak catatan pesan dan seandainya ada kesalahan, menampilkan pangilan stack lengkap atas tempat kesalahan. Perilaku demikian lebih disukai selama pengembangan, tapi tidak jika sistem sudah dalam produksi. Untuk mengubah mode aplikasi dari Debug ke Normal (berarti mode produksi), kita memodifikasi konfigurasi aplikasi seperti berikut: +

+ + + + + ...... + + + +

Menghidupkan Cache

+ +

+Ada banyak pekerjaan penguraian terkait dalam sebuah aplikasi PRADO: konfigurasi XML, template, tema, skin, dll. Untuk setiap permintaan pengguna, PRADO perlu melakukan ulang penguraian. Untuk menghemat usaha ini, kita dapat menghidupkan cache. Untuk melakukannya, kita mengubah konfigurasi aplikasi seperti berikut, +

+ + +...... + + ...... + + ...... + +...... + + +

+Sekarang setelah mengakses setiap halaman dalam sistem blog kita, kita akan dapat menemukan file bernama sqlite3.cache. Ini adalah file database yang memelihara template halaman yang diuraikan, konfigurasi, dll. +

+ + +Modul cache yang baru kita hidupkan menggunakan database sebagai medium cache persisten. PRADO juga mempunyai modul cache lain yang menggunakan medium cache lebih cepat, seperti misalnya TMemCache, TAPCCache. Diperlukan instalasi dari ekstensi PHP terkait. + + + +

Menggunakan pradolite.php

+ +

+Menjalankan halaman PRADO melibatkan puluhan file PHP, yang dapat menghabiskan waktu. File-file ini juga membawa banyak komentar untuk membuat dokumentasi APU ramah-pengguna. Untuk mengurangi beban ini, kita memodifikasi index.php dan mengganti inklusi prado.php dengan pradolite.php. Yang kedua adalah file besar yang dibuat dengan menggabung file kode tertentu dan membuang komentar. Selanjutnya kita bisa mengubah index.php seperti berikut, +

+ +

Teknik Lain

+ +

+Ada teknik lain untuk meningkatkan performansi lebih lanjut terhadap aplikasi PRADO. Berdasarkan pengalaman kami, salah satu lubang botol dalam aplikasi Web adalah database tier. Query database seringkali membutuhkan waktu lama untuk menyelesaikannya, yang memperlambat waktu respon terhadap permintaan sebuah halaman. Cache adalah solusi utama untuk masalah ini. Modul cache yang dihidupkan dalam konfigurasi aplikasi kita juga bisa dipakai untuk keperluan ini. +

+ +

+Untuk halaman yang relatif stabil dan jarang diakses, output caching bisa dipertimbangkan. Output caching melakukan cache output HTML dari bagian yang dipilih pada sebuah halaman. Ini dapat meningkatkan performansi dari halaman yang di-cache secara signifikan. +

+ +

+Teknik cache server terbukti sangat efektif dalam meningkatkan performansi atas aplikasi PRADO. Sebagai contoh, kita telah mengamati bahwa dengan menggunakan Zend Optimizer, RPS (request per second) dari aplikasi PRADO bisa ditingkatkan lebih dari sepuluh kali lipat. Tentu saja, ini pada beban dari output lama, sementara teknik cache PRADO selalu memastikan kebenaran dari output. +

+ +
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/id/Summary.page b/demos/blog-tutorial/protected/pages/Day5/id/Summary.page new file mode 100644 index 00000000..eff9c2a9 --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day5/id/Summary.page @@ -0,0 +1,36 @@ + + +

Ringkasan

+ +

+Akhirnya kita dapat menyebarkan sistem blog kita. Untuk melakukannya, kita hanya perlu meng-copy seluruh direktori blog directory ke direktori Web sasaran. Kita perlu untuk memodifikasi index.php agar ia dapat mencari path yang benar di mana kerangka kerja PRADO diinstalasi. +

+ +

+Dengan demikian kita telah menyelesaikan sistem blog kita. Proses terlihat tidak gampang karena ia memerlukan hampir lima hari untuk sampai di sini. Akan tetapi, karena kita memulainya dari awal, tujuan utama dari tutorial ini adalah untuk membantu para pengembang PRADO terbiasa dengan teknik yang umum digunakan dalam PRADO. Tutorial tidak berarti menyelesaikan sistem blog dalam waktu lima menit dan selanjutnya tidak mempelajari apapun. +

+ +

+Secara ringkas, mengembangkan aplikasi PRADO dengan kendali-DB melibatkan langkah-langkah berikut: +

+
    +
  1. Mendesain dan membuat database
  2. +
  3. Membuat tata letak aplikasi awal menggunakan prado-cli
  4. +
  5. Menyiapkan proses pengendalian kesalahan untuk menghadapi kesalahan pengguna-akhir
  6. +
  7. Membuat dan menyiapkan tema
  8. +
  9. Mendesain dan membuat kelas master untuk berbagi tata letak umum halaman
  10. +
  11. Membuat kelas database dan menyiapkan koneksi database
  12. +
  13. Mendesain dan membuat bermacam-macam halaman
  14. +
  15. Menguji dan menyesuaikan performansi
  16. +
  17. Menyebarkan aplikasi
  18. +
+ +

+Tidak seperti urutan dalam tutorial kita, pengendalian kesalahan dan pembuatan tema dikerjakan lebih awal dalam proses di atas. Ini dikarenakan seringkali diperlukan perubahan besar dalam kode kelas dan template. Sebagai contoh, kita perlu mengganti THttpException dengan BlogException dalam tutorial kita. Jika kita mendefinisikan kelas stylesheet lebih awal, kita dapat dengan mudah menggunakannya saat membuat template halaman. +

+ +

+Sebagai tips terakhir, coba untuk berpikir dalam cara terorientasi-obyek selama mendesain dan mengimplementasikan. Gunakan turunan kelas dan komposisi secara luas, dan anda akan menemukan seluruh proyek lebih mudah dikembangkan secara paralel oleh multipel pengembang. Kode juga lebih banya memiliki kesempatan dipakai ulang agar proyek mendatang dapat diselesaikan dalam waktu yang lebih cepat. +

+ +
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page b/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page new file mode 100644 index 00000000..6766d659 --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page @@ -0,0 +1,138 @@ + + +

Menggunakan Tema dan Skin

+ +

+PRADO memiliki dukungan dasar untuk tema. Dengan menggunakan tema, kita dapat memisahkan logika dan penyajian secara lebih baik, dan kita juga bisa mengubah penampilan keseluruhan pada sistem blog kita jauh lebih mudah. +

+ +

Membuat Tema

+ +

+Pertama kita buat direktori baru bernama themes. Ini adalah direktori leluhur bagi semua tema terkait aplikasi PRADO tertentu. Setiap subdirektori di bawah direktori ini yang nama temanya adalah nama subdirektori. +

+ +

+Untuk membuat tema bernama Basic, kita membuat subdirektori theme/Basic. Di bawah direktori ini, kita dapat menempatkan file stylesheet dependen-tema, file Javascript, gambar, dan file skin. +

+ + +Direktori themes harus bisa diakses dari Web, seperti halnya direktori assets. Jangan menempatkan file data sensitif di bawah direktori ini. Anda bisa mengubah nama atau lokasi dari direktori ini dengan mengkonfigurasi modul TThemeManager dalam konfigurasi aplikasi. + + + +

Membuat File Stylesheet

+ +

+Di bawah direktori themes/Basic, kita membuat sebuah file CSS stylesheet bernama style.css. ketika sebuah halaman menggunakan tema ini, PRADO secara otomatis akan mengimpor stylesheet ini ke halaman. Hal yang sama terjadi untuk file Javascript. +

+ +

+File CSS ditampilkan seperti berikut. +

+ + +body { + font-family: verdana, 'trebuchet ms', sans-serif; + font-size: 10pt; + background: white; +} +#page { + margin: 0 auto 0 auto; + width: 600px; +} +#footer { + text-align: center; + margin-top: 10px; + padding: 10px; + border-top: 1px solid silver; +} +.post-box { + margin-bottom: 10px; + padding: 5px; +} +.post-box h3 { + padding: 5px; + font-size: 13pt; + background: lightgray; +} +.post-box a { + color: black; + text-decoration: none; +} +.post-box a:hover { + color: red; +} + + + +

Membuat File Skin

+ +

+Kita menggunakan skin untuk menginisialisasi properti kontrol PRADO. Skin disimpan sebagai file skin (nama berakhiran .skin) di bawah direktori tema. Setiap file skin bisa berisi multipel skin untuk satu atau beberapa tipe kontrol. +

+ +

+Sebagai pengujian, kita akan mencoba membuat sebuah skin yang mengubah warna latar belakang link tombol dalam footer halaman. Kita membuat sebuah file bernama button.skin di bawah direktori tema themes/Basic. +

+ + +<com:THyperLink SkinID="MainMenu" BackColor="lightgreen" /> + + +

+File skin button.skin hanya berisi satu skin untuk kontrol THyperLink yang properti SkinID-nya adalah MainMenu. Skin menyetel warna latar belakang kontrol ke hijau-terang. +

+ +

+Sejalan dengan itu, kita perlu memodifikasi protected/common/MainLayout.tpl agar link tombol dalam footer menggunakan MainMenu sebagai SkinID-nya. +

+ +...... + +...... + + + +Sintaks untuk file skin sangat mirip dengan template PRADO. Setiap tag <com:> mendefinisikan sebuah skin untuk tipe kontrol tertentu. PRADO secara otomatis mengumpulkan seluruh file skin dalam sebuah tema dan menerapkannya ketika halaman bertema sedang disajikan. + + + +

Menggunakan Tema

+ +

+Untuk menggunakan tema yang baru kita buat, kita memodifikasi konfigurasi aplikasi seperti berikut. Seperti kita lihat, properti Theme untuk semua halaman disetel sebagai Basic, nama tema yang baru saja kita buat. +

+ + +...... + + + + + +...... + + + +Dimungkinkan untuk menetapkan tema berbeda untuk halaman yang berbeda, dan ini dapat dikerjakan baik dalam konfigurasi aplikasi/halaman ataupun secara programatis (perhatikan Theme adalah properti halaman). Untuk yan gterakhir, ia harus dikerjakan dalam metode onPreInit() pada halaman karena PRADO menerapkan tema ke halaman sebelumnya dalam masa hidup halaman. + + + +

Pengujian

+

+Untuk melihat bagaimana halaman blog terlihat, kunjungi URL http://hostname/blog/index.php. Kita akan melihat font, tata letak, bingkai beruah dalam halaman. Juga, link tombol dalam footer mempunyai latar belakang hijau terang. +

+ + + +
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output.gif b/demos/blog-tutorial/protected/pages/Day5/id/output.gif new file mode 100644 index 00000000..67bd18a3 Binary files /dev/null and b/demos/blog-tutorial/protected/pages/Day5/id/output.gif differ diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output2.gif b/demos/blog-tutorial/protected/pages/Day5/id/output2.gif new file mode 100644 index 00000000..16c81704 Binary files /dev/null and b/demos/blog-tutorial/protected/pages/Day5/id/output2.gif differ diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output3.gif b/demos/blog-tutorial/protected/pages/Day5/id/output3.gif new file mode 100644 index 00000000..6879bbdf Binary files /dev/null and b/demos/blog-tutorial/protected/pages/Day5/id/output3.gif differ -- cgit v1.2.3