Πέμπτη, 12 Ιουνίου 2008

We don't need no stinking CLI

Ο τίτλος του θέματος αφιερώνεται (κατ' αρχήν) σε όσους πιστεύουν πως το Windows command line δεν είναι απαραίτητο.

Σε έναν Windows 2003 server, προσπαθώ να σβήσω έναν φάκελο:



Πράγματι, ο ένας από τους δύο φακέλους κατεβαίνει πολλά επίπεδα. Αλλά κατεβαίνει. Τα αρχεία είναι προσβάσιμα από την εφαρμογή που θέλει να τα διαβάσει, τουλάχιστον, μιας και ο Explorer από ένα βάθος και μετά, τα παίζει:



Ούτε το Properties δεν φαίνεται. Φυσικά τα αρχεία δεν ανοίγουν. Ας τα σβήσω από το command line, λοιπόν:



Μαγκιά; Τα αρχεία υπάρχουν. Δημιουργήθηκαν. Πιθανώς μέσω του POSIX compatibility layer, αφού τα αρχεία τα ξεπακετάρισε ο Apache. Τώρα δεν μπορώ να τα σβήσω ή να τα ανοίξω. Ίσως να μπορώ βάζοντας Cygwin. Ίσως να μπορεί να τα σβήσει ο Apache με κάποιο τρόπο. Ίσως να μπορώ να τα ανεβάζω προς τα επάνω επίπεδο προς επίπεδο (αν και αμφιβάλλω).

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

Ας αλλάξω λοιπόν τον τίτλο του θέματος σε:

We don't need no stinking GUI and CLI.

διότι δεν απέδειξα πως το windows command line είναι περιττό. Περισσότερο είναι σαν να προσέφερα ακόμα μια ένδειξη πως τα windows δεν πάνε πολύ καλά.

7 σχόλια:

  1. Σου ξέφυγε το ένοχο μυστικό ή ήσουν απλά ειλικρινής :

    "Πιθανώς μέσω του POSIX compatibility layer, αφού τα αρχεία τα ξεπακετάρισε ο Apache."

    Ακριβώς.

    Διότι μέσα από το GUI ή το CLI αποκλείεται να το πάθαινες ποτέ αυτό. Από ένα συνολικό μήκος path και μετά το λειτουργικό δεν σε αφήνει να δημιουργείς φακέλους η αρχεία.

    Θα μου πεις τώρα ότι το πρόβλημα είναι στο implementation του POSIX. Η απάντηση είναι : "Who cares?"

    Έτσι και αλλιώς όποιες εφαρμογές είναι POSIX - aware (ή σωστότερα INTERIX ) είναι evil , οπότε καλά να πάθεις που τις χρησιμοποίησες.

    Γιατί δεν το κάνατε με IIS ?

    :) ΚΑΛΗΜΕΡΕΣ ΦΙΛΕ :) :) :)

    ΑπάντησηΔιαγραφή
  2. Και για να μην λές ότι μόνο γκρινιάζω , σβήσε το έτσι , νεούδι μου

    http://support.microsoft.com/kb/99361/EN-US/

    ΑπάντησηΔιαγραφή
  3. Προφανώς λόγω ειλικρίνειας. Δεν βρίσκω άλλη εξήγηση.

    Γιατί όχι με IIS; Αφ' ενός, δεν το έκανα εγώ. Αφ' ετέρου, επειδή η εφαρμογή που φτιάχτηκε με Tomcat (το σωστότερο, όχι απλώς Apache).

    Η απορία είναι, τα όρια που υπάρχουν μέσω GUI και CLI, γιατί υπάρχουν; Αφού δεν είναι φυσικά όρια, όπως φαίνεται.

    Παρεμπιπτόντως, μη μπερδεύεις το POSIX layer με το Interix (επειδή έτσι φαίνεται να κάνεις). Διότι το POSIX compatibility layer υπάρχει από την εποχή των NT (όταν πλήρωνες για το Windows SFU για να το πάρεις), επειδή η Microsoft ήθελε να μπορεί να λέει πως έχει POSIX συμβατά συστήματα ώστε να χτυπάει και τους αντίστοιχες απαιτήσεις κυβερνήσεων και λοιπών οντοτήτων που προκηρύττουν διαγωνισμούς. Ο Tomcat τρέχει και σε υπολογιστές χωρίς το Interix subsystem. Το Interix είναι η πλήρης έκδοση, παρέα με συνοδευτικό software, shells και τέτοια· το POSIX compatibility layer είναι σε επίπεδο βιβλιοθηκών και system calls, και απλά επιτρέπει σε POSIX εφαρμογές να γίνουν compile χωρίς ιδιαίτερες αλλαγές στον κώδικα.

    Και τις καλημέρες να τις κόψεις. Στο blog μου δεν περνάνε οι ειρωνείες. Άντε μη σου κόψω το λογαριασμό και χάσεις και το blog σου ;-)

    ΑπάντησηΔιαγραφή
  4. Και ευχαριστώ για το hint. Δεν είχα προλάβει ακόμα να ψάξω.

    ΑπάντησηΔιαγραφή
  5. Το θέμα είναι πως ψάχνω τρόπο να του πω είτε έτσι όπως λες, είτε μέσω Unicode κλήσης με "\\?" μπροστά. Python έχω εκεί εγκατεστημένη, αν βρω το σχετικό documentation, θα βρω τι να καλέσω.

    ΑπάντησηΔιαγραφή
  6. Για να μη το καθυστερώ, άρχισα να μετονομάζω φακέλους σε a, (b, c… αν είχα πάνω από έναν υποφάκελο ανά φάκελο) και μετά τα έσβησα.

    Και για να συμπληρώσω αυτό που είχα ξεχάσει στο πρώτο σχόλιο: Αφ' ετέρου, επειδή η εφαρμογή που φτιάχτηκε με Tomcat (το σωστότερο, όχι απλώς Apache) δεν είναι υποχρεωτικό να τρέχει σε Windows.

    ΑπάντησηΔιαγραφή
  7. Επίσης, θα δούλευε κάτι τέτοιο:

    >>> import win32file
    >>> win32file.DeleteFileW(r"\\?\F:\Archibus_files\test.log")

    Κάπως έτσι γίνονται δεκτά τα μεγάλα pathnames που επιτρέπει το NTFS αλλά όχι τα Windows (στις περισσότερες κλήσεις τους).

    ΑπάντησηΔιαγραφή

Φλυαρείτε.