Apr 13, 2014

Οδηγός γρήγορης εκκίνησης του SonarQube στο Ubuntu σε 2 λεπτά

Το SonarQube αποτελεί ένα de-facto εργαλείο για την στατική ανάλυση κώδικα και την παρακολούθηση της εξέλιξης, της ποιότητας και της εφαρμογής κανόνων στην ανάπτυξη. Αυτό το διάστημα εξετάζω το SonarQube σε σχέση με το Oracle ADF και κώδικα γραμμένο σε PL/SQL και αυτό το πρώτο σημείωμα στοχεύει στην εγκατάσταση του SonarQube με τον γρηγορότερο δυνατό τρόπο στο Ubuntu.

Συνεπής με τις τεχνολογίες virtualization και για λόγους καλύτερης οργάνωσης, κατασκεύασα μια εικονική μηχανή στο lxc, βασισμένη στην τελευταία έκδοση του Ubuntu με την εντολή:

sudo lxc-create -t ubuntu -n sonar

Άσχετα αν ακολουθήσουμε το lxc, θα χρειαστούμε ένα data repository για το SonarQube. Ας χρησιμοποιήσουμε την MySQL.


sudo apt-get install mysql-server


Ένα script για την κατασκευή του απαραίτητου σχήματος θα βρείτε εδώ. Για την εγκατάσταση του λογισμικού του SonarQube, θα χρειαστούμε την Java (κατά προτίμηση JDK 7) αλλά και το ίδιο το λογισμικό του Sonar. Πολύ εύκολο! Προσθέτουμε δυο εγγραφές στο /etc/apt/sources.list:

deb http://downloads.sourceforge.net/project/sonar-pkg/deb binary/
deb http://ppa.launchpad.net/webupd8team/java/ubuntu saucy main

Και έπειτα εγκαθιστούμε το σχετικό λογισμικό:

sudo apt-get update && sudo apt-get install oracle-java7-installer sonar

Με την προηγούμενη εντολή, θα γίνει εγκατάσταση στην διαδρομή /opt/sonar με τα δικαιώματα ενός ειδικού χρήστη (sonar) Για να συνδέσουμε το Sonar με την MySQL, επεξεργαζόμαστε το αρχείο /opt/sonar/conf/sonar.properties και σχολιάζουμε (comment) την H2 database και κάνουμε uncomment την γραμμή της MySQL.

Τέλος, για την αυτόματη εκκίνηση του SonarQube, μπορούμε να προσθέσουμε την εξής γραμμή στο αρχείο /etc/rc.local.

su - sonar /opt/sonar/bin/linux-x86-64/sonar.sh start

Έτσι, οι αναφορές θα μας περιμένουν στο http://localhost:9000. Περισσότερες πληροφορίες για την εγκατάσταση θα βρείτε εδώ.

Στα επόμενα άρθρα θα αναφερθούμε στην χρήση SonarQube σε ADF εφαρμογές καθώς και στην διασύνδεση με το OJAudit.

Apr 3, 2014

Επιλεκτική διαγραφή πρόσφατων αρχείων από το GNOME

Το GNOME στο οποίο βασίζεται και το Ubuntu, ανά πάσα ώρα και στιγμή διατηρεί τη λίστα των πιο πρόσφατων αρχείων (recent files) που έχουν χρησιμοποιηθεί. Αυτή η λίστα είναι διαθέσιμη είτε στον File Manager (nautilus) είτε σε τρίτες εφαρμογές όπως για παράδειγμα ο φοβερός keystroke launcher kupfer ώστε με δυο clicks να έχουμε στην άμεση διάθεσή μας τα πιο πρόσφατα αρχεία μας. Δεν λείπουν πάντως οι φορές που μερικά αρχεία δεν θέλουμε να τα "θυμάται" το GNOME αλλά προτιμούμε να μην εμφανίζονται στην σχετική λίστα.

Για να το καταφέρουμε αυτό θα χρειαστούμε μια μικρή επεξεργασία XML αρχείων από το shell του Linux. Πρώτα από όλα, τα πρόσφατα αρχεία καταγράφονται στην τοποθεσία $HOME/.local/share/recently-used.xbel που είναι όντως ένα XML αρχείο. Εκεί για κάθε έγγραφο καταγράφεται η τοποθεσία του σε ένα attribute ονόματι href. Επειδή δεν μπορούμε να απαγορεύσουμε την καταγραφή του συστήματος για τα πρόσφατα αρχεία, το μόνο που μπορούμε να κάνουμε είναι μια εκκαθάριση (clean) τους, σύμφωνα με κάποια κριτήρια, κατά τακτά χρονικά διαστήματα. Είχαμε παλαιότερα αναφερθεί στο φανταστικό πρόγραμμα xmlstarlet που βοηθάει στην επεξεργασία XML από command-line. Έτσι και τώρα, προκειμένου να σβήσουμε (delete) τις εγγραφές των πρόσφατων αρχείων που ανήκουν σε έναν συγκεκριμένο κατάλογο (πχ private) δεν έχουμε παρά να εκδώσουμε την εντολή:

xmlstarlet ed -N bookmark="http://www.freedesktop.org/standards/desktop-bookmarks" -d "//bookmark[contains(@href, 'private/')]" $HOME/.local/share/recently-used.xbel > $HOME/.local/share/recently-used.xbel.bck ; mv $HOME/.local/share/recently-used.xbel.bck $HOME/.local/share/recently-used.xbel

To παραπάνω script μπορούμε να το εντάξουμε στα auto-startup scripts του Ubuntu.

Mar 27, 2014

Εκτέλεση σεναρίων ελέγχου (test cases) διαφορετικών browsers στο Robot framework

Ένα εξαιρετικά ενδιαφέρον acceptance testing framework είναι το Robot. Διακρίνεται αφενός για την απλότητα του, καθώς τα βήματα ελέγχου περιγράφονται σε απλή, φυσική γλώσσα που καταχωρείται στην μορφή κελιών, παρόμοιων με αυτών ενός φύλλου εργασίας (spreadsheet) Γι' αυτή τη λειτουργικότητα προσφέρεται το περιβάλλον προγραμματισμού R(obot)IDE. Αφετέρου, διαθέτει μια μεγάλη λίστα από βιβλιοθήκες ή επεκτάσεις αν προτιμάτε, ώστε να καλύψει ελέγχους σε βάσεις δεδομένων, συνδέσεις ssh, web services, web user interfaces κλπ.
Για την εκτέλεση σεναρίων σε web σελίδες μπορεί να χρησιμοποιηθεί η βιβλιοθήκη του Selenium που είναι εξαιρετικά ισχυρή σε επιλογές ώστε να προσομοιώνει την καταχώρηση του χρήστη, τα δυναμικά γεγονότα που συμβαίνουν σε μια σελίδα και να τα αντιπαραβάλει με τα επιθυμητά αποτελέσματα. Προκειμένου να ξεκινήσει ένα τεστ, μια από τις πρώτες Selenium εντολές που θα χρησιμοποιήσουμε είναι αυτή του "Open Browser" που επιδέχεται ως όρισμα και τον τύπο του φυλλομετρητή. Έτσι, μπορούμε να φτιάξουμε μια μεταβλητή στο Robot (πχ "browser") που θα δηλώνει αυτόν τον τύπο (πχ με τιμή "firefox" ή "chrome") και αναλόγως να την τροφοδοτούμε. Για παράδειγμα, η command-line εκτέλεση ενός Robot test suite έχει ως εξής, λαμβάνοντας ως παράμετρο τον τύπο του browser:

pybot -v browser:firefox /home/user/Projects/testing/robot/testsuite1/TestSuite1.robot

Στις δοκιμές μου σε Ubuntu 13.10 (Saucy Salamander) δεν παρουσιάστηκε κανένα πρόβλημα με τον Firefox. Υπάρχει όμως μια μικρή σημείωση για την υποστήριξη του Chromium. Θα χρειαστεί να κατεβάσουμε τον Chrome Webdriver από εδώ και να τον τοποθετήσουμε σε ένα φάκελο που βρίσκεται στο PATH μας. Τέλος, να φτιάξουμε ένα symbolic link του Chromium για το alias google-chrome:

ls -s /usr/bin/chromium-browser /usr/bin/google-chrome

Mar 21, 2014

e-book προσφορά για τους 2000 τίτλους της Packt

Έχει περάσει κάτι παραπάνω από ενάμιση χρόνος από μια προσφορά της Packt για τους 1000 τίτλους της. Πολύ σύντομα όμως οι τεχνικοί τίτλοι της Packt κοντεύουν να ξεπεράσουν τους 2000 και έχουμε να κάνουμε με μια νέα προσφορά ως τις 26 Μαρτίου: με κάθε αγορά ενός e-book, παίρνουμε άλλο έναν δωρεάν ! Μερικοί πρόσφατοι τίτλοι που μου κινούν τον ενδιαφέρον είναι:

Για περισσότερες λεπτομέρειες ανατρέξτε στο http://bit.ly/1j26nPN

Mar 16, 2014

UI testing με το Sikuli

Το τελευταίο καιρό δοκιμάζω το sikuli για την αυτοματοποίηση εργασιών αλλά και για UI tests στο ADF. Μου αρέσει πολύ ο τρόπος καταγραφής μιας σειράς ενεργειών στο sikuli με την λήψη screenshots με αποτέλεσμα να έχει μπροστά του κανείς μια άμεση, οπτικοποιημένη περιγραφή ενός σεναρίου. Είναι ένα εργαλείο που είναι βολικό και για fat-client ή και Swing εφαρμογές που συνήθως απουσιάζουν πολλές επιλογές για αυτοματοποιημένο έλεγχο.

Προς το παρόν, το λειτουργώ στο Ubuntu 13.10 64-bit (Saucy Salamander) δίχως προβλήματα αλλά και σε Windows 7. Ας ξεκινήσουμε περιγράφοντας τη διαδικασία εγκατάστασης για Ubuntu (για την περίπτωση των Windows δεν είναι απαραίτητο το ακόλουθο βήμα) Εκτελούμε λοιπόν:

sudo apt-get install libtesseract-dev libcv2.4 tesseract-ocr

Έπειτα, κατεβάζουμε τον jar installer (sikuli-setup.jar) και φροντίζουμε να έχουμε εγκαταστημένη Java 6/7 στον υπολογιστή μας. Η εκκίνηση του installer είναι εύκολη:

java -jar sikuli-setup.jar

O installer εμφανίζει διάφορες επιλογές. Έχω προτιμήσει την πρώτη και την πέμπτη, ώστε να μπορεί να πραγματοποιηθεί OCR έλεγχος γύρω από το λεκτικό περιεχόμενο μιας εικόνας.
Με την ολοκλήρωση του installer, ξεκινούμε το σχεδιαστικό περιβάλλον με την εντολή runIDE και η γλώσσα προγραμματισμού η Jython. Το περιβάλλον περιλαμβάνει στα αριστερά τις ενέργειες που μπορεί να περιλαμβάνει το σενάριο μας, όπως clicks σε κουμπιά που θα φωτογραφίσουμε, πληκτρολόγηση σε input texts (που επίσης θα φωτογραφήσουμε) ενώ στο πάνω μέρος έχουμε τα εικονίδια για την εκκίνηση λήψης φωτογραφιών. Επίσης, με το κουμπί Run θα μπορέσουμε να εκτελέσουμε άμεσα το σενάριο μας.
Επειδή μια εικόνα είναι χίλιες λέξεις, μια ενδεικτική καταγραφή ενεργειών, θα μπορούσε να είναι η ακόλουθη, ξεκινώντας από την εκκίνηση του Firefox, την πλοήγηση σε ένα site, το login process και στην συνέχεια κάποια navigation clicks. Πρόκειται για βήματα μιας γλώσσας που δεν είναι απαραίτητες πολλές τεχνικές γνώσεις. Έλεγχοι που συνοδεύονται από οπτικές ειδοποιήσεις ή μεταβολές (πχ εμφάνιση μηνυμάτων λαθών ή ενημέρωση μιας τιμής) μπορούν να καλυφθούν με ευκολία καθώς το sikuli αυτό που κάνει καλά είναι η αντιπαραβολή και σύγκριση εικόνων (images) H σύγκριση μπορεί να περιλαμβάνει επίσης μετατροπή της εικόνας σε λεκτικά (OCR) αλλά αυτή δεν είναι πάντα επιτυχημένη.
Καθόσον αναπτύσσουμε το script μας μπορούμε άμεσα να το εκτελούμε. Στο παράδειγμα μας, το sikuli θα ξεκινήσει τον Firefox, θα πληκτρολογήσει μπροστά στα μάτια μας ό,τι έχουμε ορίσει και θα κάνει τα clicks που θέλουμε. Τα βήματα της καταγραφής μπορούν να ολοκληρωθούν με το unit testing framework της Jython και την βιβλιοθήκη HTMLTestRunner ώστε να παραχθεί μια HTML αναφορά. Φυσικά όλα αυτά μπορούν να ενταχθούν σε μια διαδικασία καθημερινού, αυτοματοποιημένου ελέγχου μέσω command-line scripting.

Mar 2, 2014

Προσαρμοσμένη κατασκευή περιεχομένων EAR στον JDeveloper

Ο JDeveloper προσφέρει τη δυνατότητα για αυτόματη δόμηση EAR, WAR, JAR αρχείων ανάλογα με τον τύπο του project και του workspace στο οποίο εργαζόμαστε. Υπάρχουν διάφορες δυνατότητες για την παραμετροποίηση αυτής της συμπεριφοράς, αλλά ας εστιάσουμε στο επίπεδο EAR αρχείου και ειδικά για την ενσωμάτωση βιβλιοθηκών που θα χρησιμοποιούνται από τα web applications (WARs), EJBs, JMX beans ή application listeners μιας εφαρμογής. Τέτοιου είδους βιβλιοθήκες αποθηκεύονται στο επίπεδο του APP-INF/lib του EAR και προκειμένου να κατασκευαστεί αυτή η δομή, μπορούμε να ανατρέξουμε στο Workspace properties-->Application Assembly, να επιλέξουμε τη βιβλιοθήκη μας και στην συνέχεια να ορίσουμε την διαδρομή "Path in EAR" στην έκφραση APP-INF/lib.

Feb 22, 2014

Συνδιασμοί πλήκτρων για δοκιμές του Ubuntu Unity και dash σε VirtualBox

Μια από τις πρακτικές που ακολουθώ είναι πως για το κύριο λειτουργικό μου σύστημα (host) δημιουργώ ένα αντίστοιχο VirtualBox machine ώστε να δοκιμάζω εκεί πρώτα προγράμματα και ρυθμίσεις. Θυμίζει λίγο τις...δοκιμές σε ένα UAT σύστημα προτού να εγκριθούν για μετάβαση σε ένα παραγωγικό περιβάλλον.

Ένα από τα θέματα που προκύπτουν με το Ubuntu σε host αλλά guest σύστημα ταυτόχρονα είναι η λειτουργία κάποιων ειδικών πλήκτρων, όπως για παράδειγμα το Windows Key (ή Super Key στην ορολογία του Linux): αυτό προκαλεί την εμφάνιση του dash τόσο στο host όσο και στο guest σύστημα, καθώς αυτή η κίνηση μεταδίδεται και στα δυο λειτουργικά. Ένα τρόπος για να παρακάμψουμε αυτό είναι με την χρήση του CompizConfig Settings Manager στο guest σύστημα μας. Η εγκατάσταση του:

sudo apt-get install compiz-settings-manager

Όταν θα τον εκτελέσουμε, ας ανατρέξουμε στις ρυθμίσεις του Ubuntu Unity plugin. Θα βρούμε εκεί και φυσικά μπορούμε να τροποποιήσουμε τους συνδιασμούς πλήκτρων για την εκκίνηση του Dash, του HUD, κλπ.

Feb 15, 2014

Ubuntu 13.10 και Java

Για πρώτη φορά η αναβάθμιση στο Ubuntu 13.10 64-bit (Saucy Salamander) έχει προκαλέσει διάφορα προβλήματα και παράπονα για εφαρμογές της Java, για τις οποίες φαίνεται πως υπεύθυνες οι νέες βιβλιοθήκες του Unity και του GTK. Το περιβάλλον της Java που χρησιμοποιώ είναι το Oracle JDK 6 που προέρχεται από την ομάδα WebUpd8. Για καλή μου τύχη, ο JDeveloper σε όλες τις 11g R1 εκδόσεις του που διατηρώ δεν παρουσίασε κάποιο πρόβλημα. Το ίδιο όμως δεν ισχύει και με το Eclipse OEPE 11.1.1.8 32-bit (βασισμένο στο Eclipse 3.7.2) που χρειάζεται για την ανάπτυξη στο Oracle Service Bus 11.1.1.6+. Εδώ το περίεργο είναι πως με την σκίαση μιας επιλογής μενού, αυτή γίνεται δυσδιάκριτη λόγω του ότι εμφανίζεται με λευκό χρώμα. Επίσης, γενικά τα GUI controls δεν είναι καλαίσθητα.
Στο δε Spring Source Toolkit 3.4.0 οι επιλογές του οριζόντιου μενού δεν άνοιγαν στο παραμικρό. Το workaround εδώ είναι να ξεκινήσουμε το SST με την εντολή:

env UBUNTU_MENUPROXY=0 STS

Dec 30, 2013

Εγκατάσταση Oracle Database 12c σε Linux Containers (lxc) στο Ubuntu

Έχει περάσει καιρός από την τελευταία μου αναφορά στο lxc, την ελαφριά εκδοχή του virtualization που προσφέρεται από το Linux kernel με τη βοήθεια μικρών εργαλείων. Το lxc βασίζεται σε τεχνολογίες του πυρήνα που επιτρέπουν την απομόνωση διεργασιών (cgroups) και την οργάνωση πόρων σε namespaces. Στους τελευταίους μήνες έχω αποκτήσει μεγαλύτερη εμπειρία στην χρήση του lxc, σε σχέση με τα προϊόντα της Oracle (Fusion Middleware, Glassfish και Database) και θεωρώ πως πρόκειται για ένα πολύ ισχυρό περιβάλλον για virtualization provisioning ανάλογο ή και καλύτερο σε σχέση με άλλα ανταγωνιστικά (πχ Vagrant) με το σαφές πλεονέκτημα της λειτουργίας απευθείας στον πυρήνα του Linux. Το lxc πλησιάζει πια την σταθερή έκδοση 1.0 και όλο αυτό το διάστημα βλέπω δραστηριότητα και υποστήριξη εκ μέρους της Oracle, γεγονός που προοιωνίζει ακόμα πιο ενδιαφέρουσες καινοτομίες στο μέλλον. Σε κάθε περίπτωση, η σκοπιά μου παραμένει αυτή του developer, αν και το lxc φαντάζει ιδανικό για large scale virtualization provisioning.

Το development περιβάλλον που θα περιγράψω έχει να κάνει με ένα laptop που τρέχει Ubuntu (13.04 64-bit) και στο οποίο θα εγκαταστήσουμε το lxc. Έπειτα θα δημιουργήσουμε ένα container βασισμένο στο Oracle Enterprise Linux (OEL) 6.4, στο οποίο τελικά θα εγκαταστήσουμε την τελευταία έκδοση του Oracle RDBMS (12c - 12.1.0.1.0) Είναι πραγματικά συναρπαστικό να τρέχεις το OEL και μια Oracle Database σχεδόν εγγενώς πάνω στο Ubuntu. Ένα άλλο ενδιαφέρον της υπόθεσης είναι η επιλογή της ίδιας της έκδοσης της βάσης δεδομένων: η 12c έρχεται με την έννοια των container databases που αφορά την φιλοξενία πολλαπλών instances από ένα κεντρικοποιημένο στη διαχείριση instance. Αν το αναλογιστεί κανείς υπάρχουν αρκετές αναλογίες με το lxc, και κατά τη γνώμη μου είναι η σημαντικότερη καινοτομία της Oracle έπειτα από την έκδοση 9i που εισήγαγε το RAC.

Ας ξεκινήσουμε λοιπόν με την εγκατάσταση του lxc στο Ubuntu μας, καθώς και κάποιων βοηθητικών προγραμμάτων με μια εντολή:

sudo apt-get install lxc bridge-utils yum

Για τις ανάγκες του lxc, θα δημιουργηθεί ένας νέος network adapter για τις διευθύνσεις 10.0.3.x. Για να μπορούν να επικοινωνούν οι containers με τον έξω κόσμο και να μην τους κόβει το firewall του Ubuntu, βάζουμε στο αρχείο /etc/default/ufw την ακόλουθη δήλωση και επανεκκινούμε το ufw service:

DEFAULT_FORWARD_POLICY="ACCEPT"

Έπειτα από αυτό, ας δημιουργήσουμε τον container για την 12c με την εξής απλή εντολή:

sudo lxc-create -n ora12 -t oracle

Ως όνομα του container δίνουμε το ora12. Η εντολή αυτή θα αναλάβει να κάνει ένα minimal install του OEL στην διαδρομή /var/lib/lxc/ora12/rootfs. Στην εκτέλεση της, θα κατεβάσει διάφορα πακέτα από το δίκτυο. Θα δημιουργηθούν επίσης δυο χρήστες, root και oracle.

Η καλή πρακτική λέει να δώσουμε μια στατική διεύθυνση στον database server μας. Ας το κάνουμε λοιπόν επηρεάζοντας (απευθείας!) διάφορα αρχεία του container μας που βρίσκεται στην διαδρομή /var/lib/lxc/ora12/rootfs/ και ας ορίσουμε την στατική διεύθυνση 10.0.3.2. Μην ξεχνάμε, ένας container δεν είναι παρά ένα directory στον δίσκο μας με όλα τα περιεχόμενα του (/dev, /home, κλπ) οπότε μπορούμε να τα αλλάζουμε οποιαδήποτε ώρα και στιγμή από το host σύστημα (ξεχνάμε τα shared directories του VirtualBox !)

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.3.2
NETMASK=255.255.255.0
DHCPCLASS=
ONBOOT=yes
HOSTNAME=ora12
NM_CONTROLLED=no
TYPE=Ethernet


# /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=ora12
GATEWAY=10.0.3.1


# /etc/resolv.conf

; generated by /sbin/dhclient-script
nameserver 10.0.3.1


Είμαστε λίγο πριν την εκκίνηση του server. Για να δουλέψει η Oracle χρειάζεται shared memory στο σύστημα /dev/shm. Το /etc/fstab στο lxc ορίζεται εξωτερικά (όχι μέσα στον container) οπότε προσθέτουμε στο πρότυπο fstab (στην διαδρομή /var/lib/lxc/ora12/fstab) την γραμμή:

tmpfs   /var/lib/lxc/oraxe/rootfs/dev/shm  tmpfs  defaults 0 0

Ας ξεκινήσουμε τον container μας με την εντολή:

lxc-start -n ora12

O container θα ξεκινήσει αστραπιαία (2-4 δευτερόλεπτα) Στο πάνω μέρος βλέπουμε πως πρόκειται για το OEL. Ναι τρέχουμε το OEL στο kernel space του Ubuntu !! (γι' αυτό και έκδοση 3.8.0-34 του kernel)

Εμείς με την εντολή yum μπορούμε να εγκαταστήσουμε τα πακέτα που χρειαζόμαστε για το Oracle Linux 6.4 σύμφωνα με το installation guide. Ενδεικτικά κάποια πακέτα:

yum install xauth unzip xclock

Αφότου εγκαταστήσουμε τα πακέτα ας κάνουμε τις εξής αλλαγές στο /etc/sysctl.conf (/sbin/sysctl -p για να ενεργοποιηθούν):

kernel.sem = 250 32000 100 128
fs.file-max = 6815744
και επίσης στο /etc/security/limits.conf:

oracle         soft     nproc         2047
oracle         hard    nproc         16384

Ας ξεκινήσουμε λοιπόν τον installer:

Ένα σημείο θέλει προσοχή: να μην χτίσουμε απευθείας μια βάση δεδομένων, αλλά να κάνουμε install μόνο το software.

Στην οθόνη με τα prerequisites, τα local_port_range, rmem/wmem αποτυγχάνουν. Ο λόγος είναι πως αυτές οι ιδιότητες δεν μπορούν να οριστούν σε επίπεδο container. Ας το προσπεράσουμε αυτό το σημείο.


Προτού προχωρήσουμε στην δημιουργία της βάσης, τρέχουμε τον netca για τη δημιουργία ενός Oracle listener. Έπειτα, θα χρειαστούμε ένα τρικ. Πιο συγκεκριμένα:

echo "rootfs / rootfs rw 0 0" >> /etc/mtab

Αυτό θα μας εμποδίσει να δούμε το λάθος "[INS-08109] Unexpected error occurred while validating inputs at state 'storageLocationsPage'" στη συνέχεια. Ας ξεκινήσουμε το dbca και ας φτιάξουμε την βάση όπως εμείς θέλουμε.

 Όλα καλά στο τέλος.
Προτού επανεκκινήσουμε, αφαιρούμε την γραμμή που προσθέσαμε στο /etc/mtab. H Oracle 12c βρίσκεται σε εκτέλεση. Από το host λειτουργικό σύστημα τα processes φαίνονται κάπως έτσι. To user id 500 αντιστοιχεί στον oracle χρήστη στο περιβάλλον του container.
Για να τερματίσουμε το container εκτελούμε την εντολή:

sudo lxc-stop -n ora12

Με το lxc, η δημιουργία server-side containers, ειδικά για την Oracle, που βασίζονται στο OEL, είναι παιχνίδι. Αξίζει τον κόπο να το ερευνήσετε παραπάνω.


Dec 6, 2013

Κλήση ενός web Service στο Linux από command-line

Μια γρήγορη δοκιμή ενός web service μπορεί να γίνει και από το command-line του Linux με την βοήθεια του προγράμματος curl.  Για παράδειγμα, αποθηκεύουμε σε ένα text αρχείο (sample_request.txt) το SOAP payload μας:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> </soap:Header> 
<soapenv:Body> <cca:creditcardStatusRequest xmlns:cca="http://www.globalcompany.com/ns/CCAuthorizationService"> <cca:CCNumber>1234-1234-1234-1234</cca:CCNumber> </cca:creditcardStatusRequest> 
</soapenv:Body> 
</soapenv:Envelope>

και μετά εκτελούμε την ακόλουθη εντολή, όπου προσδιορίζουμε στην παράμετρο -i την εμφάνιση του HTTP response code, με το -H το SOAP operation και λίγο μετά την διεύθυνση προορισμού.

curl -i -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:execute" -d @sample_request.txt -X POST http://localhost:8011/CreditRatingService/proxy/CreditRatingPS

Φυσικά με αντίστοιχο τρόπο μπορούμε να καλέσουμε και REST services.