|
Πρόσφατες Δημοσιεύσεις
-
... no cars this time! Enterprise Application Integration products Your services WILL be assimilated Commercial Enterprise Service Bus products They connect with everything. For a cost. Open Source Service Bus Small, Fast, To the point. And FUN! EAI products have given ESBs and SOA such a bad name that led some to proclaim that SOA is dead . They don't try to integrate everything and translate everything. They are good at what they do but you do have to adapt to their reality. ESBs like NServiceBus or Rhino Service Bus are small, fast and fun. They adapt to your architecture instead of the other way around....
|
-
Steven Rasmussen found a bug at modeleditor plugin that was: if you have any of your modules saved at a directory that contain spaces in its name the modeleditor failed to open the fixed version can be found here Διαβάστε περισσότερα »...
|
-
Xaf addins won’t load if there was a special kind of project in your solution like Setup Project,DataBaseProject I have fix that and you can download them again here Διαβάστε περισσότερα »...
|
-
Because XPbaseObject implements INotifyPropertyChanged property setters need to be implemented using a special way like public string Name { get { return name; } set { SetPropertyValue( "Name" , ref name, value); } } but if you are a strongly typed fun like me the you certainly will not like the string representation of the “Name” as a parameter of SetPropertyValue because if you rename the property then you should explicitly rename the string parameter as well. I used to write my properties like private string nameWithReflection; public Διαβάστε περισσότερα »...
|
-
It’s been quite some time since I last talked about Entity Framework Caching . Since then a lot of people has come to me asking me if there was something they could do. Well I’m happy to announce that this week Jaroslaw Kowalski released the source code on msdn code library of sample caching providers ASP.Net Cache, and Velocity on) for Entity Framework. The solution relies on caching Διαβάστε περισσότερα »...
|
-
Today we are going to speak about an implementation of the approach describe in this post . INotifyPropertyChanged is responsible for notifying clients that a property value has changed.To implement INotifyPropertyChanged you should write a code similar to public class Client : INotifyPropertyChanged { private string name; public string Name { get { return name; } set { if (name == value) return; name = value; OnPropertyChanged(new PropertyChangedEventArgs("Name")); } } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; #endregion protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) { if (PropertyChanged != null) PropertyChanged(this, e); } } and the test of the behaviour that we want would Διαβάστε περισσότερα »...
|
-
Microsoft announced the launch of its first TechNet virtual conference , helping cut costs, increase efficiency and reduce environmental impact, whilst still getting all the latest information on Microsoft technologies and valuable tech insights. If you can’t make it on 19 June 2009 don’t worry, they’re making all the content available to access on demand Διαβάστε περισσότερα »...
|
-
Η παρακάτω ιστορία είναι απολύτως αληθινή, αλλά δε συνέβη ποτέ στην πραγματικότητα. Θέλω να πω ότι συνέβη μεν, αλλά όχι έτσι όπως την περιγράφω. Ή μάλλον συνέβη ακριβώς όπως την περιγράφω, αλλά όχι κατά την ίδια χρονική στιγμή. Πάμε ξανά, γιατί έτσι δεν θα βγάλουμε άκρη... Η παρακάτω ιστορία είναι φανταστική, αλλά κάθε ομοιότης με πρόσωπα ή καταστάσεις πιθανώς να μην είναι συμπτωματική. Κι αυτό γιατί βασίζεται όχι σε μία, αλλά σε τρεις διαφορετικές αληθινές ιστορίες που υπέστησαν μείξη. Κατά μία έννοια είναι τόσο αληθινή, όσο ζωντανό ήταν το τέρας του Φρανκενστάιν, το οποίο κατασκευάστηκε μεν από μέρη πτωμάτων, πλην όμως κυκλοφορούσε κι οπλοφορούσε, και μάλιστα χωρίς μηχανική (ή άλλη) υποστήριξη. Γιατί ανάμειξα τις τρεις ιστορίες; Πρώτον, για να μην πληγώσω κανένα. Όλα τα στοιχεία που θα μπορούσαν να στεναχωρήσουν κάποιον είναι από τις άλλες ιστορίες, εντάξει; Δεύτερον, για να γίνει η τελική ιστορία αγνώριστη. Τρίτον, δεν υπάρχει τρίτον, οπότε προχωρώ στο ψητό. Μια φορά κι έναν καιρό υπήρχε ένα ελληνικό software...
|
-
We all get into situation where we need to access class metadata like properties,methods and fields and we use reflection to accomplish it private class Customer { public string LastName { get; set; } } [Test] public void Test() { Assert.IsNotNull(typeof(Customer).GetProperty("LastName")); } but what will happen if we change the property name of “LastName” to “SurnName” ?? Our test will fail . But there is a rescue on this one using linq expression trees. public static class ReflectionExtensions { public static MethodInfo GetMethod<TTarget>(this TTarget target, Expression<Action<TTarget>> method) { return GetMethodInfo(method); } private static MethodInfo GetMethodInfo(Expression method) { if (method == null) throw new ArgumentNullException("method"); Διαβάστε περισσότερα »...
|
-
These people are actually monitoring everything. Its been only one week of blogging and my efforts payed already see DevExpress official blog on this post How to master a language in less than 10,000 hours Διαβάστε περισσότερα »...
|
-
Xaf has its own tracking system enabled by default . What it does? It tracks almost every from exception to button clicks and object states!! What I want to saw you is how easy we can create a CodeRush addin that every time an exception occurs we could navigate through all the stack trace We will accomplish that using Resharper’s stackTraceExplorer . So all we need to do is to find startup project’s bin directory open expressAppFramework.log which is the file that Xaf writes all traces, find the last entry, copy it to memory and send to Visual studio a Resharper+ExploreStackTrace command Lets do it. In fact we can easily extend the plugins project I posted here and have all in one package. But we have to be careful when trying to read a log file cause it may Διαβάστε περισσότερα »...
|
-
Then Linq to SQL would be the Smart ForTwo. A seriously fun and easy way to get around town as long as you don't want to carry more than two passengers and maybe a suitcase. NHibernate would be the HMMWV. Works great out-of-the-box if you are willing to give up some creature comforts. There is just no way you would drive this around town, but it can go pretty much everywhere. What's more, you can adapt it to a thousand different configurations with the proper kit. What's more, it has a passionate following of HMMWV afficionados that can help you get over any problems you may have. Be careful though. You had better know what you are doing before you take one of these out for a ride ... Finally, Entity Framework v1 is the Ford F450. In the body-and-chassis version. Creature comforts, ease of driving, but you have to add some parts yourself if you want to use it for work. The good thing is that you can certainly do that. It's just that, unlike the Ford F450, there aren't any pre-built packages available for EF right...
|
-
We will work with the following database schema: The corresponding domain model is as follows: Entity.cs public class Entity { private long _iD; public virtual long ID { get { return _iD; } set { _iD = value ;} } private string _description; public virtual string Description { get { return _description; } set { _description = value ;} } private IList < Detail > _details; public virtual IList < Detail > Details { get { return _details; } set { _details = value ; } } (...) Detail.cs public class Detail Διαβάστε περισσότερα »...
|
-
Download sources (10/6/09) (see Xaf Exception Stack Explorer ) ProjectConverter Browsing and downloading from Devexpress support center often I find old projects with broken references Old days when i see broken references at my solution due to version changes I had to go to my C:\Program files\pathToYourProjectConverter executable. Open it, browse to find my solution folder and convert it Nowadays I am using a small CodeRush addin I wrote and I can convert any solution from with in Visual Studio By pressing a shortcut. You have to configure it by setting its path as shown in the image bellow if you use a recompile version of the assemblies you can also set at the PublicToken field Then you go to shortcuts and assign a shortcut key for the convertProject command Διαβάστε περισσότερα »...
|
-
I though i should post on this one cause its far more than interesting suppose you have a Customer that is a Person public class Person { public string Name { get; set; } } public class Customer : Person { } and implements 2 interfaces ICustomUser,ICustomer public interface ICustomUser { string Title { get; set; } } public interface ICustomer { string Title { get; set; } } one could write public class Customer : Person,ICustomUser,ICustomer { string ICustomUser.Title { get; set; } string ICustomer.Title { get; set; } } But in order to access the values of the properties Customer should be extended to something like public class Customer : Person,ICustomUser,ICustomer { private string customUserTitle; public string CustomUserTitle { get { return customUserTitle; Διαβάστε περισσότερα »...
|
-
Speaking of Azure ... The international Azure developer challenge new CloudApp() opened on June 1. The submission deadline is July 9th. The winner will be chosed by community voting between July 10 and 20. The winner will be announced on July 21. Gentlemen, Start you Editors!...
|
-
Today i stump again upon the same problem . I wanted to throw a validation exception only if both of my properties do not have value. So lets create a validation rule for this one. More info on how we create custom validation rules can be found here Validation Module Since we are talking about multiple property values i think we should go with an attribute that is applied to a class and not to a property. Ok first we have to define that both our RuleBaseAttribute and RuleBaseProperties derived classes will implement . public interface IRuleRequiredForAtLeast1PropertyProperties { string MessageTemplateMustNotBeEmpty { get; set; } string Delimiters { get; set; } string TargetProperties { get; set; } } ok that looks nice lets explain what we have here for a bit. Διαβάστε περισσότερα »...
|
-
Πρόσφατα ολοκληρώσαμε έναν ανιχνευτή κατάστασης θυρών, ο οποίος να παρουσιάζει διπλή λειτουργικότητα, να είναι και Port scanner αλλά και Port sweeper. Ο Port Scanner θα δέχεται ως είσοδο μια δ/νση ΙΡ (ή hostname) και range από πόρτες (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε. Ο Port Sweeper θα δέχεται ως είσοδο μια πόρτα (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε και λίστα από δ/νσεις ΙΡ (ή DNS name). Η εφαρμογή υλοποιεί TCP, UDP και SYN scan με επιλογές που να τα παραμετροποιούν. Η εφαρμογή αποτελείται από το βασικό Διαβάστε περισσότερα »...
|
-
Πρόσφατα ολοκληρώσαμε έναν ανιχνευτή κατάστασης θυρών, ο οποίος να παρουσιάζει διπλή λειτουργικότητα, να είναι και Port scanner αλλά και Port sweeper. Ο Port Scanner θα δέχεται ως είσοδο μια δ/νση ΙΡ (ή hostname) και range από πόρτες (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε. Ο Port Sweeper θα δέχεται ως είσοδο μια πόρτα (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε και λίστα από δ/νσεις ΙΡ (ή DNS name). Η εφαρμογή υλοποιεί TCP, UDP και SYN scan με επιλογές που να τα παραμετροποιούν. Η εφαρμογή αποτελείται από το βασικό παράθυρο στο οποίο μπορεί ο χρήστης να κάνει τις κατάλληλες παραμετροποιήσεις και να εισάγει τα στοιχεία που αυτός θέλει. Τα αποτελέσματα εκτυπώνονται στα δεξιά του παραθύρου ενώ στο κάτω μέρος υπάρχει και ένα progress bar το οποίο ενημερώνει τον χρήστη για το ποσοστό του ελέγχου που έχει απομείνει. Λοιπές λειτουργίες όπως logging, εκτύπωση ονομάτων θυρών που αναφέρονται κτλ, περιγράφονται παρακάτω. TCP Scan Στο TCP Scan αξιοποιείται η αναλυτική διαδικασία σύνδεσης με Berkeley sockets σε .NET (Socket Class...
|
-
SQL Data Services would be this. The Porsche. An engineering marvel yet beatiful and comfortable. In the hands of an average driver, it goes fast. In the hands of an experienced driver, it goes VERY fast. Its electronic systems will forgive many of the driver's mistakes yet provide the maximum available power when needed. This car will turn heads wherever it goes. And then there is this. Friendly, it is not. Unless you know how to drive it, you will stall a dozen times before you even get on the track. It's not easy to control either. Comfort is a matter of discussion, once you account for the fact that you have to take the steering wheel off just to get in the car. It's beauty is debateable as everything is sacrificed in order to achieve the best aerodynamic shape. Yet, in the hands of an experienced race driver, it is fast. INSANELY fast! This car exists for one thing and one thing only, and that is SPEED. And that's what the Azure Table Storage Service is all about....
|
-
[Αφιερωμένο στον Δ.Π. ] Συνεχίζω το προηγούμενο post με θέμα πώς ν’ αποφύγει κανείς το διάλογο επί της ουσίας. Υπενθυμίζω ότι οι συμβουλές απευθύνονται αποκλειστικά σε επαγγελματίες συζητητές που βγάζουν το ψωμάκι τους συμμετέχοντας κατ’ ανάγκη σε διαλόγους κουφών. [Παιδάκια, μην προσπαθήσετε να το επαναλάβετε στο σπίτι, κ.λ.π.] Εύχρηστες παρελκυστικές τεχνικές για κάθε χρήση Ad hominem (Ονοματοθεσία) ή επί το ποδοσφαιρικότερον: "αν δεν μπορείς να παίξεις τη μπάλα, παίξε τον παίκτη". Μείωσε το κύρος του αντιπάλου ή εκείνων που συμφωνούν με τον αντίπαλο χρησιμοποιώντας όχι ευθέως υβριστικά, αλλά σαφώς απαξιωτικά ονόματα, π.χ. - Ο καθηγητής κ. Χ στην έκθεσή του προβλέπει σύντομα την κατάρρευση του ασφαλιστικού συστήματος εάν δεν ξεκινήσει η αναδιοργάνωσή του τώρα. - [με συγκαταβατικό χαμόγελο] Ναι, όντως πάντοτε καταστροφές προβλέπει ο κ. "Σκληρός Πυρήνας του πληθωρισμού"... Ad hominem ( Αντιμετάθεση Ευθυνών) Χρησιμοποίησε φράσεις του τύπου " Δεν είμαι εγώ εκείνος που καταβαραθρώνει το επίπεδο της συζήτησης λέγοντας...
|
-
The problem Xpo in order to support transactions implements some special kind of property setters like private string lastName; public string LastName { get { return lastName; } set { string oldValue = lastName; if (oldValue == value) return; lastName = value; OnChanged("Name", oldValue, value); } } Or a little more elegant like private string lastName; public string LastName { get { return lastName; } set { SetPropertyValue("LastName", ref lastName, value); } } Imagine you want to Design a fairly simple model like Customer –> Orders. A Customer should have LastName, FilrstName, Age and Orders as properties and Order only an Amount property. Using the above approach one could write the following code to describe the above model. Διαβάστε περισσότερα »...
|
-
The first blogging day was easy not much to say . I am a big newbie on this one. So lets start our blogging adventure. I will see it like a problem that i am going to solve and even move it on step more (hahaha classic eh?) Requirements for blogging I would like to have an offline tool like word to write my posts so i can format the text easily and faster than any Web Base Html Editor I would like to be open source or have a big community that supports it writing addons I want to upload any file along with images and videos Easy screenshot attachment At least C# code formatting abilities Lets start googling on those requirements then . First i fell upon Zountry but it didn’t convince me, i wanted something better than this one. Second attempt and voila Διαβάστε περισσότερα »...
|
-
Before many years when i trying to find my way in R&D world using Delphi 6 if I remember well i met DevExpress . Since then and after .Net appears i have been following those guys. Their organization if you do not already know is unbelievable their controls suite the same. But before 2 years they started a new project called Xaf . Xaf is an application framework that if i can describe it in 7 words is "it makes you speak the business language". I hope that you already know the basics on Xaf so i will try to blog on that wonderful framework and give you some code, ideas on that Διαβάστε περισσότερα »...
|
-
Today I encountered a rather intriguing new behaviour in Project Server 2007 timesheets. When a user creates a timesheet Project Server can check for any tasks that fall within the timesheet's dates and add lines for each of the tasks it find. Project Server will even check the % complete field of each task and fill the appropriate work hours for you in the timesheet, which can be a real time-saver. This is called prepopulation and is controlled by the "Default Timesheed Creation Mode" setting in Timesheet Settings and Defaults. If you don't like the prepopulated cell values, you can go change them or empty the cells. Before SP2 you could also delete any timesheet lines you didn't like. Once you saved your timesheet, the unwanted lines were gone. When you are assigned to a lot of projects you really want to delete any unwanted lines. With SP2 though, this behaviour changed in an intriguing way. You can still delete the lines from the UI, but once you save the timesheet the lines are re-created using the prepopulation...
|
|
|
|