From 654a9cae43358c7eecf3b522e9876aa7815e2453 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Mon, 7 Dec 2015 15:57:51 +0100 Subject: Move urls from pradosoft.com to github's project page; drop unmaintained quickstart tutorial translations --- .../protected/pages/Day5/ErrorLogging.page | 2 +- .../protected/pages/Day5/Performance.page | 2 +- .../protected/pages/Day5/UseTheme.page | 4 +- .../protected/pages/Day5/fr/ErrorLogging.page | 158 -------------------- .../protected/pages/Day5/fr/Performance.page | 66 --------- .../protected/pages/Day5/fr/Summary.page | 41 ------ .../protected/pages/Day5/fr/UseTheme.page | 138 ------------------ .../protected/pages/Day5/fr/output.gif | Bin 4282 -> 0 bytes .../protected/pages/Day5/fr/output2.gif | Bin 7798 -> 0 bytes .../protected/pages/Day5/fr/output3.gif | Bin 5190 -> 0 bytes .../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 4282 -> 0 bytes .../protected/pages/Day5/id/output2.gif | Bin 7798 -> 0 bytes .../protected/pages/Day5/id/output3.gif | Bin 5190 -> 0 bytes 17 files changed, 4 insertions(+), 807 deletions(-) delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/Performance.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/Summary.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/Performance.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/Summary.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/output3.gif (limited to 'demos/blog-tutorial/protected/pages/Day5') diff --git a/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page index 52f7ef54..6239d312 100755 --- a/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page +++ b/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page @@ -9,7 +9,7 @@ If we try to access the URL http://hostname/blog/index.php?page=EditPost&id= -An important task in a Web application is error handling which is often associated logging. There are two types of errors that may occur in a PRADO application: those caused by developers and those by end-users. The former should be resolved before the application is put into production, while the latter are usually within the initial design scope and should be handled nicely (e.g. log the error and display a special page instructing the end-user what to do next.) PRADO implements a very flexible yet powerful framework for error handling and logging. +An important task in a Web application is error handling which is often associated logging. There are two types of errors that may occur in a PRADO application: those caused by developers and those by end-users. The former should be resolved before the application is put into production, while the latter are usually within the initial design scope and should be handled nicely (e.g. log the error and display a special page instructing the end-user what to do next.) PRADO implements a very flexible yet powerful framework for error handling and logging. diff --git a/demos/blog-tutorial/protected/pages/Day5/Performance.page b/demos/blog-tutorial/protected/pages/Day5/Performance.page index cbaae7e4..1cdfedc1 100755 --- a/demos/blog-tutorial/protected/pages/Day5/Performance.page +++ b/demos/blog-tutorial/protected/pages/Day5/Performance.page @@ -57,7 +57,7 @@ There are other techniques to further improve the performance of a PRADO applica

-For a page that is relatively stable yet frequently accessed, output caching should be considered. Output caching caches the HTML output of selected portions of a page. This may improve the performance of the cached pages significantly. +For a page that is relatively stable yet frequently accessed, output caching should be considered. Output caching caches the HTML output of selected portions of a page. This may improve the performance of the cached pages significantly.

diff --git a/demos/blog-tutorial/protected/pages/Day5/UseTheme.page b/demos/blog-tutorial/protected/pages/Day5/UseTheme.page index 21bc9d81..395c8511 100755 --- a/demos/blog-tutorial/protected/pages/Day5/UseTheme.page +++ b/demos/blog-tutorial/protected/pages/Day5/UseTheme.page @@ -3,7 +3,7 @@

Using Themes and Skins

-PRADO has intrinsic support for themes. By using themes, we can better separate logic and presentation, and we can also change the overall appearance of our blog system more easily. +PRADO has intrinsic support for themes. By using themes, we can better separate logic and presentation, and we can also change the overall appearance of our blog system more easily.

Creating Theme

@@ -17,7 +17,7 @@ To create a theme named Basic, we create a subdirectory theme/Basic

-The themes directory must be Web-accessible, like the assets directory. Do not place sensitive data files under this directory. You can change the name or location of this directory by configuring the TThemeManager module in the application configuration. +The themes directory must be Web-accessible, like the assets directory. Do not place sensitive data files under this directory. You can change the name or location of this directory by configuring the TThemeManager module in the application configuration. diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page deleted file mode 100755 index 8e7c77e6..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page +++ /dev/null @@ -1,158 +0,0 @@ - - -

Gestion et journalisation d'erreur

- -

-Si vous tentez de naviguez à l'URL http://hostname/blog/index.php?page=EditPost&id=100, vous verrez la page d'erreur suivante parce que le message avec l'ID 100 n'existe pas pour le moment. Nous voudrions personnaliser cette page d'erreur de manière à ce qu'elle garde la présentation générale du site. Nous voudrions aussi journaliser cette erreur pour étudier le comportement des utilisateurs. Dans cette section, nous allons mettre en place ces deux fonctionnalités. -

- - - - -Une des tâches importantes dans les applications Web est la gestion des erreurs ainsi que leurs journalisation. Il y a deux types d'erreurs qui peuvent se produire dans une application PRADO : celles provenant des développeurs et celles des utilisateurs. Les premières doivent être résolues avant que l'application ne soit en production, tandis que les deuxièmes sont généralement un problème de prise en charge au niveau du design et doivent être gérées proprement (ie: journaliser cette erreur et indiquer à l'utilisateur que faire après). PRADO fournit un ensemble de fonctionnalités très utiles pour gérer et journaliser les erreurs. - - - -

Personnalisation de la gestion d'erreur

- -

-PRADO charge de manière implicite un module de gestion d'erreurs. Nous voulons personnaliser ce module pour qu'il affiche une page spécifique pour les erreurs causées par les utilisateurs. Nous modifions donc notre application comme ci-dessous : -

- - -...... - - ...... - - ...... - -...... - - -

-La classe BlogErrorHandler comme spécifiée ci-dessus est un nouveau gestionnaire d'erreur que nous allons créer après. Il étend et remplace le module par défaut TErrorHandler. -

- -

-Nous créons un fichier nommé protected/BlogErrorHandler.php avec le contenu suivant. La classe BlogErrorHandler surcharge deux méthodes de TErrorHandler : -

-
    -
  • getErrorTemplate() - cette méthode renvoie le gabarit utilisé pour afficher un message d'erreur utilisateur.
  • -
  • handleExternalError() - cette méthode est appelée lorsqu'une erreur utilisateur se produit et elle affiche l'erreur.
  • -
- -Prado::using('System.Exceptions.TErrorHandler'); -Prado::using('Application.BlogException'); - -class BlogErrorHandler extends TErrorHandler -{ - /** - * Renvoi le fichier gabarit utilisé pour afficher l'erreur. - * Cette méthode surcharge la méthode originale. - */ - protected function getErrorTemplate($statusCode,$exception) - { - // on utilise notre propre gabarit pour BlogException - if($exception instanceof BlogException) - { - // récupère le chemin du fichier de gabarit : protected/error.html - $templateFile=Prado::getPathOfNamespace('Application.error','.html'); - return file_get_contents($templateFile); - } - else // sinon on utilise le gabarit par défaut. - return parent::getErrorTemplate($statusCode,$exception); - } - - /** - * Gère les erreurs causées par les utilisateurs. - * Cette méthode surcharge la méthode originale. - * Elle est appelée lorsqu'une exception utilisateur est générée. - */ - protected function handleExternalError($statusCode,$exception) - { - // Journaliser l'erreur (seulement pour BlogException) - if($exception instanceof BlogException) - Prado::log($exception->getErrorMessage(),TLogger::ERROR,'BlogApplication'); - // appelle l'implémentation de la classe parente - parent::handleExternalError($statusCode,$exception); - } -} - - -

-Dans le code précédent, nous spécifions que lorsqu'une exception de type BlogException est générée, nous utilisons le gabarit protected/error.html pour afficher l'erreur. Par ailleurs, nous devons créer la classe BlogException et remplacer toutes les occurrences de THttpException dans notre code (par exemple dans les pages EditUser et ReadPost). Nous devons aussi créer le gabarit protected/error.html. La classe BlogException hérite de THttpException et est vide. Le fichier de classe est enregistré sous protected/BlogException.php. -

- - -class BlogException extends THttpException -{ -} - - -

-Ci-dessous le contenu du gabarit protected/error.html. Remarquez que ce gabarit n'est pas un gabarit PRADO, ceci parce qu'il ne reconnait qu'un nombre limité de mots clés, par exemple %%ErrorMessage%%, %%ServerAdmin%%. -

- - - - -%%ErrorMessage%% - - -
- -
-

%%ErrorMessage%%

-

-Une erreur est apparue lors du traitement de votre demande. -

-

-Si vous pensez que c'est une erreur de notre serveur, veuillez contacter webmaster. -

-
- - - - - -

Journalisation des erreurs

- -

-Dans la méthode handleExternalError() de BlogErrorHandler, nous appelons Prado::log() pour journaliser l'erreur si elle est de type BlogException. L'erreur est stockée en mémoire. Pour enregistrer le journal d'erreur sur un support non volatil, tel que le disque dur ou une base de données, nous devons indiquer à PRADO comment procéder. Ceci est fait par la configuration d'application suivante : -

- - -...... - - ...... - - - - ...... - -...... - - -

-Dans le code ci-dessus, nous ajoutons une "route" pour enregistrer le journal d'erreur dans un fichier. Nous spécifions aussi le filtre de catégorie BlogApplication, de manière à ce que seules les erreurs de type BlogApplication soient sauvegardées. Cette possibilité permet de réduire la taille du journal et d'en améliorer la lisibilité. -

- -

Test

-

-Pour voir comme notre blog se comporte suite à une demande invalide, nous naviguons à l'URL http://hostname/blog/index.php?page=posts.ReadPost&id=100. Nous devrions voir la page suivante qui est différente de celle vue précédemment. -

- - - -

-Si nous regardons dans le dossier protected/runtime, nous devrions y trouver un fichier nommé prado.log. C'est le journal d'erreur que nous venons juste de paramétrer. Le fichier pourrait contenir quelque chose comme : -

- - -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/fr/Performance.page b/demos/blog-tutorial/protected/pages/Day5/fr/Performance.page deleted file mode 100755 index 59eee1b0..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/fr/Performance.page +++ /dev/null @@ -1,66 +0,0 @@ - - -

Amélioration des performances

- -

-Avant le déploiement de notre blog, nous voudrions améliorer les performances. -

- -

Changer le mode de fonctionnement de l'application

- -

-Une application PRADO peut-être configurée pour fonctionner suivant différents modes. Par défaut, elle fonctionne en mode Debug, mode qui génère beaucoup de message de journalisation et qui, en cas d'erreurs, affiche la pile des appels et l'emplacement de l'erreur. Ce comportement est préférable en cours de développement, mais pas en production. Pour changer le mode de fonctionnement de Debug à Normal ( qui signifie "en production"), nous devons modifier le fichier de configuration de l'application comme ci-dessous : -

- - - - - ...... - - - -

Enabling Caching

- -

-There are a lot of parsing work involved in a PRADO application: configuration XMLs, templates, theme skins, etc. For every user request, PRADO needs to redo the parsing. To save this effort, we can enable caching. To do so, we modify the application configuration as follows, -

- - -...... - - ...... - - ...... - -...... - - -

-Maintenant, après avoir requis n'importe quelle page de notre blog, nous devrions trouver un fichier nommé sqlite3.cache. C'est un fichier de base de données qui mémorise les éléments analysés : gabarits, configurations, etc. -

- - -Le module de cache que nous venons d'activer utilise une base de données comme support d'enregistrement. PRADO propose d'autres modules de cache plus rapide, tels que TMemCache, TAPCCache. Ces modules requièrent les extensions PHP correspondantes. - - - -

Utilisation de pradolite.php

- -

-Afficher une page PRADO requiert des dizaines de fichiers PHP, ce qui est une cause de perte de temps. Ces fichiers comportent aussi beaucoup de commentaires qui permettent de générer la documentation des API. Dans le but de réduire ce coût, nous modifions notre fichier index.php et remplaçons prado.php par pradolite.php. Ce dernier est un gros fichier incluant les fichiers PHP nécessaires et dont on a retiré les commentaires. -

- -

Autres techniques

- -

-D'autres techniques sont disponibles pour améliorer les performances d'une application PRADO. D'après notre expérience, un des goulets d'étranglement dans une application Web, est l'accès aux bases de données. Les requêtes en base de données prennent souvent du temps, ce qui dégrade le temps d'affichage d'une page. Le cache est la principale solution à ce problème. Le module de cache activé dans notre fichier de configuration d'application peut aussi être utilisé dans ce but. -

-

-Pour une page relativement stable et souvent consultée, le cache de sortie doit être envisagé. Le cache de sortie met en cache les parties sélectionnées d'une page. Ceci peut améliorer les performances des pages mises en cache de manière significative. -

- -

-Il a été prouvé que les solutions de cache côté serveur étaient très efficaces pour améliorer les performances d'une application PRADO. Par exemple, nous avons observé qu'en utilisant le Zend Optimizer, le RPS (requêtes par seconde) peut être multiplié par 10. Bien sûr, ceci au risque d'avoir des pages périmées, tandis que les solutions de cache de PRADO garantissent la validité des pages fournies. -

- -
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/Summary.page b/demos/blog-tutorial/protected/pages/Day5/fr/Summary.page deleted file mode 100755 index 1472c934..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/fr/Summary.page +++ /dev/null @@ -1,41 +0,0 @@ - - -

Résumé

- -

-Nous pouvons finalement déployer notre blog. Pour cela, nous devons juste copier le dossier blog complet vers le dossier du serveur Web. Nous pourrions avoir besoin de modifier index.php pour qu'il puisse trouver le chemin vers l'emplacement où a été installé le framework PRADO. -

- -

-Nous avons donc fini notre blog. Le processus peut paraitre complexe vu que nous avons passé pas loin de cinq jours pour y arriver. Toutefois, comme nous l'avions dit au début, le but de ce tutoriel est d'aider les développeurs PRADO à appréhender les principales techniques de PRADO.Le tutoriel n'avais pas pour but de finir un blog en cinq minutes, sinon nous n'aurions rien appris. -

- -

-En résumé, développer une application de gestion de base de données PRADO nécessite les étapes suivantes : -

-
    -
  1. Analyse et création de la base de données
  2. -
  3. Créer le squelette de l'application avec prado-cli
  4. -
  5. Mise en place de la gestion d'erreur pour gérer les erreurs d'utilisations
  6. -
  7. Création et mise en place du thème
  8. -
  9. Création et mise en place des gabarits principaux
  10. -
  11. Création de la connexion et des classes d'accès aux données
  12. -
  13. Création des différentes pages
  14. -
  15. Test et amélioration des performances/li> -
  16. Déploiement
  17. -
- -

-Contrairement à l'ordre de notre tutoriel, la gestion d'erreur et la création des thèmes sont placées au début du processus. Ceci est dû au fait que des changements d'ordre généraux sont la plupart du temps requis. Par exemple, nous avons dû remplacer THttpException par BlogException dans notre tutoriel. Si vous définissez vos feuilles de styles plus tôt, vous pourrez plus facilement les utiliser au cours de la création des gabarits de pages. -

- -

-Un dernier conseil, essayez de penser orienté objet pendant la phase d'analyse et d'implémentation. Utilisez l'héritage le plus souvent, et vous trouverez que le projet est plus facile à développer en équipe. Il vous sera aussi plus facile de réutiliser votre code et ainsi vos futurs projets seront finis plus rapidement. -

- - - - -
-

Traduction (laborieuse) par Eric.M, nous pouvez me contacter par message privé ou par email sur le forum PRADO.

-
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page b/demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page deleted file mode 100755 index 840a26b0..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page +++ /dev/null @@ -1,138 +0,0 @@ - - -

Utilisation des Thèmes et des Skins

- -

-PRADO propose un support intrinsèque des thèmes. En utilisant les thèmes, nous pouvons mieux séparer la logique applicative de la présentation et nous pouvons aussi changer facilement la présentation générale de notre blog. -

- -

Création des thèmes

- -

-Nous devons auparavant créer un dossier themes. C'est le dossier parent de tous les thèmes pour une application de PRADO. Chaque sous-dossier devient ainsi un thème dont le nom est le nom du sous-dossier. -

- -

-Pour créer un thème nommé Basic, nous créons un sous-dossier theme/Basic. Dans ce dossier, nous pouvons mettre des feuilles de styles dépendantes du thème, des fichiers Javascript, des images et des fichiers skins. -

- - -Le dossier themes doit être accessible de l'extérieur. Ne mettez pas de données sensibles dans ce dossier. Nous pouvons changer l'emplacement de ce dossier en configurant le module TThemeManager dans le fichier de configuration de l'application. - - - -

Création de la feuille de style

- -

-Dans le dossier themes/Basic, nous créons un fichier CSS nommé style.css. Quand une page utilise ce thème, PRADO importe automatiquement la feuille de style dans cette page. Le même traitement est appliqué aux fichiers Javascript. -

- -

-Le contenu du fichier CSS est le suivant : -

- - -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; -} - - - -

Création du fichier de Skin

- -

-Nous utilisons des skin pour initialiser les propriétés des contrôles PRADO. Les fichiers skin sont enregistrés avec une extension .skin dans le dossier du thème. Chaque fichier skin peut contenir plusieurs modèles pour un ou plusieurs types de contrôles. -

- -

-Pour notre test, nous allons créer un fichier skin qui changera la couleur de fond de nos liens dans le pied de page. Nous créons un fichier nommé button.skin dans le dossier du thème themes/Basic. -

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

-Le fichier button.skin contient une seule définition pour les contrôles de type THyperLink dont la propriété SkinID est MainMenu. La définition applique une couleur vert-clair comme couleur de fond du contrôle. -

- -

-En accord avec cette définition, nous modifions notre fichier protected/common/MainLayout.tpl pour appliquer aux liens du pied de page la valeur MainMenu à la propriété SkinID. -

- -...... - -...... - - - -La syntaxe des fichiers skin est très proche de celle des gabarits. Chaque balise <com:> définit la présentation d'un type de contrôle. PRADO concatène automatiquement les fichiers skin pour un thème et applique le tout lorsque la page est affichée. - - - -

Utilisation du thème

- -

-Pour utiliser le thème que nous venons juste de créer, nous modifions notre fichier de configuration de l'application comme ci-après. Comme vous pouvez le voir, nous affectons la valeur Basic (le nom du thème) à la priorité Theme pour toutes les pages. -

- - -...... - - - - - -...... - - - -Il est possible de préciser différents thèmes pour différentes pages, et ceci peut-être faits soit en modifiant le fichier de configuration de page soit par programmation (propriété Theme). En dernier recours, on peut le faire dans la méthode onPreInit() de la page, ceci parce que PRADO applique le thème au début du cycle de vie de la page. - - - -

Test

-

-Pour voir la nouvelle présentation de notre site, allons à l'URL http://hostname/blog/index.php. Nous pouvons constater que la mise en page, les polices, les bordures sont modifiées. De même, la couleur de fond des liens en pied de page est vert-clair. -

- - - -
\ No newline at end of file diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/output.gif b/demos/blog-tutorial/protected/pages/Day5/fr/output.gif deleted file mode 100755 index 67bd18a3..00000000 Binary files a/demos/blog-tutorial/protected/pages/Day5/fr/output.gif and /dev/null differ diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/output2.gif b/demos/blog-tutorial/protected/pages/Day5/fr/output2.gif deleted file mode 100755 index 16c81704..00000000 Binary files a/demos/blog-tutorial/protected/pages/Day5/fr/output2.gif and /dev/null differ diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/output3.gif b/demos/blog-tutorial/protected/pages/Day5/fr/output3.gif deleted file mode 100755 index 6879bbdf..00000000 Binary files a/demos/blog-tutorial/protected/pages/Day5/fr/output3.gif and /dev/null differ diff --git a/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page deleted file mode 100755 index 9d69f1dd..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page +++ /dev/null @@ -1,159 +0,0 @@ - - -

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: -

-
    -
  • getErrorTemplate() - metode ini mengembalikan string template yang dipakai untuk menampilkan kesalahan pengguna tertentu.
  • -
  • handleExternalError() - metode ini dipanggil saat kesalahan pengguna terjadi dan menampilkan kesalahannya.
  • -
- -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 deleted file mode 100755 index 62a195b3..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/id/Performance.page +++ /dev/null @@ -1,67 +0,0 @@ - - -

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 deleted file mode 100755 index 8925948b..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/id/Summary.page +++ /dev/null @@ -1,36 +0,0 @@ - - -

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 deleted file mode 100755 index 6766d659..00000000 --- a/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page +++ /dev/null @@ -1,138 +0,0 @@ - - -

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 deleted file mode 100755 index 67bd18a3..00000000 Binary files a/demos/blog-tutorial/protected/pages/Day5/id/output.gif and /dev/null differ diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output2.gif b/demos/blog-tutorial/protected/pages/Day5/id/output2.gif deleted file mode 100755 index 16c81704..00000000 Binary files a/demos/blog-tutorial/protected/pages/Day5/id/output2.gif and /dev/null differ diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output3.gif b/demos/blog-tutorial/protected/pages/Day5/id/output3.gif deleted file mode 100755 index 6879bbdf..00000000 Binary files a/demos/blog-tutorial/protected/pages/Day5/id/output3.gif and /dev/null differ -- cgit v1.2.3