Hejto.plDodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

qarminTwórca

Dołączył/a:

  • 38 wpisów
  • 59 komentarzy
  • 0 obserwujących

Twórca

w Programowanie

18piorunów

Dzisiaj wydałem nową wersję moich aplikacji do wyszukiwania duplikatów(i nie tylko) Krokiet/Czkawka 11.0.

Wpierw wrzuciłem to na Reddita, ale mnie poblokowali, bo w treści miałem odwołanie do strony "dev dot com", więc niech idą na drzewo a post wrzucę tutaj.

Mógłbym opisywać tak jak w innych miejscach, że ta wersja dodaje w Krokiecie łatwiejsze sortowanie, pozwala na skanowanie pojedynczych plików, usuwanie danych exif z obrazów, wyszukiwanie niepożądanych nazw plików, ręczne usuwanie przestarzałych danych cache itd. - ale na końcu i tak ktoś napisze tutaj "A po co mi to?"

Tak więc hejterska społeczność w swym hejcie na pewno doceni 2 nowe funkcjonalności w tej wersji:

- Dodanie ikony do windowsowego pliku exe - zaskakująco wiele osób chciało tą funkcjonalność, ale jak to zwykle bywa nikt do tej pory tego nie zrobił, więc jak większość rzeczy, musiałem zrobić to sam, dzięki temu exe jest teraz łatwo rozpoznawalne(zawiera nowe logo, będące jednorożcem z tarczą, proporcem a na nim narysowanym Krokietem)

- Drugą funkcjonalnością jest ucinanie czarnych pasów z wideo, lub jego statycznych części

Przy przeglądaniu rożnych plików wideo, zauważyłem, że wiele z nich ma dodane jakieś dziwne pasy, przez co czasem je sie trudniej ogląda i na pełnym ekranie, nie wypełniają go całego.

Zatem dla tych plików, mogłem albo ręcznie w ffmpeg przycinać każdy plik obliczając prostokąt z zawartością, korzystać z szemranych stronek przycinających wideo i przy okazji dodające swoje własne logo albo napisać od zera tą funkcjonalność, która działałaby jako tako i ostatecznie wybrałem ostatnią opcję.

Algorytm jest w miarę prosty, z każdej strony testowana jest linia po linii i jeśli 90%(można te wartości zmieniać) pikseli z danej linii z danej ramki, ma różnice w RGB mniejsze niż 20(suma różnic każdej ze składowych), to linia jest oznaczana do usunięcia.

Jeśli w którymkolwiek z kolejnych przebiegów, linia będzie zawierała zbyt dużo różnic względem odpowiadającej jej linii z pierwszej ramki, to jest ona wyrzucana z puli do usunięcia i nigdy później nie jest już testowana.

Na obrazku niżej widać, jak narzędzie poprawnie wykryło ten "ciekawy" obszar wideo i zaznaczyło go na podglądzie(złożonym z 9 klatek z wewnątrz aplikacji), dzięki czemu kliknięcie w optimize, stworzy nowy plik(albo nadpisze stary), bez napisu

Więcej na temat błędów i nowych narzędzi w tej wersji można przeczytać tutaj - https://medium.com/@qarmin/czkawka-krokiet-11-0-c95ee35eccc2

Repozytorium — https://github.com/qarmin/czkawka

Pliki do pobrania wraz z listą zmian — https://github.com/qarmin/czkawka/releases

Licencja — MIT/GPL w zależności od programu (czyli w skrócie za darmo)

#programowanie
#tworczoscwlasna
#rustlang

Osobistość1piorunów

@qarmin Co do przycinania czarnych pasów w video, to w sumie ffmpeg ma wbudowaną funkcjonalność automatycznego wykrycia obszaru do przycięcia. Wiem bo kiedyś dodawałem podobną funkcjonalność do swojego GUI do ffmpeg.
Tutaj link do dokumentacji ffmpeg gdzie ją opisują: https://ffmpeg.org/ffmpeg-filters.html#cropdetect

I jeszcze pytanie jeśli może wiesz, czy paczki w AUR "krokiet-bin" i "krokiet" różnią się czymś poza tym że jedna jest już zbudowana a druga nie? Chodzi mi o te dodatkowe backendy o których pisałeś oraz wsparcie dla dodatkowych formatów.

FFmpeg Filters DocumentationFfmpeg
Pokaż więcej komentarzy (4)

Twórca

w Dyskusje

6piorunów

Mam problem z jedną stroną "czkawka .com", która zdaje się sugerować, że jest oficjalną stroną mojej aplikacji - Czkawki, mimo że nie jest. 

Część z użytkowników aplikacji zgłaszała informacje że strona zawiera niepoprawne informacje(typu pliki binarne windows msi - ja udostępniam tylko zipy/exe), po tych zgłoszeniach dodałem do readme czytelną informację, że mój projekt nie ma żadnej oficjalnej strony internetowej. Zauważyłem też że na dole strony pojawiła się notka "Not affiliated with czkawka. This is an independent site providing documentation, guides and links to the official project repositories. For official releases visit GitHub" - jednak jest to informacja dopiero w stopce i większość użytkowników nawet tego nie przeczyta.

Mimo to, że zawierała niepoprawne wiadomości, nie przeszkadzała mi ona zbytnio. Niepokojące jednak było to, że linki do aplikacji kierowały do plików binarnych na serwerze, zamiast bezpośrednio do releasów githubowych.

To też bardzo dziwne, że ktoś zadał sobie trud, by bezinteresownie stworzyć taką stronę i opłacać domenę, bez żadnego kontaktu ze mną.

Ostatnio kilkoro z użytkowników zgłosiło, że przy próbie pobrania z tej strony plików, strona próbowała im opchnąć jakieś pliki malware(sam tego nie doświadczyłem, więc nie mam 100% pewności).

Pozgłaszałem stronę do Google Safe Browsing i Microsoftowego odpowiednika, jednak nic się nie zmieniło.


Kojarzycie jakieś metody jak się pozbyć takiej "podszywającej" i niebezpiecznej strony?

Co gorsza ona pozycjonuje się lepiej niż projekt githubowy, przez użytkownicy bez problemu wpadać w jej objęcia


#informatyka

Fanatyk0piorunów

@qarmin Niestety, jeśli nie robią nic nielegalnego (typu oczywisty malware wpakowywane do instalatorów), to nic z tym nie zrobisz.

Zaczynając tego typu projekt trzeba kupić domenę - innego sposobu nie ma. Jeśli masz kontrolę nad aktualizacjami aplikacji, możesz najwyżej w swojej apce pokazać jakiś banner z ostrzeżeniem, informujący że nie masz nic wspólnego z tamtą stroną, i żeby jej nie używać.

Pokaż więcej komentarzy (3)

Twórca

w Programowanie

28piorunów

Właśnie przed chwilą wrzuciłem crates.io, nową wersję Krokieta(smakowicie brzmiąca nazwa, czyż nie?) i Czkawki, programów do usuwania duplikatów, uszkodzonych plików i tym podobnych rzeczy.

W przeciągu ostatniego miesiąca, przez połowę czasu tego czasu byłem na urlopie, na którym zamiast odpoczywać sobie, dodawałem nowe funkcje do programów(i wrzucałem błędy, bom ciekawy kiedy zostaną znalezione)

Jeśli odbiliście się od Czkawki np. z powodu specyficznego wyglądu, to w Krokiecie... zapewne też się odbijecie bo to nie jest program będący szczytem ergonomicznych rozwiązań, ale i tak według mnie wygląda lepiej niż Czkawka i sam jestem w trakcie przeskakiwania na niego(i też uzupełniania ciągle brakujących funkcji)

W tej wersji udało mi się też poprawić część z rzeczy, które zgłaszaliście pod poprzednim wpisem(jak np. niezbyt widoczne ciemne ikony w ciemnym trybie).

Lista zmian wraz z plikami do pobrania - https://github.com/qarmin/czkawka/releases/tag/10.0.0

W artykule na medium.com, postanowiłem też nieco porozpisywać niektóre ciekawsze funkcje i zewnętrzne kontrybucje(chyba to się tak tłumaczy) tj:
* Dodanie limitów pamięci przy ładowaniu plików cache
* Dodanie do Krokieta tłumaczeń i szeregu nowych funkcji
* Zakończenie wsparcia na linuxie dla appimage
* Alternatywne Gui(przy użyciu Tauri) - obcy projekt
* Czkawka w repo Debiana 13 - obca zmiana
* Testy czasów kompilacji i wielkości pliku binarnego, przy użyciu różnych optymalizacji
* Ostrzeżenia przed obcymi stronami <== czkawka dot com nie jest stroną, którą zarządzam i może być używana do rozsiewania malware ==>

Ów artykuł - https://medium.com/@qarmin/czkawka-krokiet-10-0-czyszczenie-duplikat%C3%B3w-ujednolicanie-funkcji-i-gar%C5%9B%C4%87-rustowych-statystyk-7663ee6798ed

Zapewne część osób po dojściu do tego momentu zapyta się "a po co to komu?".
Jak na użytkownika strony na której postuje się śmieszne obrazki, jest to dość dziwne pytanie, ale odpowiem do czego ja sam tego używam - do zarządzania kolekcją memów i usuwania tych wersji z gorszą rozdzielczością

#programowanie
#tworczoscwlasna
#rustlang

Fanatyk1piorunów

@qarmin - Snapy to gówno więc porzucenia mi ich nie żal w poprzedniej wersji.
Appimage trochę jednak szkoda - ale dobrze wyjaśniłeś.

Pokaż więcej komentarzy (4)

Twórca

w Programowanie

52piorunów

Dzisiaj udało mi się wypchnąć nową wersję(9.0) mojej aplikacji do deduplikacji plików, która swoją nazwą "Czkawka" lubi sprawiać problemy obcokrajowcom.

Nie chcę mi się tutaj przepisywać całego tekstu z medium, więc po prostu wkleję tutaj link -https://medium.com/@qarmin/czkawka-krokiet-9-0-wyszukiwarka-duplikat%C3%B3w-szybsza-ni%C5%BC-kiedykolwiek-6276f23d4eb9

Głównie w tej wersji skupiłem się na optymalizacjach i poprawie używalności aplikacji, bez jakichś większych nowych i innowacyjnych elementów.

Jeśli macie jakieś uwagi co do aplikacji, to zapraszam do działu issues - https://github.com/qarmin/czkawka/issues - w którym jest ponad 400 rekordów, więc mój czas reakcji na nie, może być dość bardzo wydłużony

Cena — darmo, więc bierzcie do woli dla siebie, znajomych i rodziny, licencja MIT/GPL
Pliki do pobrania — https://github.com/qarmin/czkawka/releases

>Niektórzy powiadają, że Czkawka ma jeden tryb do usuwania duplikatów, a drugi do usuwania podobnych obrazów. Bzdura. Oba tryby są do usuwania duplikatów


Praktykant0piorunów

Świetna aplikacja, poprzednia wersja była szybka, teraz jest jeszcze lepiej? Brawo!

Pokaż więcej komentarzy (10)

Twórca

w Programowanie

32piorunów

Osiem miesięcy po wydaniu Czkawki/Krokieta 7.0, nadszedł czas na wydanie wersji 8.0.

Dla ludzi niekojarzących programu, to jest to aplikacja do czyszczenia plików z duplikatów i jest dostępna na windowsa, linuxa, macos.

Lista Zmian(po angielsku, bo tłumaczenie niezbyt wiele ma sensu)

### Breaking changes

- Due to the removal image_type from image struct, old cache files are incompatible with new version and should be regenerated from scratch(it uses new name)
- Some CLI arguments could change short name, due fixing ambiguous names

### Known regressions

- Slint 1.8 which Krokiet uses requires femtovg 0.9.2 which broke font rendering - https://github.com/slint-ui/slint/issues/6298

### CI

- Providing nightly builds
- Added finding duplicated options in CLI

### Core

- Removed some unnecessary panics
- Simplified usage of structures when sending/receiving progress information
- Added Median hash algorithm
- Fixed compilation with Rust >=1.80
- Extracted tool input parameters, that helped to find not used parameters
- Added new mod to find similar music only in groups with similar title tag
- Printing to file/console no longer uses two backslashes in windows paths
- Fixed panic when failed to decode raw picture
- Remove useless saving/loading cache when there is no files to check
- Filtering hard links on windows
- Added jxl support
- Added avif support(via external C library, not enabled by default)
- Integer overflow are enabled by default(prepare for reporting bugs, slower performance and general unstability)
- Fixed crash when loading invalid image cache

### Krokiet

- Fixed invalid default hash size in similar images
- Fixed and added more input parameters to the application
- Fixed problem with loading invalid preset
- Fixed crash when using 8 hash size with small similarity
- Disabling buttons when no files were found
- Changed way to close/open panel at bottom
- Modify logo a little
- Avoid errors when trying to load preview of not supported file
- Added ability to show preview of referenced folders
- Enable selecting with space and jumping over entries with arrows and opening with enter
- Added button to rename files with invalid extension

### GTK GUI

- Fixed and added more input parameters to the application
- Added option to use external libraries instead gtk pixbuf loader for previews
- Using static runtime with zstd compression in appimage
- Restoring flatpak builds
- [External] Mac homebrew version of app - https://formulae.brew.sh/formula/czkawka

### CLI

- Added options to find/remove images by size
- Fixed and added more input parameters to the application
- Fixed crash when stopping scan multiple times
- Print results also in debug build
- Added support for selecting reference directories

Przyszłość

Przez blisko pół roku nie stworzyłem ani jednego commita, bo musiałem nieco odpocząć od projektu, bo nieco się wypaliłem.
W pracy zaczynam coraz więcej programować w rust, więc widzę że sam projekt nie jest najwyższej jakości i architektura aplikacji wymaga masy zmian(na które niekiedy za późno, bo wymaga to przepisania całej aplikacji) choć częściowo staram się refaktorować to co możliwe.
Jednak jednocześnie mam coraz mniej chęci, zajmować się poza pracą tym, co robię w czasie pracy, czyli głównie programowaniem - rozpoczynając projekt pracowałem w nieco innej branży, więc rozwijanie aplikacji było fajną odskocznią od zwyczajnych zadań.

Istnieje wiele głosów o konieczności przeprojektowania UI by było ono przystępniejsze jak i zaimplementowania nowych ważnych funkcji tj. pauza/wznawianie czy rozszerzenia opcji wyszukiwania duplikatów.
W teorii brzmią one sensownie, jednak są one problematyczne z pewnych powodów:
- główny ciężar implementacji zmian spada na mnie. Każdą funkcję trzeba najpierw przemyśleć, zaimplementować, przetestować, powalczyć z błędami związanymi z zewnętrznymi bibliotekami a następnie wspierać i modyfikować gdy to konieczne. Już teraz jestem autorem niemal 90% zmian i nie wygląda by cokolwiek się zmieniło lub by ktoś inny przejął na siebie w znaczącym stopniu ten ciężar.
- jestem słaby z tworzenia interfejsów - mimo chęci, zaproponowane mi różne koncepcje nowego wyglądu aplikacji nie wydawały mi się zbyt wydajne. Interfejs powinno się stosunkowo łatwo używać i powinien być płynny nawet przy dziesiątkach tysiącach wyników. Myślę, że częściowo mi się to udało zrobić, ale jeśli uważacie że można zrobić to lepiej, to polecam użyć core, tak jak to robi cli, czkawka i krokiet i stworzyć swoją własną wariację gui
- aplikacja obecnie jest wypełniona trybami(11 jeśli się nie mylę) a każdy tryb ma nawet po kilka opcji do konfiguracji. Dość łatwo dodając zbyt dużo opcji jest w stanie się stworzyć nieczytelne gui i kod, który później będzie problematyczny w obsłudze(z takimi problemami głównie mierzyłem się na początku istnienia projektu, gdzie wesoło dodawałem nowe tryby) - nie mówię że to koniec i że nic nowego nie będzie dodawane, tylko że trzeba to robić z rozwagą.

Mimo tych wszystkich problemów, jak wskazuje wydanie nowej wersji, ciągle jeszcze mam siły na pokonywanie przeciwności i zapewne aplikacja będzie się rozwijała swoim spokojnym tempem.

Cena — za darmo to i ocet słodki - licencja MIT/GPL

Repozytorium z kodem - https://github.com/qarmin/czkawka
Pliki do pobrania — https://github.com/qarmin/czkawka/releases


#tworczoscwlasna

Fanatyk1piorunów

@qarmin - super kolego - widzę, że program stabilnie rozwijasz 👍

Widzę też, że aplikacja ma Appimage dla Linuksa - możesz mi napisać jak łatwo/trudno się go generuje z praktycznego punku widzenia bundlując wszystkie dependencies i czy wszystko musi być statycznie skompilowane?

Pokaż więcej komentarzy (10)

Twórca

w Hydepark

1piorunów

Kojarzycie jakiś program offline który dałby radę naprawić problem z video "moov atom not found" ?

Przywróciłem usunięte filmiki z dysku przy użyciu photorec, jednak część jest uszkodzona/nadpisana i nie da się ich normalnie odczytać. Nie mam pojęcia jaka jest ich rozdzielczość, bitrate lub co jest na nich(dlatego też nie korzystam z programów online)

Próbowałem chyba każdego polecanego mi programu w stylu untrunc, recover_mp4 i tym podobnych, żaden nie dał sobie rady(wydaje mi się że one głównie przesuwają moov z początku/końca na inną pozycję a nie tworzą go od zera).

Z tego co widzę, to moov jest swego rodzaju tablicą zawartości pliku, która pozwala na odczyt mp4 i bez tego się nie da odpalić

#komputery

GURU1piorunów

Obawiam się, że możesz tego nie naprawić w warunkach domowych.

Pokaż więcej komentarzy (3)

Twórca

w Dyskusje

10piorunów

Jeśli tak jak ja macie dużą kolekcję filmików(śmiesznych, mało śmiesznych, wcale nie śmiesznych, rodzinnych, z wojny itp.) i chcecie się pozbyć duplikatów to możecie spróbować użyć testowej wersji Czkawki, która wspiera wyszukiwanie podobnych wizualnie filmików o długości mniejszej niż 30 sekund.

Linki zapewne będą aktywne jeszcze około dwóch tygodni (trzeba się zalogować przez githuba by mieć do nich dostęp)
Windows (10+) - https://github.com/qarmin/czkawka/actions/runs/11074556466?pr=1356
Linux (Ubuntu 22.04 lub podobne +) - https://github.com/qarmin/czkawka/actions/runs/11074556469?pr=1356
Mac - https://github.com/qarmin/czkawka/actions/runs/11074659572


#tworczoscwlasna

Osobistość0piorunów

@qarmin Ten program nie wspierał już takiej funkcji wcześniej? Bo jestem przekonany że używałem go już do tego celu wiele razy.

Pokaż więcej komentarzy (4)

Twórca

w Hydepark

4piorunów

Jaki polecacie laptop na domowy serwer?
Mam zamiar głównie przechowywać na nim jakieś głupoty typu domowy nextcloud i od czasu do czasu jakieś dockerowe aplikacje.
Wymagania to - działająca klawiatura, touchpad, bateria(przynajmniej pół godziny), działający ekran(rysy mi nie straszne, bo większość czasu nie będzie potrzebny), łatwość instalacji i dobre wsparcie dla linuxa
Małe wymagania, to i budżet mały - myślę że koło 500zł(szaleństwo, co nie?)

Akurat dzisiaj umarł mi dysk/laptop - Ubuntu 22.04 aktualizowany z 18.04 albo 20.04 i ciągłe błędy na dysku z partycją ext4 - często system montował partycję tylko do odczytu z powodu błędów z systemem plików. Nie chce mi się weryfikować czy to wina laptopa(wiekowego z 2011 roku), dysku czy systemu, więc wymieniam wszystko.

Drugi laptop HP Elitebook 8470p dzisiaj wyciągnąłem z szafy i wyskoczyło info że jest w trybie manufacturer mode, czyli ktoś/coś wyczyściło mu z biosu serial number i kilka innych rzeczy, przez co mogę uruchamiać rzeczy z pendrive, ale nie mogę włączyć systemu z dysku ani wejść do biosu. Próbowałem hirens bootem wgrywać jakieś zmiany prosto do biosu, ale nie pomogło to dużo. Dodatkowo ta wersja posiadała jakąś dziwną wersję uefi, która powodowała problemy z niektórymi wersjami Ubuntu i nie pozwalała ich instalować lub nawet uruchamiać.

Z powodu dziwnych problemów z laptopem della, raczej unikałbym tej firmy, no chyba że coś byłoby godne uwagi.


Autorytet0piorunów

Komentarz usunięty

Kosmonauta3piorunów

@qarmin polecam najlepszy laptop jaki dostaniesz w tej cenie, atakuj poleasingowki

Pokaż więcej komentarzy (14)

GURU

w Sport

57piorunów

Włoszka Angela Carini poddała walkę po 46 sekundach.

>To jest wizja komunizmu niestety.

https://streamable.com/nkofez

#igrzyskaolimpijskie

Inspirator0piorunów

Komentarz usunięty

Osobistość12piorunów

A ktoś postarał się dowiedzieć się coś więcej o jej rywalce? Ja tak. Okazuje się że ona nie jest trans, i niebyła nigdy mężczyzna. W 2023 wykryto u niej podwyższony poziom testosteronu i hrmosom XY = facet. Ale to może być spowodowane np. choroba. Nie ma żadnego dokumentu który by mówił że wcześniej była mężczyzna. Ot wygrała a ktoś szuka newsa.

Pokaż więcej komentarzy (22)

Twórca

w Programowanie

6piorunów

Potrzebuję propozycji na technologie do stworzenia aplikacji dla backendu na serwer i frontendu na komputery i telefony zlecanej zewnętrznej firmie.

Pomagam przy realizacji koncepcji tworzenia aplikacji(mimo że akurat w powyższych tematach średnio się znam), tak by stworzona aplikacja nie kosztowała krocia, działała i by jej rozwój łatwo można było przerzucić na barki innej firmy.

Zapytania o to były wysłane do różnych firm i najczęściej polecanymi techonogiami jest nodejs na serwer, react/react native/nodejs/vue3 jako frontend dla aplikacji jak i również PWA.

Mały problem jest z tym, że akurat doświadczenie głównie mam w komputerowych aplikacjach, więc nie do końca ogarniam wszystkie plusy i minusy poszczególnych rozwiązań.

W skrócie aplikacja to powinno być kilka/kilkanaście ekranów dobijających się do serwera i tam zapisującymi/odczytującymi dane. Raczej nic zaawansowanego - przynajmniej na tę chwilę.

Co do aplikacji na serwer, to myślę że dużo lepszym pomysłem niż NodeJS jest jakaś aplikacja w rust, która zwłaszcza że z racji bycia niewielką(jedyne zadania to autentykacja i zapis/odczyt danych z bazy) nie powinna powodować problemów z długą kompilacją czy zbytnią złożonością a pozwalałaby na szybszy/prostszy deploy i inne ficzery(oczywiście jako zlecacza aplikacji mnie to niezbyt teraz obchodzi to, ale w przyszłości przy aktualizacji/migracji/problemach z wydajnością to mogłoby sprawiać problemy)

Co do aplikacji na telefony/komputer to optowałbym raczej za użyciem Tauri + ts + svelte, zwłaszcza że Tauri 2 beta umożliwia budowanie aplikacji zarówno na windowsy jak i androida.
Tutaj też zastanawiam się nad aplikacją PWA/zwykłą stroną, jednak boję się o jakieś dziwne ograniczenia typu brak możliwości odczytywania linii papilarnych, czy korzystania ze zwykłych funkcji w telefonie(nie znam się, więc to tylko przypuszczenie).
Raczej nie pchałbym się w React na windowsa i React Native na androida, bo to duplikowałoby kod a wolałbym by był on niemal wspólny na tych dwóch systemach, różniący się jedynie rozmieszczeniem elementów na ekranie, a nie technologią

Jest sens się pchać w te technologie, czy może inne byłyby lepsze?

Osobistość0piorunów

@qarmin Skoro ogarniasz Rusta to może na front zobacz to, ostatnio mi się obiło o oczy: https://dioxuslabs.com/

A co do backendu to jeżeli to ma być coś małego i z niewielkim ruchem to imo Node.js + jakiś fajny framework (typu Fastify, Nestjs albo Hono) będzie idealny i nie sądze żeby napisanie tego w Rustcie cokolwiek ułatwiło.

Dioxus - Reliable Rust apps that run anywhereAn elegant GUI library for Rust, inspired by React. Supports Web, Desktop, SSR, Liveview, and Mobile.Dioxuslabs
Gwiazdor3piorunów

> aplikacja łatwa do outsourceowania

> rust

wybierz jedno

Pokaż więcej komentarzy (11)

Twórca

w Programowanie

3piorunów

Przy dystrybucji programu zauważyliśmy w logach że czasami resty które wysyłamy od razu zwracają błąd.
Wygląda jakby był to problem z połączeniem i brakiem internetu.

Problem w tym, że komunikacja w całości odbywa się wewnątrz urządzenia.
Wcześniej nasłuchiwaliśmy na wszystkie porty(0.0.0.0), ale zmieniliśmy to później na 127.0.0.1 jednak to nie pomogło

Sytuacja czasami trwa nawet 30 sekund i dotyczy kilku różnych programów(w rust, pythonie i C++ więc to raczej nie wina konkretnych implementacji).
Po linuxowych logach systemowych można wywnioskować że może to być związane z odpinaniem/przepinaniem/ruszaniem kabla/gniazda lanu - ale nie jest to w 100% pewne

Da się przed tym jakoś systemowo zabezpieczyć?
Trochę bez sensu, że komunikacja wewnątrz urządzenia jest zależna od nieużywanych interfejsów sieciowych


Osobistość4piorunów

W Linux adres 127.0.0.1 i localhost nie są tym samym. Ten pierwszy korzysta z całego stacka sieciowego, więc pakiety są kierowane na kartę sieciową i wracają z powrotem. Z kolei localhost jest w pełni ogarniany przez kernel. Jeżeli jest jakiś problem z kartą to możliwe że uda się go wyeliminować przez zastosowanie localhost.

Kosmonauta3piorunów

@qarmin sprawdź limity otwartych plików. Socket to też plik

Pokaż więcej komentarzy (15)

Twórca

w LINUX

13piorunów

Prezentacja nowego środowiska Cosmic na LinuxFest NorthWest 2024

https://www.youtube.com/watch?v=JHLfsWhDvz0

Najłatwiej jest to teraz przetestować na fedorze, korzystając z https://copr.fedorainfracloud.org/coprs/ryanabx/cosmic-epoch/


Tytan7piorunów

Wygląda trochę jak nieślubne dziecko Windy i Maczka, obrzydliwe 😛
Pozostanę przy KDE.

Fanatyk3piorunów

Ciekawe jak długo pożyje, większość takich projektów tak samo się kończy. Wow wow, jak pięknie, 2 lata i martwy albo się kończy tylko na gadaniu.

Pokaż więcej komentarzy (14)

Twórca

w Programowanie

14piorunów

Wygląda, że Rust ma swoje 5 minut, na scenie języków programowania i jest znany ze swojej wydajności bliskiej C/C++.

Zatem w jaki sposób nowy język mógłby uszczknąć nieco popularności od Rusta? Ano poprzez twierdzenie że jest on szybszy o 50% od niego w jednym z benchmarków.

Tym językiem jest Mojo 🔥
Być może się zastanawiacie, czemu dodałem tutaj tam emotkę ognia - ano bo tak się ten język nazywa - serio w nazwie takie coś mają, sprawdźcie sami.

W skrócie jest to język przeznaczony do AI, interoperacyjności z Pythonem, przy zachowaniu jego prostoty i wydajności porównywalnej lub większej niż Rusta.
Brzmi dobrze... aż za dobrze.

Zatem blog o wyczynach wydajnościowych jest widoczny tutaj - https://www.modular.com/blog/mojo-vs-rust-is-mojo-faster-than-rust

Już na samym początku pada ciekawe stwierdzenie

There are a lot of considerations surrounding any benchmark implementation, you can't use any one benchmark to say x language is faster than y language

a następnie widzimy jak to właśnie tym benchmarkiem chcą udowodnić

Widać potem opis kilku elementów, które twórcy uważają że są one powodem tej lepszej wydajności(całkiem logiczne w większości btw.) tj. pożyczanie wartości zamiast jej kopiowania, TCO czy dobre wsparcie dla simd, oraz ostatecznie owy benchmark.

Na tym ta historia mogłaby się zakończyć, gdy oczywiście nie jakiś wścibski programista, który chciał przetestować ową wydajność.

https://viralinstruction.com/posts/mojo/#matching_the_implementation_in_julia

Odkrył on, że kod w Mojo 🔥, robi mniej walidacji niż testowane programy.
Przy wybranej większej ilości optymalizacji, kod w Rust czasowo niemal zrównał się z tym z Mojo 🔥, a program napisany w języku Julia, oba mocno wyprzedził.

Wygląda, że Mojo 🔥 jest ciekawym projektem, którego rozwój warto mieć na oku, ale jego zamknięty kod, masa błędów(ciągle jest w fazie alpha) czy szukanie taniej sensacji przy naginaniu reguł, pozostawia niesmak i obawy o rzeczywiste działanie w przyszłości.



Fanatyk3piorunów

Żeby język mógł zaistnieć musi mieć przede wszystkich ogromną bibliotekę. Rust jest jeszcze w fazie gdzie się mnóstwo tworzy, a same staty wiosny nie czynia. Choć już czytałem że hype na ten język się trochę wypalil.

Wirtuoz0piorunów

Piszę w rust pare miesięcy i uważam że to jest naprawdę dobry język w porównaniu do Java, typescript czy c lub c++

Pokaż więcej komentarzy (8)

Twórca

w Python

5piorunów

W pracy, udało nam się przepisać celery z Pythona na nasz własny menedżer tasków w Rust.
Wydajność jest zauważalnie lepsza, bo korzystamy ze starych komponentów i tam różnice są o wiele bardziej widoczne, niż na zwykłym komputerze, gdzie oba rozwiązania przetwarzają zadania niemal natychmiast.

Zatem mamy część z kodem w Rust, ale ciągle część z obliczeń musimy wykonać w pojedynczym procesie pythona do którego wysyłamy resty z zapytaniami.
Jednak celery miało jeden duży plus - uruchamiało się jako osobne procesy(co wydłużało o kilka sekund proces uruchamiania programu), dzięki czemu operacje numpy/scipy na CPU, były ładnie rozdzielane po stronie pythona na wszystkie wątki(na urządzeniu są 4 rdzenie i tyle samo procesów celery było uruchamianych)

Operacje obliczania statystyk(mowa o powyższym zadaniu korzystającym z numpy/scipy) są często zlecane w większej ilości na raz, dlatego ważne jest by to zrównoleglić.
Próbowałem robić to przez proste rozdzielanie tasków na wiele wątków, jednak, czasy bywały nawet czasami gorsze, niż jak robiłem to w jednym wątku - domyślam się że to wina GIL i tego że nie działa zbytnio dobrze, gdy wątki wykonują masę rzeczy na cpu.
Drugim problemem jest to że w przypadku równoległych działań wyskakują dziwne ostrzeżenia, przez co myślę że np. matplotlib, nie jest przystosowany do działania z wielu wątków(mimo że zadania które wykonuję od początku do końca działają tylko w jednym wątku), bo przechowuje globalnie jakieś parametry ze swoim stanem.

Kojarzycie, w jaki sposób, mógłbym w miarę prosto, móc wykonywać te obliczenia po stronie pythona na wielu wątkach?

Kosmonauta2piorunów

@qarmin jest standardowy moduł w Pythonie, nazywa się multiprocessing. W nim znajdziesz Pool i metody typu starmap i map. Najczęściej z tego korzystam gdy trzeba zrównoległość obliczenia.

https://superfastpython.com/multiprocessing-pool-map/
># SuperFastPython.com
># example of parallel map() with the process pool
>from random import random
>from time import sleep
>from multiprocessing.pool import Pool
># task executed in a worker process
>def task(identifier):
>    # generate a value
>    value = random()
>    # report a message
>    print(f'Task {identifier} executing with {value}', flush=True)
>    # block for a moment
>    sleep(value)
>    # return the generated value
>    return value
># protect the entry point
>if __name__ == '__main__':
>    # create and configure the process pool
>    with Pool() as pool:
>        # execute tasks in order
>        for result in pool.map(task, range(10)):
>            print(f'Got result: {result}', flush=True)
>    # process pool is closed automatically

Na zamieszczonym zdjęciu znajdziesz wszystkie metody z klasy Pool które możesz wykorzystać.

Multiprocessing Pool.map() in Python - Super Fast PythonYou can apply a function to each item in an iterable in parallel using the Pool map() method. In this tutorial you will discover how to use a parallel version of map() with the process pool in Python. Let’s get started. Need a Parallel Version of map() The multiprocessing.pool.Pool in Python provides a pool of […]Super Fast Python
Pokaż więcej komentarzy (3)

Twórca

w Programowanie

66piorunów

Nie tak dawno temu dokonałem czegoś niemożliwego - znalazłem błąd który był w obcej bibliotece, a nie w moim kodzie.

Na jednym ze starych armów których używamy, odkryliśmy bład w pythonowym programie, gdzie podczas testowania punktów poza okręgiem o promieniu 30, niekiedy wartości wyskakiwały poza skalę.

W okręgu r<30 mamy ~60 punktów z wartościami, które im dalej od środka, tym bardziej się powinny zmniejszać. Dla punktów spoza okręgu r>30 musimy to ekstrapolować, bo do nich danych nie mamy.

Lokalnie na komputerze wszystko mi działało, choć metoda ekstrapolacji wartości RBFInterpolator(korzystamy ze starszej wersji scipy - nie możemy jej niestety łatwo podnieść na urządzeniu, by przetestować czy została naprawiona) dawała nieco niepoprawne i zawyżone wyniki.

Dla pewności ujednoliciłem wersje wszystkich pakietów(głównie zależności pośrednich, bo główne zależności były w tej samej wersji) pomiędzy urządzeniem i komputerem, jednak nie przyniosło to żadnej poprawy.

Przełożony na wieść że nie występuje problem lokalnie, zasugerował bym upewnił się że wszystko lokalnie sprawdzam z tymi samymi parametrami co na urządzeniu. Niezbyt wziął pod uwagę moje wątpliwości co do tego, że może jest to wina biblioteki - szczerze mówiąc się mu nie dziwię, bo z jego strony nie wyglądało to zbyt dobrze - gościu tylko od roku programujacy mówi że być może to nie jego wina i problem może występować w jednej z najpopularniejszych bibliotek pythona i w issues na githubie nie było nawet jednego podobnego wątku.

Ostatecznie udało mi się zilustrować wartości w siatce w kwadracie (od -100 do 100) przy użyciu matplotlib, gdzie widoczne było że na komputerze wartości w miarę regularnie zmniejszają w miarę oddalania od środka. W przypadku urządzenia ARM, wartości promieniście odchodzące z kątów 0,90,180,270 stopni poza okręgiem(r>30), są wybite poza wszelkie granice.

Wygląda więc że w przyszłości będziemy musieli, zainstalować na produkcyjnym sprzęcie pytest, by sprawdzić czy wszystko działa tak jak powinno na armowym urządzeniu, skoro nikomu już nie można wierzyć.


Fanatyk3piorunów

Niesamowite że ktoś pomyślał że może z tym nie być problemu - zawsze powinno się budować, uruchamiać testy na docelowym sprzęcie (przecież tam będzie to wszystko działać na nie na kompie programisty lol). Dobrym pomysłem jest nawet redundancja, macie joba który uruchomi testy na x86_64 i joba na ARM, oba muszą przejść. Gdybyście kompilowali, to również im więcej kompilatorów tym lepiej. W embedded trzeba spodziewać się niespodziewanego.
A już totalną ignorancją okazali się prowadzący ten projekt jeśli uruchamiacie testy na 64 bitowej platformie, a docelową platformą jest 32 bitowy ARM

Kosmonauta1piorunów

Najgorzej jak znajdziesz buga w Firefoxie i okazuje się że podobny błąd został zgłoszony w 2006 roku i od 18 lat toczy się pod nim dyskusja. Co jakiś czas ktoś pyta kiedy to będzie naprawione, następnie ktoś z mozilli odpowiada że nad tym pracuje by za dwa lata znowu dostać pytanie o postępy xD

Zauważyłem np że firefox na androidzie bardzo często odświeża strony po powrocie do niego, tak jakby od razu po przeskoczeniu do innej apki czyścił dane strony z pamięci. Oczywiście zgłoszony bug wisi od paru lat w backlogu bo niby ważny błąd ale jakoś tak nie umieją go odtworzyć

(sorki za offtop xD)

Pokaż więcej komentarzy (18)

Twórca

w Muzyka

1piorunów

Ostatnio pobrałem sobie kilkadziesiąt gigabajtów plików muzycznych od różnych artystów którzy w przeszłości stworzyli piosenki które mi się podobały(poprzez deezer).

Chcę teraz je przefiltrować i usunąć te które mi się nie podobają. Zwykle słucham ich podczas pracy i gdy trafię na problematyczny plik to go usuwam, jednak nie zawsze mogę się od pracy oderwać i to zrobić, więc nie jest to w 100% ani nawet 75% skuteczne.

Zatem pomyślałem czy może nie dałoby się posortować muzyki według gatunku bazując na jej zawartości, bo wtedy np. mógłbym po prostu folder z rapem po prostu usunąć, po szybkim przeglądnięciu po kolei każdego pliku.

Kojarzycie jakiś program, który lokalnie nawet w kilka/kilkanaście godzin pogrupować pliki?

Fenomen0piorunów

@qarmin bez tagów ID3v1/2 ?

Pokaż więcej komentarzy (3)

Twórca

w LINUX

37piorunów

Po latach stagnacji na rynku środowisk graficznych na Linuxa, wygląda że w końcu mamy szansę na powiew świeżości zarówno pod względem graficznym(tutaj bez szału) jak i technologicznym(to mnie bardziej ciekawi)

PopOS Cosmic, to napisane w całości od zera środowisko graficzne na Linuxa, w całości przy użyciu języka Rust(no w sumie nie od zera, i jak sami autorzy określili, po prostu zabrali paczki z bibliotekami, trochę je podrasowali i złożyli) i według mnie to jest najbardziej ciekawe.

Dotychczas niemal wszystkie główne środowiska korzystały z Gtk/Qt, które miało swoje gorsze(np. to że pluginy były napisane w js, więc środowisko musiało mieć wbudowany cały interpreter js) jak i lepsze np. stosunkowo dobra stabilność i wiele funkcji.

Cosmic korzysta z biblioteki graficznej iced, w której gui tworzy się przy pomocy zwykłego kodu, który wkompiowuje się w plik binarny(akurat dla mnie, ograniczenie tworzenie gui z kodu rusta, jest minusem, bo przy każdej zmianie trzeba czekać kilka sekund aż program się przekompiluje)

W pakiecie jest dostępne też kilka podstawowych programów tj. sklep, edytor tekstu, menedżer plików, ale ciągle są one w trakcie tworzenia(obecna wersja to pre-alpha, wersja alpha powinna być dostępna do testów w przeciągu kilku tygodni)

Sam już próbowałem z miesiąc temu tego na fedorze(dla ciekawych - https://copr.fedorainfracloud.org/coprs/ryanabx/cosmic-epoch/ ) i mimo że brakowało masy opcji, to całkiem normalnie mi się używało tego środowiska.

Blog z ostatniej aktualizacji - https://blog.system76.com/post/hammering-out-cosmic-features



Gruba ryba1piorunów

lata stagnacji?
z linuksem to mi się już tylko kojarzy kilkaset dystrybucji i kilkanaście menedżerów okien.
Wszystko w permanentnych wersjach rozwojowych, w których najwięcej rozwijających się rzeczy to błędy.
Żadnej stabilizacji, nic pewnego poza płatnymi dystrybucjami typu rhel.

Rok temu rozważałem odejście z windowsa, ale odpuściłem bo już wybranie właściwej dystrybucji dla mnie było twardym orzechem do zgryzienia. A w trakcie tego pojawiła się kolejna zagwozdka: jakie X?

I tak minął kolejny huczny rok linuksa (☞ ゚ ∀ ゚)☞

Aby jednak było jasne, nie mam nic przeciwko nowym inicjatywom w oprogramowaniu.
Za to mam wszystko do kolejnych odłamów oprogramowania ( ͡° ͟ʖ ͡°)

Kosmonauta0piorunów

DE? a po co to komu

Pokaż więcej komentarzy (25)

Twórca

w Programowanie

0piorunów

Korzystał ktoś z samby(libsmbclient) z wielu wątków?

Chciałem w każdym uruchomionym wątku, stworzyć sobie klienta łączącego się z serwerem, przesyłającego jakieś kilku megabajtowe pliki a na końcu zamykający połączenie.

Jednak zauważyłem że wywoływanie smbc_new_context z wielu wątków jednocześnie, powoduje problemy z pamięcią i wysypywanie się programu a nie znalazłem innej metody na łączenie się z serwerem i przesyłanie danych.

Próbowałem grzebać w bindingach które używamy, ale nie udało mi się nic zdziałać - issue https://github.com/veeso/pavao/issues/17

Obecnie w programie dodaję globalnego locka na operacje i tylko jedna na raz może się wykonywać.

Czy samba jest ograniczona do działania tylko w jednym watku w programie, czy może to błąd nakładki której używam, czy może istnieje jakaś opcja do uruchomienia wsparcia wielu wątków?



#programowanie

Fanatyk1piorunów

@qarmin - ale do przesyłania plików weź ty użyj czegoś normalnego jak scp, rsync, robocopy, gołe SSH, sftp a nawet ftp(s).

Twórca0piorunów

@koszotorobur Sprzęt ma być dostępny u klientów, więc raczej wszystko z powyższych odpada, bo wymaga bardziej skomplikowanych operacji.
Z sambą jest o tyle dobrze, że niemal każdy z poziomu windowsa, prosto sobie to może postawić(być może w przyszłości jakieś inne metody będą dodane, ale samba to must have).

Kosmonauta1piorunów

@qarmin a myślaleś o instalacji z powershella:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

?

Twórca0piorunów

@m_h Cóż, z przyzwyczajenia nie napisałem że korzystam z Linuxa, więc to nie jest dostępne tutaj.

Twórca1piorunów

@koszotorobur Dzięki, może to zadziała.

Mimo wszystko wydaje mi się, że i tak sambie daleko do np. Dicom w rankingu najbardziej problematycznych api/bibliotek/usług.

Twórca1piorunów

@m_h Samo polecenie `Add-WindowsCapability` i strona `Get started with OpenSSH for Windows` jasno sugeruje że jest to feature tylko dla Windowsa.

Jak budujemy obraz systemu, to raczej nie możemy się opierać na operacjach, które by dokończyć instalację wymagają uruchomienia n razy systemu, a raczej tak właśnie jest z powyższym poleceniem

Pokaż więcej komentarzy (10)

Twórca

w Programowanie

27piorunów

No i stało się co miało się stać.
Przy próbie dodania dodatku, ci od firefoxa dali sobie 1 dzień na jego sprawdzenie i... pomyślnie przeszedł weryfikację!

Link do dodatku - https://addons.mozilla.org/en-US/firefox/addon/imager/
Najfajniejsze jest to że jak próbuję to wyszukać w wyszukiwarce dodatków po frazie "imager" to nic mi nie wyszukuje(pewnie musi być nieco bardziej popularny).

Link do kodu na githubie - https://github.com/qarmin/imager - jednak nie zalecam tam patrzeć, jakość kodu nie powala i oczywiście nie ma tam wbudowanej funkcji która kopie bitcoiny i przelewa utarg na moje konto, które wykorzystuję do kupowania kebabów - nie ma tam takiej funkcji, więc sprawdzać tego nie musicie.

Wołam @RACO i @Odczuwam_Dysonans bo chcieliście skrypt, więc oto jest

Filmik przedstawia krótką instrukcję jak zainstalować dodatek i go używać
Jeśli zaznaczonych jest wiele kart, to potrafi na nich wszystkich za jednym razem zadziałać

https://streamable.com/yx4r8g



#tworczoscwlasna

Koneser1piorunów

Robienie własnych rozszerzeń zawsze na propsie, jest tam coś specyficznego zapiętego z Firefoxa czy na innych przeglądarkach też pójdzie? Czy się mylę bo robię na Chlam a FF to inna bajka?

Twórca0piorunów

@M4G33k Kilka lat temu pamiętam że była jakaś grubsza inba że Firefox przechodził na webextensions, który powinien być multiplatformowy w przeciwieństwie do dotychczasowego mechanizmu, więc teoretycznie portowanie powinno być proste.

Co do tego konkretnego rozszerzenia, to nie jestem pewien czy korzystałem z jakichś niestandardowych funkcji ale raczej nie.
Tylko z browser.storage/tabs/menus i zwykłymi funkcjami operującymi na dom, więc raczej nie powinno tego być trudno przeportować na chromowate przeglądarki

Pokaż więcej komentarzy (8)

Twórca

w Programowanie

9piorunów

Dodatek nabiera kształtów i jest już zgłoszony do dodania do sklepu Firefox(pewnie będzie odrzucony, ale pomarzyć można)

Mam jednak problem z tym, że po podmianie całej strony, przy użyciu

>document.body.innerHTML = "";
>var scripts = document.getElementsByTagName('script');
>for (var i = scripts.length; i >= 0; i--) {
>if (scripts[i] && scripts[i].parentNode) {
>scripts[i].parentNode.removeChild(scripts[i]);
>}
>}
dalej w tle skrypty są uruchomione i czasami wpadają w jakąś dziwną pętlę.
W jaki sposób mogę wyszyścić ze strony absolutnie wszystko?
Na filmiku widać że popup z hejto wyskoczył, mimo że w tle podmieniłem całą stronę

Jest kilka różnic w stosunku do ostatniej wersji:

* kod się roztył do 300 linijek javascriptu - całkowicie nieotypowany, nie wiem jak to może działać, ale działa
* obrazy są teraz pokazywane w x kolumnach bez niepotrzebnych pustych przestrzeni
* dodane są ustawienia(ale nie wiem czy działają po ponownych uruchomieniu przeglądarki) - można dostosować liczbę kolumn, ignorowane linki, śledzenie href linku czy ignorowanie linków bez rozszerzeń obrazowych
* nowe, brzydkie logo

https://streamable.com/9sltr8

Osobistość0piorunów

@qarmin Może po prostu otworzyć nową kartę z tymi obrazkami zamiast nadpisywać całą stronę?

Twórca0piorunów

@Catharsis Nie wiem jak się to robi.
Myślałem bardziej o tym by dla aktualnej karty, zamiast podmiany zawartości, otwierała się jakaś wbudowana strona o identycznym wyglądzie, ale nic takiego nie znalazłem.

Pokaż więcej komentarzy (3)