Login Hasło

  • Forum
  •  » Pozostałe
  •  » miso v4.6 - interaktywne montowanie obrazów płyt i partycji

#1 2009.02.10 20:56:08

numer_inaczej
Użytkownik
Zarejestrowany: 2007.01.11
Posty: 140
System: Gentoo Linux
Fluxbox: 1.3.2

miso v4.6 - interaktywne montowanie obrazów płyt i partycji

Poniżej zrzutka ekranu z działającym programem miso.

shoot

Witam!

Już jakiś czas temu napisałem program do interaktywnego montowania obrazów płyt i partycji o nazwie miso
Program jest lekki i powinien działać na wszystkich dystrybucjach systemu linux. Od wersji 3.2 miso wskazuje rozmiar obrazu
a widoczna na zrzutce nawigacja → lewy margines - przydaje się przy pracy z większą ilością obrazów.
Zrzutka informuje o dodatkowych informacjach.

Prezentowana tu przeze mnie wersja 4.5 jest pozbawiona wszelkich zauważonych do dnia 19-kwietnia-2014 błędów i niedociągnięć.
Nowością jest brak wrażliwości na wielkość liter rozszerzenia obrazu oraz przeszukiwanie rekursywne z orientacyjnej ścieżki przechowywania obrazów.
Co to nam daje? - gdy w jednym katalogu mamy kolejne a w nich obrazy - miso ukaże nam wszystkie. Ścieżki można ze sobą łączyć za pomocą średnika.
Zatem miso może zamontować obrazy z różnych dysków i katalogów.

Plik do pobrania → miso v4.6
Plik do pobrania → miso v4.5



Dostępne opcje po wywołaniu programu z parametrem -h:

Kod:

 

    użycie: 
        miso [-p|-d] <path>
        miso [-i|-l|-u] 

 -p    --path        montuj obrazy z raz obraną ścieżką

 -i    --interactive    montuj obrazy; uruchomienie miso w trybie interaktywnym

 -d    --directory    wybierz domyślną ścieżkę katalogu z obrazami;
            wystarczy, że raz uruchomisz miso z tym parametrem
            by ten zapamiętał Twój wybór.
            użycie: miso -d 

 -l    --list        pokaż wszystkie zamontowane obrazy.

 -u    --umount    odmontuj wszystkie dotychczas zamontowane obrazy.

 -r    --reconfigure    wygeneruje ponownie domyślny plik konfiguracyjny.

 -h    --help        wyświetli tę pomoc.

 -V    --Version    wyświetli wersję programu. 

 -L    --License    wyświetl licencję programu.

Ostatnio edytowany przez numer_inaczej (2015.02.05 04:36:24)


http://www.gentoo.org/images/gentoo-badge.png

Offline

 

#2 2009.02.11 17:57:36

Minio
Electric Castle resident
Skąd: Brno, Česko
Zarejestrowany: 2006.11.22
Posty: 544
System: Debian Testing
Fluxbox: Plasma 5.8.7 ;) (Fb 1.3.5)
WWW

Re: miso v4.6 - interaktywne montowanie obrazów płyt i partycji

Nie chciało mi się przeglądać całego kodu, ale kilka uwag które wyłapałem.

1. Licencja. Primo, zamieszczony URL nie wskazuje na treść licencji GPLv2, na zasadach której rozpowszechniasz swój program, a do GPLv3. Albo zamieść klauzulę o rozpowszechnianiu na zasadch GPLv2 lub nowszej albo popraw URL na http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
Druga rzecz, punkt 1. GPLv2 wymaga na Tobie dostarczenia kopii licencji wraz z każdą kopią kodu źródłowego programu. FAQ tłumaczy, dlaczego powinna to być kopia w pliku a nie adres URL.

2.

Kod:

katalog=`sed -n '/\[ścieżka\ do\ obrazów\]/p' "$HOME"/.misorc 2>/dev/null|tr -s "\t\ " "\ "|sed -n '/\[ścieżka\ do\ obrazów\]/s/\[ścieżka\ do\ obrazów\] \[\(.*\)\]/\1/p'`

Najpierw wyszukujesz dany ciąg znaków (emulujesz zachowanie grep-a, ale niech Ci będzie), potem usuwasz taby których i tak nie ma, by wreszcie zamienić [ścieżka\ do\ obrazów\] na wartość podaną dalej w nawiasach kwadratowych pod warunkiem że [ścieżka\ do\ obrazów\] znajduje się w tej linii. Ale hej, przecież właśnie po to zacząłeś od odfiltrowania linijek niezawierających tego ciągu znaków, by potem pracować na odpowiednich danych.
To dotyczy oczywiście nie tylko tej linijki, ale każdego miejsca w którym przetwarzasz plik konfiguracyjny.

3. W funkcji program.

Kod:

ls -h "$katalog"|sed -n "$filtr g" >"$temp"

Skoro już korzystasz z sed-a do filtrowania zawartości katalogu, to rób to chociaż bez względu na wielkość znaków.

Kod:

linie="`cat "$temp"|wc -l`"

Mnożysz koty.

4. Obsługa parametrów linii poleceń.
a) Zamiast podwójnego case, i tak identycznego niezależnie od wcześniejszego if, po prostu uruchamiaj funkcję program3 w zalezności od tego czy potrzebujesz i następnie przetwarzaj pętlę:

Kod:

if [ ! -r "$HOME"/.misorc ] ; then
   program 3
fi

while [ $# -gt 0 ]

Użyj operatora -r, ponieważ Ciebie nie interesuje czy ten plik istnieje — Ciebie interesuje czy możesz odczytać jego zawartość.

b) Mam wrażenie że nie rozumiesz konwencji parametrów programów używanej w większości programów wsadowych. Mamy krótką opcję poprzedzoną jednym minusem i długą opcję poprzedzoną dwoma minusami. Koniec. Obsługa każdej opcji od jednoznakowej do długiej, w wersjach zarówno z jednym jak i dwoma minusami, jest przynajmniej zbędne.

Offline

 

#3 2009.02.12 16:17:05

numer_inaczej
Użytkownik
Zarejestrowany: 2007.01.11
Posty: 140
System: Gentoo Linux
Fluxbox: 1.3.2

Re: miso v4.6 - interaktywne montowanie obrazów płyt i partycji

1.(...) GPLv2 wymaga na Tobie dostarczenia kopii licencji wraz z każdą kopią kodu źródłowego programu.

a nie wiesz jak to jest z GLPv3? Słabo znam angielski. Chodziłoby mi o ogólne założenia jakie są w licencji GLPv2 - ale bez konieczności dostarczenia jej kopii.

2.

Kod:

katalog=`sed -n '/\[ścieżka\ do\ obrazów\]/p' "$HOME"/.misorc 2>/dev/null|tr -s "\t\ " "\ "|sed -n '/\[ścieżka\ do\ obrazów\]/s/\[ścieżka\ do\ obrazów\] \[\(.*\)\]/\1/p'`

Najpierw wyszukujesz dany ciąg znaków (emulujesz zachowanie grep-a, ale niech Ci będzie), potem usuwasz taby których i tak nie ma,

do tego momentu rozumiem

(...) by wreszcie zamienić [ścieżka\ do\ obrazów\] na wartość podaną dalej w nawiasach kwadratowych pod warunkiem że [ścieżka\ do\ obrazów\] znajduje się w tej linii. Ale hej, przecież właśnie po to zacząłeś od odfiltrowania linijek niezawierających tego ciągu znaków, by potem pracować na odpowiednich danych.
To dotyczy oczywiście nie tylko tej linijki, ale każdego miejsca w którym przetwarzasz plik konfiguracyjny.

... mógłbyś nieco bardziej rozjaśnić?

Resztę już poprawiłem (poprawioną wersję programu v1.5 zamieszczę po wyjaśnieniu wszystkich wątpliwości) - dzięki za tak konstruktywną krytykę smile

Ostatnio edytowany przez numer_inaczej (2009.02.12 17:07:03)


http://www.gentoo.org/images/gentoo-badge.png

Offline

 

#4 2009.02.12 18:46:30

Moebius
o¤°`°¤o,¸¸¸,o¤°
Skąd: /dev/tty1
Zarejestrowany: 2007.02.26
Posty: 202
System: Gentoo
Fluxbox: ist Krieg!

Re: miso v4.6 - interaktywne montowanie obrazów płyt i partycji

http://gnu.org.pl/text/licencja-gnu.html tu masz tłumaczenie. Pamiętaj jednak, że GPL jest wiążące jedynie w języku angielskim.
http://itlaw.computerworld.pl/index.php/gpl-3/ tu masz jakieś tłumaczenie GPLv3


Teraz, gdy już nauczyliśmy się latać w powietrzu jak ptaki, pływać pod wodą jak ryby, brakuje nam tylko jednego: nauczyć się żyć na ziemi jak ludzie.

Offline

 

#5 2009.02.12 20:18:11

Minio
Electric Castle resident
Skąd: Brno, Česko
Zarejestrowany: 2006.11.22
Posty: 544
System: Debian Testing
Fluxbox: Plasma 5.8.7 ;) (Fb 1.3.5)
WWW

Re: miso v4.6 - interaktywne montowanie obrazów płyt i partycji

numer_inaczej napisał(-a):

1.(...) GPLv2 wymaga na Tobie dostarczenia kopii licencji wraz z każdą kopią kodu źródłowego programu.

a nie wiesz jak to jest z GLPv3? Słabo znam angielski. Chodziłoby mi o ogólne założenia jakie są w licencji GLPv2 - ale bez konieczności dostarczenia jej kopii.

GPLv3 również wymaga dostarczenia kopii licencji, tylko nie w punkcie nr 1 a nr 4 (notabene zaczynanie numeracji paragrafów od zera to dla mnie zwykły przejaw pychy i niechęci do jakiegokolwiek konstruktywnego dialogu, ale Stallman jest niereformowalny).

Generalnie to wygląda tak — aby licencja GPL była ważna, użytkownik musi móc się z nią zapoznać. Tymczasem jeżeli ja np. zapiszę Twój program na pendrive i dam go koledze, który niestety nie ma dostępu do Internetu, on nie będzie mógł się zapoznać z warunkami tej licencji. Hipotetycznie za 40 lat FSF może przestać istnieć a domena ulec wygaśnięciu. Lub, co bardziej prawdopodobne, treść licencji zostanie umieszczona w innym miejscu strony. W takim wypadku równiez adres URL nie będzie wystarczający, ponieważ kopiując go użytkownicy nie zapoznają się z treścią licencji (lub, co gorsza, zapoznają się z treścią innej licencji zamieszczonej pod tym adresem). Dlatego ludzie z GNU zalecają umieszczanie pełnej treści licencji wraz z kodem programu. Jakby nie patrzeć, jest w tym dużo sensu — niestety w przypadku jednoplikowych skryptów sprawa ciut się komplikuje z punktu widzenia developera, gdyż albo musi umieścić całą, pokaźną, licencję w nagłówku skryptu albo dystrybuować archiwum zawierające jego skrypt i plik z licencją.

Chociażby licencje Creative Commons są ważne także gdy zamieszczony jest jedynie adres URL do ich skróconej treści. I, poza Share Alike, bardziej liberalne niż GPL. Poza nimi istnieje cała gama wolnych licencji — zapoznaj się z ich listą.

numer_inaczej napisał(-a):

... mógłbyś nieco bardziej rozjaśnić?

Tak wygląda Twój sed w ostatnim potoku (po tr):

Kod:

sed -n '/\[ścieżka\ do\ obrazów\]/s/\[ścieżka\ do\ obrazów\] \[\(.*\)\]/\1/p'

Przeanalizujmy co on robi:

Kod:

sed -n

Uruchomienie sed-a z wyłączonym domyślnym wypluwaniem tekstu na STDOUT. Ok.

Kod:

/\[ścieżka\ do\ obrazów\]/

Jeżeli aktualnie przetwarzana linia zawiera ciąg \[ścieżka\ do\ obrazów\] to...

Kod:

s/

...zastąp...

Kod:

\[ścieżka\ do\ obrazów\] \[\(.*\)\]/

...ciąg znaków powyżej...

Kod:

\1/

...pierwszym zgrupowanym ciągiem znaków...

Kod:

p

...i wydrukuj to na STDOUT.

Wszystko fajnie, tylko pierwszy sed (przed tr) działa jak grep, czyli do potoku (i tym samym sed-a którego przeanalizowałem powyżej) jedynie te linijki, które zawierają ciąg \[ścieżka\ do\ obrazów\]. W związku z tym nieuzasadnione jest w kolejnym potoku sprawdzanie, czy dane wejściowe zawiwerają ten ciąg — muszą go zawierać.

Offline

 

#6 2009.02.14 14:43:51

numer_inaczej
Użytkownik
Zarejestrowany: 2007.01.11
Posty: 140
System: Gentoo Linux
Fluxbox: 1.3.2

Re: miso v4.6 - interaktywne montowanie obrazów płyt i partycji

Dzięki Panowie za wyjaśnienia!
@Moebius - wskazane linki się przydały.
Nowa wersja miso v1.5 do pobrania.


http://www.gentoo.org/images/gentoo-badge.png

Offline

 

#7 2010.05.10 17:28:40

numer_inaczej
Użytkownik
Zarejestrowany: 2007.01.11
Posty: 140
System: Gentoo Linux
Fluxbox: 1.3.2

Re: miso v4.6 - interaktywne montowanie obrazów płyt i partycji

Nowa wersja miso v 3.3 do pobrania


http://www.gentoo.org/images/gentoo-badge.png

Offline

 
  • Forum
  •  » Pozostałe
  •  » miso v4.6 - interaktywne montowanie obrazów płyt i partycji

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson