#rustlang

8
22

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


#programowanie #godotengine #gamedev #rustlang

Catharsis

@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?

Zaloguj się aby komentować

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

8a9f245e-7b49-4281-a43a-77b48dd67116
koszotorobur

@qarmin - Snapy to gówno więc porzucenia mi ich nie żal w poprzedniej wersji.

Appimage trochę jednak szkoda - ale dobrze wyjaśniłeś.

Zaloguj się aby komentować

Eruanno

Cóż, dziewczyny które faktycznie ćwiczą są atrakcyjniejsze od tych co przychodzą sobie pochodzić po selfiki ( ͡° ͜ʖ ͡°)

GitHub

@Czokowoko aż mi się przypomniał ten dinozaur :)

c5f81e94-f859-4522-80ff-15c80a1a5c53
Catharsis

@Czokowoko Hah true. Generalnie nie jestem into niskopoziomowe języki jak Rust czy C++ i robię głównie w JS. Rok temu bawiłem się Rustem i w sumie nawet nie wiedziałem jak wygodne i dobre jest Cargo bo przychodząc ze świata JS założyłem że w innych językach jest podobnie jak z NPM, instalowaniem paczek itp. No i ostatnio mi się nudziło i klepałem sobie parę projekcików na GitHuba no i jeden z nich wymagał ręcznego skompilowania programu w C++ żeby potem móc zembedować ten program do mojej binarki. No ile się z tym namęczyłem żeby mi to workflow na GitHubie robił automatycznie to ja nie mogę. Nie jestem wystarczająco kompetentny w temacie aby porównywać oba te języki, ale na pewno Rust ma sporą przewagę w postaci ekosystemu cargo i wygody jaką daje.

Zaloguj się aby komentować

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

#programowanie #rustlang #python #java

bendyz

@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.

Catharsis

@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.

bendyz

@Catharsis oczywiście że tak, pewnie sie tacy znajda. Ja to traktuje jako zabawę, nie ma w tym żadnych nagrod rzeczowych, tylko i wyłącznie ciekawe zagadki. Myślę że większość tak to traktuje. Swoją drogą może dobrze byłoby zrobić oddzielna liste rankingową dla tych którzy korzystają z ai do generowania odpowiedzi. Byłoby to ciekawe porównanie.

Zaloguj się aby komentować

piszę sobie lru cache w #rustlang Nie jestem jakiś pro w tym, bardzo chętnie przyjmę komentarze od expertów

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

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/[email protected]/


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.

```


#programowanie

#jezykc

#rustlang

#linux

197901a4-7fa8-4d7a-966f-ee5c8f3c688a
Catharsis

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

jimmy_gonzale

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

ZohanTSW

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.


Gdzieś między 30 a 40 rokiem życia większość programistów powinna dostać zakaz pisania kodu i zająć się czymś innym żeby nie szkodzili swoim podejściem.

Zaloguj się aby komentować

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?


#programowanie

#rustlang

Orzech

@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

globalbus

@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ć.

lexico

@qarmin Analizując obie koncepcje, które przedstawiłeś, można zauważyć kilka istotnych różnic w sposobie zarządzania zakończeniem wątków i zatrzymaniem programu.

Pierwsza koncepcja


  • Zalety:

  • Każdy wątek sprawdza warunek time_left < 0 przed rozpoczęciem kopiowania.

  • Jeśli warunek jest spełniony, natychmiast wywołuje process::exit(127), co natychmiastowo kończy cały program.

  • Wady:

  • process::exit(127) powoduje natychmiastowe zakończenie programu bez czekania na zakończenie pozostałych wątków. To może skutkować niekompletnym zakończeniem operacji IO, co może być przyczyną problemów z plikami.

  • Możliwe nieprzewidywalne zachowanie, jeśli process::exit(127) jest wywoływane z wielu wątków jednocześnie.


Druga koncepcja


  • Zalety:

  • Sprawdza warunek time_left < 0 przed rozpoczęciem kopiowania w każdym wątku, ale zamiast natychmiastowego zakończenia, wątki, które spełniają warunek, po prostu kończą swoją pracę.

  • Pozwala wszystkim aktywnym wątkom dokończyć swoje operacje kopiowania, zanim program sprawdzi, czy powinien zakończyć się process::exit(127).

  • Bezpieczniejsze podejście, ponieważ nie powoduje natychmiastowego zakończenia programu, co pozwala na bardziej przewidywalne zarządzanie zasobami.

  • Wady:

  • Może powodować krótkie opóźnienie w zakończeniu programu, jeśli trzeba czekać na zakończenie wszystkich wątków.


Wnioski

Druga koncepcja jest bardziej bezpieczna i elegancka, ponieważ pozwala na kontrolowane zakończenie programu i uniknięcie problemów związanych z nieskończonym tworzeniem plików po wywołaniu timeout.

Natychmiastowe zakończenie programu przy użyciu process::exit w pierwszej koncepcji może prowadzić do nieprzewidywalnych problemów związanych z niedokończonymi operacjami IO. W drugiej koncepcji wątki mogą bezpiecznie zakończyć swoje zadania, co zmniejsza ryzyko wystąpienia problemów z plikami i zasobami.

Zatem rekomenduję skorzystanie z drugiej koncepcji. Jeśli jednak decydujesz się na pierwszą koncepcję, warto wprowadzić mechanizm, który upewni się, że wszystkie wątki zakończyły swoją pracę przed zamknięciem programu, aby uniknąć problemów z niekompletnym przetwarzaniem plików.

Zaloguj się aby komentować

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.


#rustlang

#mojo

#programowanie

5b70296d-faa6-4d90-a582-f7a883032f12
kodyak

Ż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.

rayros

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

vinclav

RUST is not a dust. Bardzo lubię ten język, już wiem, że warto.

Zaloguj się aby komentować

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


#linux

#popos

#rustlang

df1bf4b1-2f7c-421a-808b-db3adcc64c39
VonTrupka

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 ( ͡° ͟ʖ ͡°)

dotevo

Jestem dinozaurem. Dobre środowiska graficzne skończyly się na KDE 3.X

Zaloguj się aby komentować

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.


#programowanie

#rustlang

Astro

@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ł.

rm-rf

@krokietowy no wszystko spoko tylko jest jedno ale - uczenie się języka na produkcyjnej aplikacji to koniec końców i tak jej pisanie raz jeszcze po skończeniu nauki. Niestety znam to

Zaloguj się aby komentować

Zaloguj się aby komentować

def

Paweł, daj link do githuba

Dzemik_Skrytozerca

Coś jak ImageMagick tylko w Rust?

Catharsis

@rayros Koniecznie daj w readme na gicie i crates jakiś przykład jak tego użyć w rustcie. Za każdym razem jak szukam czegoś na crates to gdy paczka ma taki przykład to jest dużo większa szansa że tego faktycznie użyje bo mogę szybko skopiować, wkleić do siebie i sprawdzić jak działa. A zwłaszcza podczas nauki rusta gdzie nie mam pojęcia jak ten język działa na tyle by wywnioskować z plików jak mam tego użyć. Najlepiej dać przykład lub parę pokazujących najważniejsze use case.

Zaloguj się aby komentować

Szukam nazwy do cargo dla projektu bo image-resizer już zajęte 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


#programowanie #rustlang

93e7aeb9-3781-4b89-8ba0-6763260c0e93
burt

@rayros Obrazoom

MostlyRenegade

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

borsukh

Szwagropic, albo picpol

Zaloguj się aby komentować

Tank1991

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

dotevo

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

Orzech

@rayros Take się pisze normalnie rusta czy dopiero się uczysz?

Zaloguj się aby komentować

ataxbras

@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.

rebe-szunis

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

koszotorobur

@rayros - ImageMagick z tego raczej nie będzie - ale jest to jakiś początek i można się wiele nauczyć pisząc taki program - chwal się postępami

Zaloguj się aby komentować

HolenderskiWafel

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

Catharsis

@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.

Zaloguj się aby komentować

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ć.


#programowanie

#rustlang

#rust

178866a4-d06a-4a8f-b49c-195e1697a9ce
5348b615-36e1-4a23-b735-7a34e7c5cb0c
faf9ce9d-a1b6-48e6-8ba4-97bb88e975b0
adb6cd90-ab8a-4da2-a53b-9147ed684de3
def

Po czym poznasz progrmiaste rusta? Sam ci to powie

Catharsis

@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.

qarmin

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

piotrb

@qarmin Ja bym dodał jeszcze tych co rzucają: „a i tak trzeba wszędzie zrobić unsafe”.

Zaloguj się aby komentować

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


#tworczoscwlasna #programowanie #rust #rustlang

89c79c8a-4ad4-4f8f-b904-3a089d556f4d
Peregrin

@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ść!

Marchew

@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

DexterFromLab

@qarmin czyli jak pobiore 2 takie same filmy, różniące się np nazwą i kodowaniem to mi to rozpozna? I mogę go odpalić z konsoli na serwerze?

Catharsis

@DexterFromLab Tak, oraz rozpoznaje nawet jak filmy mają inną rozdzielczość i długość. Można ustawić "czułość" wykrywania i przy odpowiednio wysokiej to potrafiło mi nawet wykrywać jak film miał w sobie urywek z innego filmu, np to samo intro xd.

qarmin

@DexterFromLab Tak i tak


@Catharsis Obecny algorytm wyszukiwania podobnych filmów jest prosty(w sensie prosto go zrozumieć jak działa, ale sama implementacja jest skomplikowana). Korzystam więc z zewnętrznej biblioteki, bo sam chyba nigdy bym tego nie napisał. Ma ona ograniczenie, że testuje jedynie widea dłuższe niż 30 sekund i tylko porównuje te 30 sekund z początku.


Autor tej biblioteki pracuje nad usunięciem limitu minimalnej długości 30 sekund, jednak ciągle max 30 sekund z początku bedzie testowane.


Jeśli interesuje was tylko i wyłącznie kwestia znajdywania podobnych wideo i funkcja w Czkawce nie wystarcza, to polecam również darmowy i open source - https://github.com/0x90d/videoduplicatefinder, sam go czasami używam i działa całkiem dobrze(z tego co kojarzę to tutaj jest chyba tylko wersja GUI).

Zaloguj się aby komentować

Rust Atomics and Locks, Mara Bos


Książka typowo o programowaniu mechanizmów blokowania i synchronizacji w języku Rust.


Jako świeży adept Rust'a dowiedziałem się z niej paru sztuczek z syntaxu o których nie wiedziałem. Natomiast jako ktoś kto pracuje w branży ponad 10 lat było to miłe odświeżenie już zapomnianej wiedzy (jak to wszystko wygląda od kuchni).


Książka dostępna za darmo: https://marabos.nl/atomics/


#ksiazki #bookmeter #programowanie #rustlang

Zaloguj się aby komentować

Następna