Jump to content

antonch

Administrators
  • Posts

    1030
  • Joined

  • Last visited

  • Days Won

    7

Blog Entries posted by antonch

  1. antonch
    Στο SQL Saturday Night αυτό, θα δούμε τις δυνατότητες που μας έχουν έρθει για το Full Text Search στον SQL Server 2012, αλλά και όσα πρέπει να γνωρίζουμε για αυτούς είτε είμαστε DBA είτε DB Developers.
    Εγγραφή (είναι δωρεάν)
  2. antonch
    Σε αυτό το post θα σας παρουσιάσω ένα θέμα το οποίο είναι κάτι που αντιμετωπίζουν οι web developers και ιδιαίτερα αυτοί που ασχολούνται με Content Management Systems (CMS). Όπως είναι γνωστό σε αυτά αποθηκεύουμε το περιεχόμενο που βάζουμε στα sites μας, είτε σαν HTML, είτε σαν XML ή κάτι άλλο. Αρκετές είναι οι περιπτώσεις που χρειαζόμαστε να αντλήσουμε από αυτά μόνο το καθαρό περιεχόμενο αγνοώντας δηλαδή τα διάφορα HTML/XML tags.
    περισσότερα
  3. antonch
    Αν και πιστεύω ότι αρκετοί θα έχετε υλοποιήσει κάτι τέτοιο εντούτοις σας παραδίδω και την δικιά μου εκδοχή που κάνει parse ένα string με delimiters και επιστρέφει ένα πίνακα με τα αποτελέσματα της εκτέλεσης
    περισσότερα
  4. antonch
    Πολλές φορές χρειαζόμαστε σε strings να κάνουμε συγκρίσεις για το αν αυτά είναι όμοια ή πόσο κοντά είναι το ένα στο άλλο. Αυτό όπως καταλαβαίνει κανείς εγκυμονεί αρκετούς κινδύνους, παραδοχές και πολλά ακόμα που πρέπει να λάβουμε υπόψη, ειδικά αν δεν έχουμε βάλει αυστηρούς ελέγχους στο τι πληκτρολογεί ο χρήστης.
    Παρ’ ότι στον SQL Server έχουμε την SOUNDEX και την DIFFERENCE υπάρχουν περιπτώσεις που δεν μας είναι αρκετές για ικανοποιήσουμε τις ανάγκες μας.
    Για αυτές τις περιπτώσεις θα πρέπει να δράσουμε κάπως διαφορετικά και θα πρέπει να δημιουργήσουμε εμείς κάτι το οποίο να καλύπτει τις ανάγκες αυτές.
    περισσότερα
  5. antonch
    Στο SqlSchool.gr έχω φτιάξει μια λίστα από ενδιαφέροντα πιστεύω άρθρα τα οποία αξίζουν της προσοχή σας.
    Δείτε την λίστα αυτή
  6. antonch
    Άλλοι περισσότερο άλλοι λιγότερο χρησιμοποιούμε το SQL Server Management Studio στην καθημερινότητα μας.
    Μέσα σε αυτή εκτελούμε και αρκετά queries είτε σε πίνακες της βάσης μας είτε σε metadata tables. Το κάνουμε σχεδόν μηχανικά καθημερινά έτσι δεν είναι;

    Όπως επίσης είναι γνωστό ότι μπορούμε να δούμε τα αποτελέσματα αυτών σε διαφορετικές μορφές όπως grid, text, file.
    περισσότερα
  7. antonch
    Πρωινή συζήτηση με συνάδελφο η οποία έφτασε να αξιολογούμε βάσεις και να μετράμε αντικείμενα σε αυτές. Κάποια στιγμή γράφω το παρακάτω query για να δω ανά object type τι πλήθος αντικειμένων έχω σε αυτό και ο συνάδελφος εντυπωσιάστηκε.

    Αν ποτέ το χρειαστείτε είναι το παρακάτω:
    περισσότερα
  8. antonch
    Μια πρωινή ερώτηση που ένας συνάδελφος μου έθεσε ήταν η αφορμή για αυτό το tip of the day. Η ερώτηση του ήταν:

    Πως μπορώ να αλλάξω το schema σε ένα object μέσα σε μια database;


    Η απάντηση είναι απλή και φαίνεται στο παρακάτω παράδειγμα
    περισσότερα
  9. antonch
    Αρκετές φορές έχω αναφέρει κατά την διάρκεια των μαθημάτων και των παρουσιάσεων που κάνω για την αρχιτεκτονική μιας βάσης, ότι τα data files χωρίζονται σε σελίδες των 8K, κάθε 8 τέτοιες σελίδες αποτελούν ένα extent και ότι υπάρχουν δύο είδη extent τα uniform και τα mixed.
    Uniform είναι αυτά που οι 8 σελίδες τους ανήκουν σε ένα object πχ στον πίνακα των πελατών, ενώ mixed είναι αυτά που οι 8 σελίδες τους ανήκουν σε διαφορετικά.

    Επανειλημμένα έχω αναφέρει ότι σε κάθε πίνακα οι πρώτες 8 σελίδες του ανήκουν σε mixed extend και από την 9 και μετά πάνε σε uniform extent.
    Είναι αρκετά χρήσιμο να γνωρίζω το πως έχει γίνει αυτή κατανομή των σελίδων σε extents καθώς θα με βοηθήσει να καταλάβω το πως θα διαβαστούν τα δεδομένα μου αλλά και να μπορώ να καταλάβω το πιθανό fragmentation που θα εμφανιστεί.
    Τι κάνει η DBCC EXTENTINFO;
    Για όλους αυτούς του λόγους είναι χρήσιμο να γνωρίζω την ύπαρξη της DBCC EXTENTINFO. Η συγκεκριμένη ανήκει στην κατηγορία των undocumented dbcc commands, αλλά είναι γνωστή σε όσους ασχολούνται συστηματικά με τον SQL Server.
    Η εκτέλεση της επιστρέφει ένα dataset του οποίου η κάθε γραμμή αντιπροσωπεύει ένα extent στην βάση μου εάν αυτό είναι uniform και πολλές (μέχρι 8) αν είναι mixed.
    περισσότερα


  10. antonch
    Φαντάζομαι ότι σε όλους είναι γνωστό ότι για να εκτελεστεί ένα query στον SQL Server περνάει από τον Query Optimizer. Αυτός για να παράξει το execution plan βλέπει τα index statistics. Αυτό σημαίνει ότι όσο καλύτερα ενημερωμένα είναι αυτά τόσο καλύτερα αποτελέσματα θα δώσει ο Query Optimizer.


    Πότε όμως αυτά έχουν ενημερωθεί τελευταία φορά;

    Αν κάποιος θέλει να δώσει απάντηση στο ερώτημα του αυτό δεν έχει παρά να εκτελέσει το παρακάτω query στην βάση του.
    περισσότερα
  11. antonch
    Όπως εδώ και καιρό έχει γίνει γνωστό από την ανακοίνωση της Microsoft ο SQL Server 2012 θα είναι η τελευταία έκδοση που θα υποστηρίζει τον SQL Server Native Client OLE DB provider καθώς αυτός θα πρόκειται να σταματήσει να αναπτύσσεται.

    Ο αντικαταστάτης του θα είναι ένας παλιός γνώριμος το ODBC
    read more
  12. antonch
    Διαβάζοντας το τελευταίο άρθρο του Jonathan Kehayias διαπίστωσα ότι έχω πολύ καιρό να γράψω κάτι για τα internals του SQL Server.
    Μέσα στο άρθρο αυτό του Jonathan υπάρχουν αναφορές σε κάποια ειδικά pages που υπάρχουν σε κάθε database στον SQL Server. Με αφορμή αυτό αποφάσισα να γράψω το post αυτό και να αναφερθώ σε όλα αυτά το special pages.
    Page structure and page offset
    Πριν ξεκινήσω όμως την αναφορά μου σε αυτά θα πρέπει να είμαι σίγουρος ότι όλοι γνωρίζουμε ότι κάθε data file σε μια SQL Server database δομείτε εσωτερικά σε pages των 8ΚΒ. Σε αυτά αποθηκεύονται τα δεδομένα του SQL Server. Ένα page έχει τον page header που είναι 96 bytes και το offset array το οποίο βρίσκεται στο τέλος του page, είναι 36 bytes και παρέχει τους δείκτες (pointers) στο byte location της αρχής της κάθε γραμμής (record) που είναι στην συγκεκριμένη σελίδα.

    Αυτό είναι αποθηκευμένο αντίστροφα πάνω στην σελίδα δηλαδή το offset του πρώτου record είναι στο τέλος του συγκεκριμένου array το δεύτερο είναι προτελευταίο κ.ο.κ.

    Το υπόλοιπο τμήμα (8060 bytes) είναι ο χώρος στον οποίο αποθηκεύονται τα records. Αυτός είναι και ο λόγος που λέμε ότι το max record length δεν μπορεί να είναι πάνω από 8060 bytes καθώς ένα record δεν μπορεί να είναι σπασμένο σε δύο pages.
    Extents
    Κάθε 8 τέτοιες σελίδες φτιάχνουν ένα extent. Υπάρχουν δύο είδη extent
    read more
  13. antonch
    Οι περισσότεροι είστε σε κάποιον παραθαλάσσιο μέρος και καλά κάνετε. Παρόλα αυτά όμως τα SQL Saturday Nights ακόμα δεν έχουν τελειώσει, απλά αντί να σας βάζω σε διαδικασίες να τα παρακολουθήσετε live αποφάσισα να φτιάξω ένα απόψε καθώς θέλω να αναδείξω ένα θέμα το οποίο οι περισσότεροι δεν γνωρίζετε ή το γνωρίζετε λίγο ή ακόμα και για αυτούς που το γνωρίζουν δεν είναι κακό να το ξαναδούν.
    Αφορά τον αριθμό των VLFs (Virtual Log Files) που έχει ένα transaction log σε μία database στον SQL Server και πως όταν αυτός ο αριθμός είναι αρκετά μεγάλος επηρεάζει την απόδοση μιας datatase.
    περισσότερα
  14. antonch
    Σαν παλαιός developer έχω νιώσει αρκετά καλά στο πετσί μου ότι ο όμορφα γραμμένος κώδικας όσο χάλια και αν είναι πάντα βοηθάει στην ανάγνωση του με αποτέλεσμα να εξυπηρετεί αρκετά τόσο στο debugging αυτού όσο και στο refactoring και extension.
    Αρκετές φορές ακόμα έχω δεχθεί ερώτηση για αυτό τόσο στον χώρο εργασίας μου όσο και κατά την διάρκεια των σεμιναρίων που κάνω. Αν και βαθιά πιστεύω ότι αυτό είναι κάτι το οποίο είναι θέμα που πρέπει να ορισθεί σε επίπεδο προσωπικό και ομάδας εργασίας εντούτοις υπάρχουν κάποιοι βασικοί κανόνες που θα μπορούσαμε να χρησιμοποιήσουμε καθώς είναι χρόνια δοκιμασμένοι και δεν χρειάζεται να ανακαλύψουμε ξανά τον τροχό από την αρχή. Φυσικά σε αυτούς μπορούμε να βάλουμε και τις προσωπικές μας πινελιές που μας εξυπηρετούν ή ταιριάζουν την ιδιοσυγκρασία μας.
    read more
  15. antonch
    Αφορμή για αυτό το post ήταν δύο γεγονότα τα οποία μου συνέβησαν το τελευταίο διάστημα. Το ένα ήταν μια «διαμάχη» με έναν συνάδελφο σχετικά με το γεγονός ότι πλέον δεν υποστηρίζεται πλέον στον SQL Server 2012 η sp_dboption, και το άλλο είναι ένα προσωπικό μήνυμα που έλαβα από κάποιον άλλο συνάδελφο σχετικά με το αν θα πρέπει να χρησιμοποιείται το semicolon στο τέλος των εντολών της T-SQL.

    Δεν ξέρω αν το γνωρίζεται αλλά σε κάθε έκδοση του SQL Server που βγάζει η Microsoft μέσα στα books online υπάρχει ένα section το οποίο ονομάζεται Deprecated Features. Για τον SQL Server 2012 και για το Database Engine θα βρείτε αυτά στο link αυτό. Σε αυτό υπάρχει μια πλήρης λίστα αυτών που σε επόμενες εκδόσεις δεν θα υπάρχουν πλέον.

    περισσότερα
  16. antonch
    Πρόλογος
    Αυτό που με εξιτάρει περισσότερο στην δουλειά μου και στην ενασχόληση μου με τον SQL Server είναι να βρίσκω λύση σε προβλήματα, αλλά και σε ποιον δεν αρέσει αυτό;
    Το Πρόβλημα
    Σήμερα ένας συνάδελφος στην εταιρία που εργάζομαι έρχεται με το εξής ερώτημα-πρόβλημα
    «Έχω ένα πίνακα και έχω φτιάξει μια stored procedure η οποία περιέχει ένα business logic αρκετά σημαντικό και περίπλοκο με το οποίο κάνω insert στον συγκεκριμένο πίνακα. Θέλω να κάνω insert στο συγκεκριμένο πίνακα μόνο από την συγκεκριμένη stored procedure και μόνο πως μπορεί να γίνει αυτό;»
    Στην αρχή ξαφνιάστηκα καθώς ο συνάδελφος είναι εμπειρότατος και η ερώτηση του μου φάνηκε κάπως. Του απάντησα ότι αυτό είναι στο χέρι του καθώς αυτός γράφει τον κώδικα. Φυσικά η απάντηση μου δεν τον ικανοποίησε. Έτσι μετά από μια σύντομη συζήτηση κατάλαβα τι ακριβώς ήθελε να κάνει το οποίο τελικά ήταν:
    «Έχω ένα πίνακα και έχω φτιάξει μια stored procedure η οποία περιέχει ένα business logic αρκετά σημαντικό και περίπλοκο με το οποίο κάνω insert στον συγκεκριμένο πίνακα. Θέλω να κάνω insert στο συγκεκριμένο πίνακα μόνο από την συγκεκριμένη stored procedure και μόνο είτε από την εφαρμογή είτε από τον SSMS είτε από οπουδήποτε. Θέλω δηλαδή εκτός από να προστατέψω την ποιότητα των δεδομένων που θα μπαίνουν στον συγκεκριμένο πίνακα θέλω να προστατέψω και εμένα και τους άλλους developers καθώς στην καθημερινότητα μας φτιάχνουμε πολλές stored procedures και υπάρχει πάντα το ενδεχόμενο σε μια νέα που φτιάχνουμε να κάνουμε insert στον συγκεκριμένο πίνακα χωρίς να καλέσουμε την εν λόγο stored procedure με αποτέλεσμα να έχω λάθος στα δεδομένα στον πίνακα. Επίσης αυτό θέλω να μπορεί να γίνει ακόμα και για αυτούς που έχουν δικαιώματα sysadmin στον SQL Server. Πως μπορεί να γίνει αυτό;»
    περισσότερα
  17. antonch
    Εισαγωγή

    Για άλλη μια φορά σήμερα ευλογώ τον Θεό που μου έχει δώσει την δυνατότητα να κάνω αυτή την δουλειά καθώς μου δίνει την δυνατότητα σε τακτά χρονικά διαστήματα να μαθαίνω κάτι νέο.
    Αυτό που έμαθα σήμερα κατά την καθημερινή μου ενασχόληση με τον SQL Server θα ήθελα να το μοιραστώ μαζί σας και είμαι  αρκετά χαρούμενος για αυτό καθώς το αγαπημένο μου προϊόν ο SQL Server μου χαρίζει αυτές τις συγκινήσεις.
     

    Η ανάγκη

    Ας έρθουμε όμως στο ζουμί. Σαν DBA ή DB Dev καθημερινά γράφεις queries. Αρκετές φορές μέχρι κάποια πάνε σφαίρα κάποια πάνε αργά και γενικά είσαι μέσα σε μια ατέρμονη διαδικασία τα αργά να τα κάνεις να πάνε γρήγορα και τα γρήγορα γρηγορότερα.

    περισσότερα
  18. antonch
    Τις τελευταίες ημέρες για ένα περίεργο λόγο συνάντησα αρκετές φορές την ανάγκη να πρέπει να εκτιμηθεί η δυνατότητα να γίνει compress μια database. Για το λόγο αυτό αποφάσισα να φτιάξω μια stored procedure που να κάνει όλα όσα ήθελα να γίνονται με την εκτέλεση της. Μετά από μερικές μέρες δουλειάς και αρκετές αλλαγές πάνω σε αυτή το τελικό αποτέλεσμα μπορείτε να το βρείτε εδώ.
    Όμως πριν αρχίσετε να την χρησιμοποιείται νομίζω ότι είναι σκόπιμο να διαβάσετε το documentation αυτής και τις δυνατότητες που παρέχει.
    Πριν όμως το κάνω αυτό θα πρέπει να επισημάνω ότι το database compression είναι ένα feature το οποίο εμφανίστηκε στον SQL Server 2008 Enterprise Edition άρα η stored procedure αυτή μπορεί να δουλέψει από αυτή την έκδοση και πάνω, δηλαδή 2008, 2008R2 και 2012.
    Επίσης ο χρήστης που θα την εκτελέσει θα πρέπει να έχει δικαιώματα sysadmin.
    περισσότερα
  19. antonch
    Αν ψάχνετε να εκπαιδευτείτε στον SQL Server 2012 τότε μην περιμένετε άλλο πλέον έχουν ήδη βγει τα σεμινάρια για αυτόν και είμαι όλος χαρά να τα διδάξω και να σας πω τι έχω δει στο SQL Server 2012 τα τελευταία 2 χρόνια που από beta ασχολούμαι μαζί του

    Ποια είναι όμως αυτά τα σεμινάρια και ποίες εξετάσεις αντιστοιχούν σε αυτά:
    περισσότερα

     
  20. antonch
    Εισαγωγή
    Αν και δεν είμαι αρκετά σίγουρος ότι όλοι έχουν καταλάβει ότι θα πρέπει να αποφεύγουν όπως ο διάολος το λιβάνι τα implicit conversions εντούτοις αυτό είναι κάτι γνωστό και πηγή δεινών αν αυτό γίνεται στην T-SQL. Υπάρχουν αρκετά άρθρα που το αναφέρουν αυτό και με αυτό το post θα συμπληρώσω και εγώ ακόμα ένα παράδειγμα με σκοπό μήπως και κάποιοι συνετιστούν και σταματήσουν να το κάνουν.
    Αυτό το post αποφάσισα να το γράψω μετά από ένα πραγματικό γεγονός που έγινε σε πραγματικό περιβάλλον εργασίας και το οποίο δημιουργούσε αρκετά προβλήματα.
    Για να γίνει κατανοητό αυτό ας έρθουμε να δούμε ένα παράδειγμα και για αυτό το λόγο ας έρθουμε να φτιάξουμε μια βάση με ένα πίνακα που θα παίξει το ρόλο του πειραματόζωου και θα είναι ένας πίνακας πελατών όπου η απόφαση που έχουμε είναι να υπάρχει το ΑΦΜ σαν σημείο αναφοράς για το record άρα και primary key. Σε αυτόν θα βάλουμε 10.000 rows. Όλα αυτά μπορούν να γίνουν με τα παρακάτω script
    περισσότερα
  21. antonch
    Η Ερώτηση
    Αυτές τις ημέρες κατά την διάρκεια ενός σεμιναρίου που κάνω και αφορά το administration του SQL Server ένα συνάδελφος είχε μια ερώτηση και αυτή ήταν
    «Πώς μπορώ να δω το χώρο που καταναλώνουν από την buffer cache οι βάσεις που έχω σε ένα SQL Server instance;»

    Μια εύκολη στην απάντηση ερώτηση αλλά πάντα μου αρέσει να ζητώ από αυτόν που ρωτάει το λόγο για τον οποίο θέλει αυτό που ζητάει καθώς θέλω να αποκλείσω την πιθανότητα να ζητάει άλλα και να θέλει άλλα. Σε αυτή την περίπτωση ο συνάδελφος ήταν εξαιρετικά συνεπής και με συγκροτημένη σκέψη. Η απάντηση του ήταν η εξής:
    «Το ζητάω αυτό καθώς έχω ένα SQL Server instance το οποίο έχει αρκετές databases και θέλω να δω ποιες είναι αυτές που έχουν μεγάλες απαιτήσεις μνήμης ώστε να τις μεταφέρω σε κάποιο άλλο SQL Server instance ή να βάλω κάθε μία σε δικό της αν δω ότι είναι απαιτητικές πολύ, ώστε να βελτιωθεί η απόδοση όλων.»

    Εξαιρετική απάντηση!. Βέβαια αυτή η απάντηση είχε έρθει αφού πρώτα είχε γίνει εκτενείς αναφορά για την σχέση του SQL Server με την μνήμη και την buffer cache που αυτός έχει και τον τρόπο με τον οποίο ανεβοκατεβαίνουν οι σελίδες της κάθε database σε αυτή.
    Η ερώτηση απαντήθηκε αλλά επειδή δεν έγραψε το script του υποσχέθηκα ότι θα του το κάνω post ώστε να το έχει αυτός και όλοι όσοι θα ήθελαν να δουν κάτι παρόμοιο.
    περισσότερα
  22. antonch
    Εισαγωγή
    Πάρα πολλά νέα χαρακτηριστικά έχουν μπει στον SQL Server 2012. Όπως έχω πει και σε προηγούμενα post αλλά και στην πρόσφατη παρουσίαση μου στο 39o Autoexec event κάποια είναι δημοφιλή και ακούγονται συχνά όπως τα AlwaysOn Availability Groups, Auditing Enhancements, Security Enhancements κλπ. Δικαίως και είναι δημοφιλή. Υπάρχουν όμως τόσα άλλα που δεν ακούγονται, κακώς κατά την γνώμη μου. Σε μερικά μάλιστα δεν έχει δοθεί η δέουσα προσοχή.
    Ομολογώ ότι και εγώ σε κάποια δεν είχα δώσει και τόσο μεγάλη σημασία μέχρι που δύο γεγονότα ήρθαν να με κάνουν να ασχοληθώ μαζί τους σε βάθος. Το ένα ήταν είναι η ενασχόληση μου με το νέο σεμινάριο που υπάρχει για την T-SQL στον SQL Server 2012 με τίτλο «Querying SQL Server 2012» και κωδικό 10774 το οποίο πρόσφατα είχα την δυνατότητα να διδάξω, και το άλλο ότι αγόρασα το νέο βιβλίο του Itzik Ben-Gan με τίτλο «Microsoft SQL Server 2012 High-Performance T-SQL Using Window Functions».

    περισσότερα
  23. antonch
    Εισαγωγή
    Ξεκινώντας να γράψω το post αυτό ο προσανατολισμός μου ήταν καθαρά τεχνικός στην πορεία όμως άρχισε να μου αρέσει η ιδέα να πάρει την μορφή αυτή. Μου βγήκε αυθόρμητα γιατί πέρα από το τεχνικό του μέρος προσπαθώ να σκιαγραφήσω το άνθρωπο που έρχεται να γράψει ένα query για να καλύψει τις ανάγκες που αντιμετωπίζει στην καθημερινότητα του.
    Πριν λίγες μέρες μου ήρθε ένα ερώτημα από ένα συνάδελφο που ζήταγε να αντλήσει μια πληροφορία από ένα πίνακα με πολλές χιλιάδες έγγραφές. Βασικά αυτό που ζητούσε ήταν απλά πάρει την πληροφορία με οποιοδήποτε τρόπο. Το πρώτο που τον ρώτησα ήταν αν έχει σκοπό αυτό να το κάνει επαναλαμβανόμενα αλλά η απάντηση του δεν ήταν αρκετά σαφής και συνήθως σε τέτοιες περιπτώσεις η εμπειρία έχει δείξει το αυτό θα επαναλαμβάνεται οπότε καλό είναι να βρεθεί μια λύση τέτοια που όταν εκτελείται να είναι γρήγορη και με όσο το δυνατόν την μικρότερη δυνατή κατανάλωση πόρων. Αλήθεια είναι εύκολο να γίνει κάτι τέτοιο; Μήπως είναι προτιμότερο να είναι γρήγορο ώστε να υπάρχει το μέγιστο user experience άσχετα από την κατανάλωση πόρων; Μήπως πρέπει να βρω τον τρόπο αυτό που θα είναι απλός κατανοητός και εύκολα συντηρήσιμος; Μήπως κάτι άλλο; Ποιό είναι αυτό;
    Ερωτήματα που οι περισσότεροι DB people (Admins & Devs) κάθε φορά που γράφουν κάτι έχουν στο πίσω μέρος του μυαλού τους. Ερωτήματα που είναι βασανιστικά καθώς το ζητούμενο είναι ένα, όλα θα πρέπει να τρέχουν ιδανικά και να δίνουν τον σωστό αποτέλεσμα. Αλλά για στάσου πως είσαι σίγουρος ότι τους βασανίζουν αυτά τα ερωτήματα; Για να πω την αλήθεια έχω αμφιβολίες.
    Ας κάνουμε μερικά δευτερόλεπτα μια παύση και με το χέρι στην καρδιά, τίμια ας δώσουμε μια απάντηση σε όλα αυτά. Μια απάντηση που δεν χρειάζεται να γνωρίζει κανείς άλλος παρά μόνο εμείς. Κρατήστε την απάντηση αυτή χωρίς να κάνετε καμία αυτοκριτική αλλά απλά σαν μια διαπίστωση.
    περισσότερα
×
×
  • Create New...