ArtAZ

Το νέο artAZ είναι το πρώτο site που υλοποιήθηκε με τη νέα version του cms μου. Η πλατφόρμα είναι asp.net 4 και η επικοινωνία με την βάση δεδομένων γίνεται με Entity Framework 4.

Χρησημοποιήθηκαν δύο γλώσσες, το σύστημα υποστηρίζει πολλαπλές γλώσσες. Το πολυγλωσσικό σύστημα επεκτείνεται ακόμα και στις RSS τροφοδοσίες.

Η εφαρμογή απαρτίζεται από την βασική λειτουργία δυναμικής διαχείρισης σελίδων και περιοχών, φόρμας επικοινωνίας, και διαχείριση νέων.

Η διαχείριση νέων επεκτάθηκε ώστε να περιλαμβάνει διάφορες κατηγορίες και "ειδικό βάρος" των αναρτήσεων. Με αυτό τον τρόπο καθώς οι συντάκτες εισάγουν άρθρα, και χαρακτηρίζοντάς τα με διάφορες παραμέτρους αυτά παίρνουν την θέση τους και σε σελίδες και λίστες. Το σύστημα νέων εμπλουτίστηκε με μηχανισμό διαχείρισης σχολίων ώστε να υπάρχει και μια μηχανή blog. Στις σελίδες του blog χρησημοποίησα τον πλούτο του περιεχομένου ενφανίζοντας στο back ground τα έργα τέχνης.

Πρόσθεσα έναν banner manager που υποστηρίζει, εικόνες και flash. Επίσης η διαχειριστές έχουν μηχανισμό δημιουργίας και μαζικής αποστολής news letter, με αναφορές και διαφημιστικές καμπάνιες. Επίσης στο σύστημα υπάρχει μηχανισμός διαχείρισης επαφών.

Για το project δημιούργησα μηχανισμό διαχείρισης των καλιτεχνών και των έργων τους, όπου εκμεταλεύτηκα την μηχανισμό tags που έχα για τα νέα και δεν χρειάστηκε να δημιουργήσω κατηγορίες.

Επειδή το site έχει αρκετές εικόνες και γραφικά έδωσα βάρος στο πόσο "γρήγορα" πρέπει να φορτώνουν οι σελίδες. Πολύ χρήσιμο βρήκα το νέο μοντέλο View State που υπάρχει στο asp.net 4 αλλά και τα Master Pages.

Από πλευράς client script έχει λίγο jQuery σε συμπληρωματικό ρόλο όμως.
Τα αποτελέσματα του SEO, αν και νωρίς, είναι ιδιαίτερα ικανοποιητικά, και πιστεύω πως ο χρόνος θα μας δικαιώσει.

Πλοηγηθείτε στο http://artaz.gr/el/NEWS/2010/11/3/νεο-artaz-τι-ειναι-νεο.aspx για να διαβάσετε την περιγραφή των διαχειριστών για την λειτουργικότητα του site.

Όπως θα δείτε και στα banners το e shop είναι ακόμα στο laptop μου, αλλά σύντομα θα είναι επάνω και αυτό.

Ρίξτε του μια ματιά ή και δύο, τρεις...










Διαγραφή directory σε asp.net εφαρμογή

Υπάρχουν περιπτώσεις που μια εφαρμογή πρέπει να διαγράψει ένα ολόκληρο directory και τα αρχεία ή άλλα directories που μπορεί να περιέχει.
Καλώντας την IO.Directory.Delete(path, true) που θα έπρεπε να διαγράψει το directory και τα περιεχόμενά του, γυρνάει το error: "The directory is not empty."
Για να παρακάμψω το πρόβλημα βρήκα τις εξής πολύ χρήσιμες μεθόδους:
        ''' <summary>
        ''' A method to traverse down through child directories until
        ''' we have reached the lowest level and then clean (delete) all
        ''' files before deleting the directory itself.
        ''' </summary>
        ''' <param name="di">
        ''' <remarks>All files must be deleted in a directory prior to deleting the
        ''' directory itself to prevent the following exception:
        ''' "The directory is not empty."
        ''' </param>
        ''' </remarks>
        Public Shared Sub DirectoryDeepDelete(ByVal di As DirectoryInfo)

            'If the current directory has more child directories, then continure
            'to traverse down until we are at the lowest level.  At that point all of the
            'files will be deleted.
            For Each diChild As DirectoryInfo In di.GetDirectories()
                DirectoryDeepDelete(diChild)
            Next

            'Now that we have no more child directories to traverse, delete all of the files
            'in the current directory, and then delete the directory itself.
            CleanAllFilesInDirectory(di)


            'The containing directory can only be deleted if the directory
            'is now completely empty and all files previously within
            'were deleted.
            If di.GetFiles().Count = 0 Then
                di.Delete()
            End If

        End Sub

        ''' <summary>
        ''' Iterates through all files in the directory passed into
        ''' method and deletes them.
        ''' </summary>
        ''' <param name="DirectoryToClean"/>
        ''' <remarks>It may be necessary to wrap this call in impersonation or ensure parent directory
        ''' permissions prior, because delete permissions are not guaranteed.
        ''' </remarks>
        Public Shared Sub CleanAllFilesInDirectory(ByVal DirectoryToClean As DirectoryInfo)

            For Each fi As FileInfo In DirectoryToClean.GetFiles()
                'The following code is NOT required, but shows how some logic can be wrapped
                'around the deletion of files.  For example, only delete files with
                'a creation date older than 1 hour from the current time.  If you
                'always want to delete all of the files regardless, just remove
                'the next 'If' statement.
                If fi.CreationTime < Now.Subtract(New TimeSpan(0, 0, 1)) Then
                    'Read only files can not be deleted, so mark the attribute as 'IsReadOnly = False'
                    fi.IsReadOnly = False
                    fi.Delete()

                    'On a rare occasion, files being deleted might be slower than program execution, and upon returning
                    'from this call, attempting to delete the directory will throw an exception stating it is not yet
                    'empty, even though a fraction of a second later it actually is.  Therefore the 'Optional' code below
                    'can stall the process just long enough to ensure the file is deleted before proceeding. The value
                    'can be adjusted as needed from testing and running the process repeatedly.
                    System.Threading.Thread.Sleep(50)  '50 millisecond stall (0.05 Seconds)
                End If
            Next
        End Sub
Τώρα κάθε φορά που η εφαρμογή χρειάζεται να σβήσει ένα directory καλώ την DirectoryDeepDelete περώντας ένα αντικέιμενο DirectoryInfo.

iPhone vs Android vs Blackberry

Microsoft & jQuery


Ο Rick Strahl είνα εξαιρετικός programmer και διατηρεί ένα πραγματικά καλό blog με θέματα που αφορούν όλες τις πτυχές του asp.net.
Διαβάστε στο link που ακολουθεί για τον καινούριο έρωτα μεταξύ της Microsoft και του jQuery

Rick Strahl's Web Log: "Microsoft and jQuery"

Οι 40 άνθρωποι που άλλαξαν το internet


Γνωρίστε τους στο παρακάτω άρθρο.

Το domain που "τρέχει" μια asp.net σελίδα

Request.Url.Scheme & Uri.SchemeDelimiter & Request.Url.Host