Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community

2008-02-04 ϑεμα Simos Xenitellis

On Sun, 2008-02-03 at 01:47 +, Simos Xenitellis wrote: 
 On Sat, 2008-02-02 at 14:57 +0200, Kostas Papadimas wrote: 
  Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey
  έγραψε:
   http://www.techteam.gr/index.php?showtopic=118719
   
  
  Δεν καταλαβαίνω. 
  1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT?
  2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής
  χρήστης εκτελεί αυτά scripts?
  
  Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν
  έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι
  επιεικώς ανήθικο ..
  
 
 Τι κάνει πραγματικά ο Ναυτίλος όταν επιλέγουμε αποπροσάρτηση ή εξαγωγή;
 
 Ο πηγαίος κώδικας του Ναυτίλου βρίκεται στο 
 http://svn.gnome.org/viewvc/nautilus/trunk/
 
 Πως εντοπίζουμε που πρέπει να κοιτάξουμε μέσα σε τόσο πηγαίο κώδικα;
 Ξεκινούμε από το μήνυμα που εμφανίζεται κατά την αποπροσάρτηση. Σε
 αγγλικό GNOME είναι _Unmount Volume ενώ σε ελληνικό είναι
 Αποπρο_σάρτηση τόμου (ο επόμενος χαρακτήτας μετά το _ είναι ο
 χαρακτήτας συντόμευσης).
 Εντοπίζουμε την ελληνική μετάφραση μέσα στον πηγαίο κώδικα· είναι στον
 υποκατάλογο po/, αρχείο el.po.
 Δηλαδή,
 http://svn.gnome.org/viewvc/nautilus/trunk/po/el.po?view=annotate
 Είναι στη σειρά 3618. Βλέπουμε και ότι το συγκεκριμένο μήνυμα το
 μετέφρασε ο Νίκος Χαρωνιτάκης.
 Στα σχόλια του μηνύματος αναφέρει
 #: ../src/file-manager/fm-directory-view.c:6266 3615
 #: ../src/file-manager/fm-directory-view.c:6282 3616
 #: ../src/file-manager/fm-tree-view.c:753
 
 Δηλαδή μπορούμε να προχωρήσουμε στα αρχεία αυτά (+γραμμή) να δούμε τι
 ακριβώς γίνεται. Η απάντηση βρίσκεται στο fm-tree-view.c,
 http://svn.gnome.org/viewvc/nautilus/trunk/src/file-manager/fm-tree-view.c?view=annotate
 
 Στη γραμμή 753 λέει
 
 gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM
 (view-details-popup_unmount))-child), unmount_is_eject?
 _(E_ject):_(_Unmount Volume));
 
 Ίσως είναι ακαταλαβίστικο, η ουσία βρίσκεται στο 
 unmount_is_eject? _(E_ject):_(_Unmount Volume)
 
 που είναι κάπως ισοδύναμο με
 
 if (unmount_is_eject) 
   return _(E_ject)
 else
   return _(_Unmount Volume)
 
 Δηλαδή το αν θα κάνει αποπροσάρτητη ή εξαγωγή το καθορίζει η μεταβλητή
 unmount_is_eject. Η μεταβλητή αυτή παίρνει τιμή στις παραπάνω γραμμές:
 
 [747]   show_unmount = g_mount_can_unmount (mount) || g_mount_can_eject
   (mount); 
   /* TODO: show both unmount and eject if there are more than one
   volume for the drive */ 
   unmount_is_eject = g_mount_can_eject (mount);
 
 Δηλαδή αν θα εμφανίζεται η επιλογή Αποπροσάρτηση τόμου γίνεται με
 έλεγχο αν οι συσκευές έχουν νόημα για αποπροσάρτηση. Τώρα, αν η
 αποπροσάρτηση θα έχει την έννοια της εξαγωγής (δηλαδή ο χρήστης βλέπει
 πάντα Αποπροσάρτηση, αλλά στις κατάλληλες φορές η αποπροσάρτηση θα είναι
 η λειτουργία της Εξαγωγής), το καθορίζει η συνάρτηση
 g_mount_can_eject().
 
 Οι συναρτήσεις με όνομα g_xxx() προέρχονται από τη βιβλιοθήκη GLib,
 http://svn.gnome.org/viewvc/glib/trunk/
 και η συγκεκριμένη συνάρτηση προέρχεται από το αρχείο
 http://svn.gnome.org/viewvc/glib/trunk/gio/gmount.c?view=annotate
 Θα αφήσουμε για τώρα τον τρόπο καθορισμού για το αν κάποια συσκευή
 μπορεί να αποπροσαρτηστεί ή όχι. Όπως ειναι τώρα, δεν υπάρχει ένδειξη
 στον τελικό χρήστη αν θα γίνει εξαγωγή ή σκέτη αποπροσάρτηση.
 
 Κοιτώντας στο αρχικό αρχείο για την εντολή που κάνει πραγματικά την
 αποπροσάρτηση/εξαγωγή, βλέπουμε ότι είναι η 
 nautilus_file_operations_unmount_mount().
 Που θα βρούμε την εντολή αυτή σε όλο τον κώδικα του Ναυτίλου;
 Δοκιμάζουμε με Google και βρίσκουμε
 http://mail.gnome.org/archives/svn-commits-list/2008-January/msg04806.html
 
 Εδώ γίνονται μια σειρά από βήματα αναζήτησης που οδηγούν τελικά στο
 αρχείο
 http://svn.gnome.org/viewvc/glib/trunk/gio/gunixvolume.c?view=annotate
 και στη γραμμή 417,
 
 [417]   char *argv[] = {eject, NULL, NULL};
   argv[1] = unix_volume-device_path;
 
 Δηλαδή το σύστημα καλεί την εντολή eject με παράμετρο τη συσκευή που
 θέλουμε να αποπροσαρτήσουμε.
 
 Αν θέλουμε να δοκιμάσουμε με την εντολή sdparm, αρκεί να
 αντικαταστήσουμε με 
 
 [417]   char *argv[] = {sdparm, --command=stop, NULL, NULL};
   argv[2] = unix_volume-device_path;
 
 Η εντολή sdparm λειτουργεί για όλες της συσκευές;
 Θα ήταν καλύτερη να έχουμε unmount, eject αλλά και poweroff;
 
 Είναι καλό να γίνει αναφορά σφάλματος στο Bugzilla του GNOME, στο έργο
 glib, συστατικό gio : http://bugzilla.gnome.org/browse.cgi?product=glib
 Θέλει να το αναλάβει κάποιος;
 

Έστειλα γράμμα στη λίστα desktop-devel-list (gnome),
http://mail.gnome.org/archives/desktop-devel-list/2008-February/thread.html#00015

Υπάρχει η σελίδα
http://www.nslu2-linux.org/wiki/FAQ/SpinDownUSBHarddisks
για το spindown εξωτερικών δίσκών. Όπως καταλαβαίνω, κάποιες συσκευές
δουλεύουν ενώ άλλες δεν δουλεύουν. Αν κάποιος έχει ενδιαφέρον να
δοκιμάσω, ας πει αν μπορεί με τις 

[Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community

2008-02-02 ϑεμα Tsabolov Sergey
http://www.techteam.gr/index.php?showtopic=118719



signature.asc
Description: OpenPGP digital signature
-- 
Ubuntu-gr mailing list
Ubuntu-gr@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr


Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community

2008-02-02 ϑεμα dimitris
Εγώ που δεν είμαι γραμμένος στην παρακάτω σελίδα πχ, δεν ξέρω αν
υπάρχουν κι άλλοι, είναι εύκολο να στείλεις το script μέσω e-mail; ή
υπάρχει άλλος τρόπος να το ανεβάσεις κάπου αλλού;


Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey
έγραψε:
 http://www.techteam.gr/index.php?showtopic=118719
 

-- 
Ubuntu-gr mailing list
Ubuntu-gr@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr


Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community

2008-02-02 ϑεμα Kostas Papadimas
Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey
έγραψε:
 http://www.techteam.gr/index.php?showtopic=118719
 

Δεν καταλαβαίνω. 
1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT?
2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής
χρήστης εκτελεί αυτά scripts?

Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν
έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι
επιεικώς ανήθικο ..


-- 
Ubuntu-gr mailing list
Ubuntu-gr@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr


Re: [Nautilus] Αποσύνδεση USB δίσκου - TechTeam Community

2008-02-02 ϑεμα Simos Xenitellis

On Sat, 2008-02-02 at 14:57 +0200, Kostas Papadimas wrote: 
 Στις 02-02-2008, ημέρα Σαβ, και ώρα 12:40 +0200, ο/η Tsabolov Sergey
 έγραψε:
  http://www.techteam.gr/index.php?showtopic=118719
  
 
 Δεν καταλαβαίνω. 
 1)Αν όντως υπάρχει πρόβλημα ΠΟΥ ΕΙΝΑΙ ΤΟ ΕΠΙΣΗΜΟ ΒUG REPORT?
 2)OK το να προτείνει κάποιος script είναι θεμιτό, αλλά ποιός αφελής
 χρήστης εκτελεί αυτά scripts?
 
 Αν και οι προθέσεις αυτού του χρήστη είναι αγνές, το γεγονός ότι δεν
 έχει υποβάλλει bug report (η δεν έχει link σε αυτό αν υπάρχει ήδη) είναι
 επιεικώς ανήθικο ..
 

Τι κάνει πραγματικά ο Ναυτίλος όταν επιλέγουμε αποπροσάρτηση ή εξαγωγή;

Ο πηγαίος κώδικας του Ναυτίλου βρίκεται στο 
http://svn.gnome.org/viewvc/nautilus/trunk/

Πως εντοπίζουμε που πρέπει να κοιτάξουμε μέσα σε τόσο πηγαίο κώδικα;
Ξεκινούμε από το μήνυμα που εμφανίζεται κατά την αποπροσάρτηση. Σε
αγγλικό GNOME είναι _Unmount Volume ενώ σε ελληνικό είναι
Αποπρο_σάρτηση τόμου (ο επόμενος χαρακτήτας μετά το _ είναι ο
χαρακτήτας συντόμευσης).
Εντοπίζουμε την ελληνική μετάφραση μέσα στον πηγαίο κώδικα· είναι στον
υποκατάλογο po/, αρχείο el.po.
Δηλαδή,
http://svn.gnome.org/viewvc/nautilus/trunk/po/el.po?view=annotate
Είναι στη σειρά 3618. Βλέπουμε και ότι το συγκεκριμένο μήνυμα το
μετέφρασε ο Νίκος Χαρωνιτάκης.
Στα σχόλια του μηνύματος αναφέρει
#: ../src/file-manager/fm-directory-view.c:6266 3615
#: ../src/file-manager/fm-directory-view.c:6282 3616
#: ../src/file-manager/fm-tree-view.c:753

Δηλαδή μπορούμε να προχωρήσουμε στα αρχεία αυτά (+γραμμή) να δούμε τι
ακριβώς γίνεται. Η απάντηση βρίσκεται στο fm-tree-view.c,
http://svn.gnome.org/viewvc/nautilus/trunk/src/file-manager/fm-tree-view.c?view=annotate

Στη γραμμή 753 λέει

gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM
(view-details-popup_unmount))-child), unmount_is_eject?
_(E_ject):_(_Unmount Volume));

Ίσως είναι ακαταλαβίστικο, η ουσία βρίσκεται στο 
unmount_is_eject? _(E_ject):_(_Unmount Volume)

που είναι κάπως ισοδύναμο με

if (unmount_is_eject) 
return _(E_ject)
else
return _(_Unmount Volume)

Δηλαδή το αν θα κάνει αποπροσάρτητη ή εξαγωγή το καθορίζει η μεταβλητή
unmount_is_eject. Η μεταβλητή αυτή παίρνει τιμή στις παραπάνω γραμμές:

[747]   show_unmount = g_mount_can_unmount (mount) || g_mount_can_eject
(mount); 
/* TODO: show both unmount and eject if there are more than one
volume for the drive */ 
unmount_is_eject = g_mount_can_eject (mount);

Δηλαδή αν θα εμφανίζεται η επιλογή Αποπροσάρτηση τόμου γίνεται με
έλεγχο αν οι συσκευές έχουν νόημα για αποπροσάρτηση. Τώρα, αν η
αποπροσάρτηση θα έχει την έννοια της εξαγωγής (δηλαδή ο χρήστης βλέπει
πάντα Αποπροσάρτηση, αλλά στις κατάλληλες φορές η αποπροσάρτηση θα είναι
η λειτουργία της Εξαγωγής), το καθορίζει η συνάρτηση
g_mount_can_eject().

Οι συναρτήσεις με όνομα g_xxx() προέρχονται από τη βιβλιοθήκη GLib,
http://svn.gnome.org/viewvc/glib/trunk/
και η συγκεκριμένη συνάρτηση προέρχεται από το αρχείο
http://svn.gnome.org/viewvc/glib/trunk/gio/gmount.c?view=annotate
Θα αφήσουμε για τώρα τον τρόπο καθορισμού για το αν κάποια συσκευή
μπορεί να αποπροσαρτηστεί ή όχι. Όπως ειναι τώρα, δεν υπάρχει ένδειξη
στον τελικό χρήστη αν θα γίνει εξαγωγή ή σκέτη αποπροσάρτηση.

Κοιτώντας στο αρχικό αρχείο για την εντολή που κάνει πραγματικά την
αποπροσάρτηση/εξαγωγή, βλέπουμε ότι είναι η 
nautilus_file_operations_unmount_mount().
Που θα βρούμε την εντολή αυτή σε όλο τον κώδικα του Ναυτίλου;
Δοκιμάζουμε με Google και βρίσκουμε
http://mail.gnome.org/archives/svn-commits-list/2008-January/msg04806.html

Εδώ γίνονται μια σειρά από βήματα αναζήτησης που οδηγούν τελικά στο
αρχείο
http://svn.gnome.org/viewvc/glib/trunk/gio/gunixvolume.c?view=annotate
και στη γραμμή 417,

[417]   char *argv[] = {eject, NULL, NULL};
argv[1] = unix_volume-device_path;

Δηλαδή το σύστημα καλεί την εντολή eject με παράμετρο τη συσκευή που
θέλουμε να αποπροσαρτήσουμε.

Αν θέλουμε να δοκιμάσουμε με την εντολή sdparm, αρκεί να
αντικαταστήσουμε με 

[417]   char *argv[] = {sdparm, --command=stop, NULL, NULL};
argv[2] = unix_volume-device_path;

Η εντολή sdparm λειτουργεί για όλες της συσκευές;
Θα ήταν καλύτερη να έχουμε unmount, eject αλλά και poweroff;

Είναι καλό να γίνει αναφορά σφάλματος στο Bugzilla του GNOME, στο έργο
glib, συστατικό gio : http://bugzilla.gnome.org/browse.cgi?product=glib
Θέλει να το αναλάβει κάποιος;

Σίμος



-- 
Ubuntu-gr mailing list
Ubuntu-gr@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr