Filezilla – 425 Cannot open data connection

Θέλωντας να στήσω έναν FTP server στο Home PC που έχω κατέβασα τον FileZilla FTP Server όπου κυριολεκτικά με μια εγκατάσταση έχεις έναν FTP Server έτοιμο και στημένο!

Τα ρύθμισα όλα και επειδή δεν ήθελα να βάλω την κλασική 21 port είπα να αυτοσχεδιάσω έβαλα την 19000 (το ξέρω, πήγα λίγο παραπάνω)…

Μόλις όμως δοκίμαζα να συνδεθώ από έξω για να μεταφέρω αρχεία και ενώ έπαιρνε κανονικά User/Pass εκεί που πήγαινε να εμφανίσει την λίστα με τα αρχεία του Server έσκαγε error Cannot open data connection και η λίστα με τα αρχεία του Server παρέμενε κενή.

Η λύση ήταν να χρησιμιποιήσω ένα Port > του 50.000 για να κάνει listen ο filezilla και στα Passive Mode Settings να βάλω ένα port range 50 Ports. Πχ αν ο sever είχε την 55000 εκεί θα έβαζα 55000 – 55050. Επίσης αν υπάρχει router θα πρέπει να ανοίξουν και τα Ports εκεί.

image

Enjoy!

Share/Bookmark
Posted by djsolid | with no comments
Filed under: , ,

Do you want to crash VS2010?

I don’t know if this is a bug or I am a louzy user but if you want to crash VS 2010 RC this is the way…

  1. Assign a keyboard shortcut for Publishing a Web Project (Let’s say Ctrl D + F)
  2. Set Publish Method to “File System” and select “Replace matching files with local copies)
  3. Press the shortcut and right after press enter (which is Publish)
  4. The press again Ctrl D + F to open the Publish Window and again Enter
  5. The Publish will not start and if you try to use the mouse and click Publish button VS will crash!

Note: You must repeat steps 1 – 4 in about a second (1 sec) to work (or in this case not to work :) ).

Enjoy!

Share/Bookmark
Posted by djsolid | with no comments
Filed under: ,

Remote Desktop and Web Server Issue

Για πρώτη φορά στη ζωή μου έγινα συνδρομητής στην Otenet. Ήταν καινούργια τηλεφωνική γραμμή και δεν ήθελα να περιμένω 40+ μέρες για να ενεργοποιηθεί. Επέλεξα λοιπόν Ote.

Δυό πράγματα με απασχόλησαν:

Το πρώτο ήταν οτι θα μπορούσα πάλι να χρησιμοποιήσω το αγαπημένο μου USR 9108 όπου με την Forthnet είχε προβλήματα ασυμβατότητας και το είχα αφήσει στην άκρη. Θετικό λοιπόν το πρώτο.

Το δεύτερο ήταν πως δεν μπορούσα με τίποτα να έχω Remote access στο PC μου και επίσης δεν έπαιζε ούτε ο IIS που είχα στήσει μέσω του No-ip.org. Έψαχνα μέρες να δω που κάνω λάθος στη ρύθμιση του router μου.

Πως γίνεται να μην ξέρω να ρυθμίσω ένα router που έχω στα χέρια μου 3 χρόνια? Που είναι αυτό το μαγικό checkbox που λέει Solve All Problems????

Τελικά όπως αποδείχτηκε και νομίζω όλοι καταλάβατε το “πρόβλημα” το είχε η Otenet. Και είναι σε εισαγωγικά γιατί όταν ενεργοποιείς μια νέα σύνδεση Otenet έχεις by default “Αυξημένη προστασία” όπως φαίνεται και εδώ που πρακτικά σημαίνει πως είναι κλειστές από την Otenet σχεδόν όλες οι πόρτες.

Ευτυχώς με μια επίσκεψη στο my.otenet.gr το πρόβλημα λύθηκε. Ελπίζω αυτό το post να το βρεί κάποιος άλλος και να χάσει λιγότερο χρόνο απ’ ότι εγώ.

Share/Bookmark

Add Init handler from Page in a UserControl via Code-Behind – NOT SUPPORTED

Το συγκεκριμένο post είναι περισσότερο όχι για να δώσει λύση αλλά για να σταματήσετε να ψάχνετε. Αλλά ας γίνω λίγο ποιο συγκεκριμένος.

Πρόβλημα

Θέλω να προσθέσω από την σελίδα μου (Page) έναν handler που θα κάνει attach στο Init event ενος UserControl. Σε περίπτωση που θέλω να το κάνω από την Markup η λύση είναι προφανής.

<asp:DropDownList runat="server" OnInit="MyHandler" />

Σε περίπτωση που θέλω να το κάνω με κώδικα όμως? π.χ

DropDownList.Init += (sender, e) => {  };

 

H λύση

ΔΕΝ γίνεται. Δεν υπάρχει κανένα μέρος στη διάρκεια ζωής μια σελίδας που μπορείς να ορίσεις τον Init handler ενός UserControl.

 

Για να καταλάβει κάποιος το γιατί, θα πρέπει να δει το life-cycle μιας ASP.NET σελίδας αλλά και ενός ASP.NET Control σε σχέση με τη σελίδα.

 

Workaround

Ένας μπακαλίστικός τρόπος σε περίπτωση που χρειάζεται οπωσδήποτε να το κάνουμε στο Code-Behind είναι να προσθέσουμε ενα Control πριν από το αρχικό μας Control να κάνουμε Subscribe στην δική του Init μεσα από markup και στον handler να κάνουμε subscribe στο δεύτερο Control.

Παράδειγμα:

Markup

<asp:PlaceHolder runat="server" OnInit="c_Init" EnableViewState="false" />
<asp:DropDownList runat="server" ID="ddl" />

C#

protected void c_Init(object sender, EventArgs e)
{
    ddl.Init += new EventHandler(ddl_Init);            
}
 
void ddl_Init(object sender, EventArgs e)
{
    
}

 

!!!Enjoy!!!

Share/Bookmark
Posted by djsolid | 1 comment(s)

7o SG Online Event - [Web Development Series] My First ASP.NET Steps

Την Πέμπτη 17 Δεκεμβρίου 2009 πραγματοποιήθηκε το 7ο Online SG Event . Θέλω να ευχαριστήσω παρά πολύ όλους όσους το παρακολούθησαν.

Στο event έγινε μια εισαγωγή στην ASP.NET, μια παρουσίαση του feature που ακούει στο όνομα MasterPages καθώς και μια εισαγωγή στην τεχνολογία AJAX και συγκεκριμένα αυτή πως υλοποιείται μέσα από την ASP.NET.

Στην αντίστοιχη περιοχή του StudentGuru μπορείτε να βρείτε τόσο τον κώδικα όσο και τις διαφάνειες που χρησιμοποιήθηκαν στο event.

Αποθήκευση

Share/Bookmark
Posted by djsolid | with no comments

Using Watin Test Recorder in Windows 7 64-bit

Το post είναι πιο πολύ reminder προς εμένα και για όσους αντιμετωπίζουν πρόβλημα κατά την εκκίνηση του WatinTestRecorder.

Πηγαίνουμε από Command Line στο C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin

και εκτελούμε το εξής

corflags /32bit+ "C:\Program Files (x86)\WatiN Test Recorder\Test Recorder.exe"

Αυτό ήταν!

Για όσους δεν ξέρουν τι είναι το WatiN πληροφορίες στο post του abot

Enjoy!

Share/Bookmark
Posted by djsolid | 1 comment(s)
Filed under:

ASP.NET 4.0 – new stuff

Μαζί με το .NET 4.0 έρχεται και η επόμενη έκδοση της ASP.NET.

Πλέον με την έλευση του MVC υπάρχει ένας διαχωρισμός και όταν λέμε ASP.NET εννοούμε δύο κύριες κατηγορίες. ASP.NET Webforms και ASP.NET MVC. Τέλος υπάρχει και το ASP.NET Ajax Framework (πρώην Microsoft Ajax Framework) και ο λόγος που άλλαξε νοήμα είναι γιατί το συγκεκριμένο framework αναπτύσσεται από την ομάδα της ASP.NET αλλά συνεργάζεται με οποιαδήποτε τεχνολογία όπως πχ PHP. Έτσι λοιπόν ακόμα και αν δεν χρησιμοποιείτε ASP.NET ρίξτε μια ματία στο Ajax Framework καθώς είναι διαθέσιμο να το ενσωματώσετε στις εφαρμογές σας!

Για τα Webforms και το Ajax Framework έχω μαζεύψει κάποια links που αναφέρουν τα νέα Features στην 4.0 έκδοση.

  1. http://www.webreference.com/programming/asp/New-Features-AJAX4-0/
  2. http://mostlylucid.net/archive/2009/01/25/asp.net-4.0-webform-routing-quick-rsquon-dirty-version.aspx
  3. http://blogs.msdn.com/mikeormond/archive/2009/11/13/asp-net-4-0-new-project-templates.aspx
  4. http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx
  5. http://weblogs.asp.net/despos/archive/2009/06/13/asp-net-4-0-more-control-on-viewstate-management.aspx
  6. Exploring ASP.NET 4.0—Web Forms and Beyond

Κατά τη γνώμη μου η στροφή των Webforms να είναι πιο φιλικά προς το client-side development είναι μια πολύ καλή κίνηση και πιστεύω πως θα βρει και την ανάλογη ανταπόκριση.

Enjoy!

Share/Bookmark
Posted by djsolid | with no comments

Entity Framework 4.0 VS 1.0

Πριν 1 χρόνο περίπου είχε ανακοινωθεί η πρώτη έκδοση του Entity Framework.

Σε λίγο καιρό ανακοινώνεται η δεύτερη που έχει το νούμερο 4 απλά και μόνο για να συμβαδίζει με την έκδοση του Framework.

Υπάρχουν πάρα πολλά  posts στο web σχετικά με το τί καινούργιο έχει αυτή η έκδοση αλλά και τι βελτιώσεις υπάρχουν. Αν θέλετε λοιπόν να ενημερωθείτε κοιτάξτε τα :

  1. Improvements to the generated SQL
  2. N-Tier Improvements for Entity Framework
  3. Entity Framework Improvements
  4. POCO in the Entity Framework
  5. Self Tracking Entities for the EF
  6. Entity Framework POCO Repository
  7. Feature CTP Walkthrough: Code Only for the Entity Framework

Με αυτή την έκδοση το EF γίνεται πάρα πολύ δυνατό κατά τη γνώμη μου και σίγουρα είναι ένα ORM που σίγουρα πρέπει να το κοιτάξετε.

Share/Bookmark
Posted by djsolid | 2 comment(s)

Πως οι χρήστες μπορούν να έχουν ανοιχτό μόνο ένα tab από το site μου?

Την προηγούμενη εβδομάδα βρισκόμουν στο Βερολίνο και παρακολουθούσα την Teched. Μέσα σε όλα τα υπόλοιπα είδα και ένα session αφιερωμένο στο Silverlight 3. Σε αυτό λοιπόν παρουσιάστηκε και ένα νέο feature του Silverlight με το όνομα Local Messaging.

Όταν το είδα μου πέρασε η εξής ιδέα από το μυαλό: Μπορεί να χρησιμοποιηθεί ώστε να επιτρέπει σε ένα χρήστη να έχει ανοιχτό μόνο ένα tab από ολόκληρο το website?

Η απάντηση είναι ΝΑΙ! Ίσως με έναν περίεργο τρόπο που μπορεί να χαρακτηριστεί ως coding by coincidence. Ορίστε πως (κώδικας στο MainPage.xaml.cs):

string _localName = "SL App";
bool _Close = false;

public MainPage()
{
InitializeComponent();

Loaded += new RoutedEventHandler(MainPage_Loaded);
try
{
LocalMessageReceiver incomingMessage = new LocalMessageReceiver(_localName);
//Start listening
incomingMessage.Listen();
}
catch (ListenFailedException)
{
_Close = true;
}
}

protected void MainPage_Loaded(object sender, RoutedEventArgs e)
{
if (_Close)
{
HtmlPage.Window.SetProperty("location", "/InfoMessage.aspx");
}
else
{
LocalMessageSender msgSender = new LocalMessageSender(_localName);
msgSender.SendAsync("New instance loaded");
}
}

Η σελίδα Default.aspx

image

Επιλέγοντας το 1ο link…
image

 

Στη συνέχεια επιλέγουμε το 2ο link

image

 

Τα αρχεία που περιλαμβάνονται στο solution

image

 

 

Αυτό αποτελεί μια exception driven λύση! :)

Το παραπάνω λειτουργεί και για διαφορετικούς browsers. π.χ. Το μήνυμα βγαίνει στον χρήστη ακόμα και αν δοκιμάσει να ανοίξει διαφορετικό browser ταυτόχρονα με τον αρχικό.

Εδώ μπορείτε να κατεβάσετε τον κώδικα. 

Enjoy!

Share/Bookmark
Posted by djsolid | with no comments

Web Development Series – My First CSS Steps

Πραγματοποιήθηκε και το 2ο Online SG Event! Να ευχαριστήσω όσους το παρακολούθησαν. Για όσους δεν τα κατάφεραν θα ανέβει κάποια στιγμή αργότερα μαζί με το 1ο Online Event.

Έγινε μια μικρή εισαγωγή στην γλώσσα CSS και εξηγήθηκαν έννοιες όπως float, margin, padding κλπ.

Ακολουθούν οι διαφάνειες και ο κώδικας που χρησιμοποιήθηκε στο event.

Υ.Γ. Τo website θα έπρεπε να φαινόταν έτσι αλλά το gradient μέσω του Live Meeting είχε διαφορετική όψη…

Capture

 

Enjoy!

Share/Bookmark
Posted by djsolid | 4 comment(s)

1st StudentGuru Online Event – Introduction to Web Development (The After Post)

Ολοκληρώθηκε με επιτυχία το 1ο StudentGuru Online Event! Θέλω να ευχαριστήσω πάρα πολύ όλους εκείνους που το παρακολούθησαν και ακόμα περισσότερο εκείνους που συμμετείχαν ενεργά!

Το feedback που πήραμε είναι πολύ σημαντικό και σίγουρα είναι κάτι που θέλουμε να συνεχίσουμε να το κάνουμε γι αυτό και προσπαθούμε να το βελτιώσουμε όσο το δυνατόν περισσότερο.

Με λίγα λόγια το event κράτησε συνολικά 1 ώρα από την οποία μισή ήταν η παρουσίαση του Visual Web Developer 2008 και μισή ώρα ήταν  χρόνος που αφιερώθηκε σε απορίες και μια γενικότερη συζήτηση! Ειδικά το τελευταίο κομμάτι εμένα προσωπικά μου άρεσε πάρα πολύ και ελπίζω κάθε φορά που πραγματοποιώ ένα online event να υπάρχει τέτοιο ενδιαφέρον για συζήτηση!

Μη ξεχνάτε απορίες σχετικά με Web Development στον αντίστoιχο χώρο του StudentGuru.

Επίσης μπορείτε να κατεβάσετε τον κωδικά που χρησιμοποιήθηκε σε αυτό το event αλλά και το Visual Web Developer 2008.

Για ακόμα μια φορά ευχαριστώ πολύ και σύντομα έρχεται το επόμενο!

Share/Bookmark

1st StudentGuru Online Event – Introduction to Web Development (The Before Post)

Σήμερα στις 8 το βράδυ και για μισή ώρα (+χρόνος για απορίες) θα πραγματοποιηθεί το 1ο StudentGuru online event. Έχω την τύχη να είμαι εγώ ο ομιλητής και αποφάσισα τόσο σε αυτό όσο και σε επόμενα online events που θα πραγματοποιώ θα κάνω 2 posts στο blog μου. Ένα πριν, ενημερωτικό με λίγες πληροφορίες σχετικά με το event και ένα μετά όπου ουσιαστικά θα συνοψίζει το event.

 

Ξεκινώντας λοιπόν στο σημερινό event θα δούμε πως μπορούμε να χρησιμοποιήσουμε το Visual Web Developer 2008 για να δημιουργήσουμε HTML ή και ASP.NET σελίδες. Θα δούμε λίγο CSS και Javascript και στο τέλος θα προσπαθήσουμε να λύσουμε ό,τι απορίες έχουν δημιουργηθεί.

 

Πληροφορίες για το πως μπορείτε να το παρακολουθήσετε υπάρχουν στο αντίστοιχο thread στο forum.

 

Σας περιμένω όλους σήμερα (Τετάρτη 28 Οκτωβρίου) στις 8μμ!

Share/Bookmark

Date Comparison – Entity Framework

Ένα γρήγορο tip για το πως μπορούμε να συγκρίνουμε ένα datetime πεδίο που υπάρχει στη βάση μας και συγκεκριμένα μόνο το Date από το πεδίο αυτό χωρίς να λαμβάνουμε υπ’ όψην το time.

Θέλουμε πχ να βρούμε όλες τις εγγραφές που δημιουργήθηκαν σήμερα ανεξαρτήτως ώρας :

Where(@"Day(it.CreatedTime) == Day(CurrentDateTime())

AND Month(it.CreatedTime) == Month(CurrentDateTime())

AND Year(it.CreatedTime) == Year(CurrentDateTime())")

Χρησιμοποιούμε τις Day,Month,Year της ESQL για να πάρουμε το μέρος από το Datetime πεδίο που μας ενδιαφέρει να συγκρίνουμε καθώς και το CurrentDateTime όπου είναι όπως τo DateTime.Now

Share/Bookmark
Posted by djsolid | with no comments

Web World Expo 2009 (Επίλογος και Σχόλια)

Πριν λίγο τελείωσε η Web World Expo 2009 που πραγματοποιήθηκε στο Ζάππειο 24 – 25 Οκτωβρίου. Τόσο χθες όσο και σήμερα βρισκόμουν στο περίπτερο της Microsoft και ενημέρωνα επαγγελματίες στο χώρο του Web Design αλλά και του Web Development για το WebsiteSpark.

Θεωρώ τον εαυτό μου αρκετά τυχερό γιατί συνομίλησα με αρκετό κόσμο και τις δύο ημέρες και απέκτησα μια καλύτερη εικόνα για το που κινείται η αγορά αλλά και τι ανάγκες έχει. Σίγουρα δεν είμαι σε θέση να βγάλω ασφαλή συμπεράσματα αλλά απέκτησα μια γενική ιδέα.

Αυτό που μπορώ να πω με σιγουριά είναι πως ο κόσμος ψάχνετε, ενδιαφέρετε και προσπαθεί να γίνει συστηματοποιήσει τον τρόπο δουλειάς του αλλά και να διασφαλίσει την ποιότητα των υπηρεσιών που προσφέρει. Σχεδόν όλοι έδειξαν ενδιαφέρον για το WebsiteSpark ανεξαρτήτως της πλατφόρμας που χρησιμοποιούσαν.

Τέλος αυτό που διαπίστωσα και με χαροποίησε ιδιαίτερα είναι το γεγονός πως συνάντησα αρκετά νεαρά άτομα (κοντά στην ηλικία των 20 - συνομήλικα δηλαδή) που είχαν έρθει εκεί όχι από κάποια εταιρία που δουλεύουν αλλά γιατί οι ίδιοι ήταν η εταιρία ή είχαν κινήσει διαδικασίες για να δημιουργήσουν την δική τους επιχείρηση. Αυτό μου έδειξε πως η επιχειρηματικότητα στην Ελλάδα δεν έχει πεθάνει!

Εν κατακλείδι, ήταν μια αρκετά ωραία εμπειρία και πιστεύω πως παρά το μικρό μέγεθος της έκθεσης και επισκέπτες και εκθέτες κέρδισαν αρκετά.

Εν αναμονή της επόμενης!

Share/Bookmark
Posted by djsolid | with no comments

ASP.NET Membership - Change password without asking the old

Πρόσφατα χρειάστηκε να υλοποιήσω ένα σύστημα όπου ο χρήστης άλλαζε τον password του μετά το 1ο login.

Όμως η ChangePassword μέθοδος του MembershipUser απαιτεί 2 arguments. Το παλαιό password του χρήστη και το νέο. Από τη στιγμή που ο χρήστης είχε μόλις κάνει login δεν το θεώρησα λογικό να ζητάω πάλι το παλαιό password. Έπρεπε λοιπόν να κάνω την αλλαγή χωρίς να το εισάγει ο χρήστης. Στη βάση όμως ήταν αποθηκευμένο με hashed μορφη οπότε ούτε από εκεί μπορούσα να το ανακτήσω.changepass

Και η λύση στο πρόβλημα ήταν:

image

  1. Reset the password
  2. Αποθήκευση του generated password σε μία τοπική μεταβλητή
  3. Κληση της MembershipUser.ChangePassword χρησιμοποιώντας τον generated password ως τον παλαιό!

Κάνει ένα query επιπλέον στη βάση (για να αλλάξει το password σε κάτι generated) αλλά λειτουργεί μια χαρα! Σε περίπτωση που το password ήταν σε Clear ή Encrypted μορφή θα μπορούσα να το ανακτήσω από τη βάση.

Share/Bookmark
More Posts Next page »