|
|
Πρόσφατες Δημοσιεύσεις
-
|
Πώς να προσληφθείτε ως υψηλόμισθος developer σε Ελληνική εταιρία πληροφορικής: Ενας καταπληκτικός δεκάλογος 11 άρθρων (!) από το Ζαχαρία....
|
-
|
'Εβαλα ένα νέο αρθράκι με κώδικα για τον έλεγχο εγκυρότητας και για δημιουργία αριθμών IBAN. Θα το βρείτε εδώ: IBAN number processing Αν χρησιμοποιήσετε τη δημιουργία του IBAN από το BBAN, πολύ προσοχή γιατί παρ'όλο που ο BBAN τις περισσότερες φορές ταυτίζεται με τον αριθμό λογαριασμού που μας δίνει η τράπεζα, υπάρχουν περιπτώσεις που δεν είναι. Ο κώδικας έχει γραφτεί ακολουθώντας τις οδηγίες του European Commmittee for Banking Standards (ECBS) (EBS204 V3.2 - August 2003)...
|
-
|
Originally posted in Greek here . I've build a smart client application for the management of a database table with the classic smart client architecture: The data access layer gets data from the database, wrap it up in a dataset and push it through a web service to the client application. The client caches data between sessions, updates those data when they're changed on the database, sends updates back when requested etc. This application is a very simple address book (consisting of only one table for this example simplicity). The authorization schema is flat simple, all users have access to all the data and the application is going to be released commercially. That means that the use of the application will vary among the different users: One will use the address book to hold the 100 contacts that used to manage in outlook, one other will use it for the 1,000 contacts of his small company and a third, a big multi-national company, will use it to hold the contact info of it's 1,000,000 clients. By reading Microsoft...
|
-
|
Το CodeLib (ή, με την πλήρη του ονομασία, CodeLibrary.NET), είναι μια εφαρμογή προσωπικής αρχειοθέτησης για κωδικα, αρχεία, εικόνες, URLs, σελίδες Web και οτιδήποτε άλλο μπορείτε να φανταστείτε. Διαθέτει ένα εξαιρετικά ανοιχτό και απλό user interface και συνεργάζεται με όλες τις δημοφιλείς databases (MS Access, SQL Server/MSDE, Firebird, MySQL)...
|
-
|
Τελικά όταν σε χτυπάει η μοίρα σε χτυπάει μαζικά και αλύπητα... Χτες έβαψα το computer room και άλλαξα τους διακόπτες στους τοίχους. Και οι παλιοί και οι καινούργιοι είναι Legrand. Φοβερή ποιότητα για κάτι σκατουλάκια των 5-8 ευρώ. Σχεδόν δεν βιδώνεις. Εγώ είχα μείνει στις βλακείες με το λαστιχάκι που σου σπάγανε τα νεύρα. Τους βάζω λοιπόν στον τοίχο, κλείνω τα καπάκια, το φως δούλευε μια χαρά. Σήμερα το πρωί πάω να ανάψω και ...τζίφος. Η λάμπα είναι ok,η συνδεσμολογία στους διακόπτες ok, τι να φταίει άραγε... μέχρι αύριο που θα το ψάξω παραπάνω γράφω στα σκοτεινά. Σήμερα το πρωί πάω στη δουλειά Το pc κλειστό. Ότι άρχισα να τα χώνω στην καθαρίστρια όταν βγήκε το login screen των windows με κάτι χρώματα περίεργα και artifacts από δω κι από κει... Μετά από ψάξιμο και δοκιμές ο ένοχος αποδείχθηκε η κάρτα γραφικών. Με κρέμασε 2-3 ώρες μέχρι να βρεθεί προσωρινή αντικαταστάτρια... Επιστρέφω σπίτι, προσπαθώ να ανοίξω το pc, τίποτα. Ούτε φωνή ούτε ακρόαση. Υποψιάζομαι το τροφοδοτικό, τίποτα. Βάλε βγάλε ξαναβάλε καταλήγω...
|
-
|
Ενα χαρακτηριστικό που πολύ συχνά μας "λείπει" όταν κοιτάμε τα folders μας στα Windows είναι να γνωριζουμε το συνολικο μέγεθος του φακέλου μαζί με τα αρχεία που περιέχει. Πολύ συχνά (ειδικά άν έχουμε φακέλους στους οποίους αρχειοθετούμε multimedia) είναι χρήσιμο να γνωρίζουμε ποιοί είναι αυτοί με το μεγαλύτερο συνολικά μέγεθος. Το FolderSize, το οποίο θα βρείτε στη διεύθυνση http://foldersize.sourceforge.net/ προσθέτει στον Windows Explorer αυτή ακριβώς τη στήλη που λείπει. Σκανάρει δυναμικά τους φακέλους στο background και σας προσφέρει την πολύτιμη αυτή πληροφορία, την οποία μπορείτε να προσθέτετε ή να αφαιρείτε κατά βούληση, όπως ακριβώς και όλες τις άλλες στήλες. Τρέχει σε Windows 2000/XP (και 2003), και έχει φτιαχτεί σε VS.NET 2003 με C++....
|
-
|
Ο Απόλυτος Ξερόλας ξαναχτυπά και, με την πολυετή εμπειρία που τον χαρακτηρίζει, μας δίνει μαθήματα καταστροφής μιας ιδανικής πρόσληψης....
|
-
|
Μέχρι σήμερα χρησιμοποιούσα το spell check του gmail για τα αγγλικά μου, μου ερχόταν πιο γρήγορο από του word. Σήμερα όμως έριξα μέσα ένα post μου για να ελέγξω την ορθογραφία των αγγλικών λέξεων και γλουπ !!!! οι ελληνικές λέξεις δεν κιτρίνισαν... Γράφω μια λέξη λάθος... κιτρινίζει... κάνω κλικ.... οοοοπ, προτεινόμενες διορθώσεις..... Κοίτα να δεις πόσο γρήγορα υποστηρίζουν κάποιοι την ελλαδίτσα.... Πι ες: μπλέκει λίγο τα πράγματα όταν είναι ανάμικτα ελληνικά και αγγλικά......
|
-
|
Πολλές από τις διαφορές του να έχω blog στο dotnetzone ήταν προφανείς και πριν μεταφέρω το blog μου εδώ. Αυτό που δεν περίμενα σε καμία περίπτωση ήταν η τεραστίων διαστάσεων διαφορά που κάνει στο ranking του google . Προφανώς, πολύ περισσότερα links οδηγούν εδώ από το blogs.gr που ήμουν, προφανώς οι γύρω σελίδες είναι πολύ πιο σχετικές αλλά και έτσι δεν το περίμενα. Τα περισσότερα posts μου βγαίνουν σε πολύ ψηλές θέσεις στο google για αρκετά γενικά keywords. Αποκορύφωμα: Ψάχνω για "resize a bitmap", κάτι που μου φαινόταν τόσο γενικόλογο και τόσο πολυπαιγμένο, που δεν υπήρχε περίπτωση να εμφανιστεί μέσα στις πρώτες σελίδες, και μάλιστα με ηλικία μικρότερη της μίας εβδομάδας... Πρώτο αποτέλεσμα κυρίες και κύριοι.... Πολύ θα ήθελα να δω αναλυτικά στατιστικά του dotnetzone.......
|
-
|
Η κλασσική ρουτίνα, που μάλλον οι περισσότεροι έχουν... Αν κάποιος δεν την έχει μπορεί να τη βρει εδώ: Έλεγχος εγκυρότητας ΑΦΜ...
|
-
|
Ειπα και εγώ σαν καλό παιδί να δοκιμάσω το Logging and Instrumentation Application Block του Enterprise Library , σε μια εφαρμογή που ήδη χρησιμοποιεί το Data Access Application Block. Στο documentation ειδα οτι με μια γραμμή κώδικα μπορώ να γράφω σε όποιο sink (ουσιαστικά "μέρος" που κανω log - email, flat file, database κλπ). Ηθελα database. Σε πολλές κλήσεις υπάρχει ένα object που πηγαινοέρχεται, του οποίου ορισμένα properties θα ήθελα να γράφονται σε ξεχωριστά πεδία του πίνακά μου. Η απογοήτευση! Το database sink παίζει με μια συγκεκριμένη Stored Procedure της οποίας μπορείς να μεταβάλλεις το όνομα αλλα ΟΧΙ τα arguments που περνάνε σε αυτή! Οριστε τα arguments: EventID, Category, Priority, Severity, Title, Timestamp, MachineName, AppDomainName, ProcessID, ProcessName, ThreadName, Win32ThreadId, Message, FormattedMessage Δεν έχω τη δυνατότητα να περάσω άλλα εκτός αν κάνω extend το DatabaseSink class. Αλλα μετά, χάνω την ευκολία που μου παρέχει το configuration GUI! Και μην μου πει κανείς να πάρω το FormattedMessage...
|
-
|
Ειχαμε μια σκεψη με τον δ/ντη μου πριν αρκετους μηνες, για την οποια και ανελαβα να φτιαξω ενα prototype, ετσι για να δουμε πως ακριβως μπορει να "σχηματιστει" μετα απο καποιο διαστημα δουλειας και που μπορει να φτασει. Σε γενικες γραμμες, η ιδεα ηταν να φτιαχτει ενας IDE, οπου θα υπαρχουν blocks με predefined functionality, τα οποια χρηστες θα μπορουσαν να τα χρησιμοποιησουν ενωνοντας τα (καθε block εχει >= 1 "εξοδους" που δειχνουν σε αλλο/α block/s) και να δημιουργουν ετσι ενα "προγραμμα". Π.χ., υπαρχει αυτη τη στιγμη ενα block (units τα ονομαζω) που σχετιζεται με databases (π.χ. μπορεις να καλεσεις ενα stored procedure (η και ad-hoc sql) με η χωρις παραμετρους και να κανεις assign το αποτελεσμα σε memory variables που εσυ εχεις ορισει απο πριν), αλλο που φερνει ενα random number, αλλα που ασχολουνται με string parsing κτλ κτλ. Οτι functionality θελεις μπορεις να το βαλεις. Εμεις το εχουμε "στησει" ετσι γιατι μεσω αυτου φτιαχνουν καποιοι εδω sms services. Εκτος του IDE, εχω φτιαξει και ενα runtime το οποιο...
|
-
|
Reading a recent post in dotNetZone.gr I decided to implement as a proof-of-concept an algorithm using regular expressions to convert a decimal numeral representing an amount of money, to a verbal from in Greek text. So to make it more obvious the problem was to convert 1,234,567.89 Euros to the string "One Million, Two Hundred Thirty Four, Five Hundred Sixtyseven Euros and Eightynine Cents" (only that the text should be in Greek and not English as I typed here to make the concept clear for everyone). The algorithm I came up with is not the best that I could do but is enough as a proof of concept. Do not be alarmed if it seems too long at first glance. It's just the code comments that make it so long. So to find the algorithm: Either read it online in my relevant blog article in dotNetZone.gr here . Apart from code comments, all other text in the refered article is in Greek but since you are reading this you do not realy need to be able to understand anything else or download GreekEuroVerbalizer.zip (220,72 KB)...
|
-
|
Έβαλα δυο νέα functions, το πρώτο δέχεται ένα bitmap και maximum διαστάσεις και κάνει resize το bitmap χωρίς να το strechάρει, χρήσιμο για thumnails. Το δεύτερο δέχεται ένα bitmap και jpeg quality rate και επιστρέφει ένα memory string με το jpeg. Θα τα βρείτε εδώ: Resize a bitmap Get a Jpeg MemoryStream from a given bitmap and for specified compression rate...
|
-
|
Σχετικά: Smart clients over large db schema Έχω ένα smart client, το οποίο διαχειρίζεται έναν πίνακα σε μια βάση δεδομένων με τη γνωστή αρχιτεκτονική: Το dal βουτάει τα δεδομένα από τη βάση, τα χώνει σε ένα dataset και τα πασάρει μέσω ενός web service στον client. Ο client cachάρει κάποια δεδομένα μεταξύ των sessions, ενημερώνει και ενημερώνεται για αλλαγές κλπ κλπ. Η εφαρμογή αυτή είναι ένα address book (του ενός πίνακα, χάρης απλότητας του παραδείγματος), το authorization είναι απλοϊκό, όλοι οι χρήστες έχουν πρόσβαση σε όλα τα δεδομένα) και θα διατεθεί εμπορικά. Αυτό σημαίνει ότι η χρήση θα είναι διαφορετική από διαφορετικούς χρήστες. Πχ, ένας χρήστης θα την πάρει και θα κρατάει μέσα τις 100 επαφές που έχει στο outlook. Άλλος χρήστης θα την πάρει και θα κρατάει μέσα τις 1000 επαφές της επιχείρισής του. Ένας τρίτος χρήστης, μια πολυεθνική, θα κρατήσει μέσα τα στοιχεία του 1.000.000 πελατών της. Βλέποντας τα παραδείγματα της microsoft καθώς και ότι μπόρεσα να βρω στο web, καταλαβαίνω ότι πραγματεύονται τελείως...
|
-
|
Αγόρασα πρόσφατα το NOD32. Πολύ καλό, πολύ "ελαφρύ", αλλά έχει ένα μεγάλο πρόβλημα συνεργασίας με το Google Desktop Search. Οσοι λοιπον επιθυμείτε να έχετε και τα δύο, αναμένετε επόμενες εκδόσεις του ενός ή του άλλου, ή εναλλακτικά χρησιμοποιήστε κάποια άλλη desktop search μηχανή (π.χ. MSN) ή κάποιο άλλο antivirus. Περισσότερα για την ασυμβατότητα του NOD32 με το Google Desktop Search μπορείτε να βρείτε στο Troubleshooting Section της Google, στη διεύθυνση http://desktop.google.com/support/bin/answer.py?answer=17053...
|
-
|
Τυγχάνω μέλος της Brainbench εδώ και μερικά χρόνια, και σκέφτηκα οτι θα ήταν χρήσιμο να τη γνωρίζατε κι εσείς. Τι είναι η Brainbench; Η Brainbench είναι μια ανεξάρτητη υπηρεσία online εξέτασης και πιστοποίησης σε γνωστικά αντικείμενα σχετικά με το IT αλλά όχι μόνο (για παράδειγμα, περιλαμβάνει και πιστοποιήσεις νοσηλευτικής). Ιδρύθηκε το 1998 και σήμερα (σύμφωνα με τα λεγόμενά τους) οι πελάτες τους αγγίζουν τα 6 εκατομμύρια. Μεταξύ των πελατών της βρίσκονται σημαντικές εταιρίες του Fortune 500 . Η δραστηριότητά της απλώνεται σε 120 χώρες . Πως λειτουργεί; Γράφεσαι ως μέλος. Επιλέγεις τα θέματα στα οποία επιθυμείς να εξεταστείς. Δίνεις online εξετάσεις οι οποίες έχουν συνήθως 40 ερωτήσεις multiple-choice , έχοντας ως στόχο να επιτύχεις το passing score, που είναι 2,75 στα 5,00 . Περνώντας τις εξετάσεις, αποκτάς πιστοποίηση στο συγκεκριμένο γνωστικο αντικείμενο π.χ. ADO.NET ενώ παράλληλα έχεις το δικαίωμα να παραλάβεις ένα πραγματικό πιστοποιητικό (παπυροειδές) ως απόδειξη της πιστοποίησης, το οποίο είναι ιδιαίτερα...
|
-
|
Μια απλή ρουτινούλα που μετατρέπει html με τα πολύ βασικά tags (b, i, u. strong, em, p) και ελληνικούς χαρακτήρες σε RTF. Την έγραψα για να μετατρέπω κείμενα που έχω σε εφαρμογές μου σε html όταν θέλω να τα περάσω σε crystal reports (την έκδοση που δίνουν με το VS 2003) αφού δεν υποστηρίζει parsing από html. Ίσως να φανεί χρήσιμη και σε κάποιον άλλο. Θα το βρείτε εδώ: " Convert HTML to RTF (HtmlToRtf Converter)" PS. Τα σχόλια πάνω στο άρθρο είναι στα αγγλικά. Γενικά γράφω τα αρθράκια μου στα αγγλικά αν μπορούν να χρησιμοποιηθούν και από μη γνωρίζοντες την ελληνική......
|
-
|
Εχοντας δουλέψει αρκετά σε Web development (αν και περισσότερο με την παλιότερη "γενια", ASP 3.0), πολλές φορές βρέθηκα αντιμέτωπος με προβλήματα layout. Η ανάλυση που συνήθως δουλεύω είναι 1024x768 ή 1280x1024. Τι γίνεται όμως αν οι προδιαγραφές λένε οτι κάτι πρέπει να φαίνεται σωστά σε ανάλυση 800x600; Η λύση βρίσκεται εδώ: http://www.brianapps.net/sizer.html Το sizer είναι ένα μικρό προγραμματάκι που "κάθεται" στην taskbar και με μια απλή κίνηση σας επιτρέπει να αλλάξετε το μέγεθος του τρέχοντος παραθύρου σε μια από τις στανταρντ αναλυσεις (640, 800, 1024 κλπ) ενώ ταυτόχρονα, όταν κάνετε resize χειρωνακτικά σε ένα παράθυρο, ένα tooltip σας ενημερώνει για τις ακριβείς του διαστάσεις σε pixels (υψος, πλάτος)....
|
-
|
Μετατρέπει ελληνικό κείμενο σε λατινικούς χαρακτήρες. Χρησιμοποιεί διάφορους κανονισμούς που βρήκα από δω και από κει στο web ώστε να κάνει σωστή απόδοση της μετάφρασης, πχ. όπως γίνεται όταν τα ελληνικά ονόματα βγαίνουν με λατινικούς χαρακτήρες στα διαβατήρια. Θα το βρείτε στα αρθράκια μου εδώ: " Μετατροπή ελληνικών strings σε λατινικά (greenglish) "...
|
-
|
Εδώ θα βρείτε ο,τι θα θέλατε (και δεν θα θέλατε) να ξέρετε για το System.Web.Mail: http://www.systemwebmail.com/...
|
-
|
Αν ανήκετε, όπως και εγώ, στην κατηγορία αυτών που η ενοτητα Programs του Start menu τους καταλαμβάνει τρίστηλο σε ανάλυση 1280x1024, τότε θα έχετε αναγνωρίσει την ανάγκη να καταφύγετε σε εναλλακτικές λύσεις για να ξεκινάτε γρήγορα τις εφαρμογές σας χωρίς να ψάχνετε στο χάος που έχει δημιουργηθεί εκεί. Μια λύση είναι το quickLaunch bar, αλλά γεμίζει γρήγορα. Μια άλλη λύση που διατηρώ ακόμα, είναι να φτιάχνω ένα custom toolbar με κατηγοριοποιημένες τις εφαρμογές μου και να τις ξεκινάω από εκεί, αλλά θέλει συντήρηση. Ωσπου ανακάλυψα το launchy, εδώ: http://launchy.sourceforge.net/ Ειναι μια απλή freeware εφαρμογή που κάνει index το start menu σας. Πατώντας ένα hotkey εμφανίζεται ένα μικρό παραθυράκι. Αρχίζετε να γράφετε το όνομα της εφαρμογής σας ωσπου να εμφανιστεί στο διπλανό πεδίο η εφαρμογή που επιθυμείτε. Πατατε Εντερ. Ξεκινάει. Απλό. Για να κάνουμε ένα πείραμα: Θέλω να δω το παράθυρο των Services. Απο το Start Menu: Start->Programs->Control Panel->Administrative Tools->Services (ας υποθέσουμε οτι...
|
-
|
Έβαλα το " Δημιουργία ελληνικού λεκτικού για ποσά σε ευρώ " στην κατηγορία Algorithms . Τον κώδικα τον είχα δημοσιεύσει και παλαιότερα σε κάποιο thread , το βάζω και εδώ για λόγους οργάνωσης. Τις επόμενες ημέρες θα ακολουθήσουν και άλλα κομμάτια κώδικα στην ίδια κατηγορία, που λύνουν διάφορα συχνά εμφανιζόμενα προβλήματα, όχι δύσκολα στην επίλυσή τους, αλλά μπελαλίδικα στην υλοποίησή τους όταν το μυαλό του developer έχει αποροφηθεί από το business logic. Σχόλια σχετικά με τον κώδικα παρακαλώ να γίνουν στο ίδιο το άρθρο....
|
-
|
Αν και λίγο πρόωρα, εύχομαι σε όλους καλό Χειμώνα. Το blog αυτό ξεκίνησε πριν λίγες μέρες και έχει εμπλουτιστεί κυρίως με δημοσιεύσεις οι οποίες κατά καιρούς έχουν περάσει από το www.dotnetzone.gr . Ηταν ένα όνειρο που έγινε πραγματικότητα, μια και πολύ καιρό τώρα "κλαιγόμουν" για ένα χώρο ο οποίος θα βρισκόταν υπό την "προστασία" του dotnetzone.gr και στον οποίο θα μπορούσα να δημοσιεύσω πράγματα τα οποία ανακάλυπτα ή επινοούσα καθημερινά για να κάνω καλύτερα τη δουλειά μου, έτσι ωστε να ωφεληθούν και άλλοι συνάδελφοι. Λοιπον, τώρα πλέον ο χώρος αυτός είναι πραγματικότητα. Θα προσπαθήσω να τον κρατήσω ζωντανό και να παρουσιάζω πράγματα τα οποία θα μπορούσαν να αποτελέσουν χείρα βοηθείας και για άλλους συναδέλφους του χώρου. Ορισμένες φορές θα βλέπετε απλές, παιδικές λύσεις ή προτάσεις, αλλά ο στόχος δεν είναι να παρουσιάζουμε το super-duper-extra fries πράγμα, ετσι δεν είναι; Ο στόχος είναι να μοιραζόμαστε τον τρόπο που σκεφτόμαστε και τον τρόπο που λειτουργούμε, ως επαγγελματίες αλλά ταυτόχρονα και (αρκετοί...
|
-
|
Εντάξει, εντάξει. Το ξέρω! Το VS2005 τα έχει όλα αυτά! Ωσπου όμως να το χρησιμοποιήσουμε, γιατί να μην έχουμε ορισμένες δυνατότητες refactoring και στο VS2003; Το βρήκα σε μια έτοιμη mdb του CodeLib ( http://dotnet.4all.cc ) που δίνεται μαζί με την εφαρμογή: Thanks to Visual Studio.NET macros, it is quite simple to automate the task of transforming a Public field into a Property with the same name that accesses a private field of the same type. Press Alt-F11 (or invoke the Macro IDE from the Tools|Macros submenu, select one macro module in the left-most treeview, and double-click on it to bring up the corresponding code module. Now cut and paste the following procedure: Sub MorphVariableIntoProperty() DTE.ActiveDocument.Selection.StartOfLine _ (vsStartOfLineOptions.vsStartOfLineOptionsFirstText) DTE.ActiveDocument.Selection.WordRight(True) DTE.ActiveDocument.Selection.Delete() DTE.ActiveDocument.Selection.Text = "Private m_" DTE.ActiveDocument.Selection.EndOfLine(True) DTE.ActiveDocument.Selection.Copy() DTE.ActiveDocument.Selection.EndOfLine()...
|
|
|
|