Deep Zoom Obama

Δείτε, ακολουθώντας το παρακάτω link, μια σελίδα φτιαγμένη με Deep Zoom και Silverlight 2, που έχει ένα γραφικό 10.000 x 10.000 pixels, με 12000 φωτογραφίες από υποστηρικτές του Barack Obama, οι οποίες και έχουν τοποθετηθεί έτσι ώστε να σχηματίζουν το πρόσωπό του! Απίστευτο!!!

http://www.deepzoomobama.com/

Πώς να κάνετε τον δικτυακό σας τόπο συμβατό με τον Internet Explorer 8

Όπως ίσως θα γνωρίζετε, εδώ και αρκετό καιρό έχει κυκλοφορήσει η πρώτη beta του Internet Explorer 8 (την οποία μπορείτε να την κατεβάσετε από εδώ), ενώ σύντομα περιμένουμε και την δεύτερη beta έκδοση. Ανάμεσα στα highlights αυτής της καινούριας version του Internet Explorer είναι τα activities και τα webslices (πληροφορίες για τα οποία μπορείτε να δείτε εδώ).

Ο Internet Explorer 8 δημιουργήθηκε ώστε να "υπακούει" στα web standards, και να κάνει render τα web sites σύμφωνα με αυτά. Για αυτό το λόγο, πολλά από τα site του Διαδικτύου, δεν θα φαίνονται σωστά με τον νέο browser. Παρόλα αυτά, η ομάδα ανάπτυξης προνόησε ώστε να μην χρειάζεται η επανασυγγραφή της HTML, των CSS και της Javascript σε έναν δικτυακό τόπο, προκειμένου να εμφανίζεται σωστά στον Internet Explorer 8. Χρειάζεται απλά μία  πολύ μικρή "επέμβαση" μιας γραμμής κώδικα, είτε σε επίπεδο σελίδας, είτε σε επίπεδο δικτυακού τόπου.

Από τη σελίδα http://support.microsoft.com/kb/952030

Μπορείτε να χρησιμοποιήσετε μία από τις ακόλουθες επιλογές ώστε να εξαναγκάσετε τον Internet Explorer 8 να κάνει render τις σελίδες του δικτυακού σας τόπου όπως και ο Internet Explorer 7.

Σε επίπεδο δικτυακού τόπου (ΣΥΝΙΣΤΑΤΑΙ)

Οι διαχειριστές δικτυακών τόπων μπορούν να συμπεριλάβουν το παρακάτω HTTP header ώστε να εξαναγκάσουν τον Internet Explorer 8 να κάνει render τις ιστοσελίδες του δικτυακού τόπου με τον τρόπο που τις κάνει render ο Interner Explorer 7

X-UA-Compatible: IE=EmulateIE7

Για να προσθέσετε ένα HTTP response header στο επίπεδο δικτυακού τόπου σε ένα μηχάνημα Windows Server 2008, για τον Internet Information Services 7, θα πρέπει να ακολουθήσετε τα παρακάτω απλά βήματα:

1. Κάνετε κλικ στο Start, επιλέξτε Administrative Tools, και μετά Internet Information Services (IIS) Manager.

2. Κάτω από Connections, κάνετε διπλό κλικ στο server που επιθυμείτε, και μετά κάντε διπλό κλικ στο Sites.

3. Κάνετε κλικ στο website στο οποίο θέλετε να βάλετε το HTTP response header.

4. Κάτω από το Web site name Home, κάντε διπλό κλικ στο HTTP Response Headers στο τμήμα IIS.
Σημείωση Σε αυτό το βήμα, Web site name είναι το όνομα του δικτυακού τόπου.

5. Κάτω από το Actions, επιλέξτε Add.

6. Στο πλαίσιο κειμένου Name, πληκτρολογήστε X-UA-Compatible.

7. Στο πλαίσιο κειμένου Value, πληκτρολογήστε IE=EmulateIE7.

8. Κάντε κλικ στο OK.

Για να προσθέσετε HTTP response header στο επίπεδο δικτυακού τόπου σε web server Internet Information Services 6 (ή παλιότερες εκδόσεις) μπορείτε να ακολουθήσετε τα παρακάτω απλά βήματα:

1. Κάντε κλικ στο Start, επιλέξτε Run, πληκτρολογήστε inetmgr.exe, και μετά κλικ στο OK.

2. Επιλέξτε το server που επιθυμείτε, και μετά την επιλογή Web Sites.

3. Κάντε δεξί κλικ στο web site που επιθυμείτε, και επιλέξτε Properties.

4. Στην ενότητα Custom HTTP headers, κάντε κλικ στο Add.

5. Στο πλαίσιο κειμένου Custom header name box, πληκτρολογήστε X-UA-Compatible.

6. Στο πλαίσιο κειμένου Custom header value, πληκτρολογήστε IE=EmulateIE7.

7. Κάντε κλικ στο OK δύο φορές.

Αν χρησιμοποιείτε Apache, μπορείτε να δείτε εδώ πως να προσθέσετε custom HTTP headers. Αρκεί να κάνετε set το Header X-UA-Compatible IE=EmulateIE7

edit (29/8/2008): μπορείτε να δείτε και αυτό το blog post για περισσότερες πληροφορίες σχετικά με το emulation σε Apache.

Σε επίπεδο σελίδας

Οι διαχειριστές δικτυακών τόπων μπορούν να συμπεριλάβουν το κάτωθι ειδικό HTML tag, μετά το <head> tag της σελίδας:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Το παρακάτω παράδειγμα δείχνει τη χρήση αυτού του tag συμβατότητας με τον Internet Explorer 7, σε επίπεδο σελίδας:

<html>
<head>
  <!-- Use IE7 mode -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
  <title>My Web Page</title>
</head>
<body>
  <p>Content goes here.</p>
</body>
</html>
Με το να πραγματοποιήσετε μία από τις δύο παραπάνω επιλογές, οι επισκέπτες του δικτυακού τόπου σας που χρησιμοποιούν Internet Explorer 8 δεν θα έχουνε κανένα απολύτως πρόβλημα στο να δουν τις σελίδες σας!!!


Σε επίπεδο browser

Φυσικά, ο κάθε χρήστης του Internet Explorer 8 μπορεί να εξαναγκάσει τον browser του να κάνει render τις ιστοσελίδες όπως και ο 7, κάνοντας κλικ στο κουμπί "Emulate IE7", που είναι στο πάνω μέρος του παραθύρου του browser.

Κλήση WCF Service από windows mobile συσκευή

Σε αυτό το blog post θα δούμε πως μπορούμε να φτιάξουμε ένα απλό WCF service, και να το καλέσουμε από μία συσκευή Windows Mobile, και ταυτόχρονα να το κάνουμε demo μέσω της οθόνης του υπολογιστή μας.

Θα χρειαστούμε τα παρακάτω

  • Visual Studio 2008 (.NET Framework 3.5)
  • Windows Mobile 6 SDK (το κατεβάζετε από εδώ)
  • Power Toys for .NET Compact Framework 3.5 (τα κατεβάζετε από εδώ)
  • MyMobiler (δωρεάν πρόγραμμα το οποίο δείχνει την οθόνη της συσκευής στο PC, και επιτρέπει τον έλεγχό της μέσω του PC – το κατεβάζετε από εδώ)

Ας ξεκινήσουμε, ανοίγοντας το Visual Studio. Δημιουργούμε ένα νέο WCF Service Application

image

Για τις ανάγκες του παρόντος post, θα χρησιμοποιήσουμε τα δύο default operations του service

image

Στη συνέχεια, θα μεταβούμε στο web.config, όπου και θα αλλάξουμε το binding του service μας (που από default είναι wsHttpBinding) σε basicHttpBinding, μιας και το wsHttpBinding δεν υποστηρίζεται στο .NET Compact Framework 3.5 (για πλήρη λίστα των bindings που υποστηρίζονται στο .NET Compact Framework 3.5, δείτε εδώ).

Οπότε, το web.config μας θα μοιάζει κάπως έτσι

image

Στη συνέχεια, θα κάνουμε publish το service μας στον τοπικό IIS (δεν μπορούμε να χρησιμοποιήσουμε τον ενσωματωμένο web server του Visual Studio, καθώς αυτός υποστηρίζει συνδέσεις μόνο από το ίδιο μηχάνημα, οπότε δεν θα δεχόταν συνδέσεις από την windows mobile συσκευή μας).

image

Αφού το κάνουμε publish, μπορούμε εύκολα να δοκιμάσουμε την ορθή λειτουργία του

image

Το service μας είναι έτοιμο προς "κατανάλωση" από οποιονδήποτε client!!!

Αν δεν έχετε ήδη εγκαταστήσει το MyMobiler, κάντε το. Φυσικά, πρώτα θα πρέπει να ρυθμίσετε τη συσκευή σας για ορθή σύνδεση με τον υπολογιστή. Για χρήστες Windows Vista, η σύνδεση γίνεται μέσω του Windows Mobile Device Center, ενώ για χρήστες XP υπάρχει το ActiveSync. Υποθέτω ότι τα έχετε εγκαταστήσει και ρυθμίσει σωστά!!

Συνεχίζοντας, συνδέουμε την windows mobile συσκευή μας στο PC μας (αν δεν το έχουμε κάνει ήδη). Πάμε προσωρινά πίσω στο Visual Studio solution μας, και δημιουργούμε ένα νέο smart device project για Windows Mobile 6, και πιο συγκεκριμένα ένα Device Application.

image

Στο σημείο αυτό, θα ξεχάσουμε για λίγο το Visual Studio. Πρώτα απ'όλα, θα πρέπει να βρούμε την IP της συσκευής, στο τοπικό δίκτυο της συσκευής με τον υπολογιστή μας. Πηγαίνουμε start -> Run -> cmd. Εκεί πληκτρολογούμε ipconfig, όπου και βλέπουμε τις IP διευθύνσεις του υπολογιστή μας στα διάφορα δίκτυα στα οποία αυτός είναι συνδεδεμένος

image

Η διεύθυνση του υπολογιστή μας στο δίκτυο υπολογιστή-συσκευής είναι, λοιπόν, η 169.254.2.2. Οπότε, συμπεραίνουμε ότι η συσκευή θα βλέπει το service μας στη διεύθυνση http://169.254.2.2/Service1.svc . Ας το δοκιμάσουμε.

image

Συμπεραίνουμε ότι το κινητό μας έχει επιτυχώς HTTP access στο service μας. Ας πάμε τώρα να φτιάξουμε τα απαραίτητα αρχεία για την "κατανάλωση" του WCF service από το κινητό. Με την εγκατάσταση των .NET Framework 3.5 Power Toys, εγκαθίσταται ένα προγραμματάκι, το NetCFSvcUtil. Στο δικό μου μηχάνημα, αυτό βρίσκεται στον κατάλογο C:Program FilesMicrosoft.NETSDKCompactFrameworkv3.5bin. Ανοίγουμε ένα command prompt (tip: στα Vista, μπορείτε εύκολα να τρέξετε command prompt με αρχικό path έναν οποιονδήποτε φάκελο, αν κάνετε δεξί κλικ στο φάκελο, κρατώντας πατημένο το Shift. Τότε στο context menu υπάρχει η επιλογή "Open Command Window Here"). Στην κονσόλα λοιπόν, τρέχουμε την εντολή

netcfsvcutil http://169.254.2.2/Service1.svc

image

Βλέουμε ότι το netcfsvcutil δημιούργησε δύο αρχεία, το Service1.cs και το CFClientBase.cs. Ξαναγυρνάμε πίσω στο Visual Studio όπου και κάνουμε add αυτά τα δύο αρχεία στο smart device project που δημιουργήσαμε προηγουμένως

image

Το smart device project μας, όμως, αυτή τη στιγμή δεν κάνει compile, γιατί του λείπουνε δύο απαραίτητα assemblies, και πιο συγκεκριμένα, το System.ServiceModel.dll και το System.Runtime.Serialization.dll(απαραίτητα για να παίξει σωστά το WCF). Μπορούμε πολύ εύκολα να τα κάνουμε reference στο project μας, κάνοντας δεξί κλικ στο project, και επιλέγοντας "Add Reference".

image

Εν συνεχεία, πάμε στη main φόρμα του smart device project μας (by default ονομάζεται Form1.cs) και κάνουμε add τα εξής

  • ένα Button
  • ένα Label
  • ένα TextBox

για τις ανάγκες του demo, θα χρησιμοποιήσουμε το operation GetData του service, το οποίο παίρνει σαν παράμετρο έναν ακέραιο και επιστρέφει ένα string. Οπότε, κάνουμε διπλό κλικ στο κουμπί που προσθέσαμε (για να δημιουργηθεί ο event handler για το Click event) και γράφουμε τα εξής

image

Πάμε τώρα να δοκιμάσουμε την εφαρμογή μας! Επιλέγουμε startup project να είναι το SmartDeviceProject1, και ξεκινάμε το debug. Αρχικά, μας ρωτάει που θέλουμε να γίνει το deployment.

image

Επιλέγουμε Windows Mobile 6 Professional Device. Το visual studio θα αρχίσει να κάνει publish την εφαρμογή μας στη συσκευή, στην οθόνη της οποίας θα εμφανιστούν διάφορα μηνύματα που θα απαιτούν επιβεβαίωση. Μόλις δώσουμε την έγκριση μας για αυτά, στην συσκευή μας θα εμφανιστεί η φόρμα Form1.

image

Το μόνο που απομένει να κάνουμε, είναι να δώσουμε έναν ακέραιο στο textbox (μόνο ακέραιο, γιατί δεν έχουμε γράψει κάποιο validation/exception handling κώδικα) και να πατήσουμε το κουμπί button1.

Αν όλα πάνε καλά, τότε θα εμφανιστεί στο κινητό μας το παρακάτω

image

το οποίο σημαίνει ότι το πρόγραμμα στη συσκευή μας κατάφερε επιτυχώς να καλέσει το service στον υπολογιστή μας!!!!

Enjoy!!!

Δωρεάν μαθήματα elearning για WPF, WCF και WF με το Visual Studio 2008

Στην παρακάτω σελίδα, μπορείτε να βρείτε δωρεάν μαθήματα elearning για το Microsoft .NET Framework 3.5 και το Visual Studio 2008.

Πιο συγκεκριμένα, μπορείτε να βρείτε τα ακόλουθα 3 clinics

Η σελίδα είναι η εξής: https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=213184

Enjoy!!!!!

Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta

Στο παρακάτω link, ο Scott Guthrie απαριθμεί τα νέα features που έρχονται με το SP1 για το .NET 3.5, και με μια πρώτη ματιά, μπορώ να πω ότι ο αριθμός και μόνο των νέων features είναι εκπληκτικός!!!

http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx

Προσωπικά highlights:

  • Entity Framework
  • System.Web.Routing
  • Application Startup and Working Set Performance Improvements
  • WPF Performance Improvements
  • VS 2008 for WPF Improvements
  • ADO.NET Data Services

και άλλα. Ποια είναι τα δικά σας αγαπημένα χαρακτηριστικά; Wink

Microsoft Hellas Innovation Month – Windows Communication Foundation

Σήμερα, πραγματοποιήθηκε το δεύτερο training στους φοιτητές που συμμετέχουν στο Innovation Month της Microsoft Hellas, με ένα από τα αντικείμενα της σημερινής μέρας να είναι το Windows Communication Foundation.

Παρουσιάστηκαν οι βασικές αρχές των Service Oriented εφαρμογών, κάποιες απλές εφαρμογές με WCF, έγινε επεξήγηση της top level αρχιτεκτονικής του WCF, και διεξαχθήκανε κάποια Hands on Labs. Στο αρχείο είναι οι διαφάνειες που παρουσιάστηκαν, καθώς και μια Chat εφαρμογή που δείχνει τη λειτουργία Duplex Binding στο WCF. Να θυμίσω ότι σε ένα Duplex binding, είναι δυνατό να στείλει και ο server μηνύματα στον client, εκτός από το αντίστροφο Smile

 Μπορείτε να κατεβάσετε το αρχείο από εδώ: http://www.studentguru.gr/files/folders/dotnet/entry5795.aspx

ΥΓ. Στο αρχείο είναι και κάποια C# samples που δεν προλάβαμε να δείξουμε το Σάββατο, την πρώτη μέρα του training. Για οποιαδήποτε απορία, feel free to contact me Smile

Web Profile Builder για Web Application Projects

Σήμερα, μετά από πολύ καιρό, προσπάθησα να χρησιμοποιήσω τον SqlProfileProvider στο Visual Studio 2008, σε ένα Web Application Project.
Συνηθισμένος από την πανεύκολη χρήση του σε Web Sites, έγραψα τα properties που ήθελα στο web.config στο properties section. Κατόπιν, θέλοντας να τα χρησιμοποιήσω στον κώδικά μου, πήγα σε μια aspx σελίδα, όπου και πατώντας Profile και μετά τελεία, περίμενα μέσω του Intellisense να εμφανιστούν τα properties του Profile object που είχα φτιάξει στο web.config. Μάταια. Μετά από λίγο ψάξιμο, βέβαια, βρέθηκε την άκρη. Σε ένα από τα comments εδώ (είναι για VS 2005 και για Web Application Project, αλλά ισχύει και στο VS 2008) αναφέρεται ότι στο Web Application Project Template δεν υποστηρίζεται η δημιουργία δυναμικών objects από το IDE, όπως του Profile.

Ευτυχώς, βέβαια, υπάρχει ένα utility, που μας επιτρέπει να έχουμε Intellisense στα Profile Properties και στα Web Application μας.
Μπορείτε να το κατεβάσετε από εδώ
http://code.msdn.microsoft.com/WebProfileBuilder
και να δείτε περισσότερες πληροφορίες για αυτό εδώ
http://weblogs.asp.net/joewrobel/archive/2008/02/03/web-profile-builder-for-web-application-projects.aspx

 

.NET 3.5 Enhancements Training Kit

Αυτές τις μέρες κυκλοφόρησε ένα training kit που σκοπό έχει να μας εκπαιδεύσει στις νέες τεχνολογίες που θα έρθουνε με το Service Pack 1 του .NET 3.5. Μπορείτε να το βρείτε στη διεύθυνση

 http://www.microsoft.com/downloads/details.aspx?FamilyID=355C80E9-FDE0-4812-98B5-8A03F5874E96&displaylang=en

και περιέχει training material για τα κάτωθι

  • ASP.NET MVC
  • ASP.NET Dynamic Data
  • ASP.NET AJAX History
  • ASP.NET Silverlight controls
  • ADO.NET Data Services
  • ADO.NET Entity Framework.

 με το τελευταίο να είναι το αγαπημένο μου Big Smile

Happy learning!!! Smile

ΥΓ. και για να μην ξεχνιόμαστε, μπορείτε να κατεβάσετε το πολύ καλό Visual Studio 2008 Training Kit – το οποίο περιέχει διάφορα καλούδια σχετικά με το .ΝΕΤ 3.5 – από εδώ: http://www.microsoft.com/downloads/details.aspx?FamilyID=8BDAA836-0BBA-4393-94DB-6C3C4A0C98A1

Zippo .NET

Σας έχω δείξει τον primary αναπτήρα μου Stick out tongue;;;; Όχι;;;;

Have a look!

IMG_2332

Οδηγίες; Απλό. Αγορά ενός Zippo χωρίς σχέδιο, και παράδοση σε κάποιο μαγαζί που χαράσσει μέταλλο, μαζί με ένα χαρτί με μια εικόνα του τι να χαράξει.

Προς το παρόν, το μικρό μου “αναφτήρι” τα πάει πολύ καλά με Golden Virgina κίτρινο και Rizla πράσινα. Λευτεριά στους καπνιστές Stick out tongue

SteelFm Vista Gadget

Πριν αρκετό καιρό, η Microsoft Hellas ανακοίνωσε την έναρξη ενός διαγωνισμού με αντικείμενο την κατασκευή ενός Vista Gadget. Αφού κατασκεύασα δύο gadgets, ένα για τα νέα από το StudentGuru.gr και ένα για προβολή των τελευταίων posts από το φόρουμ του Imagine Cup, έψαχνα για μια ιδέα για να κατασκευάσω κάτι καλύτερο, κάτι πιο πρωτότυπο.

Η ιδέα έπεσε ένα βράδυ που μιλούσα στο MSN με το φίλο Γιάννη. Για όσους δεν το γνωρίζουν, ο Γιάννης είναι administrator στο καλύτερο ελληνικό web radio (!!!!!), τον Steel Fm. Η ιδέα ήτανε η κατασκευή ενός Vista Gadget που θα έπαιζε live τα τραγούδια του σταθμού. Αρχικά, έψαχνα να βρω τρόπο να το κάνω να παίξει με Silverlight, μέσω του Media control. Δυστυχώς, o steelfm παίζει τραγούδια με βάση την τεχνολογία ShoutCast, και το συγκεκριμένο control δεν υποστήριζε streaming μέσω αυτού. Η επόμενη εναλλακτική, το Flash της Adobe απορρίφθηκε αμέσως για ευνόητους λόγους…

Οπότε, μία λύση έμενε: το Windows Media Player ActiveX control. Μετά από αρκετή προσπάθεια, κατασκευάστηκε η πρώτη έκδοση του gadget, η οποία και ανέβηκε σαν συμμετοχή στο διαγωνισμό. Είχε ενσωματωμένο αρκετό fancy stuff, όπως το να εμφανίζεται ποιος παραγωγός παίζει κάθε στιγμή, αλλά και προβολή των στίχων του τραγουδιού που παίζει με ένα μόνο κλικ! Όλα αυτά χάρη στο Γιάννη που πραγματικά σπατάλησε πολύ χρόνο για να φτιάξει τα ανάλογα web services στο SteelFm.gr. Παρόλα αυτά, η συγκεκριμένη έκδοση που έφτιαξα (την οποία και μπορείτε να βρείτε εδώ) είχε διάφορα προβληματάκια, το κυριότερο των οποίων ήτανε ότι δεν δούλευε το "Play/Pause" κουμπί. Μόνο με δεξί κλικ στο Media Player Control μπορούσε κάποιος να ελέγξει το αν θα παίζει μουσική το gadget ή όχι. Το πάλεψα αρκετά, αλλά δεν κατάφερα να βγάλω άκρη Sad Παρόλα αυτά, το gadget υποβλήθηκε στον διαγωνισμό όπως ήτανε, για να προλάβουμε το deadline.

Και ενώ είχε ξεκινήσει ο διαγωνισμός, ο Γιάννης πήρε την πρωτοβουλία (και καλά έκανε) και έκανε κάποιες αλλαγές στον κώδικα του gadget, ώστε να δουλεύει το button που δεν έπαιζε πριν. Αμέσως το έκανα re-upload στο Live Gallery, ώστε να αλλάξει και η συμμετοχή στο διαγωνισμό. Αποτέλεσμα: Ακόμα δεν έχει γίνει approveAngry!!!! (για να ανέβει ένα gadget στο Live Gallery, πρώτα υποβάλλεται, και μετά – φαντάζομαι – ελέγχεται από κάποιον υπεύθυνο σύμφωνα με διάφορα κριτήρια, και, αν γίνει approve, ανεβαίνει στο gallery). Βλέποντας πως οι μέρες διεξαγωγής του διαγωνισμού περνούσαν, και η νέα έκδοση του gadget που είχα ανεβάσει δεν είχε γίνει ακόμα approve, αποφασίσαμε με το Γιάννη να το ανεβάσουμε στο SteelFm. Μπορείτε να το βρείτε εδώ

image

Δύο ακόμα screenshots από το Gadget

image 

Προβολή στίχων τραγουδιού

image

Το gadget, από το Live Gallery μόνο, έχει αυτή τη στιγμή πάνω από 7000 downloads, αλλά και αρκετούς users καθημερινώς

image

credits again go to Γιάννης!!!

Σχετικά με το διαγωνισμό, οφείλω πρώτα από όλα να ευχαριστήσω το Γιάννη, καθώς και όλους τους παραγωγούς του SteelFm για τη στήριξή τους. Επίσης, πολλά thanx και σε όλους τους υπόλοπους που ψήφισαν το gadget!!!

Ακόμη, πολλά συγχαρητήρια και στους δύο υπόλοιπους της τριάδας, τον κ. Λινάκη (mpGreek) και τον κ. Πάντο (myFacebook), για τις πολύ καλές δουλειές τους, καθώς επίσης και στους υπόλοιπους συμμετέχοντες στο διαγωνισμό.

Thank you all!!!!! Smile

Download SteelFm Vista Gadget