|
dotNETZone.gr Weblogs
-
Μετά από το πολύ ενδιαφέρον σχόλιο της Νατάσας είπα να συνεχίσω το προηγούμενο post (έχω κάνει linked list από τα looper posts :) ) Η ιδέα είναι να δείξω ποσο ισχυρή και dynamic μπορεί να είναι η Ruby και ότι τέτοιου είδους puzzle δεν έχουν κανενα μα κανενα νόημα class String def + (value) self end end Όταν εκτελεστεί ο παραπάνω κώδικας αλλάζω την + μέθοδο στο string αντικείμενο . Και αυτή η συμπεριφορά θα ισχύει για όλα τα strings από εδώ και πέρα. Τέτοιου τύπου αλλαγές μπορούν να γίνουν σε όλ α τα αντικείμενα της Ruby For Ruby Adventures check http://poignantguide.net/ruby/ Το συγκεκριμένο guide άρεσε και στον Joel...
|
-
Training στην Τρια Κιλά Κώδικα ΑΕ! Επιτέλους η εταιρία αυτή θα ...μυριστεί πως να φτιάχνει καλό software! Λετε; Να σας δώσουμε ένα hint: Στο training συμμετέχει ο Απόλυτος Ξερόλας, R&D Manager...πιστεύετε ακόμα οτι θα ΜΑΘΟΥΝ κάποτε να φτιάχνουν σωστό software; :)...
|
-
Σε συνεχεια του προηγουμενου post μια πιθανή λύση σε C# του προγουμένου puzzle θα ήταν και η κάτωθι ( με την παραδοχή ότι μπορούμε να χρησιμοποιήσουμε και δικούς μας τύπους και όχι μονο τα primitives τ η ς γλώσσας ) class Infinity { public static Infinity operator + (Infinity infinity, int value) { return infinity; } } Infinity i = new Infinity(); while (i == i + 1){} Βεβαια στην Java δεν ισχύει καθώς δεν υποστηρίζεται operator overloading...
|
-
Κάνω copy/paste από το http://www.innovation2006.gr/ τα αποτελέσματα της πρώτης φάσης του διαγωνισμού της OTEnet με στόχο να συλλέξω μερικά σχόλιά σας . Στον διαγωνισμό υποβλήθηκαν 2.622 προτάσεις, 48 από τις οποίες προκρίθηκαν στην Β' Φάση. Όσοι πιστοί προσέλθετε! (σ.σ: μια από τις προτάσεις που πέρασαν στην Β' φάση έχω υποβάλει κι εγώ μαζί με δύο φίλους/συνεργάτες και καθώς ο διαγωνισμός είναι σε εξέλιξη, θα είμαι λίγο φειδωλός στα δικά μου σχόλια). Αποτελέσματα Α' Φάσης Στην κατηγορία ''Εφευρετικότητα'' προκρίθηκαν 20 προτάσεις + 2 που ισοψήφησαν : Εξατομικευμένη πληροφόρηση μέσω RSS και 'Collaborative Filtering' Μέθοδος πληρωμής τελών κυκλοφορίας με τη χρήση προπληρωμένης κάρτας De.dalici.usWeb: Καινοτόμα Υπηρεσία Παγκόσμιου Ιστού (Web Service) για την αποτελεσματικότερη ανάπτυξη του e-business στην Ελλάδα και στα νεοεισερχόμενα μέλη της Ευρωπαϊκής Ένωσης. Αυτόματο Παρατηρητήριο Τιμών Πρατηρίων Υγρών Καυσίμων Υποστήριξη χρηστών αστικών μέσων μαζικής μεταφοράς με διαδικτυακών υπηρεσιών μέσω κινητών τηλεφώνων....
|
-
Have a look at Fred Chong's post for real world SaaS application architecture videos that Ron Jacobs shooted and posted in in http://www.skyscrapr.net/ the one stop portal for Architects. Fred Chong , together with Gianpaolo Carraro are the core SaaS Microsoft team. http://blogs.msdn.com/fred_chong/archive/2006/11/18/saas-application-architecture-case-study-remend.aspx...
|
-
Θέλω να μεταφέρω ένα ωραίο code puzzle από το βιβλίο Java Puzzlers (traps, pitfalls and corner cases)... Έχουμε τον παρακάτω κώδικα while (i == i + 1) {} Τι τύπο και τι initialization πρέπει να έχει το i για να έχουμε ένα ωραίο infinite loop...????...
|
-
I've been bitten by an almost undocumented bug of the Enterprise Library Logging Application Block. I have created a service that exposes an object through remoting for clients to call. The service uses the Exception Handling and Logging blocks throughout the code. Now, when a client calls the remote object, he gets a TargetInvocationException on top of an InvalidCastException. The object code has thrown no exceptions, logging works as expected, the method calls finish properly, but still the client gets an exception! The exceptions stop when I remove the logging code, but I can't very well replace the logging infrastructure of the service! After a lot of stepping into code, re-checking my app.config files, googling for over two days, I came accross Keenan Newton's article, Logging Application Block and Remoting . It seems that the way the Logging Block implements tracing writes something to the CallContext which doesn't serialize all that well. The quick solution is to disable tracing (just go to the Logging...
|
-
Στό Email μου ήρθε για ενημέρωσή μου το παρακάτω κείμενο το οποίο και σας παραθέτω .Πιστεύω ότι είναι αρκετά ενδιαφέρον Problem I have been running SQL Server 2005 server side traces to address some SQL Server 2005 performance issues. I have noticed an unusual trace session that is running. I know I have not been running this trace and know I have been diligent about running only a single trace to not impact performance. So where did this trace session coming from? Solution SQL Server 2005 is running a default trace. You can think of this as a replacement to the black box mode trace that could have been run in SQL Server 2000 where the last 5 MB of data is captured. The trace's impact should be minimal to the server, but is valuable to be aware of as a DBA or Developer responsible for the server. How can I find out if the trace is running on my SQL Server? The simplest means to determine if the trace is running is to execute the following command: SELECT * FROM fn_trace_getinfo(default); GO What does the output...
|
-
Ο πολύ καλός Patrick Tisseghem της U2U μας δείχνει πως φτιάχνεται ένα Web Part για τον SharePoint 2007 μέσα από το Visual Studio 2007 - αφού πρώτα εγκαταστήσουμε τα απαραίτητα VS 2005 Extensions for SharePoint. http://blog.u2u.info/DottextWeb/patrick/archive/2006/11/15/36545.aspx...
|
-
A great new reference site for .NET Framework 3.0 technologies in http://www.netfxguide.com/ Check out the introductory 4 minute video in the home page And I guess everybody is aware of the basic .NET 3.0 web site in http://www.netfx3.com...
|
-
Για κάποιο λόγο (μή ρωτάτε γιατί) τον τελευταίο καιρό είμαι υποχρεωμένος να καλώ ActiveX dlls στα οποία πρέπει να περάσω ADO connections. Η εμπειρία δεν μπορώ να πω ότι ήταν και η πιο ευχάριστη. Βλέπετε, όταν βάζει κανείς reference σε ένα activex dll το οποίο δέχεται π.χ. παραμέτρους Connection το Visual Studio θα βρει και θα προσθέσει το κατάλληλο Interop assembly (adodb.dll). Το assembly αυτό βρίσκεται κανονικά στο C:\Program Files\Microsoft.NET\Primary Interop Assemblies. Έλα όμως, που δεν θα το προσθέσει και στο Deployment Project! Αυτή ήταν η κανονική λειτουργία στο Visual Studio 2003 ( http://support.microsoft.com/kb/321688/en-us ) αλλά όπως φαίνεται είτε άλλαξε, είτε εμφανίστηκε ένα bugάκι. Θα μου πείτε, κανένα πρόβλημα, αφού τα αρχεία θα υπάρχουν στους υπολογιστές των client... Αμ δε! Σε κάποια μηχανήματα, παρότι εγκαθίσταται κανονικά το .NET 2.0 runtime, το folder με τα Interop Assemblies δεν δημιουργείται! Ίσως φταίει ότι τα μηχανήματα αυτά ήταν Windows 2003 Server, ίσως όχι. Όπως και να έχει, μετά από...
|
-
Σήμερα διάβασα ένα ενδιαφέρον post στο blog του Δημήτρη Στάικου (also known as Brute Force) για τεχνικές Debug Assertions & Breakpoints σε kernel και user mode programming. Kάνοντας review τον κώδικα, αυτό που μού τράβηξε την προσοχή είναι ότι παίζει με macros. Το macro που μου άρεσε περισσότερο είναι αυτό που μετατρέπει το condition σε string. #define STRINGIZE(a) _STRINGIZE(a) #define _STRINGIZE(a) #a STRINGIZE(argc == 2) Ο κώδικας με τα macros μου θύμισαν τις δικες μου περιπέτειες (αρκετά χρόνια πίσω), τότε που προσπαθούσα να καταλάβω πως μπορείς να δημιουργήσεις exception handling στη C με macros (TRY, CATCH). Κλείνοντας με λίγη δόση χιούμορ θα ήθελα να τονίσω ότι ο 1# λόγος που μου αρέσει η C# είναι για αυτά τα "Sanity Checks"... Happy Coding φιλε Δημήτρη...
|
-
Μέχρι τώρα στον για να διαγράψουμε διπλές εγγραφές σέ ένα πίνακα που δέν έχει Primary Key χρησιμοποιούσαμε την SET ROWCOUNT 1 Δηλαδή κάναμε το παρακάτω . SET ROWCOUNT 1 Delete myTableName where ID=1 SET ROWCOUNT 0 Αυτό συνεχίζει να ισχύει και στον SQL2005 αλλά μπορεί να γίνει χρησιμοποιώντας και την TOP DELETE TOP ( 1 ) FROM myTableName WHERE ID = 1 Γιατί θα μου πείτε πρέπει να χρησιμοποιούμε την TOP και όχι την ROWCOUNT η απάντηση έρχεται από την ίδια την Microsoft όπως φαίνεται παρακάτω. Using SET ROWCOUNT will not affect DELETE, INSERT, and UPDATE statements in the next release of SQL Server. Avoid using SET ROWCOUNT together with DELETE, INSERT, and UPDATE statements in new development work, and plan to modify applications that currently use it. Also, for DELETE, INSERT, and UPDATE statements that currently use SET ROWCOUNT, we recommend that you rewrite them to use the TOP syntax ....
|
-
Πρόσφατα έκανα code review σε ένα Java 1.5 project και βρέθηκα αντιμέτωπος "για άλλη μια φορά" με τα προβλήματα που δημιουργεί το type erasure των Java Generics. Θα παρουσιάσω το πρόβλημα με ένα απλό κομμάτι κώδικα ArrayList<Integer> listOfInteger = new ArrayList<Integer>(); ArrayList list = listOfInteger; list.add( new Object()); int test = listOfInteger. get (0); Οπότε ένα ωραιότατο ClassCastException καραδοκεί να μας αιφνιδιάσει. Τουλάχιστον τα unit tests στο JUnit βοήθησαν την κατάσταση. Ένα πολύ καλό βιβλίο για το θέμα είναι το κάτωθι http://www.amazon.com/Java-Generics-Collections-Maurice-Naftalin/dp/0596527756 (Πολύ δεν μιλήσαμε για Java…. Άλλωστε στο dotnetzone βρισκόμαστε...) Όπως και να έχει, αισθάνομαι μια μεγαλύτερη ασφάλεια από InvalidCastException στον C# 2.0 κώδικά μου :)...
|
-
DEV412 Designing and Developing Smart Clients based on Composite UI Application Block and Smart Client Software Factory Σε αυτή την παρουσίαση είδαμε ένα από τα Application Blocks του Patterns and Practices team, το Composite UI. Σε συνδυασμό με το Smart Client Software Factory που παρέχει αυτοματοποίηση κατά τη συγγραφή και την υλοποίηση του κώδικα, αποτελούν ένα πολύ δυνατό μηχανισμό για την ανάπτυξη εφαρμογών από ομάδες όπου κατά την ανάπτυξη μπορεί να διαχωριστεί η δουλειά των seniors και juniors με δομημένο τρόπο. Και αυτή η παρουσίαση μπαίνει στις κορυφαίες (από όσες παρακολούθησα) παρουσιάσεις του Tech-Ed. DEV218 Developing and Designing Standard Based Web Applications with Expression Web Designer Λίγο πιο light αυτό το session, ωστόσο ήταν πολύ χρήσιμο το demo του εργαλείου που συμπληρώνει το Visual Studio ως προς το web design κομμάτι των web εφαρμογών. Αξιοσημείωτος είναι ο τρόπος που υποστηρίζονται τα W3 πρότυπα και ιδιαίτερα τα CSS. Τελευταία μέρα, δεν είδα άλλο session καθώς είχαμε να πάρουμε συνέντευξη...
|
-
DEV306: Using the .NET Language Integrated Query (LINQ) Framework with Relational Data To LINQ το είδα στο keynote, το είδα και την πρώτη μέρα. Το είδα και χθες ως προς το relational κομμάτι του (μιας και όπως είπαμε η layered αρχιτεκτονική του του επιτρέπει να παίζει πάνω σε διάφορα datasources). Κάθε φορά κάθε φορά μου αρέσει όλο και περισσότερο! DEV362: Smart Client: Offline Caching and Synchronization with a New ADO.NET Sync Framework Πολύ ενδιαφέρον αυτό το session. Μας έδειξαν ένα νέο API του ADO.NET το οποίο στοχεύει στην υποστήριξη συγχρονισμού και caching για occasionally connected εφαρμογές. Ως λύση συγχρονισμού στέκεται ανάμεσα στο RDA και το merge replication.Θα δώσει λύσεις σε όλους όσους βρίσκουν απλοϊκό το RDO, αλλά και περίπλοκο και δύσκολο στην υλοποίηση το merge replication. Ακόμα δεν έχει κυκλοφορήσει CAP γι αυτό οπότε είμαστε σε αναμονή. [Edit: Κατά λάθος έγραψα CAP... CTP εννoούσα :)] DEV227: Windows Presentation Foundation (WPF) in the Real World: Zürich Airport Monitoring System Τελικά αυτά...
|
-
Όσοι βρεθήκατε στο DevDays event που είχαμε κάνει σχετικά με τις Web τεχνολογίες, είναι λίγο δύσκολο να μην το προσέξατε. Μιλάω για το Photosynth που σήμερα ξεκίνησε να διατίθεται σαν υπηρεσία δοκιμαστικά σε όλους. Δείτε το και ζήστε την εμπειρία ζωντανά ξεκινώντας απο εδώ : http://labs.live.com/photosynth/SystemCheck.htm Ενώ για περισσότερες λεπτομέρειες για το πως δουλεύει αυτή η τεχνολογία, πατήστε εδώ : http://labs.live.com/photosynth...
|
-
Interesting post on Live and Sidebar Gadgets. He identifies at least 6 different types of gadgets: Basic Gadgets - your standard "built-in" gadgets such as Clock, Weather, etc Cool Gadgets - gadgets are related to music or "social networking" Productivity Gadgets - gadgets that help you with your work day Game Gadgets - generally simple games like Hangman or Pacman™ Seasonal or Special Event Gadgets - gadgets that have a a limited shelf life (i.e. a "Countdown to Christmas" gadget) Ad Gadgets - provide enough functionality to wet the user's apitite and are meant to drive people to their website More in his post...
|
-
Πρώτα ξεκινάς με μια οντότητα - τη λέει κατηγορία - που θέλεις να διαχειριστείς. Μετά προσθέτεις τα πεδία που θέλεις να έχεις. Στην αρχή όλα είναι Text by default. Μετά μπορείς να τα αλλάξεις. Καταχωρείς μερικές εγγραφές. Κάνεις import μερικές άλλες. Μπορείς ακόμη καθώς περιδιαβαίνεις σε web sites να κάνεις import τα δεδομένα που βλέπεις. Τα φιλτράρεις, τα σορτάρεις, κάνεις μαζική εισαγωγή, μαζική διαγραφή και άλλα τέτοια βολικά. Ενώνεις 2 πεδία σε ένα, δημιουργείς ένα νέο πεδίο από ένα άλλο με βάση κάποιο διαχωριστικό χαρακτήρα. Μετά αποφασίζεις ότι το συγκεκριμένο πεδίο είναι ημερομηνία. Κανένα πρόβλημα. Απλά το αλλάζεις. Αριθμητικό, το ίδιο. Και τώρα έρχεται η μαγεία. Ξαφνικά αποφασίζεις ότι η τιμή που έβαζες μέχρι τώρα στο πεδίο επαναλαμβάνεται. Πρόκειται στην πραγματικότητα για ένα lookup πεδίο. Με 2 κλικ, δημιουργείς τη νέα οντότητα/κατηγορία, τη γεμίζει αυτόματα με τις τιμές που έχεις εισάγει μέχρι τώρα και συνδέει όλες τις υπάρχουσες εγγραφές με την αντίστοιχη lookup τιμή. Απίστευτο ? Και όμως αληθινό....
|
-
Ο μόνος τρόπος για να πάρουμε Backup στόν SQL SERVER το οποίο να προστατεύεται μέ χρήση password είναι μέσω της T-SQL . Παρακέτω παραθέτω πώς αυτό μπορεί να γίνει. Εντολή Backup BACKUP DATABASE Northwind TO DISK= 'C:\Northwind.BAK' WITH MEDIAPASSWORD= '3$56#$21' Παρακάτω βλέπουμε πώς οι εντολές για Restore χωρίς την χρήση το password που χρησιμοποιήσαμε μάς επιστρέφουν μυνήματα λάθους. RESTORE FILELISTONLY FROM DISK= 'C:\Northwind.BAK' RESTORE HEADERONLY FROM DISK= 'C:\Northwind.BAK' RESTORE VERIFYONLY FROM DISK= 'C:\Northwind.BAK' RESTORE DATABASE Northwind FROM DISK= 'C:\Northwind.BAK' Άν τώρα ορίσουμε το password σέ οποιαδήποτε από της παρακάτω εντολές restore τότε το Restore είναι εφικτό. RESTORE FILELISTONLY FROM DISK= 'C:\Northwind.BAK' WITH MEDIAPASSWORD= '3$56#$21' RESTORE HEADERONLY FROM DISK= 'C:\Northwind.BAK' WITH MEDIAPASSWORD= '3$56#$21' RESTORE VERIFYONLY FROM DISK= 'C:\Northwind.BAK' WITH MEDIAPASSWORD= '3$56#$21' RESTORE DATABASE Northwind FROM DISK= 'C:\Northwind.BAK' WITH MEDIAPASSWORD= '3$56#$21'...
|
-
Λόγω προβλημάτων με το laptop μου, κάνω τώρα το recap της πρώτης και της δεύτερης μέρας: Πρώτη μέρα, Τρίτη 7 Νοεμβρίου ARC202: Connected Systems - Part 1: The Evolution of the Microsoft Application Server Platform O Clemens Vasters και ο Steve Swartz είναι απίθανο δίδυμο. Η παρουσίαση ήταν light ως προς το περιεχόμενο με θέμα την εξέλιξη στην αρχιτεκτονική των connected systems από την εποχή του Transaction Server 1.0 ως σήμερα, εντούτοις ο τρόπος που έκαναν την παρουσίαση ήταν απίθανος λέγοντας αστεία και πειράγματα ο ένας στον άλλον. ARC207: Introduction to Agile Methodologies and Concepts Σε αυτό το session ο Roy Osherove έκανε εισαγωγή στο τι είναι Agile Methodologies αγγίζοντας το ευαίσθητο θέμα "πελάτες<->developers". Τελικά, το να μην ξέρουν οι πελάτες τι θέλουν ή το να αλλάζει ένα project ως προς τους στόχους, τα χρονοδιαγράμματα, κλπ δεν είναι μόνο Ελληνικό προνόμιο! DEV223: Visual Studio: The .NET Language Integrated Query (LINQ) Framework Overview Το καλύτερο session της ημέρας. Πώς o set-oriented...
|
-
Δεύτερη μέρα του event. Οι παρουσιάσεις ξεκίνησαν στις 09:00 και τελίωσαν στις 18:00 για να αφήσουν του παρεβρισκόμενους να επισκευτούν την πόλη της Βαρκελώνης. Πιο οργανωμένος από την πρώτη μέρα, συγχρονίζοντας το Outlook με το κινητό τηλέφωνο, και πηγαίνοντας στις παρουσιάσεις ένα τέταρτο πριν από την έναρξή τους, κατόρθωσα να παρακολουθήσω όλες τις παρουσιάσεις που είχα σχεδιάσει. Το περιεχόμενο των παρουσιάσεων που παρακολούθησα ήταν αποκλειστικά για τον MOSS. Η καινούργια αρχιτεκτονική των WSS και η υποστήριξη του WF, φαίνεται να έχουν προκαλέσει μια γενικότερη υστερία, για την ευκολία της επέκτασης και προσθήκης καινούργιων χαρακτηριστικών στο SharePoint. Η ημέρα έκλεισε με το δείπνο που παρέθεσε η Microsoft Hellas σε όλους τους παρεβρισκόμενους στο event από την Ελλάδα. George J....
|
-
Μια εισαγωγή στο τί είναι το WPF (Windows Presentation Foundation) και πως μπορεί να μας βοηθήσει να κάνουμε το develop του GUI και της εφαρμογής ακόμα πιο εύκολο. Παρουσιάζει μια ριζική αλλαγή στον τρόπο παρουσίασης των δεδομένων και μας δίνει πολλούς και εύκολους τρόπους για να επιτύχουμε τον σκοπό μας....
|
-
Κάθε αρχή και δύσκολη... Πρώτη ομιλία της ημέρας ήταν το keynote από τον Eric Rudder που παρουσίασε την κατάσταση σήμερα, θεωρώντας ότι το 2007 Microsoft Office Suite και τα Windows Vista έχουν γίνει release. Αξιοσημείωτη είναι η παρουσίαση μιας νεαρής MCP από το Πακιστάν που παρουσίασε ένα project για ένα calculator σε C# κατά την διάρκεια του keynote. Αν και σκοπός μου ήταν να παρακολουθήσω την ομάδα παρουσιάσεων για το SharePoint, πρέπει να πω στις 2 από τις 4 παρουσιάσεις που σκόπευα να παρακολουθήσω, δεν κατάφερα να μπω στην αίθουσα γιατί ήταν πλήρης - η ζήτηση για τα καινούργια SharePoint προιόντα είναι μεγάλη. Η παρουσίαση του Anders Hejlsberg για το LINQ, πραγματικά ξεκαθάρισε πολλά για τι σχεδιάζει η Microsoft να κάνει με την διαχείρηση δεδομένων μέσα από το .NET Framework. Μέσα στην έκθεση υπάρχει ο χώρος των εκθετών, με περίπτερα από πολλές μεγάλες εταιρείες που είναι Microsoft Partners. Ιδιαιτερότητα αποτελεί το περίπτερο της Oracle, που για να φέρουν τον κόσμο στον περίπτερο έχουν ένα fondue με σοκολάτα...
|
-
Την Δευτέρα ήταν η μέρα του preconference, μια ήσυχη ημέρα με λίγο κόσμο (όπως κατάλαβα σήμερα). Το session που παρακολούθησε, ASP.NET AJAX με τον Jeff Prosise ήταν απίστευτα ενδιαφέρον, για τρεις λόγους: Το Microsoft AJAX (που προφέρεται έι-τζαξ) αποτελείται από τα server controls, και ένα client side framework γραμμένο σε Javascript. Το δεύτερο καλύπτει τις διαφορές μεταξύ των browsers (μεγάλη υπόθεση) και προσφέρει ένα API που θυμίζει αρκετά το .NET class library. Βέβαια σε κάνει να ξεχάσεις κάπως τη χαρά του duck typing, αλλά είναι οικείο σε όσους δουλεύουν σε .ΝΕΤ. Το client side framework δεν έχει καμία εξάρτηση από το .ΝΕΤ και μπορεί να χρησιμοποιηθεί σε οποιαδήποτε Web εφαρμογή. Στο server side, υπάρχει το UpdatePanel που κάνει τη μαγεία του partial rendering, αλλά συγχρόνως συμπεριφέρεται ωραία όταν δεν υπάρχει Javascript ή είναι απενεργοποιημένη (σε αντίθεση με τις διάφορες Javascript-ιές που απλά δε δουλεύουν), και πολλά άλλα controls Η επίσημη έκδοση αναμένεται κάπου στις αρχές της άνοιξης. Για περισσότερα,...
|
|
|
|