-
11. Data: 2011-02-10 15:40:43
Temat: Re: Android mały myk
Od: Michoo <m...@v...pl>
W dniu 10.02.2011 16:02, Andrzej Jarzabek pisze:
> On Feb 10, 12:57 pm, Michoo<m...@v...pl> wrote:
>>
>> Niestety nic im nie zrobię, jedynie zapłaczę nad brakiem możliwości
>> robienia tego do czego "referencje" służą w większości cywilizowanego
>> świata.
>
> Możesz rozwinąć, co to wg. ciebie jest większość cywilizowanego świata
C++, C#, Perl (czy nawet Pascal i PHP) żeby wymienić kilka, ale szczerze
mówiąc nie kojarzę aktualnie drugiego języka który by miał tak
ograniczone przekazywanie argumentów jak java.
> i do czego tam służą referencje?
Referencje służą do tego aby przekazać "wskazanie" na obiekt. Przydatne
np gdy chcemy odwoływać się do tego samego obiektu z różnych miejsc, czy
pozwolić funkcji na modyfikowanie argumentów. Najprymitywniejszą formą
referencji jest wskaźnik.
W javie natomiast obiekty technicznie rzecz biorąc są referencjami ale
praktycznie (przez połączenie przez braku operatora przypisania obiektu,
i projektu biblioteki standardowej (np wszystkie operacje na stringu
tworzą nowy obiekt a nie modyfikują istniejącego)) mają semantykę
wartości. Żeby mieć semantykę referencji trzeba zawinąć obiekt w inny
obiekt pozwalający modyfikować swoje wnętrze przez metody.
--
Pozdrawiam
Michoo
-
12. Data: 2011-02-16 21:14:09
Temat: Re: Android mały myk
Od: Boguś <n...@i...net>
Dnia 10-02-2011 o 16:40:43 Michoo <m...@v...pl> napisa?(a):
> W javie natomiast obiekty technicznie rzecz biorąc są referencjami (...)
No i świat się nie zawalił, a Java ma się dobrze :)
Tak swoją drogą - dzisiejszy problem adminów z firmy: znaleźć wszystkie
pliki na win-serwerze, które mają jakiś tam atrybut (np. ukryty).
Utrudnienie: ścieżki są dłuższe niż MAX_PATH (260 znaków), dlatego
większość narzędzi się wywala. Skrypty CMD rady nie dały, .net też nie,
PowerShell sobie nie poradził. Problem w ciągu 20 minut rozwiązała Java +
JNA, mimo że bez cywilizowanych referencji. (Tak wiem, w C/C++/Pascalu też
by się dało, ale nie miałem kompilatora pod ręką)
--
Boguś
-
13. Data: 2011-02-16 21:24:50
Temat: Re: Android mały myk
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-02-16 22:14, Boguś pisze:
> Dnia 10-02-2011 o 16:40:43 Michoo <m...@v...pl> napisa?(a):
>
>> W javie natomiast obiekty technicznie rzecz biorąc są referencjami (...)
>
> No i świat się nie zawalił, a Java ma się dobrze :)
>
> Tak swoją drogą - dzisiejszy problem adminów z firmy: znaleźć wszystkie
> pliki na win-serwerze, które mają jakiś tam atrybut (np. ukryty).
> Utrudnienie: ścieżki są dłuższe niż MAX_PATH (260 znaków), dlatego
> większość narzędzi się wywala. Skrypty CMD rady nie dały, .net też nie,
> PowerShell sobie nie poradził. Problem w ciągu 20 minut rozwiązała Java
> + JNA, mimo że bez cywilizowanych referencji. (Tak wiem, w C/C++/Pascalu
> też by się dało, ale nie miałem kompilatora pod ręką)
>
Upgrade serwer MS 32bit -> 64.
Dla produktów MS (na platformie bardzo specyficznej chyba, bo MS) 4
godziny i wiadro kawy
Dla Javy, Tomcata i co trzeba 15 minut
Drugi czas mnie nie dziwi, to zawsze Java obiecywala, tylko ten pierwszy :(
-
14. Data: 2011-02-16 22:37:26
Temat: Re: Android mały myk
Od: Michoo <m...@v...pl>
W dniu 16.02.2011 22:14, Boguś pisze:
> No i świat się nie zawalił, a Java ma się dobrze :)
I dobrze. Im więcej programistów będzie z dala od C++ tym większa będzie
moja przyszła pensja.
>
> Problem w ciągu 20 minut rozwiązała Java
> + JNA, mimo że bez cywilizowanych referencji.
No patrz - a jak ja robiłem inżynierkę to miałem bardzo poważny problem
z obsługą systemu plików pod javą - jak użyszkodnik wysłał paczkę ze
skopanym kodowaniem w środku to wynikowe pliki dawało się zobaczyć w
katalogu ale żadną mocą nie można było się do niech dostać.
--
Pozdrawiam
Michoo
-
15. Data: 2011-02-17 09:17:57
Temat: Re: Android mały myk
Od: "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>
Dnia 10-02-2011 o 16:40:43 Michoo <m...@v...pl> napisał(a):
> W javie natomiast obiekty technicznie rzecz biorąc są referencjami ale
> praktycznie (przez połączenie przez braku operatora przypisania obiektu,
> i projektu biblioteki standardowej (np wszystkie operacje na stringu
> tworzą nowy obiekt a nie modyfikują istniejącego)) mają semantykę
> wartości. Żeby mieć semantykę referencji trzeba zawinąć obiekt w inny
> obiekt pozwalający modyfikować swoje wnętrze przez metody.
Ok, ale rozumiem, że instancje klas są przekazywane przez referencję?
Powyższe wyjaśnienie brzmi mniej więcej jak opis domyślnego przekazywania
parametrów w Delphi (tablice / rekordy / ciągi znaków / typy proste przez
wartość, instancje klas przez referencję, czy raczej przez zawoalowany
wskaźnik), czy dobrze zrozumiałem?
Pozdrawiam -- Spook.
--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/
-
16. Data: 2011-02-17 09:49:07
Temat: Re: Android mały myk
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-02-17 10:17, Wojciech "Spook" Sura pisze:
> Dnia 10-02-2011 o 16:40:43 Michoo <m...@v...pl> napisał(a):
> Powyższe wyjaśnienie brzmi mniej więcej jak opis domyślnego
> przekazywania parametrów w Delphi (tablice / rekordy / ciągi znaków /
> typy proste przez wartość, instancje klas przez referencję, czy raczej
> przez zawoalowany wskaźnik), czy dobrze zrozumiałem?
Analogia do referencji na obiekt z delphi jest dosc dobra.
Oczywiscie mozna sie doktoryzowac, ale mniej wiecej to prawda.
-
17. Data: 2011-02-17 10:49:10
Temat: Re: Android mały myk
Od: Andrzej Jarzabek <a...@g...com>
On Feb 17, 9:17 am, "Wojciech \"Spook\" Sura" <spook"mad@hatter"op.pl>
wrote:
> Dnia 10-02-2011 o 16:40:43 Michoo <m...@v...pl> napisał(a):
>
> > W javie natomiast obiekty technicznie rzecz biorąc są referencjami ale
> > praktycznie (przez połączenie przez braku operatora przypisania obiektu,
> > i projektu biblioteki standardowej (np wszystkie operacje na stringu
> > tworzą nowy obiekt a nie modyfikują istniejącego)) mają semantykę
> > wartości. Żeby mieć semantykę referencji trzeba zawinąć obiekt w inny
> > obiekt pozwalający modyfikować swoje wnętrze przez metody.
>
> Ok, ale rozumiem, że instancje klas są przekazywane przez referencję?
Jest tak: wartości i obiekty to osobne kategorie bytów. Pola klas,
zmienne, parametry funkcji to wartości. Obiekty natomiast żyją sobie
na stercie jako instancje klas. Ponieważ zmienne i parametry są
wartościami, operator przypisania też dotyczy tylko wartości. Obiekty
moga co najwyżej być powielane metodą kopiującą.
Jedną z klas typów wartości są referencje na obiekty, które zachowują
się w sposób spójny z innymi wartościami. W szczególności przypisanie
wartości referencji do zmiennej powoduje, że zmienna ta zawiera
(kolejną) referencję do tego samego obiektu.
Jeśli masz coś takiego:
int f(A a) {
a=cośtam();
...
}
...
A x;
...
f(x);
to semantyka jest taka, że funkcja f przyjmuje przez wartość parametr
typu referencja do A, który jest traktowany jako lokalna zmienna a
zawierająca kopię wartości referencji przekazanej przez wywołującego.
Przy wywołaniu f(x) wartość referencji x zostaje skopiowana do A,
czyli są w tym momencie (przynajmniej) dwie referencje do tego samego
obiektu, w momencie, kiedy w f następuje przypisanie a=cośtam()
lokalna zmienna a przestaje być referencją do tego samego obiektu co
x, a przyjmuje nową wartość, zwróconą przez wyrażenie cośtam(); w
kontekście wywołania nie ma to żadnego wpływu na wartość x ani
referowanego przez x obiektu.
Ja osobiście nie widzę żadnego problemu w tym podejściu.
-
18. Data: 2011-02-17 21:09:46
Temat: Re: Android mały myk
Od: Boguś <n...@i...net>
Dnia 16-02-2011 o 23:37:26 Michoo <m...@v...pl> napisa?(a):
> No patrz - a jak ja robiłem inżynierkę to miałem bardzo poważny problem
> z obsługą systemu plików pod javą - jak użyszkodnik wysłał paczkę ze
> skopanym kodowaniem w środku to wynikowe pliki dawało się zobaczyć w
> katalogu ale żadną mocą nie można było się do niech dostać.
Możesz bliżej nakreślić problem? Jaką paczkę, ZIPa? Jaki system - linux,
win98, winxp? Ciekawi mnie to.
--
Boguś
-
19. Data: 2011-02-17 21:48:31
Temat: Re: Android mały myk
Od: Michoo <m...@v...pl>
W dniu 17.02.2011 22:09, Boguś pisze:
> Dnia 16-02-2011 o 23:37:26 Michoo <m...@v...pl> napisa?(a):
>
>> No patrz - a jak ja robiłem inżynierkę to miałem bardzo poważny
>> problem z obsługą systemu plików pod javą - jak użyszkodnik wysłał
>> paczkę ze skopanym kodowaniem w środku to wynikowe pliki dawało się
>> zobaczyć w katalogu ale żadną mocą nie można było się do niech dostać.
>
> Możesz bliżej nakreślić problem? Jaką paczkę, ZIPa?
Algorytm był prosty - wysłany plik jest zapisywany do osobnego katalogu,
wykonywany jest na nim unp, a następnie katalog jest przeglądany
rekurencyjnie.
> Jaki system - linux,
Tak.
Zdarzało się np, że zip był zrobiony pod windą z kodowaniem plznaczków w
cp, po wypakowaniu na linuksie z utf8 były krzaki.
Problem jest taki, że potrzebowałem nazwy plików - bo były on
wyświetlane w gui. Pobierałem listę plików, pobierałem z niej ścieżkę. A
następnie gdy potem tworzyłem f = new File(ścieżka) zarówno
f.isDirectory() jak i f.isFile() były false;
--
Pozdrawiam
Michoo