eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingtypologia errorow aplikacji
Ilość wypowiedzi w tym wątku: 88

  • 41. Data: 2011-05-05 23:29:22
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Andrzej Jarzabek <a...@g...com>

    On 04/05/2011 19:49, p...@p...onet.pl wrote:
    >> tamto mowienie o 'wyciekach' na statycznej tablicy mz
    >> mozna porownac do sytuacji gdy nie zwalnia sie juz nie uzywanych
    >> elementow stlowego wektora - to nie sa defakto wycieki tylko zapchanie
    >> sobie kontenera
    >
    > te dwie rzeczy tj 'niepoodznaczanie rekordow w tablicy' i
    > 'leaki w systemach z new' sa jakosciowo tak roznymi rzeczami
    > i roznia sie tak jak Francuz od Czeczena albo Gruszka od Marsa,
    >
    > tak ze ten kto chce tu widziec to samo albo nawet podobne rzeczy
    > robi sobie sadlo z mozgu - nie chce mi sie wymieniac wszystkich
    > ych roznic ale chocby wspomiane ze druga z tych reczy to leaki
    > a pierwsza nie, albo np to ze w systemach z 'new' wyciec moze
    > wszystko, wyciec moze 127 albo ktoras z instancji 16 milionow
    > 777 typow

    Ale co to zmienia? Typ jest tutaj jedynie jakąś konstrukcją na poziomie
    języka, w statycznej tablicy możesz mieć jeden 'typ' w sensie typu C,
    ale ten typ może wyglądać np. tak

    struct Samolot
    {
    unsigned typ_samolotu;
    float wysokość;
    ...
    };

    Wtedy też może wyciec któraś z instancji 16 milionów 777 typów
    reprezentowanych 16 milionów 777 możliwymi wartościami pola typ_samolotu.

    > - gdy w c ze statycznymi tablicami nawet jak ktos zapchalby
    > tablice (a jest to naprawde wyjakowo GRUBY blad i zeby go ZROBIC
    > trzeba sie starac tak samo mocno jak o to by nie zrobic jakiegos
    > leaka bo o to jest dla odmiany nietrudno)

    W zależności jakie masz algorytmy i struktury może być dokładnie tak
    samo łatwo. W ogólnym przypadku będzie to przecież wyglądać tak, że dla
    jakiejś funkcji np.
    int alokuj_samolot()
    będziesz musiał zawołać
    void zwolnij_samolot(int idx);
    jeśli nie zawołasz, to masz "martwy" element w tablicy, którego już nie
    używasz, a który nigdy nie będzie mógł być wykorzystany ponownie na
    zaalokowanie innego samolotu. W czym niby nie wywołanie free dla malloc
    jest łatwiejsze niż nie wywołanie zwolnij_samolot dla alokuj_samolot?

    > to przy probie wstawienia
    > czegos do tej konkretnej tablicy z konkretnymi instancjami konkretnego
    > typu komunikat wypisze jawnie "brak miejsca w tablicy samolotow"

    No a malloc jak zajmiesz całą dostępną pamięć zwróci null, co możesz
    sobie też przecież zamanifestować wypisaniem komunikatu.

    > pozatym te instancje ktore nie sa wylaczone/odznaczone sa po prostu
    > uzywane i to widac

    Do czego są używane? I gdzie to widać?


  • 42. Data: 2011-05-05 23:29:52
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Michoo <m...@v...pl>

    W dniu 05.05.2011 00:32, fir pisze:
    >> tworzenia stu instancji ktore pozniej moga spokojnie hulac
    >
    > wogole to nie chcialem sie wdawac w takie dlugie wyjasnienia, chcialem
    > tylko owiedziec (a nawet wcale nie chcialem tego pwiedzec) tylko zauwazyc
    > ze tak jest:
    >
    > w statycznym c NAPRAWDE nie ma takiego pojecia i problemu
    > jak leaki (jest to pojecie absolutnie nieznane)
    Pokazałem Ci leak w statycznym kodzie. i to bardzo prostym.

    Mam cały czas wrażenie, że podchodzisz do programowania z punktu
    widzenia programów "Ahoj przygodo!!!" w którym żeby mieć
    błąd/leak/nieoczekiwane zachowanie trzeba się naprawdę postarać. Gdy
    tymczasem programowanie to dużo, dużo więcej a wykrycie błędów w
    "statycznym C fira" jest wyjątkowo trudne.

    > jak ktos nie wierzy to mz jego problem
    Tak, bo Twoja racja jest najtwojsza...

    --
    Pozdrawiam
    Michoo


  • 43. Data: 2011-05-05 23:39:42
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Michoo <m...@v...pl>

    W dniu 05.05.2011 00:20, p...@p...onet.pl pisze:
    > staje sie niedostepna przez wskazniki ;-) tylko ze ja wskaznikow nie
    > uzywam ja operuje na calych 'setach'
    >
    > // porusz wszystkie 'zywe'
    >
    > for(int i=0; i<MAX; i++)
    > if(samolot[i].enabled) moveSamolot(i);
    To teraz napisz tak serwer, który ma obsłużyć do 10 milionów samolotów,
    statków, samochodów i pociągów. Pojedynczy samolot(100B), statek(40B),
    pociąg(64B), samochód(95B) z czego 50 pierwszych bajtów ma taką samą
    interpretację we wszystkich, pozostałe są specyficzne.

    Zadeklarujesz tablice
    Samolot samolot[100000000];
    Statek statek[100000000];
    ...
    ?

    --
    Pozdrawiam
    Michoo


  • 44. Data: 2011-05-06 00:44:32
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Andrzej Jarzabek <a...@g...com>

    On 06/05/2011 00:39, Michoo wrote:
    > W dniu 05.05.2011 00:20, p...@p...onet.pl pisze:
    >> staje sie niedostepna przez wskazniki ;-) tylko ze ja wskaznikow nie
    >> uzywam ja operuje na calych 'setach'
    >>
    >> // porusz wszystkie 'zywe'
    >>
    >> for(int i=0; i<MAX; i++)
    >> if(samolot[i].enabled) moveSamolot(i);
    > To teraz napisz tak serwer, który ma obsłużyć do 10 milionów samolotów,
    > statków, samochodów i pociągów. Pojedynczy samolot(100B), statek(40B),
    > pociąg(64B), samochód(95B) z czego 50 pierwszych bajtów ma taką samą
    > interpretację we wszystkich, pozostałe są specyficzne.
    >
    > Zadeklarujesz tablice
    > Samolot samolot[100000000];
    > Statek statek[100000000];
    > ...
    > ?

    Nawet nie trzeba aż tak. Załóżmy nawet, że są tylko samoloty. Może być
    do 10 milionów samolotów, ale na raz na radarze masz zwykle np. 30.
    Profesor sobie wyobraża, że iterowanie po samolotach widocznych na
    radarze wygląda tak:

    for(int i=0; i<10000000; i++)
    if(samolot[i].na_radarze)
    {
    ....
    }


  • 45. Data: 2011-05-06 00:53:28
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Michoo <m...@v...pl>

    W dniu 06.05.2011 02:44, Andrzej Jarzabek pisze:
    > Nawet nie trzeba aż tak. Załóżmy nawet, że są tylko samoloty. Może być
    > do 10 milionów samolotów, ale na raz na radarze masz zwykle np. 30.
    > Profesor sobie wyobraża, że iterowanie po samolotach widocznych na
    > radarze wygląda tak:
    >
    > for(int i=0; i<10000000; i++)
    > if(samolot[i].na_radarze)
    > {
    > ....
    > }
    Jak go znam to ma tablicę
    int ra_nadarze[30] i po niej iteruje.
    (no i pewnie segv gdyby się jednak 31 pojawiło ;) )

    --
    Pozdrawiam
    Michoo


  • 46. Data: 2011-05-06 04:31:50
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: "Wojciech \"Spook\" Sura" <wojciech.sura_no@spam_poczta.medi.com.pl>

    Dnia 06-05-2011 o 01:29:52 Michoo <m...@v...pl> napisał(a):

    > W dniu 05.05.2011 00:32, fir pisze:
    >>> tworzenia stu instancji ktore pozniej moga spokojnie hulac
    >>
    >> wogole to nie chcialem sie wdawac w takie dlugie wyjasnienia, chcialem
    >> tylko owiedziec (a nawet wcale nie chcialem tego pwiedzec) tylko
    >> zauwazyc
    >> ze tak jest:
    >>
    >> w statycznym c NAPRAWDE nie ma takiego pojecia i problemu
    >> jak leaki (jest to pojecie absolutnie nieznane)
    > Pokazałem Ci leak w statycznym kodzie. i to bardzo prostym.
    >
    > Mam cały czas wrażenie, że podchodzisz do programowania z punktu
    > widzenia programów "Ahoj przygodo!!!" w którym żeby mieć
    > błąd/leak/nieoczekiwane zachowanie trzeba się naprawdę postarać. Gdy
    > tymczasem programowanie to dużo, dużo więcej a wykrycie błędów w
    > "statycznym C fira" jest wyjątkowo trudne.
    >
    >> jak ktos nie wierzy to mz jego problem
    > Tak, bo Twoja racja jest najtwojsza...

    Prawdę mówiąc, w tym przypadku zgadzam się z autorem pierwszego posta.
    Twój przykład nie ma wycieku pamięci jako takiego, tylko nieumiejętne
    zarządzanie tablicą. Jeśli mam tablicę od 0 do 9 i ustalę, że pierwszym
    elementem jest 5, to mimo tego w każdym miejscu programu nadal jestem w
    stanie dostać się do pierwszych czterech elementów. Jeśli napiszę zaś
    funkcję, która zaalokuje pamięć i jej nie zwolni (oraz nigdzie nie
    pozostawi do niej wskaźnika), to w praktyce *nie* jestem w stanie do tej
    pamięci już się dostać. To jest bardzo istotna różnica, która - moim
    zdaniem - nie pozwala nazwać pierwszego przypadku wyciekiem pamięci.

    Fir mówi o wyciekach pamięci na poziomie zarządzania pamięcią operacyjną,
    Ty mówisz o "wyciekach" na poziomie logiki programu.

    Inaczej: napisz mi taki program (w C++), który używa tylko obiektów
    alokowanych statycznie i zgłosi wyciek pamięci:

    #define _CRTDBG_MAP_ALLOC
    #include <crtdbg.h>

    int main (int argc, char * argv[])
    {
    // Tu Twój kod

    _CrtDumpMemoryLeaks();
    }

    Pozdrawiam -- Spook.

    --
    Używam klienta poczty Opera Mail: http://www.opera.com/mail/


  • 47. Data: 2011-05-06 04:39:49
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: "Wojciech \"Spook\" Sura" <wojciech.sura_no@spam_poczta.medi.com.pl>

    Dnia 03-05-2011 o 01:14:36 Andrzej Jarzabek <a...@g...com>
    napisał(a):

    > On 02/05/2011 22:06, f...@W...gazeta.pl wrote:
    >> czyli w skrocie -> ZAPCHANIE sobie tablicy (przez bledy w poodznaczaniu
    >> flag) to nie WYCIEKI
    >
    > To są wycieki.

    Kwestia definicji. Program nadal może dostać się do "zapchanych" elementów
    tablicy jawnie ją indeksując. Ba, można banalnie łatwo napisać odśmiecacz,
    który z powrotem odzyska nieużywane rekordy. Natomiast nie ma już szansy
    odzyskać utraconego wskaźnika do dynamicznie zaalokowanej pamięci.

    Błąd architektury, logiki programu - jak najbardziej tak. Wyciek? Nie.

    >> (z tego jak to widze leaki raczej nieodzownie lacza
    >> sie z utraconymi referencjami czyli nieodzownie zagubionym ramem)
    >
    > To jest tylko kwestia implementacyjna. Logicznie masz ten sam problem:
    > jeśli element w tablicy nie może być już do niczego użyty (nie ma i
    > logicznie nie mogą pojawić się indeksy tego elementu), a nie został
    > oznaczony jako wolny czy wpisany do puli wolnych elementów, to RAM
    > zajmowany przez ten element jest "nieodzownie zagubiony".

    Tylko że Firowi _cały czas chodzi o fizyczne wycieki_, a nie o logiczne,
    związane z konstrukcją programu. Tobie zaś chodzi o logiczne (w których
    zawierają się fizyczne) i dlatego obaj kłócicie się bezproduktywnie.

    Pozdrawiam -- Spook.

    --
    Używam klienta poczty Opera Mail: http://www.opera.com/mail/


  • 48. Data: 2011-05-06 04:45:19
    Temat: Re: typologia errorow aplikacji
    Od: "Wojciech \"Spook\" Sura" <wojciech.sura_no@spam_poczta.medi.com.pl>

    Dnia 02-05-2011 o 11:54:39 fir <f...@g...pl> napisał(a):

    > - leaki (wycieki)
    > - zwis (hang)
    > - crash to desktop
    > - crash systemu
    (...)
    > na pewno mozna cos dorzucic, poszerzyc i pouszczegolawiac ta liste;
    > czy moze ktos cos dorzucic i powiedziec pare slow o poszczegolnych
    > przypadkach, ZACHECAM

    To są efekty błędów w programie, a nie błędy jako takie. Bez określenia
    zakresu efektów błędu możemy przygotować listę zaczynającą się od
    zapalenia nieprawidłowej diody na klawiaturze poprzez opisane przez
    Ciebie, aż do błędu w programie naprowadzania międzykontynentalnego
    pocisku balistycznego kończącym się wyparowaniem jakiegoś średniej
    wielkości miasta wraz z mieszkańcami.

    Pozdrawiam -- Spook.

    --
    Używam klienta poczty Opera Mail: http://www.opera.com/mail/


  • 49. Data: 2011-05-06 06:41:59
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: " " <f...@W...gazeta.pl>

    Michoo <m...@v...pl> napisał(a):

    > W dniu 05.05.2011 00:20, p...@p...onet.pl pisze:
    > > staje sie niedostepna przez wskazniki ;-) tylko ze ja wskaznikow nie
    > > uzywam ja operuje na calych 'setach'
    > >
    > > // porusz wszystkie 'zywe'
    > >
    > > for(int i=0; i<MAX; i++)
    > > if(samolot[i].enabled) moveSamolot(i);
    > To teraz napisz tak serwer, który ma obsłużyć do 10 milionów samolotów,
    > statków, samochodów i pociągów. Pojedynczy samolot(100B), statek(40B),
    > pociąg(64B), samochód(95B) z czego 50 pierwszych bajtów ma taką samą
    > interpretację we wszystkich, pozostałe są specyficzne.
    >
    > Zadeklarujesz tablice
    > Samolot samolot[100000000];
    > Statek statek[100000000];
    > ....
    > ?
    >

    nigdy nie rozwazalem pisania serwera i nie mam pojecia jakie funkcje
    mialby spelniac taki kod serwera, byc moze potrzebne by byly jakies
    'poindeksowane' struktury danych - nie mam pojecia o serwerach i zajmuje
    sie teraz innymi rzeczami (ktore mam niestety na glowie), tak ze jak
    chcesz pogadac o serwerach to raczej zadaj to pytanie w trybie ogolnym
    na grupie niech odpowiedza ci ci ktorzy sa tym zainteresowani

    moglbym krotko odpowiedziec jak robilbym o w gierce roguelike:
    "najwydajniej jest raczej w oddzielnych tablicach"
    ale trzebabyraczej zmniejszyc liczby na bardziej realistyczne, bo
    wymodelowania takich liczb postaci - 40 milionow i np adekwatnej
    ( w pewnym pseudo relistycznym sensie bo zwykle mapy sa bardziej
    chyba zageszczone - choc z kreowanymi swiatami to roznie moze byc)
    do tego mapy np mapy polski (zaraz ile to by bylo pol na mapie polski?
    600 000 x 600 000 = 312 685 000 000 pol, czyli 312 giga)
    raczej nie uciagnalby obecny sprze - nie sprawdzalem nawet
    ile postaci i jakie mapy by uciagnal (ostatnio bylem
    limitowany do kilkudziesieciu tysiecy i map typu 2000x2000)
    - ale da sie zrobic zlozona gierke na duzej mapie - nawet mam
    lekka ochote ale to kwestia pisania przez pare lat a niestety mam
    teraz inne rzeczy do zrobienia (i tak juz sie postarzalem, wylysialem
    na zakolach brzuch mi urosl, plomby mi sie w zebach ruszaja,
    skostnialem jak drewniany czlowiek, (a i znane sa
    i inne ciezkie zyciowe kwestie) - tak ze chwilowo roguelike
    odpada)

    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 50. Data: 2011-05-06 07:11:41
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: "kenobi" <p...@p...onet.pl>


    > Nawet nie trzeba aż tak. Załóżmy nawet, że są tylko samoloty. Może być

    > do 10 milionów samolotów, ale na raz na radarze masz zwykle np. 30.

    > Profesor sobie wyobraża, że iterowanie po samolotach widocznych na

    > radarze wygląda tak:

    >

    > for(int i=0; i<10000000; i++)

    >     if(samolot[i].na_radarze)

    >     {

    >         ....

    >     }

    general sobie nic takiego nie wyobraza, to kwestia skali

    zapodalem kiedys posta konkurs na najlepszy kod do
    detekcji kolizji w postaci funkcji

    int_pair* collision = dish_up_collisions(Spheric_entity* object );

    [caigle ten sam problem ze lepiej by bylo jak dac collisions zamiast
    collision tylko ze wtsdy collisions[2] nie pasuje]

    ale jakos nikt sie nie popisal

    moze wiec odpowiesz jak to powyzej z radarem nalezy_ zrobic




    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

strony : 1 ... 4 . [ 5 ] . 6 ... 9


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: