Jak poprawnie obsłużyć różną kolejność plików w systemach plików.

0
nalik napisał(a):

Ty chcesz zmusić filesystem, by Ci zapodał pliki w odpowiedniej kolejności, zamiast napisać test tak by był niezależny od kolejności plików.

Nie.

Chcę znaleźć sposób na poprawny sposób na obsłużenie różnicy. To że dla Ciebie "obsłużenie" == "zmusić żeby zwrócił w kolejności", to już nie mój problem.

nalik napisał(a):

Ty chcesz zmusić filesystem i biblioteki, które używasz do listowania plików, by Ci zapodały pliki w odpowiedniej kolejności, zamiast napisać test tak by był niezależny od kolejności plików.

A jak chcesz napisać taki test, przez przywiązania aplikacji do formatu outputu?

Bo jak mi powiesz "napisz test który przywiąże test do formatu outputu", to ja ci odpowiem (dziesiąty raz), żę jak mam robić coś takiego, to już wolę nie robić nic.

@nalik: Co Ty teraz próbujesz zrobić?

  • Próbujesz mi pokazać że sortowanie to jest spoko pomysł? Dzięki, przyjąłem opinię - nie zrobię tego
  • Próbujesz mi pokazać że testowanie formatowania to spoko pomysł? dzieki za opinię - nie zrobię tego
  • Próbujesz mi pokazać że nie ma wyjścia, tylko albo sortowanie albo przywiązanie do formatu, a innego wyjścia nie ma i zapędziłem się w kozi róg - dzieki, ale tego też nie zrobię.
  • Nie masz więcej pomysłów? To dziękuję za wzięcie udziału w wątku.

Ale.

  • Jeśli masz jakiś inny pomysł, to chętnie wysłucham.
2
Riddle napisał(a):

@nalik: Co Ty teraz próbujesz zrobić?

  • Próbujesz mi pokazać że sortowanie to jest spoko pomysł? Dzięki, przyjąłem opinię - nie zrobię tego

To Ty napisałeś, że kolejność jest dla Ciebie problemem. Na filesystem i biblioteki nie masz wspływu. Na swoje testy owszem masz.

  • Próbujesz mi pokazać że testowanie formatowania to spoko pomysł? dzieki za opinię - nie zrobię tego

To ty napisałeś, że chcesz testować logi. Więc powiedz jak? Jak format nie ma znaczenia, to co dokładnie testujesz? Jaki jest warunek asercji?
Poza tym, nic takiego nie powiedziałem. Sam to sobie dopowiedziałeś.

  • Próbujesz mi pokazać że nie ma wyjścia, tylko albo sortowanie albo przywiązanie do formatu, a innego wyjścia nie ma i zapędziłem się w kozi róg - dzieki, ale tego też nie zrobię.

Może jest, ale do tego trzeba wiedzieć co próbujesz przetesować.

2

Szklana kula powiedziała mi, że problem być może jest następujący:

  • Linux używa slashy jako separatora ścieżki
  • Windows używa backslashy
  • Logi wypisują zawartość katalogu New Folder: Na Windowsie wypisują Other Folder\File.txt oraz Drawing.jpg, zaś na Linuxie Drawing.jpg oraz OtherFolder/File.txt
  • I teraz Riddle chce zrobić asercję, że te właśnie pliki są wypisane w logach. I co ma biedak napisać? Nie może zrobić asercji na konkretną listę plików, bo nie ma zagwarantowanej kolejności i jeszcze slash/backslash.
  • Narzucające się rozwiązanie to w teście zrobić jakąś abstrakcję na slash/backslash, by móc porównać z zahardkodowaną listą plików, która ma zostać wypluta, i zrobić asercję na tę zahardkodowaną listę plików.
  • Ale tutaj pojawia sie nieprzeparta bariera w postaci puryzmu Riddle'a, bo przecież to jest zejście z ogólności: Testy powinny operować na liście plików, natomiast nie powinny nic w ogóle wiedzieć o formacie, w jakim te pliki są wypluwane. W szczególności Riddle wzbrania się przed taką asercją w teście: Sprawdź, czy wypluta w logach lista plików zawiera wpis Other Folder\File.txt lub Other Folder/File.txt. Bo to jest przywiązanie testów do formatu zależnego od siedzącego pod spodem systemu plików.

Podstawowe pytanie. Jaka jest specyfkacja logów? Czy mają:

  • Wypluwać pliki w formacie zależnym od systemu plików? (Na Linuxie Drawing.jpg oraz OtherFolder/File.txt, w tej kolejności, zaś na Windzie Other Folder\File.txt oraz Drawing.jpg, znowu w tej kolejności?)
  • Wypluwać pliki w formacie niezależym od systemu plików? (Zawsze w tej samej kolejności, zawsze ze slashem, nigdy backslashem) - wtedy nie masz wyjścia, musisz albo sortować w aplikacij oraz na poziomie aplikacji obsłużyć slash vs backslash, albo zmusić wszystkie systemy plików, by zachowywały się tak samo (to drugie na intuicję wygląda karkołomnie, ale może się da)
  • Czy też logujesz strukturalnie? Wobec tego nie piszesz w logach stringów do plików, tylko piszesz logi z zagnieżdżonymi obiektami? Ta opcja otwiera taką możliwość, by traktować ścieżkę nie jako string, tylko jako listę elementów (elementem może być folder albo plik - czyli coś na kształt ["Other Folder", "File.txt"])

Jeśli rzeczywiście o to chodzi:

  • Zakładając, że logi mają wypluwać pliki w formacie zależnym od systemu plików: Opcje są dwie:
    • Pisać test case'y w zależności od systemu plików - wszak z definicji zachowanie aplikacji ma się różnić w zależności od siedzącego pod spodem systemu plików
      • Należy sprawdzić 10 razy, czy na pewno każdy z tych systemów gwarantuje kolejność, bo jeśli w którymś systemie plików pliki sa nieuporządkowane albo kolejność zależy od konfiguracji albo są jakieś nieoczywiste edge case'y, to wracamy do konieczności sortowania w teście albo porównania kolekcji nieuporządkowanych
    • Porównywać w teście kolekcje nieuporządkowane i (być może regexpem?) dopuszczać zarówno slashe, jak i backslashe - wszak wszystkie te formaty mogą zostać wyplute przez aplikację
  • Zakładając, że logi zawsze mają wypluwać to samo, niezależnie od systemu plików: Wtedy w teście nie ma problemu
  • Zakładając, że ustrukturyzowujesz ścieżkę (lista elementów): Ten format abstrahuje od slashy/backslashy, sortowanie w teście nie przywiąże cię więc do formatu zależnego od platformy.

Dalej pozostaje kwestia case sensitivity. Linux jest case sensitive, Winda nie.

0
YetAnohterone napisał(a):

Podstawowe pytanie. Jaka jest specyfkacja logów? Czy mają:

  • Wypluwać pliki w formacie zależnym od systemu plików? (Na Linuxie Drawing.jpg oraz OtherFolder/File.txt, w tej kolejności, zaś na Windzie Other Folder\File.txt oraz Drawing.jpg, znowu w tej kolejności?)
  • Wypluwać pliki w formacie niezależym od systemu plików? (Zawsze w tej samej kolejności, zawsze ze slashem, nigdy backslashem) - wtedy nie masz wyjścia, musisz albo sortować w aplikacij oraz na poziomie aplikacji obsłużyć slash vs backslash, albo zmusić wszystkie systemy plików, by zachowywały się tak samo (to drugie na intuicję wygląda karkołomnie, ale może się da)
  • Czy też logujesz strukturalnie? Wobec tego nie piszesz w logach stringów do plików, tylko piszesz logi z zagnieżdżonymi obiektami? Ta opcja otwiera taką możliwość, by traktować ścieżkę nie jako string, tylko jako listę elementów (elementem może być folder albo plik - czyli coś na kształt ["Other Folder", "File.txt"])

To są własnie pytania na które ja szukam odpowiedzi. Tylko Ty je przedstawiłeś w wypunktowanej długiej liście, a ja w pytaniu Jak obsłużyć róznice w kolejności plików w systemach plików?.

Jeśli rzeczywiście o to chodzi:

  • Zakładając, że logi mają wypluwać pliki w formacie zależnym od systemu plików: Opcje są dwie:
    • Pisać test case'y w zależności od systemu plików - wszak z definicji zachowanie aplikacji ma się różnić w zależności od siedzącego pod spodem systemu plików
      • Należy sprawdzić 10 razy, czy na pewno każdy z tych systemów gwarantuje kolejność, bo jeśli w którymś systemie plików pliki sa nieuporządkowane albo kolejność zależy od konfiguracji albo są jakieś nieoczywiste edge case'y, to wracamy do konieczności sortowania w teście albo porównania kolekcji nieuporządkowanych
    • Porównywać w teście kolekcje nieuporządkowane i (być może regexpem?) dopuszczać zarówno slashe, jak i backslashe - wszak wszystkie te formaty mogą zostać wyplute przez aplikację
  • Zakładając, że logi zawsze mają wypluwać to samo, niezależnie od systemu plików: Wtedy w teście nie ma problemu
  • Zakładając, że ustrukturyzowujesz ścieżkę (lista elementów): Ten format abstrahuje od slashy/backslashy, sortowanie w teście nie przywiąże cię więc do formatu zależnego od platformy.

Czyli rozumiem, nadal, że proponujesz sortowanie. A ile razy ja jeszcze mam powiedzieć, że sortowanie mnie nie interesuje i proszę mi go nie proponować? Co do regexpów i parsowania outputu, znów - ile razy mam mówić że nie chcę parsować outputu?

3
Riddle napisał(a):
YetAnohterone napisał(a):

Podstawowe pytanie. Jaka jest specyfkacja logów? Czy mają:

  • Wypluwać pliki w formacie zależnym od systemu plików? (Na Linuxie Drawing.jpg oraz OtherFolder/File.txt, w tej kolejności, zaś na Windzie Other Folder\File.txt oraz Drawing.jpg, znowu w tej kolejności?)
  • Wypluwać pliki w formacie niezależym od systemu plików? (Zawsze w tej samej kolejności, zawsze ze slashem, nigdy backslashem) - wtedy nie masz wyjścia, musisz albo sortować w aplikacij oraz na poziomie aplikacji obsłużyć slash vs backslash, albo zmusić wszystkie systemy plików, by zachowywały się tak samo (to drugie na intuicję wygląda karkołomnie, ale może się da)
  • Czy też logujesz strukturalnie? Wobec tego nie piszesz w logach stringów do plików, tylko piszesz logi z zagnieżdżonymi obiektami? Ta opcja otwiera taką możliwość, by traktować ścieżkę nie jako string, tylko jako listę elementów (elementem może być folder albo plik - czyli coś na kształt ["Other Folder", "File.txt"])

To są własnie pytania na które ja szukam odpowiedzi. Tylko Ty je przedstawiłeś w wypunktowanej długiej liście, a ja w pytaniu Jak obsłużyć róznice w kolejności plików w systemach plików?.

Ale to zależy od wymogów bizesowych, więc odpowiedź na nie znasz tylko ty. A my możemy coś dopowiedzieć tylko wtedy, gdy podasz nareszcie szczegóły.

Riddle napisał(a):

Jeśli rzeczywiście o to chodzi:

  • Zakładając, że logi mają wypluwać pliki w formacie zależnym od systemu plików: Opcje są dwie:
    • Pisać test case'y w zależności od systemu plików - wszak z definicji zachowanie aplikacji ma się różnić w zależności od siedzącego pod spodem systemu plików
      • Należy sprawdzić 10 razy, czy na pewno każdy z tych systemów gwarantuje kolejność, bo jeśli w którymś systemie plików pliki sa nieuporządkowane albo kolejność zależy od konfiguracji albo są jakieś nieoczywiste edge case'y, to wracamy do konieczności sortowania w teście albo porównania kolekcji nieuporządkowanych
    • Porównywać w teście kolekcje nieuporządkowane i (być może regexpem?) dopuszczać zarówno slashe, jak i backslashe - wszak wszystkie te formaty mogą zostać wyplute przez aplikację
  • Zakładając, że logi zawsze mają wypluwać to samo, niezależnie od systemu plików: Wtedy w teście nie ma problemu
  • Zakładając, że ustrukturyzowujesz ścieżkę (lista elementów): Ten format abstrahuje od slashy/backslashy, sortowanie w teście nie przywiąże cię więc do formatu zależnego od platformy.

Czyli rozumiem, nadal, że proponujesz sortowanie. A ile razy ja jeszcze mam powiedzieć, że sortowanie mnie nie interesuje i proszę mi go nie proponować? Co do regexpów i parsowania outputu, znów - ile razy mam mówić że nie chcę parsować outputu?

A ile razy ja mam powtarzać, że jeśli chcesz, by pliki wypisywały ci się w konkretnej kolejności, to musisz albo je posortować, albo zmusić leżący pod spodem system plików do wypluwania ich w ustalonej kolejności, trzeciej możliwości nie widać.

0
YetAnohterone napisał(a):

Ale to zależy od wymogów bizesowych, więc odpowiedź na nie znasz tylko ty. A my możemy coś dopowiedzieć tylko wtedy, gdy podasz nareszcie szczegóły.

Ale ja pytam jak to się powinno poprawnie obsłużyć, a nie to co biznesy chcą.

To co Ty i kolega próbujecie teraz zrobić, to jest przekonać mnie ze różnic w systemach plików się po prostu nie obsługuje. Że albo się je olewa, albo parsuje, albo sortuje, albo robi cokolwiek innego żeby tylko nie ogarniać tematu. Spoko, kumam - rozumiem ze wy byście tak zrobili.

Ale ja założyłem ten wątek jednak z pytaniem: Jak poprawnie obsłużyć różną kolejność plików w systemach plików?

Jeśli nie jesteś w stanie mi odpowiedzieć na to pytanie, to dziękuję bardzo za udział i tyle w temacie.

Riddle napisał(a):

A ile razy ja mam powtarzać, że jeśli chcesz, by pliki wypisywały ci się w konkretnej kolejności, to musisz albo je posortować, albo zmusić leżący pod spodem system plików do wypluwania ich w ustalonej kolejności, trzeciej możliwości nie widać.

Ale nie potrzebuje ich w konkretnej kolejności. Po prostu chce w jakikolwiek sposób obsłużyć różnice w systamach plików, nie koniecznie to musi znaczyć że muszą być wyplute w tej samej kolejności, ergo nie konieczne jest sortowanie.

Więc proszę, bardzo pięknie proszę - skończcie z tym sortowaniem już.

2
Riddle napisał(a):

Ale ja pytam jak to się powinno poprawnie obsłużyć, a nie to co biznesy chcą.

Przecież jedno zależy od drugiego w sposób dość oczywisty.

To co Ty i kolega próbujecie teraz zrobić, to jest przekonać mnie ze różnic w systemach plików się po prostu nie obsługuje.

Nic podobnego.

Że albo się je olewa

Można, nie trzeba.

albo parsuje, albo sortuje, albo robi cokolwiek innego żeby tylko nie ogarniać tematu

To jest właśnie ogarnięcie i obsłużenie różnic: uwspólnienie interfejsów.

Ale nie potrzebuje ich w konkretnej kolejności.

Przecież narzekasz, że logi ci się wypisują w różnej kolejności, więc zdecyduj się, czego potrzebujesz.

Po prostu chce w jakikolwiek sposób obsłużyć różnice w systamach plików, nie koniecznie to musi znaczyć że muszą być wyplute w tej samej kolejności, ergo nie konieczne jest sortowanie.

Po co?

Czy po to, by móc zrobić w teście asercję, że logowane są Drawing.jpg oraz Other Folder/File.txt?

No to znowu możliwości są dwie: albo porównujesz w teście nieuporządkowane, albo uporządkowane kolekcje. Pierwsze odrzucasz, bo wiązałoby się to z zbyt silnym przywiązaniem testów do outputu., co jest bzdurą, bo to właśnie abstrahuje od outputu. Drugie odrzucasz, bo nie i już oraz bo to ma złożoność O(n log n). Znowu, trzeciej możliwości nie widać.

Po raz nty: Popadłeś w sprzeczność.

0

@YetAnohterone: Podajesz cały czas case, albo sortowanie, albo parsowanie outputu. Ja nie jestem zainteresowany żadnym z nich, więc jesli masz plan nadal proponować te dwie drogi, to proszę daruj sobie.

YetAnohterone napisał(a):
Riddle napisał(a):

Ale ja pytam jak to się powinno poprawnie obsłużyć, a nie to co biznesy chcą.

Przecież jedno zależy od drugiego w sposób dość oczywisty.

Dobrze. To w takim razie z biznesowego punktu widzenia, kolejność nie ma znaczenia. Zadowolony?

albo parsuje, albo sortuje, albo robi cokolwiek innego żeby tylko nie ogarniać tematu

To jest właśnie ogarnięcie i obsłużenie różnic: uwspólnienie interfejsów.

Jedno z możliwych, ale nie wydajne performance'owo, ze względu na sortowanie. Ja szukam innego.

Ale nie potrzebuje ich w konkretnej kolejności.

Przecież narzekasz, że logi ci się wypisują w różnej kolejności, więc zdecyduj się, czego potrzebujesz.

To, co napisałem w tytule "Obsłóżenie różnic". Nie znaczy to "chcę dostać je w takiej samej formie".

Po prostu chce w jakikolwiek sposób obsłużyć różnice w systamach plików, nie koniecznie to musi znaczyć że muszą być wyplute w tej samej kolejności, ergo nie konieczne jest sortowanie.

Po co?

Czy po to, by móc zrobić w teście asercję, że logowane są Drawing.jpg oraz Other Folder/File.txt?

No to znowu możliwości są dwie: albo porównujesz w teście nieuporządkowane, albo uporządkowane kolekcje. Pierwsze odrzucasz, bo wiązałoby się to z zbyt silnym przywiązaniem testów do outputu., co jest bzdurą, bo to właśnie abstrahuje od outputu. Drugie odrzucasz, bo nie i już oraz bo to ma złożoność O(n log n). Znowu, trzeciej możliwości nie widać.

Rozumiem, że w możesz nie rozumiecć jak można coś przetestować, bez tight-coupling'u do niego, ale da się. Nie mam czasu teraz w to wejść, ale jest dużo materiałów dostępnych na ten temat.

Znowu, trzeciej możliwości nie widać. - okej, Ty nie widzisz. Więć proszę, nie zaśmiecaj wątku kolejnymi postami że "albo sortowanie albo parsowanie outputu". Twoją opinię już znam, napisałeś ją 20 razy, a ja 20 razy Ci mówiłem że nie chcę sortowania ani parsowania.

0

Jakie parsowanie?

Parsowanie regexpami jest niepotrzebne, skoro twierdzisz, że slash/backshash nie stanowi problemu.

baryel napisał(a):

Masz źle napisane testy, nieporozumienie z tym oczekiwaniem że kolejność musi być identyczna, aby test był zaakceptowany. Do tego żadne sortowanie nie jest potrzebne, żeby sprawdzić warunek formalny równości nieuporządkowanych zbiorów.

W jaki sposób wg ciebie to rozwiązanie stanowi parsowanie? Gdzie tu w ogóle parsowanie?

Podajesz cały czas case

Tu nie chodzi o żaden tight coupling ani cokolwiek innego. Tu chodzi o logikę. Niektóre sytuacje da się po prostu rozpisac na przypadki.

9
Riddle napisał(a):
  • Jeśli chcesz zaproponować sortowanie - don't

  • Jeśli chcesz zaproponować olanie tematu - don't

  • Jeśli chcesz mnie przekonać żebym zmienił podejście - don't

  • Jeśli natomiast masz jakiś pomysł jak sensownie ogarnąć różnice pomiędzy systemami plików - zapraszam do udzielenia opinii, chętnie poczytam.

Ja mam propozycję, żebyś przestał zawracać głowę wydumanym problemem jednocześnie odrzucając wszystkie możliwe rozwiązania (sortowanie, parsowanie, olanie)

4

ciekawe czy w tym wątku pojawi się jakiś kod zanim dobijemy do 10 strony

czy może jednak będziemy zgadywać co autor kodzi i jak testuje :P

jakiś link do repo? Minimal, Reproducible Example?

0
Azarien napisał(a):
Riddle napisał(a):
  • Jeśli chcesz zaproponować sortowanie - don't

  • Jeśli chcesz zaproponować olanie tematu - don't

  • Jeśli chcesz mnie przekonać żebym zmienił podejście - don't

  • Jeśli natomiast masz jakiś pomysł jak sensownie ogarnąć różnice pomiędzy systemami plików - zapraszam do udzielenia opinii, chętnie poczytam.

Ja mam propozycję, żebyś przestał zawracać głowę wydumanym problemem jednocześnie odrzucając wszystkie możliwe rozwiązania (sortowanie, parsowanie, olanie)

Myślę, że jest jakieś rozwiązanie inne niż te, dlatego zadałem pytanie na forum.

0
Riddle napisał(a):

Mógłbym to ogarnąć, po prostu sortując pliki, ale to jest trudne bo sortowanie po nazwie nie bierze pod uwagę hierarchii folderów.

Sortuj każdy katalog (również ten pierwszy, od którego zaczynasz) tym samym algorytmem zanim zaczniesz rozważać jakikolwiek element tego katalogu, zwłaszcza zanim wejdziesz rekurencyjnie do jakiegokolwiek podkatalogu. W ten sposób uzyskasz stabilną kolejność która jednocześnie respektuje drzewo.

0
Azarien napisał(a):
Riddle napisał(a):

Mógłbym to ogarnąć, po prostu sortując pliki, ale to jest trudne bo sortowanie po nazwie nie bierze pod uwagę hierarchii folderów.

Sortuj każdy katalog (również ten pierwszy, od którego zaczynasz) tym samym algorytmem zanim zaczniesz rozważać jakikolwiek element tego katalogu, zwłaszcza zanim wejdziesz rekurencyjnie do jakiegokolwiek podkatalogu. W ten sposób uzyskasz stabilną kolejność która jednocześnie respektuje drzewo.

Tak, ale nie potrzebuje takiego sortowania w aplikacji. To byłby niepotrzebny narzut.

4
Riddle napisał(a):

Ale kolejność nie jest przypadkowa, zależy od systemu plików, a każdy z nich się rządzi innymi zasadami, np Windows zawsze listuje foldery pierwsze.

Ale skąd to wziąłeś bo jak wyłączę sortowanie to foldery są przemieszane z plikami na windowsie. Nie widzę niczego w specyfikacji NTFS ani FAT co by na to wskazywało. To raczej programy listujące wyciągają zawsze foldery na górę (niezależnie od wybranego sortowania)

Mógłbym to ogarnąć, po prostu sortując pliki, ale to jest trudne bo sortowanie po nazwie nie bierze pod uwagę hierarchii folderów.

Jeśli będzie wypluwał full path to będzie brało pod uwagę. Dasz radę ;)

Chciałbym napisać test pod wyprintowany output, ale asercje failują na różnych systemach plików przez kolejność właśnie. Mógłbym je prasować, i porównać bez sprawdzenia kolejności, ale to z kolei sprawia że testy są bardziej przywiązane do widoku, bo muszą go prasować. Mógłbym też je testować niżej, zanim się wyprintują.

Co to w ogóle za test który sprawdza listę plików na dysku? Może dostęp do dysku sobie zamockuj i będziesz miał swój "system plików" z pełną kontrolą. Chyba że piszesz swój system i testujesz czy funkcje do zapisu na dysku działają

3

Z ciekawości - ext4 może trzymać pliki w folderze posortowane w B-tree, jeżeli flaga EXT4_INDEX_FL jest ustawiona w inodzie folderu, lub nieposortowane, jeżeli flaga nie jest ustawiona. Domyślnie flaga nie jest ustawiona.

Inna ciekawostka, dla APFS plik a i A jest tym samym. Co ma efekt uboczny taki, że wielkość liter nie ma znaczenia np dla ls'a. ext3/4 rozróżnia wielkie litery i to są inne pliki, a także podczas listowania ls wielkie litery idą pierwsze.

Inna sprawą jest to, że fizyczny format dysku nie musi odpowiadać temu co widać w takim explorerze plików. I nie ma żadnej gwarancji w jak sposób biblioteka w danym języku programowania zwraca wyniku, bo to zazwyczaj jest szczegół implementacyjny.

Sam man page dla readdir, który jest standardową funkcją gnu czytająca folder mówi:

The readdir() function returns a pointer to a dirent structure
       representing the next directory entry in the directory stream
       pointed to by dirp.

...

A directory stream is opened using opendir(3).

       The order in which filenames are read by successive calls to
       readdir() depends on the filesystem implementation; it is
       unlikely that the names will be sorted in any fashion.
6

Widać, że Riddle dopiero zaczyna programowanie i proszę o nie wyzywanie go. Jest to klasyczny XY problem. Autora proszę o zapoznanie się z XY problem a następnie opisanie co chce osiągnąć a ja zaproponuję rozwiązanie

11

A nie można po prostu przejść po drzewie katalogów algorytmem Dijkstry i liczyć hashe nazw plików, a potem porównać metodą Monte Carlo?

0

Jak uda się Tobie poprawić te systemy plików by zwracały pliki / logi w posortowany sposób - to w jaki sposób Test będzie sprawdzał to co chcesz bez przywiązania do sortowania i outputu logów?

0

No sprawdzę czy dwa outputy są równe. Wtedy będę mógł uruchomić dwie apki na dwóch FS, i porównać outputy, w taki sposób ze testy nie znają dokładnego formatu, i jego zmiana nie spowoduje faila.

to niech te testy walą mądrze Contains na outpucie dla każdego pliku który tam ma być.

1

Proszę nie wypowiadać się w tym temacie dopóki autor nie zapozna się z Problem XY bo wprowadzacie go w błąd

2
YetAnohterone napisał(a):

Ale to zależy od wymogów bizesowych, więc odpowiedź na nie znasz tylko ty. A my możemy coś dopowiedzieć tylko wtedy, gdy podasz nareszcie szczegóły.

Popieram wniosek. My nie Wróżbita Maciej.

Riddle napisał(a):
YetAnohterone napisał(a):

Ale to zależy od wymogów bizesowych, więc odpowiedź na nie znasz tylko ty. A my możemy coś dopowiedzieć tylko wtedy, gdy podasz nareszcie szczegóły.

Ale ja pytam jak to się powinno poprawnie obsłużyć, a nie to co biznesy chcą.

No chyba jednak nie.

Ale nie potrzebuje ich w konkretnej kolejności.

To sortuj w testach.

Więc proszę, bardzo pięknie proszę - skończcie z tym sortowaniem już.

Sortuj.

Nie wiem, co Ci tak nie pasuje w tym sortowaniu.

W bibliotekach masz tylko bąbelkowe, że tak się upierasz?

Riddle napisał(a):

Ale ja założyłem ten wątek jednak z pytaniem: Jak poprawnie obsłużyć różną kolejność plików w systemach plików?

Posortować. To takie proste.

Riddle napisał(a):

Dobrze. To w takim razie z biznesowego punktu widzenia, kolejność nie ma znaczenia. Zadowolony?

To sortuj w testach.

Riddle napisał(a):

Tak, ale nie potrzebuje takiego sortowania w aplikacji. To byłby niepotrzebny narzut.

To sortuj w testach.

Riddle napisał(a):

Kiedy listuje katalogi i pliki, to printuje też logi. A więc treść tych logów, jakby nie patrzeć zależy od kolejności w jakiej przeiteruje po plikach, co w gruncie rzeczy sprawi że ten sam program uruchomiony na tym samym zestawie plików wyprintuje inne logi.

Mógłbym to ogarnąć, po prostu sortując pliki, ale to jest trudne bo sortowanie po nazwie nie bierze pod uwagę hierarchii folderów.

To loguj ścieżkę. I sortuj.

Riddle napisał(a):

Jakie mam opcje według was, co do ogarnięcia różnic w kolejności plików w systemie plików? Może skorzystać z wirtualnych systemów plików in-memory na potrzeby testów - ale nadal jest problem ze po uruchomieniu nadal aplikacja ma różnicę.

Proszę się wstrzymać od odpowiedzi "olej kolejność plików" bardzo proszę.

Sortuj.

anonimowy napisał(a):

Proszę nie wypowiadać się w tym temacie dopóki autor nie zapozna się z Problem XY bo wprowadzacie go w błąd

Nic nie zrobisz.

Bo co zrobisz? Uparł się, że nie posortuje i nie napisze dokładnie co chce zrobić.

Trzeba chyba po prostu poczekać do jesieni, bo koledze @Riddle chyba upały dały się we znaki :(

0

@pms_enable_synaptics: Ty myślisz o systemie plików jak o black-boxie z którego rzeczy da się "po prostu" wyciągnąć, bez żadnych konfiguracji, ich specyfiki i widocznych różnic między nimi. Dlatego w odpowiedzi na moje pytanie jedyną odpowiedź jaką widzisz to posortowanie - a ja Ci już mówiłem pięćset razy - proszę o nie sugerowanie sortowania jako rozwiązania, bo nie interesuje mnie takie rozwiązanie.

Ja w tym wątku myślę o systemie plików jako white-box, tak, że na odpowiednim poziomie abstrakcji da się zrozumieć różnice pomiędzy systemami plików i przewidzieć w jaki sposób który system plików jak przeiteruje po plikach i folderach, że będzie się udało jednoznaczeni ustalić ich kolejność bez sortowania.

Także, bardzo proszę, wysyłam modły do jasnej anielki - @pms_enable_synaptics skończ już pisać z tym sortowaniem! Wiem że Ty byś tak zrobił, dziękuję za wpis, proszę, zaprzestań już share'owania Twoich opinii

Nie widzę, czego nie jesteś w stanie zrozumieć, prosiłem w wątku wyżej, o to by wstrzymano się tutaj od odpowiedzi z sortowaniem, wyjaśniałem kilka razy że nie interesuje mnie takie rozwiązanie, i ilustrowałem dlaczego. Bardzo bym docenił gdyby ktoś nie zaśmiecał wątku z rozwiązaniami które odrzuciłem już wielokrotnie.

2

Wątpię, że kolejność nieposortowanej listy plików jest czymś, co jest w ogóle przewidywalne. Koniec końców pewnie i tak będziesz musiał zostawić tak jak jest, albo sortować. Mam nawet wątpliwości, czy to jest kwestia systemu plików jako takiego, a nie np sterownika albo systemu operacyjnego. Jeżeli używasz api systemowego do uzyskania listy plików i folderów, a nie zażądasz zadnego sortowania, to dostaniesz listę albo losową, albo już jakoś posortowaną - jak, tego ci nikt raczej nie powie.

Raczej nie dostajesz żadnej lepszej odpowiedzi niż to, co do tej pory.

0
gajusz800 napisał(a):

Wątpię, że kolejność nieposortowanej listy plików jest czymś, co jest w ogóle przewidywalne. Koniec końców pewnie i tak będziesz musiał zostawić tak jak jest, albo sortować. Mam nawet wątpliwości, czy to jest kwestia systemu plików jako takiego, a nie np sterownika albo systemu operacyjnego.

Jeśli tak jest, to poczekam na odpowiedź kogoś kto się na tym zna i powie mi dokładnie od czego to zależy.

3

@Riddle:

Ja w tym wątku myślę o systemie plików jako white-box, tak, że na odpowiednim poziomie abstrakcji da się zrozumieć różnice pomiędzy systemami plików i przewidzieć w jaki sposób który system plików jak przeiteruje po plikach i folderach, że będzie się udało jednoznaczeni ustalić ich kolejność bez sortowania.

no tylko po co?

jakbyś walił selecty do bazki to też byś pisał na 4p aby ktoś ci wytłumaczył bebechy silnika bazodanowego wpływające na ordering? i to raz dla MySQL, MSSQL, Post-Ingres SQL, MongoDb, etc?

jeżeli tak bardzo ci zależy, to weź po prostu reverse engineernij to

utwórz sobie te pliki na różnych FSach i zobacz jak się listują

Chciałbym napisać test pod wyprintowany output, ale asercje failują na różnych systemach plików przez kolejność właśnie. Mógłbym je prasować, i porównać bez sprawdzenia kolejności, ale to z kolei sprawia że testy są bardziej przywiązane do widoku, bo muszą go prasować. Mógłbym też je testować niżej, zanim się wyprintują.

no tak, jeżeli chcesz testować frontend, to musisz napisać testy frontendu.

3
Riddle napisał(a):

@pms_enable_synaptics: Ty myślisz o systemie plików jak o black-boxie z którego rzeczy da się "po prostu" wyciągnąć, bez żadnych konfiguracji, ich specyfiki i widocznych różnic między nimi. Dlatego w odpowiedzi na moje pytanie jedyną odpowiedź jaką widzisz to posortowanie - a ja Ci już mówiłem pięćset razy - proszę o nie sugerowanie sortowania jako rozwiązania, bo nie interesuje mnie takie rozwiązanie.

Ja w tym wątku myślę o systemie plików jako white-box, tak, że na odpowiednim poziomie abstrakcji da się zrozumieć różnice pomiędzy systemami plików i przewidzieć w jaki sposób który system plików jak przeiteruje po plikach i folderach, że będzie się udało jednoznaczeni ustalić ich kolejność bez sortowania.

W utworzonym przeze mnie eksperymentalnym systemie plików kolejność jest brana z tablicy plików (i katalogów), a kolejność wpisu w niej jest zmieniana w zależności od optymalności modyfikacji tej tablicy. Więc kolejność jest nieprzewidywalna. Masz ‘white‐box’, ale to w niczym nie pomoże.

5
Riddle napisał(a):

@pms_enable_synaptics: Ty myślisz o systemie plików jak o black-boxie z którego rzeczy da się "po prostu" wyciągnąć, bez żadnych konfiguracji, ich specyfiki i widocznych różnic między nimi. Dlatego w odpowiedzi na moje pytanie jedyną odpowiedź jaką widzisz to posortowanie - a ja Ci już mówiłem pięćset razy - proszę o nie sugerowanie sortowania jako rozwiązania, bo nie interesuje mnie takie rozwiązanie.

Nope, ja niejeden system plików zaprojektowałem i zaimplementowałem :)

Ja w tym wątku myślę o systemie plików jako white-box, tak, że na odpowiednim poziomie abstrakcji da się zrozumieć różnice pomiędzy systemami plików i przewidzieć w jaki sposób który system plików jak przeiteruje po plikach i folderach, że będzie się udało jednoznaczeni ustalić ich kolejność bez sortowania.

Ale zdajesz sobie sprawę, że kolejność w jakiej dostajesz od systemu listę plików zależy:

  • od typu system plików (UFS, EXT3, FAT, NTFS, itd.)
  • od konkretnej implementacji w systemie operacyjnym
  • od systemu operacyjnego i jego wersji
  • od biblioteki standardowej i jej wersji
  • od aktywności innych procesów (nawet jeśli nie korzystają z "Twojego" poddrzewa)
  • od tego, co w tym systemie plików działo się wcześniej (np. kilka lat wcześniej, także poza Twoją aplikacją)
  • itd.

Także, bardzo proszę, wysyłam modły do jasnej anielki - @pms_enable_synaptics skończ już pisać z tym sortowaniem! Wiem że Ty byś tak zrobił, dziękuję za wpis, proszę, zaprzestań już share'owania Twoich opinii

Sortuj w testach!

Nie widzę, czego nie jesteś w stanie zrozumieć, prosiłem w wątku wyżej, o to by wstrzymano się tutaj od odpowiedzi z sortowaniem, wyjaśniałem kilka razy że nie interesuje mnie takie rozwiązanie, i ilustrowałem dlaczego. Bardzo bym docenił gdyby ktoś nie zaśmiecał wątku z rozwiązaniami które odrzuciłem już wielokrotnie.

Bo się uparłeś i nie chcesz sortować :-P

Jeśli jedna osoba mówi ci że jesteś koniem to ją zignoruj, jeśli dwie osoby mówią ci ze jesteś koniem to je zignoruj. jednak jeśli pięć osób mówi ci że jesteś koniem to zacznij zbierać na siodło.

Tobie już nikt nie pomoże :(

1
pms_enable_synaptics napisał(a):

Ale zdajesz sobie sprawę, że kolejność w jakiej dostajesz od systemu listę plików zależy:

  • od typu system plików (UFS, EXT3, FAT, NTFS, itd.)
  • od konkretnej implementacji w systemie operacyjnym
  • od systemu operacyjnego i jego wersji
  • od biblioteki standardowej i jej wersji
  • od aktywności innych procesów (nawet jeśli nie korzystają z "Twojego" poddrzewa)
  • od tego, co w tym systemie plików działo się wcześniej (np. kilka lat wcześniej, także poza Twoją aplikacją)
  • itd.

Jeśli zależą od tych rzeczy, to proszę wypowiedz się jak mogę obsłużyć każdy z tych przypadków.

Jeśli jedna osoba mówi ci że jesteś koniem to ją zignoruj, jeśli dwie osoby mówią ci ze jesteś koniem to je zignoruj. jednak jeśli pięć osób mówi ci że jesteś koniem to zacznij zbierać na siodło.

Tobie już nikt nie pomoże :(

Argumentum ad. populum.

5
Riddle napisał(a):
pms_enable_synaptics napisał(a):

Ale zdajesz sobie sprawę, że kolejność w jakiej dostajesz od systemu listę plików zależy:

  • od typu system plików (UFS, EXT3, FAT, NTFS, itd.)
  • od konkretnej implementacji w systemie operacyjnym
  • od systemu operacyjnego i jego wersji
  • od biblioteki standardowej i jej wersji
  • od aktywności innych procesów (nawet jeśli nie korzystają z "Twojego" poddrzewa)
  • od tego, co w tym systemie plików działo się wcześniej (np. kilka lat wcześniej, także poza Twoją aplikacją)
  • itd.

Jeśli zależą od tych rzeczy, to proszę wypowiedz się jak mogę obsłużyć każdy z tych przypadków.

Sortować w testach :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1