Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

#rustlang

Twórca

w Programowanie

19piorunów

W końcu, po około pół roku wytężonej pracy (i odpoczynku), mogę przedstawić nową wersję Czkawki/Krokieta/Cedinii 12.0 do wyszukiwania duplikatów, podobnych obrazów, wideo i wielu innych dziwnych rzeczy.

Ponieważ mój poprzedni post dotyczący problemów z dystrybucją aplikacji na Androida do szerszego grona odbiorców spotkał się z taktownym milczeniem, zostałem zmuszony do wydania aplikacji bez publikacji w zewnętrznych sklepach.

Zapewne rzuciła się wam w oczy nowa, dość bezsensowna (choć zapewne swojsko brzmiąca) nazwa - Cedinia. Jest to nowa aplikacja na Androida, instalowana z pliku APK (ponieważ nie znalazłem innej sensownej metody dystrybucji). Funkcjonalnie oferuje niemal wszystkie narzędzia dostępne w Krokiet, ale jej interfejs został dostosowany do ekranów dotykowych (testowana była jednak tylko na jednym moim telefonie, więc na innych urządzeniach mogą wystąpić problemy z UI).

Co do wersji gtk, to porzuciłem jej rozwój, bo przez długi czas sprawiała problemy - od braku uruchamiania się u części użytkowników, przez crashe przy wklejaniu, po problemy ze skalowaniem interfejsu. Dzięki temu na Windowsie pozostanie dystrybowana jedna binarka exe, zamiast paczki zip z wieloma zależnymi dllkami wymaganymi przez GTK.

Jak w każdej wersji, pojawiło się też kilka nowości tj. porównywarka obrazów, menu kontekstowe, szybka (choć mniej dokładna) weryfikacja uszkodzonych plików z użyciem ffprobe, nowe okno zaznaczania elementów, osobne przyciski do trwałego usuwania oraz przenoszenia do kosza czy także redukcja szumów w module optymalizacji wideo (opartym o ffmpeg).

Artykuł na medium, gdyby ktoś szerzej chciał o nowej wersji przeczytać - https://medium.com/@qarmin/krokiet-czkawka-12-0-c5dad2116793

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)



Kosmonauta0piorunów

Jakby kogoś ciekawiło:

> LLM says:
>
> W tym kontekście Krokiet/Czkawka to nie jedzenie ani odruch, tylko program do sprzątania plików.
> Chodzi o aplikację autora qarmin, która służy m.in. do znajdowania:
> duplikatów plików,
> pustych folderów,
> podobnych obrazów,
> podobnych filmów / muzyki,
> uszkodzonych plików,
> plików tymczasowych i innych śmieci na dysku.

Brzmi ciekawie, może się kiedyś przydać. Chociaż zazwyczaj (Ubuntu) robiłem to jakimś skryptem w bashu.

Pokaż więcej komentarzy (3)

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)



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)

Inspirator

w Programowanie

16piorunów

A ja z przyjemnością mogę oznajmić, że dopiero co wydaliśmy nową wersję Godot Rusta, o!

Głodot Rust to, w dużym skrócie, biblioteka która pozwala gadać z Godotem po rustowemu – skupiamy się na tym żeby szybko, efektywnie, bezpiecznie i przyjemnie dało się dostarczać ten słynny value, zamiast bezsensownie utykać. Zero boilerplate, zero rozkmin, większość abstrakcji ułożone tak jak w gdscripcie, siadasz i robisz co trzeba 😎 .

W tej wersji wpadły usprawnienia do eksportów, QoL ficzery do Godotowych Callable, `match_class!` do łatwego matchowania danego eventu, ostatnie szlify silnie typowanych sygnałów… i duuuuuuuuuuuużo innych usprawnień >:].

Devlog: https://godot-rust.github.io/dev/september-2025-update/

Github: https://github.com/godot-rust/gdext

Osobistość0piorunów

@DEAFCON_ONE

> skupiamy się na tym żeby szybko, efektywnie, bezpiecznie i przyjemnie

To szybko i przyjemnie czy w Rustcie? Bo mi tu kolidują te słowa ze sobą xD.

A tak na poważnie bo nie jestem totalnie w temacie. Czy gry napisane w tym będą działać jakoś znacznie szybciej niż napisane w tym czym się domyślnie pisze w Godocie? No bo z tego co pamiętam to Godot używał czegoś podobnego do Pythona, no i to na pewno ma dużo mniejszy próg wejścia niż Rust, więc ciekawi mnie czy warto się męczyć z Rustem. Robił ktoś jakieś porównania wydajności, benchmarki itp?

Pokaż więcej komentarzy (7)

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ą



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)

Gwiazdor

w Programowanie

11piorunów

Gdyby kogoś interesowały takie wydarzenia jak "Advent Of Code" to dziś zaczęło się inne nowe - https://everybody.codes/event/2024 Rozwiązujemy zadania w dowolnym języku programowania przez 20 dni. Codziennie o 00:00 1 nowe zadanie w 3 punktach od najłatwiejszego do najtrudniejszego. Gdyby było zainteresowanie to możemy zrobić Hejto Leaderboard

Gwiazdor0piorunów

@Pan_Bubr @GrindFaterAnona zrobilem leaderboard
Trzeba sie zalogować, przejść do https://everybody.codes/event/2024/leaderboards/private i podać ten kod b11ccb39-5574-4cd5-b3af-95b98cf8e065
To że jest się w jakimś leaderboardzie innym niż główny daje miły aspekt, że gdzieś zdobywa się punkty. Bo w głównym to jeśli nie zrobi się zadania do 1 w nocy to raczej nie ma co liczyć (za pierwsze zadanie dostaje pierwsze 50 osób, za drugie 100, za trzecie 150).
Ja niestety przestaję funkcjonować o 23:00, więc nie mam szans. Akurat ode mnie z pracy ktoś się mocno wkręcił, poszło to wyżej i międzywydziałowo walczymy na pracowym leaderboardzie.

Everybody CodesEverybody Codes is a yearly event where you and your friends take part in various quests. You'll see people from all over the world doing the same, because, as we all know, in one way or another, everybody codes!Everybody
Osobistość0piorunów

@bendyz Obawiam się, że takie zabawy mogą być lekko psute przez istnienie chataGPT i innych modeli. Ja wiem, że to tylko zabawa ale na bank znajdą się osobniki, które gówno wiedzą ale będą chcieli żeby ich nick był gdzieś wysoko w rankingu i każde zadanie będą rozwiązywać w minutę kopiując odp z chataGPT jak leci xD.

Pokaż więcej komentarzy (7)

Wirtuoz

w Programowanie

4piorunów

piszę sobie lru cache w Nie jestem jakiś pro w tym, bardzo chętnie przyjmę komentarze od expertów :smiley:
Dlaczego lru z wagami? Bo chcę zrobić cachowanie plików i chcę mieć kontrolę nad zużyciem przestrzeni dyskowej (jest jej mało :<).

https://github.com/rayros/lru-cache-with-weight/blob/main/src/lib.rs

Pokaż więcej komentarzy (6)

Twórca

w Technologia

21piorunów

Jeśli wasze życie jest nudne, lubicie ciekawe i nie pudelkowe dramy to oto i jest kolejna w środowisku Linuxowym

Rozchodzi się o te dwie rzeczy:
- Odejście jednego z deweloperów projektu Rust for Linux
- Wpis Asahi Lina

Zaczynając od pierwszego, wpis o odejściu Wedson Almeida Filho(pracownik Microsoftu) opublikowany został na listach mailingowych linuxa tutaj
https://lore.kernel.org/lkml/20240828211117.9422-1-wedsonaf@gmail.com/

W skrócie pracował prawie 4 lata przy projekcie, ale zraziły go różne nietechniczne problemy które ciągle napotykał
Nawiązuje tam do  https://youtu.be/WiPp9YEBV0Q?t=1529
W tej prezentacji Kent Overstreet stara się przedstawić, w jaki sposób bindingi c->rust powinny generować(lub pomóc generować) kod Rusta, tak by w samym typie zawrzeć tak dużo informacji na temat tego co dana zmienna przechowuje i jak ją używać, by zmniejszyć ryzyko błędów przy jej użytkowaniu. W C te informacje nie są zapisane w kodzie, więc trzeba je ręcznie pomagać rozpoznawać i zapisywać. To zrodziło duże kontrowersje, że zmiana interfejsów w C będzie wymagała też zmian w Rust, a wielu deweloperom nie w smak uczyć się kolejnego języka. Autor kilkukrotnie wspominał, że to nic takiego, bo oni się tym zajmą(stroną rustową) i potrzebują tylko informacji jakie jest zachowanie poszczególnych elementów po stronie C. Jeden gość zaczął więc podniesionym tonem mówić, że jest tu masa deweloperów >50 lat i że ewangeliści Rusta nie zmuszą wszystkich do nauki tego języka.

Inną sytuacją jest wpis Asahi Lina, która współtworzyła kilka subsystemów w Linux używając do tego głównie Rusta, co pomogło przeportować kernel na Mac ARM
Wpis to - https://vt.social/@lina/113045455229442533

Opisuje proces rzucania kłód pod nogi, podczas próby robienia progresu w tworzeniu sterowników pisanych w Rust.
Przy tworzeniu abstrakcji dla planisty DRM znalazła masę problemów, które były spowodowane złym stanem kodu w C i odpowiedzią na to było "rób to tak samo jak w amdgpu, bo im to przecież działa"
Mimo stworzenia patchy z poprawkami, które naprawiały błędy będące również widoczne dla użytkowników C, domyśla się że z racji że pochodzi ona ze świata Rusta, maintainer nie chce ich zaakceptować.
Przez ostatni rok czekała na zmergowanie prostego wrappera dla struktury, więc nie dziwi się że progres Rust for Linux jest raczej mizerny.

Warto przypomnieć, że Linus Torvalds zgodził się kilka lat temu na użycie Rusta obok C i assemblera, by zarówno zwiększyć jakość/stabilność elementów takich jak sterowniki i przyciągnąć młodsze pokolenie, bo widzi problemy ze starzejącą się kadrą.
Ostatnio wspominał, że progres związany z Rustem jest mniejszy niż się spodziewał wyliczając jako jeden z powodów niechęć starszych deweloperów.

Smutne jest to, że istnieją ludzie którzy mają chęć, motywację i umiejętności do tworzenia przydatnych rzeczy lecz są im podcinane skrzydła.

Podsumowaniem może być ten cytat z komentarza Asahi Lina
```
But I get the feeling that some Linux kernel maintainers just don't care about future code quality, or about stability or security any more. They just want to keep their C code and wish us Rust folks would go away. And that's really sad... and isn't helping make Linux better.
```




Osobistość3piorunów

@qarmin Nie ma to jak czuć się lepszym od innych ponieważ piszesz w starszym i trochę trudniejszym języku programowania.

Gruba ryba0piorunów

Mają płacone za robotę czy pro publico bono?

Pokaż więcej komentarzy (4)

Twórca

w Programowanie

3piorunów

Mam ostatnio problemy z programem, który ubijam poleceniem timeout.

Program wykonuje setki(w zasadzie to grupowo robi 10000) operacji zapisu plików do określonego folderu z wątków rayona(rust) i wygląda na to, że bez względu czy ubijam go sygnałem TERM czy KILL, to nieco później (0-10s) po zabiciu programu, nie mogę usunąć całego folderu z plikami, bo wygląda, że program ciągle w tle tworzy nowe pliki, więc próba usunięcia takiego katalogu przez "rm -rf" wypisuje błąd "rm: cannot remove '/opt/tmp_folder/short_normal_1/16474004021118382402': Directory not empty"

Zatem by rozwiązać problem przerzucam timer końca działania do programu zamiast ubijać program z zewnątrz.

Jednak mam tutaj ponownie zagwozdkę.
Mam dwie koncepcje

Pierwsza to taka, że pierwszy wątek który złapie problem, to przerywa cały program:
>fn check_for_exit() {
>  if time_left < 0 {
>      process::exit(127);
>  }
>}
>
>
>files_chunks.into_par_iter().for_each(|| {
>   check_for_exit();
>
>   for file in files_chunks {
>       fs::copy("file", output_dir);
>   }
>});

Druga to taka, że czekam aż wszystkie wątki się skończą i dopiero wtedy przerywam wykonywanie programu

>fn check_for_exit() -> bool {
>  return time_left < 0;
>}
>
>files_chunks.into_par_iter().map(|| {
>   if check_for_exit() {
>       return None;
>   }
>
>   for file in files_chunks {
>       fs::copy("file", output_dir);
>   }
>
>   Some(())
>}).while_some().collect<()>();
>
>if check_for_exit() {
>   process::exit(127);
>}

Niby punkt drugi bezpieczniejszy, ale punkt pierwszy też przecież przecież powinien wszystkie wątki z kopiowaniem plików ubić. Dobrze kminię, czy jednak punkt pierwszy nie jest bezpieczny?


Sum0piorunów

@qarmin Nie pisałem dawno w rust, zwłaszcza na tym poziomie, ale zdecydowanie druga opcja. Wydaje mi się, że w pierwszej opcji będziesz miał proces w kolejce do ubicia/ubity, a to co zostanie to będą tzw. detached threads. Ale nie jestem (już) ekspertem, podpytaj może kogoś innego :smiley:

Kosmonauta0piorunów

@qarmin a to nie jest kwestia tego, że operacje na plikach robi kernel? Ubicie procesu nie przerywa fs::copy.

Po drugie, obsługa sygnałów nie jest synchroniczna. Jak zrobisz kill PID && rm costam, to na pewno to nie zadziała. Musisz poczekać, aż proces obsłuży sygnał i się zamknie.

Jak robisz timeout na wątkach wewnątrz programu, to z pewnością da się to bardziej elegancko obsłużyć.

Pokaż więcej komentarzy (3)

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 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)

Fanatyk

w Programowanie

10piorunów

Niecały rok temu, pokazałem szefostwu że może warto było użyć Rusta w jednym projekcie zamiast na maxa optymalizować pythona, z którym mieliśmy od groma wydajnościowych problemów, ale przez długi czas odpowiedzią było "nie", bo to nie jest nam potrzebne(kolega optował za C++ i całe szczęście jego pomysł miał bardziej stanowcze "nie" - zbyt wiele wycierpiałem by używać go jako głównego języka w projekcie który tworzę).

Dopiero pół roku temu najbardziej krytyczne części powoli zaczęły być przepisywane na ten język i jak można było przewidzieć, problemy wydajnościowe przy naszym używaniu programu prawie nie występują.

Obecnie projekt ma ~50k linii w pythonie i ~10k linii w rust i szefostwo uznało, że najwyższy czas przepisać to na rusta, skoro tak dobrze się sprawdza i naprawi kilka pomniejszych błędów i oczywiście jako jeden z tych co zna ten język, znaczna część pracy przypada mnie.

Minusem jest to że jest od groma przy tym roboty na kilka miesięcy i być może to w 100% nie będzie to działało identycznie jak wcześniej(a powinno).
Plusem jest to że w końcu zaczynam się naprawdę uczyć tego języka - przy robieniu projektów dla zabawy nie musiałem zbytnio się przejmować stylem, a tutaj nie dość że trzeba pisać programy tak, by się samemu je rozumiało, to trzeba zrobić je tak by inni je zrozumieli - a rust czasami bywa trudnawy do zrozumienia.


Fenomen1piorunów

@krokietowy wybacz za bezpośrednie pytanie ale czy dostałeś znaczącą podwyżkę? Bo to chyba najlepszy moment na negocjacje.
Pokazałeś dużo zapału, warto by ktoś go docenił.

Pokaż więcej komentarzy (17)

Wirtuoz

w Programowanie

29piorunów

Tomki muszę się pochwalić. Udało mi się wypuścić pierwszą wersję mojego programu do konwersji obrazków. Ale to nie koniec będą kolejne wydania i poprawki a co najważniejsze lepsza dokumentacja oraz przykłady użycia. Link do crate https://crates.io/crates/respicta

Gruba ryba0piorunów

Coś jak ImageMagick tylko w Rust?

Pokaż więcej komentarzy (6)

Wirtuoz

w Programowanie

5piorunów

Szukam nazwy do cargo dla projektu bo image-resizer już zajęte :frowning: moje pomysły to picport, imgport. Macie może pomysł na coś lepszego albo który wybrać? Program będzie zmieniać formaty obrazków i skalować ale też będzie mógł działać w trybie prostego serwera http/formdata

Link do repo: image-resizer

 

Osobistość1piorunów

@rayros Obrazoom

Fanatyk3piorunów

@rayros a może nazwij go po prostu Wiesław, albo Ryszard ( ͡° ͜ʖ ͡°)

Pokaż więcej komentarzy (11)

Wirtuoz

w Programowanie

9piorunów

Jednak testy jednostkowe to się przydają. Robię sobie github actions z obrazem dockerowym i tescik wyłapał mi że brakuje programu https://github.com/rayros/image-resizer/actions/runs/8319333751/job/22762476956

  

Wirtuoz1piorunów

@rayros a jak, a prawdziwa wartosc testow sie poznaje jak regresje wylapuja

Kosmonauta1piorunów

Małe projekty zazwyczaj robię w TDD. Czyli najpierw piszę testy bo wtedy gdy piszę testy to od razu wiem czego od programu oczekuję, a potem gdy mam nawet 15 min wolnego czasu to naprawiam kod aby przechodIł dany test.

Przy większych projektach zazwyczaj mi się to nie sprawdza bo za dużo czasu idzie na przepisywanie testów gdy koncepcja się zmienia, ale piszę testy gdy coś implementuję. Gdy test testuje moją apkę zamiast (robić to manualnie) to wiem, że zrobi to tak samo za każdym razem

Wirtuoz0piorunów

@dotevo akurat w rust pisanie testów tak mi jakoś bardzo dobrze podchodzi. Ale to prawda jak koncepcja się szybko zmienia albo to POC to testowanie czasem bywa bez sensu

Pokaż więcej komentarzy (5)

Wirtuoz

w Programowanie

2piorunów

Dajcie żebro gwiazdkę :star: https://github.com/rayros/image-resizer
 

GURU9piorunów

@rayros Ale za co?
Banalny projekt, jakich miliony. Ale to nawet można przeboleć i dać na zachętę. Gdyby nie był niechlujny - masz tam pięć komentów na krzyż, z których niewiele wynika. README zawiera jedynie napis TODO. Więc nie.

Wirtuoz1piorunów

@ataxbras poprawię, dam ci znać 😉

Kosmonauta0piorunów

@rayros widać napracowanko, widać też inne rzeczy...

Gruba ryba0piorunów

@rayros Jak wyjaśnisz co to jest i jak z tego korzystać.

Pokaż więcej komentarzy (5)

Fanatyk

w Programowanie

14piorunów

**Wyniki dorocznej ankiety języka Rust**

Polacy są w pierwszej dziesiątce użytkowników tego języka!

   

Kosmonauta1piorunów

Bardziej mni dziwi że Niemcy drudzy, a nie jacyś Chińczycy czy Hindusi

Osobistość2piorunów

@HolenderskiWafel Zgaduje że Chińczycy nie przesiadują na forach Rusta to pewnie nawet nie wiedzieli o tej ankiecie. Ja np nie miałem o niej pojęcia a od ponad miesiąca się uczę Rusta xD.

Pokaż więcej komentarzy (2)

Twórca

w Programowanie

19piorunów

Będąc użytkownikiem Rusta, widzę niekiedy wiadomości, jak to nowy projekt zaczyna używać tego języka czy nowy driver w kernelu jest na niego przepisywany.

Pod każdym znajduje się spora ilość komentarzy pozytywnych/neutralnych jak i pewna część negatywnych głównie pochodzących od użytkowników innych niskopoziomowych języków tj. C czy C++.

Oto niektóre powody szkalowania(często słusznego) języka:

Toksyczna społeczność* - głównie chodzi o RIR(Rewrite in Rust) - pisane często pod postami o programach nie napisanych w tym języku - głównie przez osoby nie programujące w Rust, tylko myślące że jest to złoty środek na wszystkie bolączki i błędy występujące w programach.

Niebezpieczny system pakietów* - chodzi głównie o to że można próbować ataku polegającego na podszyciu się pod crates.io i zmienić paczki na ich złośliwe wersje. Według mnie taki atak prawie niemożliwy do wykonania, bo np. Cargo.lock posiada w środku hashe paczek, co uniemożliwia użycie podrobionej wersji paczki.

Używanie do wszystkiego obcych zależności* - parser cli czy implementacja tls, według niektórych użytkowników powinno to być napisane ręcznie albo przez zrobione przez kopiuj/wklej bezpośrednio do repozytorium. Według mnie to właśnie jest niebezpieczne, bo kopiowanie coś takiego komplikuje proces budowania, wydłuża proces tworzenia aplikacji jak i zwiększa ryzyko błędów/wymusza ciągłą synchronizację(można to łatwo zrobić przy pomocy git submodule, którego jednak niezbyt lubię). Obce pakiety, używane przez setki innych projektów mają zwykle o wiele lepszą jakość, więcej funkcji i mniej błędów niż te ręcznie napisane.

Problemy statycznego linkowania* - jeśli jakaś zależność np. openssl, będzie miała błąd który będzie naprawiony w nowej wersji, to gdy jest ona dynamicznie linkowana trzeba tylko ją przekompilować a w przypadku rusta całą aplikację - głównie jest to podnoszone przez ludzi zarządzających dystrybucjami, bo wiąże się to ze zwiększonym wysiłkiem.

Problemy z pamięcią to tzw. skill issue i dobrzy programiści nie robią ich prawie wcale/mnie się one nie zdarzają choć już kilka lat programuję w C/C++* - setki tysięcy programistów używają C/C++ i naturą ludzką jest popełnianie błędów a te języki pozwalają odstrzelić sobie stopę w najbardziej wymyślny sposób w zupełnie losowym momencie(problemy z pamięcią często objawiają się z opóźnieniem). Wymagają od użytkowników trzymania dużej ilości informacji o kodzie w swojej głowie, co oczywiście nie jest idealne i problemy ze zrozumieniem kodu/jego poprawną zmianą pojawiają się przy zmiany osoby używającej program czy po dłuższej przerwie od danego kawałka kodu. W przeciwieństwie do C i podobnych niskopoziomowych języków, kompilator Rust traktuje użytkowników z dystansem(można powiedzieć że jako debili - ale w pozytywnym tego słowa znaczeniu(jeśli oczywiście takie jest)) i wymusza określony styl i praktyki, no chyba że zmienimy to przez unsafe. Pozwala to zwykłym użytkownikom tworzyć szybko działające programy, bez bania się o wszędzie czychające problemy z pamięcią, jak i przychylniejszym okiem patrzyć na pull requesty, bo szansa na zepsucie kodu jest o wiele mniejsza. Z tego co zauważyłem to programiści C, często uważają się za pewną elitę, bo przecież nie każdy potrafi robić to co oni. Wystarczy zobaczyć https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=memory, by zauważyć że zbyt wiele programów rozwijanych przez bardzo wykwalifikowanych programistów ma problemy z pamięcią i że to raczej nie problem ich zbyt małych umiejętności. No a jeśli to problem zbyt małych umiejętności, to większość programistów powinna unikać jak ognia C skoro jest on przystosowany jedynie dla najbardziej zaawansowanych.

Długa kompilacja i biorąca dużo zasobów systemowych* - Rust z racji ilości koniecznej weryfikacji wszystkich parametrów, typów, lifetimów etc. bierze o wiele więcej zasobów systemowych i czasu niż c czy np. go, więc do kompilacji lepiej zaopatrzyć się w mocniejszy komputer

Brak dostępności na wszystkich platformach gdzie C jest dostępny* - C jest chyba najbardziej przenośnym językiem na świecie(w ilości kompilatorów na różne platformy sprzętowe), wiec trudno by z nim konkurować. Rust wspiera najbardziej popularne systemy bazujące na ARM, x86-64 i wielu innych architekturach wspieranych przez llvm, ale obecnie nie ma oficjalnego wsparcia dla alpha, hppa, ia64, m68k czy s390. Problemem dużym to nie jest bo dotyczy zapewne grubo mniej niż 1% wszystkich użytkowników i to tych, którzy pracują na antycznym/mniej popularnym sprzęcie.

Jest o wiele trudniejszy niż C/C++* - składniowo na pewno na pierwszy rzut oka nie wygląda zachęcająco, jednak z doświadczenia muszę powiedzieć że programuje się w nim o wiele szybciej niż w powyższych językach, bo nie muszę polegać w wielu przypadkach na sobie, tylko na kompilatorze. C jest dość prosty pod względem składni, ale bardzo trudnym gdy chce się go poprawnie używać, głównie przez to że bezpośrednio operuje się na pamięci. C++ z wersji na wersji próbuje stać się językiem bezpiecznym, jednak ciągnie się za nim szereg funkcji ze starszych wersji i problemów, które po prostu nie mogą zostać naprawione bez gruntownej modyfikacji języka.

Rust rozwiązuje tylko problemy z pamięcią a ich nie robię* - cóż, jeśli nawet to prawda(w co szczerze wątpie, jeśli używasz C/C++) to przynosi on szereg przydatnych funkcji, tj. ograniczenie wyścigów o dane, ujednolicenie formatowanie kodu(rustfmt), oficjalny system budowania(cargo), wymuszanie obsługi wszystkich sytuacji w match (switch w C/C++), przyjazne komunikaty błędów - bardzo często z kodem który można zrobić kopiuj/wklej i naprawić problem.

Jak widać Rust nie jest złotym środkiem na wszystko ale wprowadza kilka niezłych usprawnień w stosunku do C/C++, jednak jak widać części ludzi nie jest tym przekonana. C/C++ jak widać po np. statystykach na githubie nigdzie się nie wybiera i ciągle miliony linii kodu będą w tych językach pisane, jednak z roku na rok, coraz większe grono języków zaczyna je podgryzać.



Gruba ryba8piorunów

Po czym poznasz progrmiaste rusta? Sam ci to powie

Osobistość3piorunów

@qarmin Ostatnio zacząłem się uczyć Rusta i jako osoba która wcześniej pisała dosłownie wszystko w JS to było ciężko. Na pewno bardzo mi się podoba Cargo i Crates.io bo to dosłownie jest odpowiednik npm i działa niemal identycznie znacząco upraszczając pisanie czegokolwiek.

Kiedy chodziłem do technikum to byłem chyba ostatnim rocznikiem który uczył się na programowaniu C++ (teraz jest python) i o ile uważam, że Rusta uczy mi się dużo lepiej to jednak na pewno nie polecałbym go jako pierwszy język programowania bo znacząco się różni od innych popularnych języków i potem uczenie kolejnych może być utrudnione.

A co do społeczności Rusta to nie wiem może przeglądamy jakieś inne subreddity ale dosłownie jeszcze nie widziałem nigdzie w necie na niego hejtu lol. Na Reddicie wszyscy zawsze pomocni, masę rzeczy się dowiedziałem z odpowiedzi pod postami. Tak samo na różnych forach i stackach. Nawet na r/linux czytałem posty zachwalajace dodawanie kodu Rusta do kernela , nie wiem może przypadek że ominęło mnie to totalnie xD.

A co do wydajności to jako typ przychodzący z JS to xD, dwa światy. Czasem sobie testowo/dla nauki przepisuje jakiś stary kod z JS na Rusta i jaram jak wykonuje się z 50 razy szybciej jednocześnie zużywając ułamek ramu który zużył JS. To chyba moja największa motywacja w nauce Rusta.

Twórca0piorunów

@Catharsis Przeglądam głównie reddita(nie tylko r/rust, ale też z innych języków np. r/python czy r/go) jak i phoronix i tam niemal zawsze się znajdzie się ktoś kto ma mocne obiekcje co do języka(pewnie część to trolle, ale nie wszyscy).

Pokaż więcej komentarzy (5)

Twórca

w Programowanie

71piorunów

Od ~5 miesięcy po godzinach tworzyłem sobie nową wersję aplikacji do czyszczenia niepotrzebnych danych z dysku.

Tutaj blogpost opisujący zmiany w niej - https://medium.com/@qarmin/czkawka-7-0-4941b9bdba55

Jednak zapewne większość z was nie wie co to jest.
Program nazywa się Czkawka, Krokiet(krokiet to nazwa nowego gui, który właśnie stworzyłem, czkawka to stara wersja gui i nazwa biblioteki pod spodem) i potrafi znajdować duplikaty plików, puste pliki i foldery, podobne obrazy, widea, pliki muzyczne, niepoprawne symlinki, rozszerzenia, uszkodzone pliki i jest jednym z najszybszych tego rodzaju.

Ja sam często z niego korzystam by wyszukać dwa niemal identyczne memy, różniące się np. rozdzielczością czy znakiem wodnym i usunąć ten w gorszym stanie.

No i dochodzimy do najważniejszego, jaka cena tego badziewia?
Darmo. Licencja MIT/GPL.

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

   

Fenomen1piorunów

@qarmin hej! Pamiętam jak opisywałeś program po raz pierwszy na portalu na w. Super, że projekt dalej żyje i jest rozwijany. Powodzenia na przyszłość!

Gruba ryba0piorunów

@qarmin 
Klikam randomowy soft z githuba:

Windows Defender
>19.02.2024 19:52
>Wykryto: Trojan:Win32/Wacatac.B!ml
>Stan: Kwarantanna
>Szczegóły: Ten program jest niebezpieczny i wykonuje polecenia osoby atakującej.
>Dotyczy elementów:
>file: C:\\Users\\xxx\\Desktop\\windows_krokiet.exe

Pokaż więcej komentarzy (20)