|
dotNETZone.gr Weblogs
-
Βγήκε το νέο βιβλίο του Διομήδη Σπινέλλη, του συγγραφέα του "Code Reading, The Open Source Perspective" . Το βιβλίο λέγεται "Code Quality, The Open Source Perspective" και ο εκδότης είναι η Addison-Wesley. Το πρώτο βιβλίο ήταν το πρώτο το οποίο ασχολήθηκε με την ανάγνωση κώδικα αλλά και τη συγγραφή κώδικα έτσι ώστε να είναι πιο αναγνώσιμος και εύκολα αναγνωρίσιμος. Το νέο βιβλίο καλύπτει τους διάφορους τομείς που επηρεάζουν την ποιότητα του κώδικα. Καλά, θα πείτε, ούτε το πρώτο ούτε το τελευταίο βιβλίο είναι το οποίο ασχολείται με το θέμα. Η διαφορά? Χρησιμοποιεί πραγματικά παραδείγματα! Όχι "ωραιοποιημένο" κώδικα, όχι απλά samples, αλλά κώδικα από τον Apache, το BSD Unix και την HSQLDB! Οπωσδήποτε μπαίνει στη λίστα με τα βιβλία που θα διαβάσω!...
|
-
Last Friday beta 1 of SP1 for Visual Studio 2003 was released. Since I already had many problems with VS stability and performance, I installed it right away on my production machine. Here are the results from 4 days of exhaustive testing, stretching VS to it's limits: "Only one web service binding attribute is specified at a time" fix is included On original VS 2003 this error occurred periodically (several times per day) when a project containing a web reference was build. The workaround was to rebuild the project instead of build, but this caused the build time to increase significantly as the rebuild action was being executed on all depended projects. Now, there is really no need for rebuild. Improved build time The build command on a solution correctly checks contained projects for changes without wasting time. Without the service pack VS needs 2 secs on average to check a project, even if the projects was not changed at all since the last build. Now, for a build on a solution with 40, all unchanged, projects,...
|
-
Το πρώτο βήμα που πρέπει να κάνουμε είναι να κάνουμε add ένα User Control στην εφαρμογή μας .Ας το ονομάσουμε myCombo.vb Κατόπιν μέσα στον κώδικα του user control αντικαθιστούμε το Inherits System.Windows.Forms.UserControl μέ Inherits System.Windows.Forms.ComboBox Θα χρησιμοποιήσουμε δύο μεθόδους της βασικής κλάσης του combobox την MyBase .KeyUp και την MyBase .Leave Οπότε ο κώδικας έχει ως εξής Public Class myCombo Inherits System.Windows.Forms.ComboBox Private Sub myCombo_KeyUp( ByVal sender As Object , ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase .KeyUp Dim Typed As String 'Το πληκτρολογηθέν κείμενο Dim FoundIndex As Integer 'Θέση του κειμένου στό Items Collection Dim FoundItem As Object 'Το αντικείμενο που βρέθηκε στο Items Collection Dim FoundText As String 'Το κείμενο του αντικειμένου Dim AppendText As String 'Το κείμενο που βρίσκεται μετά το σημείο του πληκτρολογηθέντος κειμένου Select Case e.KeyCode Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Down, Keys.Delete, Keys.CapsLock, Keys.Shift,...
|
-
Eδώ και καιρό κυκλοφορεί σε διάφορα forum μια αμφιλεγόμενη τεχνική για τη μείωση της μνήμης που χρησιμοποιεί μια εφαρμογή. Η τεχνική αυτή βασίζεται στη χρήση του function SetProcessWorkingSet για να "ελευθερώσει" τη μνήμη που χρησιμοποιει. Αυτό που γίνεται ουσιαστικά, είναι ότι οι σελίδες της εφαρμογής που βρίσκονται στη μνήμη γράφονται στο pagefile και αφαιρούνται από τη μνήμη. Η εφαρμογή εξακολουθεί να χρησιμοποιεί την ίδια μνήμη συνολικά, στον Task Manager όμως θα φαίνεται σαν να χρησιμοποιεί λιγότερη RAM. Ενώ πριν η εφαρμογή φαινόταν να χρησιμοποιεί 10MB τώρα χρησιμοποιεί 2MB. Αντί όμως να αυξηθεί η ταχύτητα της εφαρμογής, βλέπει κανείς μια σημαντική καθυστέρηση! Τί έγινε? Η κλήση στην SetProcessWorkingSet αναγκάσε τα Windows να βγάλουν από τη RAM σχεδόν όλες τις σελίδες που αφορούν την εφαρμογή. Οι σελίδες αυτές όμως δεν περιείχαν μόνο τις μεταβλητές της εφαρμογής αλλά και τα DLL που χρησιμοποιούσε, μεταξύ των οποίων είναι και τα DLL του .NET Framework. Όταν λοιπόν η εφαρμογή προσπαθήσει να κάνει ένα απλό...
|
-
Φτιάχνω μια ωραία, μικρή εφαρμογή σε .NET η οποία εμφανίζει ένα απλό Hello World και δύο κουμπάκια, την τρέχω και κοιτάζω στον Task Manager πόση μνήμη χρησιμοποιεί. Και τί βλέπω? Η μικρή εφαρμογή χρησιμοποιεί 10 MB! Μα είναι δυνατόν? Μήπως όλες οι εφαρμογές .NET είναι μνημοβόρα τερατουργήματα? Φυσικά η κατάσταση δεν είναι τόσο τραγική. Για να καταλάβει κανείς τί συμβαίνει θα πρέπει να καταλάβει τί σημαίνουν πραγματικά οι ενδείξεις του Task Manager και πως διαχειρίζονται τη μνήμη τα Windows. Όταν ξεκινάει μια εφαρμογή, τα Windows φορτώνουν στη μνήμη το exe της εφαρμογής αλλά και τα DLL, αν αυτά δεν έχουν ήδη φορτωθεί στη μνήμη. Επίσης, δίνουν ένα χώρο στη μνήμη για να δημιουργεί τις μεταβλητές της. Τώρα, αν τα DLL έχουν ήδη φορτωθεί από κάποια άλλη εφαρμογή, τα Windows δεν θα τα ξαναφορτώσουν αλλά θα χρησιμοποιήσουν τα DLL που υπάρχουν ήδη στη μνήμη. Τα bytes αυτά τα οποία μπορούν να μοιραστούν μεταξύ εφαρμογών ονομάζονται shared bytes. Τα bytes που αφορούν αποκλειστικά την εφαρμογή και δεν μοιράζονται με άλλα...
|
-
Πώς μπορούμε νά σηκώσουμε τον IE μέσα από την εφαρμογή ο κώδικας είναι στό συνημμένο αρχείο στο παρακάτω link. http://www.dotnetzone.gr/cs/forums/11335/ShowPost.aspx Αλήθεια Σωτήρη - Μάνο γιατί δέν μπορώ να επισυνάψω σέ μια δημοσίευση κάποιο αρχείο?...
|
-
Έπεσα σ'αυτό το link του MSDN. Μπορείτε να το κατεβάσετε δωρεάν http://msdn.microsoft.com/vbasic/learning/introtovb2005/...
|
-
Στο παρακάτω κομμάτι μπορούμε να δούμε πώς μπορούμε να αλλάξουμε το backcolor και barcolor ενός progressbar. Στην Form1 βάζουμε Ένα ColorDialogProgressbar=ColorDialogProgressbar1 , button=buttonBackColor ,button=buttonForeColor ,ProgressBar=progressbar1 Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer 'Δήλωση σταθερών Const _BARCOLOR = &H409 Const _BKCOLOR = &H2001 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load progressbar1.Value = 5 progressbar1.Maximum = 10 ColorDialogProgressbar1.FullOpen = True End Sub ' Events των Buttons Private Sub buttonBackColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonBackColor.Click If ColorDialogProgressbar1.ShowDialog() = DialogResult.OK Then PostMessage(progressbar1.Handle, _BKCOLOR, 0, ColorTranslator.ToOle(ColorDialogProgressbar1.Color)) End If End Sub...
|
-
Παρακάτω βλέπουμε την αντιστοιχία και την χρήση VB 6 Εντολών σέ VB.NT Len = .Length Mid = .SubString Replace = .Replace InStr = .IndexOf UCase = .ToUpper LCase = .ToLower Split = .Split A) Παίρνοτας το μέγεθος ενός χαρακτήρα ή μιάς μεταβλητής Textbox1.Text.Length O παραπάνω κώδικας μάς επιστρέφει το μέγεθος του χαρακτήρα πού βρίσκεται στο Textbox1 Dim StrText As String Dim r As Integer StrText = "Θα πάμε εκδρομή στο Ναύπλιο?" r = StrText.Length MsgBox(r) B) Παρακάτω βλέπουμε πώς εκτελείται η Mid function thw VB6 σέ .ΝΕΤ Dim r As String = "Γειά σου κόσμε" r = r.Substring(4) MsgBox(r) ή Dim r As String = "Γειά σου κόσμε" r = r.SubString(6, 3) MsgBox(r) Γ) Εκτέλεση της Instr σέ .NET κώδικα Dim r As String = "Θα περάσουμε ένα υπέροχο Σαββατοκύριακο" r = r.IndexOf("υπέροχο") MsgBox(r) Δ) Εκτέλεση της Replace σέ .ΝΕΤ Dim i As String = "Ήμουν βλάκας που σέ πίστεψα" i = i.Replace("βλάκας", "ηλίθιος") MsgBox(i) Ε) Δουλεύοντας της UCASE και LCASE της VB6 σε .ΝΕΤ Dim r as String r = "Θα έρθω να σε πάρω στις 8 το βράδυ" r...
|
-
Πώς μπορούμε να διαγράψουμε άδειους φακέλους . Imports System.IO Public Sub DelEmptyFolders( ByVal DirPath As String ) Dim SubDirs() As String = Directory.GetDirectories(DirPath) Dim strDir As String For Each strDir In SubDirs DelEmptyFolders(strDir) Next If Directory.GetFiles(DirPath).Length + Directory.GetDirectories(DirPath).Length = 0 Then Directory.Delete(DirPath) Console.WriteLine("Διαγραφή φακέλου: " & DirPath) End If End Sub Οπότε μπορούμε να κάνουμε κλήση της DelEmptyFolders μεθόδου π.χ. DelEmptyFolders ("C:\") για να διαγραφούν όλοι οι άδειοι φάκελλοι στό σύστημα...
|
-
Επειδή πρίν από κάποιο διάστημα είχα ένα πρόβλημα μέ μιά Database σε ένα pc που είχε κτυπήσει ο δίσκος και μπόρεσα και έσωσα το mdf από την βάση αλλά είχα πρόβλημα στο attach της database έθεσα το πρόβλημα στο dotnetzone καί ΄μπόρεσα να βρώ την λύση μέσα από αυτό. Σας παραθέτω το link που είχε γίνει η σχετική συζήτηση τυχόν και βρεθεί και κάποιος άλλος σ'αυτή την θέση. http://www.dotnetzone.gr/cs/forums/8927/ShowPost.aspx Ευχαριστώ τον raPhaeL για την βοήθειά του...
|
-
Imports System.Data.OleDb Imports ADODB Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load AdoDBRecToDs("myServerName", "pubs") End Sub Private Function AdoDBRecToDs( ByVal Server As String , ByVal DbName As String ) Dim cnn As Connection = New ADODB.Connection() Dim adors As Recordset = New ADODB.Recordset() cnn.open("PROVIDER=SQLOLEDB;DATA SOURCE=" & Server & ";" & _ "INITIAL CATALOG=" & DbName & ";INTEGRATED SECURITY=SSPI;") 'Δημιουργία recordset-- 'Δήλωση οποιουδήποτε πίνακα στην βάση Dim sql As String = "select * from authors" adors.open(sql, cnn, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly, 0) Dim da As New OleDbDataAdapter() Dim ds As New DataSet() 'Μεταφορά του recordset στο Dataset da.Fill(ds, adors, "authors") 'Γέμισμα ενός Grid grd.DataSource = ds.Tables("authors") 'Τερματισμός σύνδεσης cnn.Close() End Function End Class...
|
-
Ο παρακάτω κώδικας μάς δείχνει άν η εφαρμογή μας ήδη τρέχει σε κάποιο προηγούμενο process Imports System.Runtime.InteropServices Public Const ERROR_ALREADY_EXISTS As Integer = 183 Public Declare Function CreateMutexA Lib "Kernel32.dll" ( ByVal lpSecurityAttributes As Integer , ByVal bInitialOwner As Boolean , ByVal lpName As String ) As Integer Public Declare Function GetLastError Lib "Kernel32.dll" () As Integer Public Function ProcIsRunning() As Boolean ' Προσπάθεια δημιουργίας ενός Default Mutex το οποίο ανήκει στο process 'Το MyApplication μπορεί να αντικατασταθεί μέ το όνομα της εφαρμογής . CreateMutexA(0, True , "MyApplication") Return (GetLastError() = ERROR_ALREADY_EXISTS) End Function...
|
-
Ψάχνοντας πληροφορίες για ένα κείμενο έπεσα σε μια καταπληκτική παράγραφο, στο Guidelines for Debugging του Visual Studio Team System . Δεν μπόρεσα να αντισταθώ και να σας τη μεταφέρω! "Test will never be able to find all the bugs. It is not possible. Code is too complex. Even if test could find all the bugs, you would never have time to fix all of them . The right thing to do is to design your product so that bugs are not in the product from the start. Save yourself the trouble of fixing them later. You must take responsibility for the quality of your code. The test team just verifies the quality of your code. Do not depend on testers to clean up your mess. " Η υπογράμμιση δική μου. Ή να το πούμε και αλλιώς: 3 testers δεν αντικαθιστούν 1 senior developer....
|
-
Τέσσερα απαραίτητα δωρεάν εργαλεία για να κάνετε τη ζωή σας με την XML πιό εύκολη. Ειδικά το XSD Inference 1.0 είναι κάτι που αρκετοί από εμάς μπορεί να χρειαστούν. XSD Object Code Generator The utility builds C# and VB.NET data structures from an XSD schema that can serialize and de-serialize to XML and other formats. This tool is available here. Microsoft XML Diff and Patch This tool lets you identify changes between two XML files. It also lets you patch the original XML file with the changes to get the final XML file. The assembly, source code, documentation and samples for this tool are now available here. XSD Schema Validator Leveraging the top conformant XML Schema Parser released with .Net Frameworks, this tool allows you to validate an XML documents against an W3C XML Schema (XSD) or an XML Data-Reduced (XDR) schema, verify the schemas are valid, or simply check the well-formedness of XML documents. Microsoft XSD Inference 1.0 The Microsoft XSD Inference utility is used to create an XML Schema definition...
|
-
Ενας μικρός οδηγός αναφοράς για τα στοιχεία τα οποία συνθέτουν τα μισητά, πλην όμως απαραίτητα (?) εταιρικά meetings. Χρήσιμος για να έχετε κάτι να κάνετε την ώρα των meetings....
|
-
Just a few days ago I heard about Project Origami ( http://www.origamiproject.com ). Today I saw the promo video made by D-kitchen ( http://www.d-kitchen.com ). It's smaller than laptop, it's bigger than a PDA. If you consider your PDA useful, I think you'll find it useful too. Based on what's included in the video, here are my estimations about it features: (You can see the related photos in each item) Dimensions: About 27 x 15 cm (10,6 x 6 inches) Screen diminutions: 18cm x 11cm (7 x 4 inches) (8 inches diag. ?) Touch screen Stylus (about 7cm long) Different colors: Dark grey [1] , light grey [2] , light green [6] Desktop cradle (about 25cm wide) [1] It may have a gps receiver included [3] It runs on windows xp (as far as I can tell from the window borders) [7] [8] You can browse the internet through Internet explorer [7] It runs Microsoft Streets & Trips [3] You can play games on it, although in the video the rendering does not seems so smooth It has a separate keyboard at almost the same size as the origami...
|
-
Want to create an online photo tour of your vacation to Bali? An overview of the South American precipitation cycle for your science class? A shrine to your pet ferret? Now's your chance. We're testing a new product that makes creating your own web pages as easy as creating a document in a word processor. Google Page Creator is a free tool that lets you create web pages right in your browser and publish them to the web with one click. There's no software to download and no web designer to hire. The pages you create are hosted on Google servers and are available at http://yourgmailusername.googlepages.com for the world to see. At http://pages.google.com...
|
-
Στο συγκεκριμμένο θέμα θα δούμε πώς μπορούμε νά κάνουμε upgrade του σχήματος της βάσης μασ σέ νέο version ακόμα και όταν το version που είναι εγκατεστημμένο είναι πολύ παλαιότερο και δέν θελουμε να τρέξουμε όλα τά προηγούμενα patches που μπορεί νά υπάρχουν. Ας υποθέσουμε ότι έχουμε ένα πινακα στην βάση μας όπως παρακάτω. myTable ( columnA INT not null, columnB varchar(10) not null, columnC varchar(60) null columnD varchar(20) null columnE float default(0) ) και θέλουμε τώρα νά τον κάνουμε upgrade στην νέα version myTable ( columnA INT not null, columnB varchar(10) not null, columnC varchar(60) null columnD varchar(20) null columnE float default(0) columnF smallint default(0), columnG numeric(28,2) default(0) ) σίγουρα θά μπορούσαμε νά τρέξουμε ένα Alter statement και αυτό νά πραγματοποιηθεί.Αλλά η column columnF έχει δημιουργηθεί σέ προηγούμενο version της εφαρμογής μας το οποίο και δέν έχει εγκατασταθεί.Πώς θα μπορούσαμε να κάνουμε την νέα εγκατάσταση χωρίς να χρειάζεται να τρέξουμε το προηγούμενο set εγκατάστασης?...
|
-
Είναι σύνηθες για τις εταιρίες να θέτουν τυποποιημένες διαδικασίες όταν μεγαλώνουν. Τι γίνεται όμως όταν τις διαδικασίες έχει επινοήσει ένας Πολύξερος Τοθελωχθές, και για να κάνετε μια αίτηση απαιτείται να συμπληρώσετε μια αίτηση αίτησης;...
|
-
Διάβασα πρόσφατα το άρθρο "What is a software architecture?" στο τελευταίο τεύχος του Rational Ezine. Αλήθεια, τί σημαίνει τελικά η λέξη architecture και τί σημαίνει architect? Φαίνεται λες και ο καθένας εννοεί κάτι διαφορετικό με τη λέξη architecture και architect, σε σημείο που να μην καταλαβαίνει ο ένας τί λέει ο άλλος σε μια συζήτηση. Τα πράγματα ήταν απλά πριν από μερικά χρόνια. Architecture ήταν χονδρικά η δομή και η συμπεριφορά ενός συστήματος. Το πρόθεμα software δεν έμπαινε γιατί πολλοί το θεωρούσαμε αυτονόητο. Αρχιτέκτονας ήταν αυτός ο οποίος σχεδίαζε τη βασική δομή της εφαρμογής, όριζε τα components, τις σχέσεις και τη συμπεριφορά τους. Ήταν το άτομο που ήξερε πως δουλεύει η εφαρμογή. Μετά όμως τα πράγματα άρχισαν να γίνονται πιο περίπλοκα. Αντί για desktop, άντε client-server εφαρμογές, αρχίσαμε να έχουμε n-tier συστήματα. Κάποια στιγμή αποκτήσαμε τόσους server και συστήματα που έπρεπε να ελέγχουμε που τρέχει τί και πως θα κάνουμε διαχείριση του φόρτου. Τελευταία, η κάθε επιχείρηση χρησιμοποιεί τόσα...
|
-
Private Sub TreeView_VisibleChanged( ByVal sender As Object , ByVal e As System.EventArgs) Handles TreeView1.VisibleChanged 'Με αυτό τον τρόπο αποφεύγουμε την εμφάνιση της horizontal scrollbar όταν το treeview γεμίζετε ενώ η κατάσταση του είναι hidden. 'Δηλώνουμε το width σε 0, εφόσον το treeview είναι docked, τότε αυτό θά πάρει το μέγεθος που πρέπει αλλά το μέγεθος του scroll bars σ' αυτό θά επαναυπολογιστεί CType (sender, TreeView).Width = 0 End Sub...
|
-
Εξαιρετικά εύχρηστο και χρήσιμο εργαλείο για να οργανώσετε τα bookmarks σας on-line, και να τα έχετε πάντα προσβάσιμα όπου και να βρίσκετε: http://del.icio.us/ Πολύ ενδιαφέρουσα είναι και η πλοήγηση στα links όλων των χρηστών με βάση το popularity τους. Αναζητήστε για παράδειγμα links χρηστών που έχουν χαρακτηριστεί (taged) με τη λέξη "winforms" και δείτε καταπληκτικά links για winforms. Δείτε δίπλα επίσης άλλα σχετικά tags με αυτό που ψάχνετε. Δοκιμάστε και τα δύο κουμπιά - links που σας προσθέτει στα favorites του browser σας, δίνουν μεγάλη ευκολία στην άμεση προσθήκη links στη συλλογή σας. Εγώ το βρήκα στο wired ....
|
-
700 hits στο RSS feed του blog μου? Και δεν έχω γράψει ούτε ένα post? Το ξερω, το ξέρω, είμαι απαράδεκτος! Έχω καλή δικαιολογία όμως. Παντρεύτηκα τον Ιανουάριο! Υπόσχομαι ότι από εδώ και πέρα θα γράφω και μάλιστα τακτικά. Έχω εξάλλου τρουλάχιστον 4-5 διαφορετικές ιστορίες και φιλοσοφικές αναζητήσεις που θα ήθελαν να μοιραστώ μαζί σας!...
|
-
Το google μόλις ενεργοποίησε το chat για το gmail. Με πέταξε έξω, και μόλις ξαναμπήκα... αλλαγές. Quick contacts αριστερά με τις πιο συχνά χρησιμοποιούμενες επαφές, on-line status και block αλά msn messenger, hover παράθυρο με πληροφορίες πάνω από κάθε e-mail.... Ψάχνω κάποιον απεγνωσμένα για να δοκιμάσω το chat... αλλά όλες μου οι 360 επαφές είναι off-line......
|
|
|
|