when you hold a hammer

(geeky rant)

Έχει κάτσει εδώ και λίγο καιρό να μελετάω πολύ καλά μια κατανεμημένη εφαρμογή, γιατί  πρέπει να της κάνω κάτι καστομιές (custom-ιές). Δυστυχώς δε μπορώ να πω λεπτομέρειες, αλλά πρόκειται για κεντρικό σέρβερ (που τρέχει και το GUI) ο οποίος μιλάει με καμιά δεκαπενταριά κόμβους και μια βάση δεδομένων με πληροφορία της τάξης του ΤΒ (γενικά σε άλλο σέρβερ).
Λοιπόν για μεγάλη μου έκπληξη ανακάλυψα κάπου στα Program Files του κεντρικού κόμβου ένα αρχείο .mdb (MS Access 2000), το οποίο φαίνεται ότι περιέχει ορισμένες ρυθμισούλες για την όλη εφαρμογή. Ουσιαστικά καμιά εικοσιπενταριά ζεύγη
κλειδιού-τιμής(ων). Για παράδειγμα:

{{nodes}, {node1.domain.gr, node2.domain.gr, node3.domain.gr}}

{{user_roles},{admin,executive,guest}}

Πρόκειται δηλαδή για semi-persistent πληροφορίες που το GUI και διάφορα services του κεντρικού κόμβου πρέπει να διαβάζουν/γράφουν πολύ συχνά (ίσως και μερικές δεκάδες φορές για κάθε request) και που δεν είναι πρακτικό να τις έχει στο RDBMS μαζί με το 1ΤΒ των κυρίως δεδομένων.

Προσωπικά όμως αναρωτιέμαι αν ο πρακτικότερος τρόπος να αποθηκεύσεις λιγότερα από 30 ζεύγη κλειδιού-τιμής είναι να ορίσεις σχεδόν ισάριθμες σχέσεις (ας πούμε NODES: node_id as int, node_name as string) στην κάθεμιά από τις οποίες θα αποθηκεύεις το πολύ 5-6 records (στις περισσότερες μόνο 1), κι όλα αυτά σε μια από τις πιο αργές σχεσιακές βάσεις του κόσμου που αντικειμενικά θα ζορίζεται με τις εκατοντάδες ταυτόχρονες αιτήσεις που θα δέχεται (έμμεσα) από τους υπόλοιπους κόμβους. Γιατί αυτό έκαναν τα τυπάκια που έφτιαξαν αυτό το πράγμα.

Οι σχεσιακές βάσεις δεδομένων χρησιμοποιούνται πολύ συχνά σαν μέθοδος αποθήκευσης από Web εφαρμογές και από Desktop εφαρμογές φτιαγμένες με RAD εργαλεία (και τυπικά σε VB, όπου βέβαια η ΒΔ είναι Access. Περιττό να σας πω ότι το GUI της εφαρμογής που ασχολούμαι βρωμάει VB από χιλιόμετρα). Κατά τη γνώμη μου αυτό το πράγμα έχει γενικευτεί τόσο πολύ, που πολλοί προγραμματιστές φαίνεται να έχουν ξεχάσει ότι μια σχεσιακή ΒΔ δεν είναι πάντα η καλύτερη μέθοδος αποθήκευσης. Ούτε από πλευράς επιδόσεων, ούτε από πλευράς προγραμματιστικού φόρτου, ούτε (τελικά) από πλευράς αρχιτεκτονικής κομψότητας.

Στη συγκεκριμένη περίπτωση, έχεις ρε φίλε 25 ζευγαράκια κλειδιού και τιμής. Ε, βάλτα στο Windows Registry. Βάλτα σε μια μη σχεσιακή ΒΔ, όπως η BerkeleyDB. Κάντα serialize με τον πιο πρόχειρο τρόπο και πέτα τα χύμα σε ένα .dat. Ποιος ο λόγος να κάνεις τη ζωή σου δύσκολη; Δηλαδή πραγματικά ρε παιδιά δεν καταλαβαίνω, να κέρδιζε κάτι σε κώδικα, ταχύτητα ή λειτουργικότητα με αυτή την επιλογή ΟΚ, αλλά να το κάνει… από συνήθεια; Σε εφαρμογή με soft real-time constraints που κάνει ένα διάολο λεφτά;

Συμπέρασμα: προγραμματιστές υπάρχουν πολλοί, αλλά προγραμματιστές με στοιχειώδες ταλέντο και αίσθηση του ότι δίνουν εντολές σε ένα πραγματικό μηχάνημα που θέλει μη μηδενικό χρόνο να τις επεξεργαστεί ελάχιστοι.

RSS feed | Trackback URI

42 Comments »

Comment by penguin_witch
2007-04-05 08:26:39

(*Open sourced tools of the trade rant*)
Οταν ακούω εργαλειό RAD βγάζω φουσκάλες. Δυό χρόνια “προγραμμάτιζα” -σκατά προγραμμάτιζα, LEGO συναρμολογούσα- σε μια τέτοια παπαριά. Αυτά τα εργαλεία φτιάχτηκαν με σκοπό να επιτρέπουν στους άσχετους και ημιάσχετους (οικονομικούς θεολόγ^Η^Η^Η^Η^Η^Ηεπιστήμονες, φτηνά παιδάκια που μόλις βγάλανε μια σχολή) με στοιχειώδεις γνώσεις χειρισμού Η/Υ να γράφουν προγράμματα.
Και φυσικά το κάθε σαϊνι εργοδότης αντι να πληρώσει δέκα σοβαρούς παλιούς προγραμματιστές, θα θαμπώσει τον πελάτη με τα “εργαλεία τετάρτης γενεάς” και θα “υλοποιήσει” πρότυπο της εφαρμογής σε χρόνο dt (όσο χρειάζεται μέχρι να παραδώσει την εφαρμογή)- κατα προτίμηση με παιδάκια εκπαιδευόμενα ή με νοικιασμένους εργαζόμενους. Ελα όμως που με το που θα βάλει η βάση ένα μήνα στοιχεία παραγωγής θα αρχίσουν τα μπουκώματα…
(Και μετά έρχεται το συμβόλαιο συντήρησης και οι βελτιώσεις. Εκεί να δεις άρμεγμα- η χαρά του βαμπιροκατασκευαστη εφαρμογών. Συμβουλή: Τα λεφτά δε στα φέρνει η εφαρμογή που τρέχει άψογα, αλλά αυτή που σέρνεται- ειδικά αν δεν μπορούν να κάνουν αλλιώς *χοχοχο…*)

 
Comment by Dimitris
2007-04-05 08:57:37

Σίγουρα διαβάζονται οι τιμές σε κάθε κλήση; Μήπως τις έχει απλά στη μνήμη και κάνει τις αλλαγές εκεί, ενώ κάθε t λεπτά τα γράφει στο mdb;

Γιατί δε νομίζω ότι η Access (JetEngine ή όπως λέγεται) μπορεί να ικανοποιήσει 100άδες ταυτόχρονες κλήσεις ούτε στο όνειρό του…

Οπότε δες μήπως λειτουργεί κάτι σαν buffer ανάμεσα στο mdb και τα service.

 
Comment by papo
2007-04-05 10:02:20

γενικά έχεις δίκιο αλλά ηθελα να πω αυτό που είπε ηδη ο Dimitris η access ειναι της πλάκας βασή ..ας την ονομάσουμε εφαρμογή - η οποία ουσιαστικά ειναι single threaded με την εννοια οτι δεν επιτρεπει πολλαπλές κλησεις απο διαφορετικους πελάτες, άρα απλα επειδη ηταν ευκολο να ριξουν ενα control στην φορμα να σεταρουν το connection και να διαβάσουν τις τιμες…δεν το έκαναν με κάποιο property file πχ που μπορει να τους έπαιρνε πιο πολυ ωρα να ανοιξουν το αρχειο να το διαβάσουν ισως να γραψουν νεες τιμές!

 
Comment by χ
2007-04-05 10:13:49

πιγκουίνε τα είπες όλα.

 
Comment by Unique Fish
2007-04-05 10:32:54

Η penguin_witch με κάλυψε. Πλημμύρισε η Ελλάδα με ημιάσχετους “προγραμματιστές” σαν αυτούς που ανέφερε σε μια συνέντευξη του ο Bjarne Stroustrup:

Και όταν τα πράματα πάνε στραβά (που θα πάνε) χρυσοπληρώνουμε τον κομάντο προγραμματιστή να ξεσκατώσει.

 
Comment by χ
2007-04-05 11:03:45

Και εδώ, ψάρι, είναι ακριβώς που πιάνει τόπο η μαρξιστική υπεραξία. Έχεις έναν υπαλληλάκο που τον πληρώνεις για λογιστή, τον στέλνεις με επιδοτούμενα σεμινάρια και σου γυρνάει λογιστής και προγράμερ μαζί.

Δύο σε ένα.

Από εκεί βγαίνει το κέρδος.

 
Comment by χ
2007-04-05 11:05:53

αντέντουμ

Το οποίο κέρδος δεν το βγάζεις απ’ τον πελάτη. Όοοχι. Το βγάζεις από τον ανταγωνιστή, που δεν σκέφτηκε να στείλει τον δικό του κωπηλάτη σε επιδοτούμενα και αναγκάζεται να προσλάβει στη γαλέρα του κανονικό προγράμερ.

 
Comment by j95
2007-04-05 11:54:01

Μα δε μίλησα για Ελλάδα. Αν μπορούσα να πω το όνομα της εταιρείας και το προϊόν θα παθαίνατε την πλάκα σας.

 
Comment by akindynos
2007-04-05 12:00:37

Αφού πρόκειται για access 2000 τότε, κατά πάσα λογική πιθανότητα, υπάρχουν εγκατεστημένα και τα xml services της ms. Οπότε ακόμα και μέσα από vb6 χωρίς κανένα έξτρα κόπο θα μπορούσε να κάνει τη δουλειά του απλά, γρήγορα και κομψά.

 
Comment by χ
2007-04-05 12:10:15

“Μα δε μίλησα για Ελλάδα”

:)

Ναι αλλά ο σχολιασμός έχει την δική του δυναμική. Εσύ το ελεύθερο βολέ κι εμείς πάσες.

 
Comment by adamo
2007-04-05 12:31:39

Κατ’αρχήν υπάρχουν πολλά θέματα ανοιχτά.

1) Πράγματι εφόσον μιλάμε για key-value attributes ένα BerkeleyDB είναι επιθυμητότερο από ένα .mdb. Αυτό όμως προϋποθέτει να μην έχει VB author, αλλά προγραμματιστή. Το πιο πιθανό είναι πως κάποια στιγμή χρειάστηκε να υλοποιηθεί ο συγκεκριμένος μηχανισμός, έγινε “στα γρήγορα” σαν quιck-hack για να τελειώνουμε και “να το φτιάξουμε μετά” και έμεινε. Εάν δε έφυγε και ο προγραμματιστής που το υλοποίησε, κανένας δεν θα το πειράξει.

2) Το να αποθηκευτούν στο registry οι τιμές είναι ακόμα καλύτερο και από το BerkeleyDB γιατί ο VB author έχει API για να διαβάζει το registry.

3) Φυσικά και μπορείς σε μια βάση του ενός TB να βάλεις και αυτές τις τιμές μέσα και να τις ρωτάει το σύστημα. Φυσικά αυτό σημαίνει πως πρέπει να προσέξεις περισσότερο το indexing και το partitioning της βάσης (γιατί με μεγάλη πιθανότητα υπάρχει locality στα data και δεν ρωτάνε όλοι, όλη την ώρα σε όλο το εύρος του ενός TB - διαφορετικά πρέπει να αλλάξεις εφαρμογή και να χρησιμοποιήσεις Kdb).

4) Το ότι δεν είναι Ελληνική εφαρμογή δεν σημαίνει πως δεν υπάρχουν και μη Ελ με τις ίδιες απόψεις στον κώδικα.

@penguin_witch:
Το παράδειγμα του Θεολόγου με MSc in Computation είναι το πιο συχνό που χρησιμοποιώ κι εγώ!

 
Comment by Hell
2007-04-05 17:15:38

“Συμπέρασμα: προγραμματιστές υπάρχουν πολλοί, αλλά προγραμματιστές με στοιχειώδες ταλέντο και αίσθηση του ότι δίνουν εντολές σε ένα πραγματικό μηχάνημα που θέλει μη μηδενικό χρόνο να τις επεξεργαστεί ελάχιστοι.”

Και καλά ρε J, τόσα χρόνια στον χώρο, τώρα το συμπεραίνεις; :)
Έτσι κι αλλιώς αυτό αποτελεί γενικό κανόνα σε όλες τις δουλειές που έχουν μια πολυπλοκότητα πέραν του “Α”.

 
Comment by azrael
2007-04-06 00:11:00

Δικός μας και εσύ λοιπόν…

Κάνω λάθος που μου βρωμάει S.A.P ή είμαι απλά προκατειλλημένος?

Χο χο χο!!

 
Comment by Locutus
2007-04-07 03:48:41

Στη δουλειά μου προσέλαβαν έναν νέο προγραμματιστή “ψαγμένο και με εμπειρία” (τα λόγια του manager), και με τον τίτλο του senior. Όλα καλά; Ναι, μέχρι που ανακάλυψα ότι πληρώνεται 1,5 φορά παραπάνω, και δε γνωρίζει βασικά πράγματα.
Πόσο βασικά; Ας πούμε για παράδειγμα, την έννοια του serialization και την υλοποίησή του σε .net (τονίζω τα 4 χρόνια εμπειρίας σε .net περιβάλλον, σε δικτυακό προγραμματισμό και distributed συστήματα).
Ή τον λόγο ύπαρξης των db transactions (αφού έμαθε τι σημαίνει transaction, διαμαρτυρήθηκε με ύφος ειδικού, λέγοντας “μα δε χρειάζεται κάτι τέτοιο, το όλο batch διαρκεί μερικά μόλις msec”).
Ευτυχώς αποχωρώ σύντομα από εκεί, και δε θα υποστώ το μαρτύριο να διορθώνω τις αντοκουμεντάριστες σπαγγέτι (code) μαλακίες, τα undisposed αντικείμενα και την παντελή έλλειψη αρχιτεκτονικής για πολύ ακόμα.

Δεν έχω πρόβλημα με το RAD, αλλά με την α-λα δημοσιουπαλληλική αντιμετώπιση ορισμένων ανθρώπων προς τα εργαλεία αυτά. Μαθαίνει ο δικός σου 2-3 εντολές, και μετά επαναπαύεται, με αποτέλεσμα να καταλήγουμε σε τέτοιες περιπτώσεις: http://worsethanfailure.com/

 
Comment by adamo
2007-04-07 08:30:24

Ναι, μέχρι που ανακάλυψα ότι πληρώνεται 1,5 φορά παραπάνω, και δε γνωρίζει βασικά πράγματα.

Χεχ! Δηλαδή εκεί που εσύ (και εγώ) ασχολείσαι με το να γίνεσαι καλύτερος στη δουλειά σου, ο άλλος ασχολείται με το πως θα φαίνεται καλύτερος.

“μα δε χρειάζεται κάτι τέτοιο, το όλο batch διαρκεί μερικά μόλις msec”

Αγαπητό Borg δεν είσαι μόνος σου:

- Δε μπορώ να καταλάβω γιατί γίνεται τόση φασαρία με τα search engines. Ένα που έφτιαξα χτες στην Access δουλεύει μια χαρά.

 
Comment by Queerdom
2007-04-07 13:54:44

Προσπάθησα να το παρακολουθήσω το κείμενο αλλά τελικά ήταν way too geeky for me, but cool

 
Comment by panagiotis tokos
2007-04-07 16:03:30

# j95 Says:
April 5th, 2007 at 11:54 am

Μα δε μίλησα για Ελλάδα. Αν μπορούσα να πω το όνομα της εταιρείας και το προϊόν θα παθαίνατε την πλάκα σας.

Σιγά, αγάμητε τραμπάκουλα, μη σε προσέλαβε ο Βασίλης Πύλες να του προγραμματίσεις το καζανάκι της χέστρας…

κάγκουρα…

 
Comment by j95
2007-04-07 16:57:05

Κι εσύ μου έλειψες ανώνυμε :)

 
Comment by Locutus
2007-04-09 05:53:12

Χεχ! Δηλαδή εκεί που εσύ (και εγώ) ασχολείσαι με το να γίνεσαι καλύτερος στη δουλειά σου, ο άλλος ασχολείται με το πως θα φαίνεται καλύτερος.

Αυτό δεν είναι ένα από τα προβλήματα της Ελλάδας γενικότερα; Φιγούρα στο maximum, ζαχ… “ουσία” στο μηδέν.

 
Comment by Aττίλας
2007-04-11 23:03:29

Ο Βριπιδας εχει τιποτα να πει; Ή φοβαται μην αποκαλυψει την αγνοια του;

——–

ΜΗΝΥΜΑ ΠΡΟΣ ΒΡΙΠΙΔΑ

Μαλακα βρηκα γαμω τους τροπους να μην χρησιμοποιουμε GoogleTalk κτλ για να επικοινωνουμε. Απλα θα καθορισουμε ενα μπλογκ (οπως πχ το παρον) και θα αφηνουμε εκει μηνυματα ο ενας στον αλλο. Σε καποια φαση θα συμφωνησουμε και εναν κωδικα ωστε να διασφαλισουμε το απορρητο της επικοινωνιας μας. Πχ:

Ενταξει με τον θειο Σαμ, μαλλον θα παω να δουλεψουμε μαζι.

Καταλαβες ε?

 
Comment by Βριπιδης
2007-04-16 13:58:08

???

 
Comment by Aττίλας
2007-04-16 15:32:17

Καλα γαμησε το αμα ειναι να καθομαι να στο εξηγω μια ωρα.

Θα σε παρω αργοτερα να σου πω τηλεφωνικως. Ο j το εχει κλεισει σχεδον το μαγαζι οποτε μπορουμε να γραφουμε στους τοιχους μηνυματα ο ενας στον αλλον.

 
Comment by j95
2007-04-16 15:35:37

όχι δε μπορείτε.

ρωτήστε και τον άλλον που όταν το παράκανε κάθησα κι έγραψα καμιά 250αριά regexes στο wp-comments-post.php και τώρα όποτε προσπαθεί να ποστάρει το blog του λέει “FUCK OFF”.

 
Comment by Βριπιδης
2007-04-16 19:58:15

Ειναι προφανες πως εχετε μια σχεση αγαπης-μισους εσεις τα δυο. Εμενα τι με βαζετε στην μεση;

 
Comment by Aττίλας
2007-04-16 20:40:17

Καλα ρε μαστορα, μην απαντας τοοοσο σοβαρα, μια πλακουαρ καμναμε.

Βριπιδη, για αλλη μια φορα δεν ξερεις τι λες, εχεις καταντησει μια αηδια και μιση, για το θεο δηλαδη.

 
2007-04-16 22:07:04

Γυρνα πίσω!!!

 
Comment by Hell
2007-04-17 10:39:11

Άσχετο, αλλά γύρνααα!

 
Comment by j95
2007-04-17 14:21:33

με τίποτα.

αρκετά ασχολήθηκα με βλακείες.

 
2007-04-17 14:34:58

Επειδή το έπαιρνες στα σοβαρά. Δεν σου κολλάνε ένσημα εκεί, είναι ok για μια δυο σαχλαμάρες μόνο.

 
Comment by Alexis Stamatis
2007-04-17 15:40:53

ΜΕΤΑΦΕΡΘΗΚΑΜΕ!

ΤΙ ΚΑΝΕΙ ΕΝΑ ΛΑΘΟΣ ΚΛΙΚ….
Για τεχνικους λόγους που δεν μου δινουν τη δυνατοτητα να μπω στο προηγουμενο μπλογκ, το ιστολογιο μεταφερεται εδω. Το προηγουμενο θα λειτουργει ως αρχείο. Μην αφηνετε σχολια στο προηγουμενο διοτι δεν μπορω να μπω να τα απαντησω.
Αντε κι αλλη φορα να μαθω να παιζω με τα κουμπια!

 
Comment by j95
2007-04-17 15:44:40

sorry?

 
Comment by vangelakas
2007-04-17 16:05:16

Ρέ Τ. άσε τόν άνθρωπο! Τό ένα έκτο τού χρόνου πού αφιέρωνε εκεί, άν τό στάξει εδώ κι αράξει, θά έχουμε περισσότερα τύπου the-power-of-love…

 
2007-04-17 16:15:56

Εννοείται πως δε θέλω να τον ζαλίσω. Ήθελα απλώς να του δείξω πόσο μας λείπει. :)
Ευαγγέλαξ, είδες τι τρυφερότητες χάνεις που δεν ανοίγεις τα κομμεντάρια στο μπλογκάκι σου;

 
Comment by m13
2007-04-17 18:10:38

πλάκα έχετε!
:)

(όχι όλοι :P)

 
Comment by Mastoyras
2007-04-17 22:41:07

Re filaraki, an den evaze to Access, mporei na xanontoysan kapoia fraga gia th microsoft kai kati mizes apo toys paparhdes poy oysiastika symperilavane third-party software (Access) mesa sth paparia poy ftiaksane. Oysiastika ftiaksane ena “licence” parapanw gia th microsoft.

ZHTW TO OPEN SOURCE !

ZHTWWWWW !

 
Comment by vangelakas
2007-04-18 09:23:17

Εγώ τίς χάνω; Σιγά μήν παίρναν απόφαση νά μετακυλισθούν σέ σχόλια άλλου βλόγ!

 
Comment by adamo
2007-04-20 22:49:53

@Mastoyras:
Μη μας κάνεις να γελάμε με απλοϊκούς υπολογισμούς. Εφόσον μιλάμε για μια εφαρμογή που διαχειρίζεται / διακινεί 1TB, τότε μιλάμε για μια εφαρμογή που έχει κόστος ~100Κ Euro. Τι είναι αυτό που σε κάνει να πιστεύεις πως η Microsoft βγάζει λεφτά από την Access στη συγκεκριμένη εφαρμογή και όχι από τα υπόλοιπα;

(Άσε που με την υπόθεση πως η εφαρμογή τρέχει στη SQL Server, η Access έχει δοθεί δωρεάν).

 
Comment by mekanixz
2007-04-22 18:42:50

ρε penguin witch kai χ, πολυ κομπλεξ βγαλατε….μπας και ειστε στο κκε??εγω ηλεκτρονικος ειμαι και ξερω c kai assembly, πρεπει ο εργοδοτης μου να προσλαβει πληροφορικαριο για να προγραμματιζει τους μικροεπεξεργαστες?οεο?

 
Comment by adamo
2007-04-23 00:25:43

@mekanixz:
Και όλοι στις μέρες μας είναι γιατροί επίσης και κάνουν διαγνώσεις εκ του προχείρου με βάση τον πόνο που δηλώνει ο ασθενής. Σου προτείνω να βρεις τη συνέχεια του ρητού που χρησιμοποίησε για τίτλο ο j95 (when you hold a hammer …) και να τη σκεφτείς.

 
Comment by mekanixz
2007-04-23 17:39:13

@adamo
καλα,αμα ειναι να το χεσουμε το ζητημα τι να σου πω…
αμα σου καει μια λαμπα φωναξε ηλεκτρολογο….
Με πτυχιο τουλαχιστον ΤΕΙ,αμ πως,οχι προχειροδουλειες….
Να σου κανει και διατριβη για το πως θα την αλλαξει….
ημαρτον…..

 
Comment by adamo
2007-04-23 19:13:12

@mekanixz:
Είμαι ο εντελώς λάθος άνθρωπος για το παράδειγμά σου.

 
Comment by Eximnos
2007-12-23 17:19:12

Γεια σου φιλε μου!
Λοιπον νομιζω οτι εισαι αυτος που ψαχνω.

Θελω αν γινεται να μου δωσεις λιγα απο τα φωτα σου!

Πριν λιγες μερες εκανα format στο PC μου. Εκανα ομως μια βλεκεια. ΤΗΝ ΒΛΑΚΕΙΑ! Πηγα να κανω το φορματ στον εξωτερικο μου δισκο που εχω το αρχειο μου. Ετσι λοιπον στο μενου του format πατησα το L για διαγραφη του χωρου και C για δημιουργια. Μετα ειδα το λαθος μου και εκανα το format στον αλλο σκληρο. Τωρα δεν μου ανοιγει φυσικα ο εξωτερικος και τον βλεπει σαν αδιαμορφωτο.

Μπορω να τον επαναφερω? Προσπαθησα με μερικα προγραμματακια αλλα δεν τα καταφερα. Εγω φταιω παντως. Ξερεις αν τον παω σε καποιο μαγαζι αν θα με εξυπηρετησουν? Προτεινεις καπου?

Ευχαριστω προκαταβολικα

 
Name (required)
E-mail (required - never shown publicly)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.