Mar 29, 2015

Παρακολούθηση απόδοσης ADF εφαρμογών με το XRebel

Όταν η παρακολούθηση της απόδοσης (performance) μιας εφαρμογής αποτελεί τμήμα της καθημερινής διαδικασίας ανάπτυξης (development process), τότε μπορούμε να φτιάχνουμε καλύτερο λογισμικό και να περιορίσουμε δυσάρεστες εκπλήξεις στην παράδοση σε ένα παραγωγικό σύστημα. Αν και αυτό θα έπρεπε να ισχύει για κάθε περίπτωση, ιδίως για τις εφαρμογές που βασίζονται στο Oracle ADF αποκτά ιδιαίτερη αξία, καθώς αποτελεί ένα database-oriented framework και συχνά προβλήματα απόδοσης προέρχονται από το επίπεδο της βάσης δεδομένων. Γι' αυτό ακριβώς το λόγο, βρήκα εξαιρετικά χρήσιμο το εργαλείο XRebel που κατά τη διάρκεια της εκτέλεσης μιας web εφαρμογής μας εμφανίζει άμεσα, σε ένα widget ενσωματωμένο στην σελίδα μας, πληροφορίες για τα SQL statements που εκτελούνται, τους χρόνους τους καθώς και την επιβάρυνση του web session.

Δοκίμασα λοιπόν την τελευταία έκδοση του XRebel (2.0 Beta) σε μια εφαρμογή φτιαγμένη με το UI shell (dynamic tabs) Ευτυχώς, η ZeroTurnaround (εταιρεία που κατασκευάζει το XRebel) προσέφερε μια δοκιμαστική έκδοση 30 ημερών μέσα στον Μάρτιο 2015. Έπειτα από το download, η ενεργοποίηση του XRebel γίνεται στο Run Configuration του JDeveloper, με την προσθήκη του java agent για το xrebel.jar.
Έπειδή το XRebel θα ενσωματωθεί στο runtime της εφαρμογής μας, καλό θα είναι να αυξήσουμε το heap size του Weblogic (τουλάχιστον -Xmx=1024m) Ξεκινούμε την εφαρμογή όπως γνωρίζουμε. Με την εκκίνηση λοιπόν, θα εμφανιστεί το widget που XRebel. Εκεί εμφανίζεται:

  1. profiling πληροφορία του κώδικα μας (ποια σημεία αργούν πιο πολύ στην εκτέλεση)
  2. Database operations (queries και SQL statements) που εκτελούνται στην οθόνη μας
  3. Το πόσα και ποια objects βρίσκονται στο user session και ποιά είναι η επιβάρυνση τους στην μνήμη του Weblogic
Αν για παράδειγμα κάνουμε κλικ για περισσότερες πληροφορίες για τα database operations, θα εμφανιστεί ένα popup που αναλύονται όλα τα SQL statements, ποιούς πίνακες αφορούν, πόσε εγγραφές επιστρέφονται και πόσο χρόνο πήρε η εκτέλεσή τους. Εντυπωσιακό ! Στην παραμετροποίηση του XRebel μπορούμε να ορίσουμε threshold values για τα timings των SQL queries ή τον αριθμό τους.
Κάτι που λείπει είναι η άθροιση των SQL statements ώστε να διαπιστώσουμε επαναλαμβανόμενες SQL εντολές. Τα απολέσματα του XRebel μπορούν να κατευθυνθούν σε αρχείο (διαδρομή $HOME/.xrebel/xrebel.log στο Linux) ώστε να κάνουμε εκεί analytics. Να και μια φωτογραφία από το application profiling.
Η βοήθεια που μου έδωσε το XRebel ήταν ανεκτίμητη. Με εύκολο, γρήγορο και γραφικό τρόπο μου έδωσε πληροφορίες απόδοσης της εφαρμογής και με βοήθησε να βελτιώσω κάποια SQL queries και να διορθώσω κάποια bindings, χωρίς να κοιτάξω σε πολλαπλά log files. Το συνιστώ ανεπιφύλακτα !

Mar 23, 2015

Κεντρικός oρισμός application module και connection pooling παραμέτρων για το ADF BC

Παραμέτρους σχετικά με το application module pooling στο ADF μπορούμε φυσικά να δηλώσουμε ως τμήμα του εκάστοτε application module configuration. Σε περίπτωση που θέλουμε να θέσουμε τιμές σε αυτές τις μεταβλητές, για όλα τα modules του έργου μας, τότε αναγκαστικά είτε θα έχουμε μεγάλη πειθαρχία (και εκτέλεση audit rules) από την ομάδα μας, είτε θα αφήσουμε αυτή την λειτουργία ως τμήμα των deployment scripts.
Ευτυχώς το ADF μας επιτρέπει να κεντρικοποιήσουμε όλες αυτές τις μεταβλητές σε ένα σημείο, και αν θέλουμε, να ορίσουμε ειδικές τιμές ανά περίπτωση. Δεν έχουμε λοιπόν παρά να καταφύγουμε στο αρχείο adf-config.xml. Παρόλο που ο visual editor δεν μας δείχνει πως υπάρχει η δυνατότητα επηρεασμού του ADF BC παρά μόνο για πολύ λίγες παραμέτρους (πχ locking mode, failover, fetch size) αν ανατρέξουμε στον πηγαίο κώδικα (source code) έχουμε περισσότερες επιλογές.
Εκεί μπορούμε να ορίσουμε στην ενότητα "amconfig-defaults" τις τιμές για παράδειγμα για το connection pooling, ή οποιαδήποτε άλλη παράμετρο του application module configuration.
Μετά την αλλαγή, αν ανατρέξουμε σε οποιοδήποτε application module μας θα δούμε άμεσα αυτές τις ρυθμίσεις. Η δοκιμή έγινε στον JDeveloper 12.1.3 και δεν είμαι σίγουρος αν ισχύει κάτι ανάλογο και για προηγούμενες εκδόσεις.

Mar 8, 2015

Υποστήριξη αναζήτησης ελληνικών στο Evernote !

To Evernote είναι η μια από τις πιο χρήσιμες εφαρμογές στο Samsung Note tablet μου. Με τη βοήθεια και του Samsung stylus pen, με βοηθάει να κρατάω σημειώσεις στις συναντήσεις, να οργανώνω τις ιδέες μου, να παίρνω φωτογραφίες από τον πίνακα παρουσιάσεων κλπ.

Ένα από τα πιο δυνατά χαρακτηριστικά του Evernote (και ιδίως της Premium έκδοσης) είναι η αναζήτηση: οτιδήποτε καταχωρείς σε αυτό είτε με την γραφίδα, είτε ως text, mail, είτε ως web-clipping είναι αναζητήσιμο. Αυτή η OCR λειτουργία απευθύνονταν μέχρι πρότινος στα άγγλικα χωρίς υποστήριξη ελληνικών αλλά φαίνεται πως αυτό αλλάζει: πλέον είναι διαθέσιμη και η επιλογή του συνδιασμού ελληνικών και αγγλικών (Greek + English) στο text recognition.
Παίρνοντας φωτογραφία ένα έγγραφο, μπορούμε να κάνουμε αναζήτηση του περιεχομένου του στα ελληνικά!
Δυστυχώς η αναγνώριση και αναζήτηση των ελληνικών χαρακτήρων ακόμα δεν λειτουργεί στο hand-writing μας. Ας ελπίσουμε πως σύντομα θα έχουμε και αυτήν την δυνατότητα.