Category Archives: code

Greeklish σε Ελληνικά

Εχουν γίνει κατά καιρούς αρκετές προσπάθειες να μεταφραστούν και να ορθογραφηθούν οι λέξεις που γράφουν οι χρήστες του internet από greeklish σε ελληνικά ή κατά το ελληνικότερον greeklish to greek. Το πρόβλημα που αντιμετωπίζουν όλοι είναι σε γενικές γραμμές ένα! Ο καθένας γράφει greeklish όπως του γουστάρει. Αυτό είναι εντελώς φυσιολογικό για μια γλώσσα που ουσιαστικά είναι σε μια κατάσταση “ζόμπι”. Χρησιμοποιείται χωρίς να υπάρχει τεκμηρίωση της! Δεν έχει γραμματική, δεν έχει κανόνες, δεν έχει ορθογραφία, δεν έχει συντακτικό, δεν έχει σημεία στίξης, δεν έχει αλφάβητο, δεν έχει τίποτα. Οποιος θέλει να την χρησιμοποιήσει, ορίζει εκείνη τη στιγμή, όσα και όποια από τα προηγούμενα θέλει κατά το δοκούν. Κατά πως θα του κάτσει. Continue reading

What is my Public/External IP

Ηθελε πριν λίγες μέρες ένας φίλος να φτιάξει ένα προγραμματάκι που να του δείχνει ποιά είναι η IP που έχει ο router του όταν συνδέεται στο Internet. Φυσικά η σύνδεση του είναι με δυναμική IP address και γενικά αυτή αλλάζει κάθε όποτε της καπνίσει. Οι βιβλιοθήκες και τα APIs των Windows (των λειτουργικών γενικότερα) μπορούν να σου δώσουν πληροφορίες για τον υπολογιστή τον ίδιο και όχι κάποια άλλη συσκευή ειδικά όταν αυτή μπορεί να συνδέεται στον υπολογιστή μέσα από κάποιο δίκτυο να υπάρχουν proxies, firewalls, και ότι άλλα καλούδια μπορεί να έχει στημένα κάποιος για να νομίζει πως είναι ασφαλής. Continue reading

Listbox MultiSelection

Αφορμή για το συγκεκριμένο post ήταν ένα ερώτημα για τη χρήση των listboxes στο freestuff.gr. Αν και το list box στο αρχικό ερώτημα δεν χρειαζόταν παρά single selection, οπότε μπορούσε ο προγραμματιστής να πάρει την τιμή από το property Value, δίνοντας μια απλή λύση, τέθηκε ένα δεύτερο πολύ πιο ενδιαφέρον ερώτημα σχετικά με το πως θα μπορούσε να χρησιμοποιηθεί muti-selection και με πως θα μπορούσαν να αποθηκεύονται/φορτώνονται οι επιλογές. Continue reading

Ευρώ Ολογράφως – VB Use

Είχα ξεκινήσει πριν από λίγο καιρό να μεταφράζω κώδικα σε C# με σκοπό να γίνει C++ για μετατροπή ενός ποσού σε Ευρώ Ολογράφως. Αφού έφτασε σε ένα σημείο που δούλευε ικανοποιητικά μαζεύτηκε αυτό και μερικές άλλες λειτουργίες στο DVAUtils.dll.  Αυτό το dll εξάγει μερικές functions που κάνουν αυτή τη μετατροπή του ποσού σε λεκτικό, αλλά και ενός COM object που κάνει το ίδιο πράγμα. Υπάρχουν και μερικές ακόμα functions και επιπλέον com objects αλλά είναι άσχετα με το συγκεκριμένο. Continue reading

VB Declare Function Part 2

Το πρόβλημα με το να παίρνεις δεδομένα των οποίων το μέγεθος δεν το γνωρίζεις εξ’ αρχής μετατίθεται στο ποιός θα κάνει το allocation της μνήμης. Η VB ή το DLL; Αν το κάνει η VB θα μπορεί να το ελευθερώσει το DLL (γιατί κάποιος πρέπει να το ελευθερώσει).

Η πιο απλή και σίγουρη λύση είναι αυτός που δεσμεύει τη μνήμη, αυτός και να την ελευθερώνει. Αυτή η τακτική όμως δεν μπορεί να εφαρμοστεί – εύκολα – σε όλες τις περιπτώσεις.

Το άλλο πρόβλημα με τα strings είναι ότι κάποιοι μπορεί να χρησιμοποιούν ansi strings και άλλοι unicode. Στα windows dlls αυτά ξεχωρίζουν από την ονομασία της function που εξάγει το dll. Συνήθως είναι της μορφής functionA (για την ansi version) ή functionW (για την unicode version). Στη δεύτερη περίπτωση μπορεί να χρησιμοποιηθεί το string από την vb όπως είναι, ενώ στην πρώτη περίπτωση πρέπει να γίνει μετατροπή από ansi σε unicode (ή το αντίστοφο). Continue reading

VB Declare Function Part 1

Πολλές φορές προσπαθούμε να κάνουμε πραγματάκια σε VB / VBA κώδικα που βλέπουμε να κάνουν οι άλλες γλώσσες πανεύκολα και εμείς με την VB / VBA δυσκολευόμαστε. Ψάχνουμε να βρούμε στο internet έτοιμα ActiveX controls που να μας δίνουν δυνατότητες που παρέχει (σχεδόν) έτοιμες το λειτουργικό σύστημα. Τα windows έχουν από μόνα τους χιλιάδες dll που δίνουν έτοιμη λειτουργικότητα από τις συναρτήσεις που εξάγουν.

Γιατί λοιπόν να μην χρησιμοποιήσουμε από την VB / VBA όλες αυτές τις functions που η C παίρνει τσάμπα, και να μην κοιτάξουμε και τα παραδείγματα που υπάρχουν έτοιμα ώστε να έχουμε κάποιο σημείο να ξεκινήσουμε; Continue reading

Στρογγυλοποίηση, επιτέλους

Λοιπόν, δεν υπάρχει πιο εκνευριστικό πράγμα από το να ψάχνεις για κάτι απλό και να μην το βρίσκεις. Αυτή η standard library έχει ένα σωρό συναρτήσεις και κάτι απλό όσο μια στρογγυλοποίηση δεν δέησε κανένας επιτέλους να την ενσωματώσει;

Μα καλά με τα νεύρα μου (μας) παίζουν;

Εντάξει δεν είναι και τόσο δύσκολο να φτιαχτεί, αλλά θα μπορούσε να υπάρχει έτοιμη και ίσως να την πείραζαν λίγο ώστε να είναι και γρήγορη. Continue reading

Ευρώ Ολογράφως

Εψαχνα εδώ και λίγο διάστημα για μια έτοιμη υλοποίηση εμφάνισης ποσών σε ευρώ στην λεκτική τους αναπαράσταση. Είδα αρκετές υλοποιήσεις σε διάφορες γλώσσες (λέμε τώρα, VB κάτι, ήταν όλες, με κάποιες εξαιρέσεις που ήταν μεταφράσεις σε C# των αντίστοιχων VB) με την κάθε μία να έχει τα υπέρ και τα κατά, αναλόγως τις ανάγκες που υπήρχαν.

Αλλη υλοποίηση υποστηρίζει ποσά μέχρι 999.999€ άλλη υποστηρίζει μέχρι 2 δεκαδικά, άλλη υποστηρίζει μεγαλύτερα ποσά, άλλη αρνητικά ποσά. Το να είναι μια υλοποίηση μετάφραση σε άλλη γλώσσα δεν είναι κάτι το μεμπτό, απλώς μου φάνηκε αστείο που όλες οι υλοποιήσεις ήταν VB ή VB.NET, ή VBScript. Ούτε καν COBOL! (Καλά που την θυμήθηκα αυτή τώρα; 🙂 )

Αυτό που έψαχνα να βρώ είναι μια κομψή υλοποίηση σε κάποια γλώσσα που να μην μου είναι εντελώς άγνωστη ώστε να μπορώ να προσαρμόσω τον κώδικα στα γούστα μου. Τον κώδικα που μου άρεσε περισσότερο τον βρήκα σε μια vb.net υλοποίηση του panos_sniper που έχει αναρτήσει στο dotnetzone.gr. Θα προτιμούσα κάτι σε C ή C++ αλλά και η vb.net δεν είναι πρόβλημα. Μπορεί να τρέξει, να δοκιμαστεί ότι δουλεύει σωστά και αν όλα είναι εντάξει το μόνο που μένει είναι να χρησιμοποιηθεί. Continue reading

Υπολογισμός γινομένου

Αν και δεν συνηθίζω να προβάλλω κώδικα που έχει γράψει άλλος, παρά προσπαθώ να δίνω το link στη σελίδα του, ο συγκεκριμένος κώδικας αφορά δημοσίευση του Alice_Cooper που είδα στο τεχνολογικό forum freestuff.gr που είμαι μέλος, οπότε μάλλον είναι προτιμότερο ο σύνδεσμος να δείχνει το συγκεκριμένο θέμα.

Παρότι το ερώτημα είναι αρκετά απλό, η λύση που δώθηκε είναι πολύ πρωτότυπη! Τουλάχιστον εγώ δεν την είχα ξαναδεί και οι σκέψεις μου ακολουθούσαν πιο τετριμένα μονοπάτια.

Μια αρκετά διαφορετική υλοποίηση, για να θυμόμαστε να μην μείνουμε σε αυτά τα πέντε πράγματα που μάθαμε, αλλά να ξεσκουριάζουμε όποτε μπορούμε το μυαλό μας.

Οπως λέει και το slogan της apple λοιπόν:

think different

(Για να προλάβουμε πρίν εμφανιστεί κανένα πονηρό χαμογελάκι, αυτή η δημοσίευση γράφτηκε σε windows pc). 🙂

Ελεγχος Εγκυρότητας Α.Φ.Μ.

Πρόσφατα χρειάστηκε να μεταφέρω δεδομένα από μια βάση δεδομένων σε μια άλλη. Φυσικά όπως θα γνωρίζουν οι περισσότεροι αυτές οι διαδικασίες ποτέ δεν είναι τόσο απλές όσο ακούγονται, ειδικά όταν πρέπει να πέσει μαγείρεμα στα δεδομένα (βλ. διαφορετικοί πίνακες, διαφορετικοί τύποι πεδίων, διαφορετικές τιμές).

Σε αυτά τα δεδομένα υπήρχε και το ΑΦΜ, και μιας και πολλές φορές γινόταν λανθασμένη καταχώρηση, ήταν ευκαιρία να γίνει ένα ξακαθάρισμα. Ψάχνοντας στο Internet για αλγόριθμους ελέγχου του ΑΦΜ βρήκα κάποιες λύσεις σε διάφορες γλώσσες, οπότε έπιασα μια που βρήκα στο digitalnews.gr (σε C# για να μην κάνω και πολλές αλλαγές – έτσι νόμιζα τουλάχιστον) και (αντ)έγραψα την δικιά μου C# function και, ιδού το αποτέλεσμα: Continue reading