Zdjęcie w tle
Programowanie

Społeczność

Programowanie

1k+
Ostatnio stworzyłem sobie fuzzer, który znalazł masę problemów w popularnych programach tj. ruff(linter do pythona), oxc(linter do js/ts), lofty(zapisywanie/odczytywanie tagów z plików muzycznych), biome(formatter dla js/ts) i wiele innych

przykłady zgłoszonych issue:


niestety wszystkie znalezione problemy albo zostały naprawione albo czekają na poprawę i nic więcej nie znajduję

Możecie podrzucić jakieś programy, które mógłbym potestować(głównie rust, choć nie tylko)?

Jest jednak kilka prostych ograniczeń.
Program musi:

  • być w miarę popularny - nie chce mi się testować czegoś co tylko 2 aktywnych użytkowników
  • pracować na pojedynczych plikach/grupach plików - np. na wejściu podawany jest plik który ma sprawdzić lub biblioteka powinna prosto umożliwiać stworzenie takiego programu.
  • pozwalać na szybkie iteracje - jedna iteracja programu np. sprawdzenie pliku nie powinno trwać dłużej niż kilka sekund
  • być open-source

#programowanie

Zaloguj się aby komentować

Zostań Patronem Hejto i odblokuj dodatkowe korzyści tylko dla Patronów

  • Włączona możliwość zarabiania na swoich treściach
  • Całkowity brak reklam na każdym urządzeniu
  • Oznaczenie w postaci rogala , który świadczy o Twoim wsparciu
  • Wcześniejszy dostęp, do wybranych funkcji na Hejto
Zostań Patronem
Ostatnio w pracy miałem problem z elsticsearchem. Nigdy nie dane mi go było poznać więc rozwiązując ten problem sporo nauczyłem się o tej technologii.

I tu pojawia się moje pytanie:

Znacie może takie bardziej zaawansowane i bazujące na prawdziwych problemach platformy do doskonalenia skilla programistycznego?

Jest sporo jakiś leetcodów itp. ale tam są bardziej takie algorytmiczne zadania pod rozmowę kwalifikacyjną.

Idealnie czego bym szukał to coś że dają ci rozgrzebany projekcik w którym jest jakiś błąd albo musisz coś dokończyć.

Wiem że sam mogę sobie jakieś projekty pisać, ale przy samodzielnym pisaniu zazwyczaj idzie względnie po mojej myśli i nie mam szans trafić jakiegoś błędu który przytrafi się przy projekcie większej skali.

#programowanie #programista15k #naukaprogramowania
saqala-bilaabayso

możesz pomagać innym ludziom, którzy mają takie problemy, na platformach typu stackoverflow

cec

Znajdź jakiś projekt open source np. na githubie, najlepiej taki, z którego korzystasz na co dzień.

Wejdź na kartę "issues", wybierz jakiś błąd i spróbuj go rozwiązać.


(Pewnie i tak się skończy na tym, że po dwóch dniach prób zbudowania tego gówna lokalnie rzucisz tym w kąt ¯\_(ツ)_/¯ )

Catharsis

@QuentinDamianino Tak jak ktoś już tu napisał, jak ci się nudzi i chcesz się pouczyć naprawiać błędy w czyimś kodzie to zapraszam na GitHubie jest masa open source aplikacji z setkami otwartych "iszu" czekających na naprawienie.

Zaloguj się aby komentować

Ehh, nie mam pomysłu co to może w ogóle być... Na początku widać listę plików, ale później spodziewałem sie plików .wav, a wygląda jakby było skompresowane...
To chyba nie pogmeram w tych plikach...
https://allegro.pl/oferta/edukacyjny-czytnik-kart-do-wczesnej-nauki-jezyka-angielskiego-224-slowka-14557331692

Jak ktoś chce się przyjrzeć to wrzucam plik bin zrzucony z flasha:
https://we.tl/t-wmcmJUMI98

#programowanie
f3d4f04c-f938-4e9f-b085-d7155f65c91c
ataxbras

@Felonious_Gru Tak, to raczej spakowane. `strings` wyrzuca mi same śmieci. FS nie wiem jaki, pakery też nie wiem jakie. Do czego tego potrzebujesz i z czego ten dump?

Felonious_Gru

@Deykun sk taki cwaniak jesteś to weź to rozgryź xd

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ć


Pracownicy, którzy dołączyli do Nvidia 5 lat temu, są teraz milionerami i prowadzą życie na "półemeryturze"
Nvidia (NASDAQ: NVDA) odnotowała niesamowity wzrost w ostatnich latach. Od początku 2024 roku akcje firmy wzrosły o 167%. W ciągu ostatnich pięciu lat wzrosły o imponujące 3,450%.
https://finance.yahoo.com/news/employees-joined-nvidia-5-years-160012281.html

W sumie ciekawy problem.

Źródło: https://www.tiktok.com/@trading101/video/7384254329965792555

#programowanie #programista15k #nvidia
m_h

W sumie ciekawe ilu jest takich pracowników co mają te ponad 10 000 000 $ w akcjach. Załóżmy że jakieś 10% wszystkich tam pracujących. Jak sprzedaż takiej ilości akcji wpłynie na cenę Nvidii na giełdzie oraz co się stanie jęzeli te osoby powiedzą: pierdole nie robię na tego prywaciarza złodzieja i pójdzie leżeć na trawkę pindolem do góry.

Zaloguj się aby komentować

Siemka, czy kojarzycie jakieś materiały w języku polskim tłumaczące podstawy programowania? Zmienne, tablice, pętlę, takie pierdoły. Język w sumie dowolny, ale spodziewam się że jak coś będzie to pewnie dla pythona.

Inb4: "naucz się angielskiego i przeczytaj XYZ" to nie jest rekomendacja materiałów w języku polskim.

#programowanie #naukaprogramowania #pytanie #kiciochpyta
elszczepano

Za moich czasów to się polecało Mirosława Zelenta - tłumaczy jak chłop krowie na rowie. OTOH pamiętam też zesranie na forach że pokazywał to na C++ i były tam też jakieś zarzuty o bad practices. Niemniej jednak mnie wtedy nauczył więc ode mnie polecanko.

Meverth

@wombatDaiquiri sprawdź https://kobietydokodu.pl/kurs-javy/

możesz poczytać go nawet jeśli jesteś mężczyzną, trans, nie-binarny, kotem, psem itp - nikt tego nie sprawdza ( ͡~ ͜ʖ ͡°)

Zaloguj się aby komentować

Ruszyła przedsprzedaż trzeciej edycji szkolenia AI_Devs.
https://www.aidevs.pl/?ref=hejto

To szkolenie dla programistów (musisz umieć programować!) chcących nauczyć się integracji rozwiązań AI/LLM (OpenAI, Llama, Anthropic, Groq, modele lokalne itp.) z istniejącymi systemami IT.

  • w tej edycji skupiamy się na AGENTACH, a nie pojedynczych automatyzacjach. Jest to kontynuacja poprzednich edycji, a nie powtórka,
  • 100% materiałów przygotowanych jest od nowa (nie korzystamy z tekstów/filmów/zadań z poprzednich edycji),
  • wszystkie zadania zostały zaprojektowane od zera,
  • dodaliśmy do treści i zadań wątek fabularny
  • szkolenie trwa 5+1 tygodni (5 tygodni nauki + 1 tydzień opcjonalny, do nadrobienia materiału z poprzednich edycji dla tych, których nie było z nami wcześniej),
  • przedsprzedaż trwa do 12 lipca i oznacza DUŻĄ zniżkę,
  • szukasz recenzji? Rzuć okiem na LinkedIn albo zapytaj znajomych. Przeszkoliliśmy tysiące osób, jest więc ogromna szansa, że osobiście znasz któregoś z kursantów.

Jak kształtują się ceny? 
• 1790zł - do 12.07 jesteś tutaj
• 1990zł - w przedziale 13.07-11.10
• 2790zł - od 12.10 do końca sprzedaży

Zobacz agendę  
https://www.aidevs.pl/?ref=hejto

#programowanie #llm #kursy
8099a0a4-e3e1-4248-8858-33da4c3c9751
groman43

@CzlowiekPromocja A podobno bootcampy się skończyły xDDD Już lecę.

Zaloguj się aby komentować

#programowanie

Jaki język programowania polecacie dla 10 latka?
forAwhile

@s_____ niech się uczy Pythona, później sobie najwyżej przeskoczy na inny język ja za małolata zacząłem od C++ i na samym początku lekko odbiłem się od ściany. Jak miałbym dzisiaj uczyć się od zera, zwłaszcza jako dziecko, to tak właśnie bym postąpił. Jak nie Python, to może JS + HTML? Ewentualnie jeżeli młody jest zafiksowany na punkcie Minecrafta, to może być Java i tworzenie modów do gry. Moja pierwsza styczność z "programowaniem", to były właśnie paczki serwerowe do tej gry, pluginy i ich edytowanie... chciałbym znowu to przeżyć, cofnąć się tak z 12, 13 lat

grzmichuj_gniezno

@s_____ Olej język, to jest drugorzędna sprawa. Niech młody zastanowi się raczej nad tym co go interesuje. Język wynika z obszaru, w którym siedzisz. Jeśli na przykład chciałby pisać gry, to niech uczy się programowania na czymś co mu się przyda później w jakimś silniku gier (Unity, Godot czy Unreal). Jak ciekawi go elektronika to C/C++. To samo jeśli ciekawią go systemy operacyjne czy sieci. Jak webdev to JS. I tak dalej. A jak jest jeszcze za wcześnie i nie wie co go interesuje, to najlepiej znaleźć po prostu porządną książkę do nauki programowania, gdzie autor dobrze podchodzi do tematu. I będzie się uczył w języku, w którym uczy książka.

Hajt

Lua. Nawet niech zacznie zabawę z pisaniem skryptów do gier np. do CS2D.

Zaloguj się aby komentować

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

#programowanie
#linux
brain

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.

LondoMollari

W Linux adres 127.0.0.1 i localhost nie są tym samym.


@brain Masz jakieś źródło tego, że to zachowanie globalne dla Linuxa? W kontekście specyficznych implementacji może tak być (np. setupu php + mysql, bo tam faktycznie wpisanie localhost domyślnie idzie przez lokalny unix socket) ale to decyzja ludzi od php-mysql, a nie coś globalnego.


Generalnie 127.0.0.1 i localhost nie muszą być tym samym, ale w większości przypadków będą, bo tak jest zdefiniowane w /etc/hosts - więc tak długo jak implementacja sieciowa zacznie od rozwiązywania hosta, to trafi na 127.0.0.1 (albo co tam w /etc/hosts wpiszesz, bo w sumie całe 127.0.0.0/8 jest zarezerwowane na lokalne połączenia - https://datatracker.ietf.org/doc/html/rfc5735 )


$ cat /etc/hosts | grep local

127.0.0.1   localhost

::1    ip6-localhost ip6-loopback

fe00::0 ip6-localnet


@qarmin Czy to co nasłuchuje na localhoście jest za jakimś reverse proxy (nginx?) czy słucha bezpośrednio? Bo jeśli jest za nginxem, to może Ci się wyczerpuje pula workerów nginxa, i serwer nie realizuje połączenia?


Jeśli nie wyczerpuje się pula połączeń w reverse proxy, to może Twój user/aplikacja dobijają do jakiegoś limitu socketów? Widziałem parę razy takie błędy, tutaj masz przykład: https://unix.stackexchange.com/questions/686238/why-am-i-hitting-file-number-limit-prematurely


I ktoś Ci już Wiresharka polecał, to dobra sugestia.

brain

@LondoMollari

Masz jakieś źródło tego, że to zachowanie globalne dla Linuxa?

Nie mam źródła i nie pamiętam gdzie na to trafiłem, ale autor tego artykułu wskazywał konkretne fragmenty w źródłach kernela gdzie pokazywał różne ścieżki przetwarzania w zależności czy to był adres numeryczny (bez znaczenia czy to było 127.0.0.0/8, 0.0.0.0, czy dowolny adres internetowy), czy wypisane "localhost". To było z 7-8 lat temu jak miałem problem z konfiguracją iptables, ale nie pamiętam teraz szczegółów. Wiem że była jakaś konfiguracja gdzie oryginalnie było 127.0.0.1, a ja ustawiłem localhost i u mnie nie chciało działać. Potem skopiowałem 1:1 konfiguracje jaką znalazłem (gdzie było 127.0.0.1) i zadziało. Metodą prób i błędów doszedłem że przyczyną było właśnie localhost zamiast 127.0.0.1 i zaciekawiony zacząłem grzebać w internecie i znalazłem tą informacje. I o ile dalej tak jest to takie zachowanie jest globalne, a nie wynikające z implementacji jakiegoś środowiska. Jedyne co mogło zmienić te zachowanie to przez te kilka lat - i kilka wersji jądra - mogli zmienić ten fragment w źródłach.

globalbus

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

lurker_z_internetu

Przewijalem, żeby to napisać. Domyślny ulimit często jest za mały.

qarmin

@globalbus Jak sprawdzić czy to rzeczywiście jest problemem(bez modyfikacji limitu)?

Problem występuje jedynie u klientów, więc najlepiej gdyby to do logów systemowych było wypisane bez żadnych losowych modyfikacji poszczególnych parametrów u klienta, a nie jestem pewien czy tak jest

szczekoscisk

Możliwe że mimo komunikacji wewnętrznej używany jest interfejs ethernetowy. Spróbowałbym wymusić ruch lokalny przez interfejs "lo" (LOOPBACK) np. taką komenda:\

ip router add 127.0.0.0/24 dev lo

Zaloguj się aby komentować

9 lat temu zgłoszono błąd polegający na tym, że Thunderbird nie obsługuje natywnych powiadomień w systemie Windows 10. Wczoraj błąd został załatany zmianami w ustawieniach i pliku JS iks de. Pora na CS'a.
https://bugzilla.mozilla.org/show_bug.cgi?id=1192615
Commit: https://hg.mozilla.org/comm-central/rev/820aeb7f308e
#pcmasterrace #programowanie #mozilla #opensource #windows10 #windows11
AdelbertVonBimberstein

@fadeimageone biorę tych ludzi do ekipy hejto!

cec

Zamienił stryjek siekierkę na kijek.

Nie wiem co jest bardziej gówniane: powiadomienia w windowsie 10 czy wymyślanie okien na nowo przez każdy program z osobna.

Catharsis

@fadeimageone Hmm jestem prawie pewien, że gdy testowałem wtedy nową wersję Thunderbirda co wyszło nowe UI (idk kiedy to było, z rok temu?) to normalnie miałem w KDE Plasmie natywne powiadomienia.

fadeimageone

@Catharsis błąd dotyczy Windowsa 10/11, Systemy z rodziny Linux nie mają problemu.

Catharsis

@fadeimageone Aaa fakt, Windows. Nie doczytałem sorry xD

Zaloguj się aby komentować

Czy znacie jakieś skrypty, gotowe systemy lub gotowe szablony Wordpress na którym mógłbym postawić pierwszą wersje strony podobnej do https://dumpert.nl/
Za pomoc i pomysły z góry dziękuję
QuentinDamianino

@Mor A masz może kolegę który też nie zna?

Mor

@QuentinDamianino Niestety z tym już pomóc nie mogę.

Zaloguj się aby komentować

Bawi się ktoś może w programowanie #chatbot w #Llamaindex lub #langchain ? Mnie osobiście w tym temacie najbardziej interesują tzw "agenty" czyli funkcje pozwalające modelom uruchamiać różne systemy zewnętrzne za pomocą języka naturalnego. Np. "wyceń mi tłumaczenie plików A i B", bot uruchamia API parsujące pliki, potem program liczący znaki, potem model zgadujący jaki model tłumaczeniowy użyć (np. prawniczy, medyczny itp), a na koniec tłumaczy, podlicza cenę i uruchamia API płatności. Czyli sterujesz nim konwersacją a nie skomplikowanym statycznym formularzem. Niedługo zamiast pisania będzie sie do niego mówiło zapewne.
#ai
alq

Bawię się tym dosyć mocno w ostatnim czasie i ma to naprawdę fajne możliwości. Chociaż langchaina dopiero będę do tego zaprzęgał. Na ten moment sam dla funu zbudowałem coś, co weryfikuje mi polecenia i ładuje odpowiednie moduły, które się wykonują. Rozwiązania pokroju "puść mi piosenkę" zrobiłem sobie z wykorzystaniem make i naprawdę nieźle to funkcjonuje

mortt

bawię się. Buduję chat ui + api. Langchaina porzuciłem po około tygodniu. Dokumentacja jest słaba, rozwiązania mało elastyczne. Jak tylko chcesz coś skomplikować langchain się obraża i koniec. Aktualnie robię workflow buildera do llm.


edit: co do mowienia to juz dawno zostalo obsluzone, jedyny problem to, to, że przy lokalnych modelach jest pauza pomiedzy pytaniem a odpowiedzia

tmg

@alq @mortt widzę, że macie podobne zdanie o LangChain jak ja Na każdym etapie czekają pułapki i trzeba robić jakieś obejścia by w ogóle zaczęło działać. Dlatego skupiam się raczej na LlamaIndex który ma podobne możliwości i jest dużo prostszy. Jestem jeszcze początkujący w te klocki a i technologia nie jest jeszcze opanowana (modele potrafią wciąż zachować się nieprzewidywalnie i zrobić coś głupiego). Ale cieszę się, że działacie w temacie to będę miał się kogo spytać jak gdzieś utknę na amen

mortt

@tmg llamaindex też sobie odpuściłem

Vuaaas

@mortt Porzucisz jakieś spoko materiały albo książki dot. tematu?

Zaloguj się aby komentować

Następna