Społeczność
Programowanie
Na jednym ze starych armów których używamy, odkryliśmy bład w pythonowym programie, gdzie podczas testowania punktów poza okręgiem o promieniu 30, niekiedy wartości wyskakiwały poza skalę.
W okręgu r<30 mamy ~60 punktów z wartościami, które im dalej od środka, tym bardziej się powinny zmniejszać. Dla punktów spoza okręgu r>30 musimy to ekstrapolować, bo do nich danych nie mamy.
Lokalnie na komputerze wszystko mi działało, choć metoda ekstrapolacji wartości RBFInterpolator(korzystamy ze starszej wersji scipy - nie możemy jej niestety łatwo podnieść na urządzeniu, by przetestować czy została naprawiona) dawała nieco niepoprawne i zawyżone wyniki.
Dla pewności ujednoliciłem wersje wszystkich pakietów(głównie zależności pośrednich, bo główne zależności były w tej samej wersji) pomiędzy urządzeniem i komputerem, jednak nie przyniosło to żadnej poprawy.
Przełożony na wieść że nie występuje problem lokalnie, zasugerował bym upewnił się że wszystko lokalnie sprawdzam z tymi samymi parametrami co na urządzeniu. Niezbyt wziął pod uwagę moje wątpliwości co do tego, że może jest to wina biblioteki - szczerze mówiąc się mu nie dziwię, bo z jego strony nie wyglądało to zbyt dobrze - gościu tylko od roku programujacy mówi że być może to nie jego wina i problem może występować w jednej z najpopularniejszych bibliotek pythona i w issues na githubie nie było nawet jednego podobnego wątku.
Ostatecznie udało mi się zilustrować wartości w siatce w kwadracie (od -100 do 100) przy użyciu matplotlib, gdzie widoczne było że na komputerze wartości w miarę regularnie zmniejszają w miarę oddalania od środka. W przypadku urządzenia ARM, wartości promieniście odchodzące z kątów 0,90,180,270 stopni poza okręgiem(r>30), są wybite poza wszelkie granice.
Wygląda więc że w przyszłości będziemy musieli, zainstalować na produkcyjnym sprzęcie pytest, by sprawdzić czy wszystko działa tak jak powinno na armowym urządzeniu, skoro nikomu już nie można wierzyć.
#python
#programowanie
Ja znalazłem błąd w Excelu. Znalazłem może za dużo powiedziane, bo okazuje się, że błąd został już zgłoszony kilka razy i Microsoft wie o nim przynajmniej od 2004(!) roku.
Polega on na tym że jak w arkuszu zabezpieczysz jakiś zakres komórek do edycji to na pozostałych nie działa zwiakszanie wcięcia poprzez przycisk na ribbonie. Działa za to przez menu formatowania komórki.
Czyli znalazles blad i nic z tym nie zrobisz? Sprobuj (jak juz ktos wspominal) namierzyc go w bibliotece, potem to samo miejsce sprawdzisz w nowszej wersji biblioteki i wyjdzie, czy to poprawili czy nie
Niesamowite że ktoś pomyślał że może z tym nie być problemu - zawsze powinno się budować, uruchamiać testy na docelowym sprzęcie (przecież tam będzie to wszystko działać na nie na kompie programisty lol). Dobrym pomysłem jest nawet redundancja, macie joba który uruchomi testy na x86_64 i joba na ARM, oba muszą przejść. Gdybyście kompilowali, to również im więcej kompilatorów tym lepiej. W embedded trzeba spodziewać się niespodziewanego.
A już totalną ignorancją okazali się prowadzący ten projekt jeśli uruchamiacie testy na 64 bitowej platformie, a docelową platformą jest 32 bitowy ARM
Zaloguj się aby komentować
Chciałem w każdym uruchomionym wątku, stworzyć sobie klienta łączącego się z serwerem, przesyłającego jakieś kilku megabajtowe pliki a na końcu zamykający połączenie.
Jednak zauważyłem że wywoływanie smbc_new_context z wielu wątków jednocześnie, powoduje problemy z pamięcią i wysypywanie się programu a nie znalazłem innej metody na łączenie się z serwerem i przesyłanie danych.
Próbowałem grzebać w bindingach które używamy, ale nie udało mi się nic zdziałać - issue https://github.com/veeso/pavao/issues/17
Obecnie w programie dodaję globalnego locka na operacje i tylko jedna na raz może się wykonywać.
Czy samba jest ograniczona do działania tylko w jednym watku w programie, czy może to błąd nakładki której używam, czy może istnieje jakaś opcja do uruchomienia wsparcia wielu wątków?
#samba
#jezykc
#programowanie
@qarmin - ale do przesyłania plików weź ty użyj czegoś normalnego jak scp, rsync, robocopy, gołe SSH, sftp a nawet ftp(s).
Zaloguj się aby komentować
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
@krokietowy Jest do Pythona jakaś libka z bindingami rustowymi? W Ruby mamy https://github.com/matsadler/magnus i czasem nam to sprawiało problemy. No chyba że w Rust jest osobny serwis, to wtedy inna śpiewka.
@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ł.
@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ć
Ciekawie to teraz wygląda, ciągle coś nowego na głównej się pojawia, ale chyba muszę odfiltrować boty z wyświetleń. Tu można zobaczyć efekt:
https://mamrzeczy.pl
#programowanie
Zaloguj się aby komentować
Używam C++ i problem występuje przy linkowaniu - nie ważne czy używam lld, gold czy mold, zawsze jest to samo.
Da się coś na to zaradzić? Np. jest jakiś krok przed linkowaniem, który usuwa pliki źródłowe i zostawia tylko to co potrzebne do linkowania?
To jest krok z budowaniem aplikacji z address sanitizerem, więc nie mogę wyciąć żadnej opcji, która zmniejszyłaby rozmiar binarki.
#programowanie
#cpp
@krokietowy ustaw sobie ramdysk jako target do kompilacji, tam przechowywanie objfile zlinkują sięjak trzeba a po tym procesie zyskasz binarkę na fizycznym storage'u
@mike-litoris Ramu w github CI jest chyba tylko 7GB i większość jest używana, więc raczej to nie jest mozliwe(nie wiem czy ramdysk w CI jest możliwy do zrobienia)
@krokietowy do rzeczy, jaki masz błąd, ile logów jesteś w stanie załączyć?
A nie dałoby rady budować bibliotek (.a) z poszczególnych komponentów i na koniec z linkować je do końcowej binarki?
@m_h a czasem nie tak działa proces kompilacji i linkowania wszystkich śmieci do ELF'a?:D
@krokietowy Z czystej ciekawości, co to za projekt. Bo to musi być niezła kobyła, w co nie za bardzo chcę mi się wierzyć.
@groman43 podpinam się
Zaloguj się aby komentować
Strona to https://ikc.biblioteka.ilawa.pl/
@Bezbronny Dobrą praktyką jest nie przesyłanie wartości true/false jako parametr i tworzenie warunków, tylko stworzenie osobnej funkcji dla każdego przypadku. W twoim kodzie było by to podzielenie funkcji "url" na: "url" i "urlSaveParams" gdzie pierwszy wariant obsługiwałby to co jest w "else" a drugi to co jest w "if". Widać potem lepiej jak działa program podczas wywoływania funkcji. Oprócz tego możesz zrobić if($arg) zamiast if($arg!=nulll), a nawet użyć if/else jednolinijkowego
$url .= $arg ? "$arg=$val/" : "$val/";
Tę listę ifów też bym zmienił, jako np. listę z możliwymi parametrami i osobną funkcją do pobiewrania, np.
$paramsCanBeSaved = [['name' => 'id', 'inUrl' => true], ['name' => 'foo', 'inUrl' => false]];
foreach($paramsCanBeSaved as $param) {
getSavedParam($param); //funkcja wywołuje to co w if, lub po prostu wklejasz tu to co masz w if
}
Wtedy masz do edycji tylko listę zamiast dodawania kolejnego warunku, potem możesz dodać tę listę do bazy danych i stamtąd dynamicznie dodawać sobie kolejne parametry do sprawdzenia bez konieczności edycji kodu.
Tak nawiasem mówiąc to dodawanie tego w ścieżce jest trochę niekonwencjonalne, ja użyłbym query buildera, wtedy masz jedną funkcję: https://www.php.net/manual/en/function.http-build-query.php
I link wygląda tak: www.foobar.com?name=asd&sort=desc
Widzę, że to będzie coś grubszego. Ja jestem skromnym Technikiem Informatykiem. Serwis zrobię, ale kodu php nie napiszę. Ten, który napisał ten kod, już dawno w bibliotece nie pracuje. Teraz Serior admin czy jak to się zwie w korpo, i "nie mam czasu na takie pierdoły"
Zaloguj się aby komentować
ja dopisuję swój własny kod jako jedną z komend możliwych do wywołania w zbudowanej binarce, potem wywołuję przy starcie instancji #golang
Jak robisz migracje?
@wombatDaiquiri Django spięte z CI/CD.
No zależy. Update u mnie dzielą się na 2: te co można cofnąć i te, których nie da rady cofnąć ze względu na zależności z aplikacją. Każda migracja leci w blue/green deployment razem z softem, gdzie pierw migruje się kopia bazy, później testy, później apka i testy i przelaczenie blue green apkii. Liquibase na migracjach db. Jak testy nie przechodzą to nie przełącza Blue green. Baza leci ze snapshot z aws pierw do testów a później leci migracja na produkcji.
Piszę do DevOpsów ( ͡° ͜ʖ ͡°)
Zaloguj się aby komentować
Smacznej kawusi. Ja sobie gadam z AI i nawet nie muszę uruchomić kąkutera ani telefonu. Jeszcze się dąsa.
@rayros a Tosie też mogą?
Eee, kolbowy... Sprzedaj to czym prędzej i kup coś normalnego ( ͡° ͜ʖ ͡°)
Zaloguj się aby komentować
#programowanie
#opensource
@qarmin O widzę kolega natknął się na bramę indyjską. No niestety.
Jak tak miałem, to dzwoniłem do supportu US.
@vinclav - jak naprawiałem kiedyś kompy i musiałem na przykład aktywować klucz windy bez netu lub przez neta były problemy to zawsze dzwoniłem na numer supportu w Juesej - tam mnie nigdy nie zawiedli - gdzie support w Polsce to był śmiech na sali.
@koszotorobur nadal jest
Zawsze uważałem ffmpeg za nadprogram ale teraz to jeszcze większy szacuneczek.
@Catharsis ffmpeg chyba każdy używa XD
@Klopsztanga - ale nie każdy trzepie na nim miliony
Zaloguj się aby komentować
Zaloguj się aby komentować
#programowanie #rustlang
Zaloguj się aby komentować
#humorinformatykow #memy
Mi się właśnie wydaje że dużo programistów to dynamiczniaki
Zaloguj się aby komentować
W skrócie to autor biblioteki w wersji 5.6.0/5.6.1 zaczął dodawać stopniowo "obfuscated"(czyli to chyba się tłumaczy jako zaciemniony) kod, który ostatecznie miał raczej pozwalać na umożliwienie zdalnego dostępu do maszyny(ponieważ xz jest używany przez openssh).
Analiza - https://www.openwall.com/lists/oss-security/2024/03/29/4
Inna analiza - https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
Wątki na internecie - polecam przeczytać komentarze, które wyjaśniają niektóre rzeczy:
-
https://www.reddit.com/r/linux/comments/1bqt999/backdoor_in_upstream_xzliblzma_leading_to_ssh/
-
https://www.reddit.com/r/archlinux/comments/1bqx81e/arch_linux_news_the_xz_package_has_been_backdoored/
-
https://www.reddit.com/r/programming/comments/1bqxynh/major_linux_distributions_impacted_by_xz/
-
https://news.ycombinator.com/item?id=39865810
Backdoor został wykryty, ponieważ powodował duże spadki wydajności oraz nie lubiał się z valgrindem, który przeczuwał że coś z binarką nie jest w porządku(wygląda że plik binarny sam się modyfikował)
Dla uspokojenia, problematyczne wersje były używane głównie w niestabilnych wersjach dystrybucji.
#programowanie
#linux
#opensource
I nikt nie napisze gdzie doszło do naruszenia bezpieczeństwa? Ludzie, wy macie jakieś pojęcie o dokumentowaniu rzeczy? A wystarczy dodać:
Backdoor in upstream xz/liblzma leading to SSH server compromise [CVE-2024-3094]
Ten dopisek ma też od razu funkcje, że dobrze się sprawdza w Google.
@qarmin Jak się kładłem spać to widziałem już o tym jakiś artykuł. Jak po obudzeniu się odpaliłem kompa to od razu mi się odpaliła przeglądarka bo nowy wpis w "arch news" a tam żeby szybko zaktualizować system bo jest backdoor w paczce. No to szybkie pacman -Syu i patrzę, mam już zainstalowaną wersję bez backdoora, taki Arch moment bo nawet nie wiem kiedy zrobiłem ten update xD
@qarmin szczerze powiedziawszy, to mnie wcale nie dziwi, AI i te gówno czaty GPT pchają oprogramowanie w closed source.
Taki zabieg ma na celu coś takiego " ej no nie dajmy tak sobie puszowac komustam coś w sieć, zablokujemy dostęp do kodu".
Na co tępe masy przystaną, nadzieja dziwna epoka, w której programiści będą się uczyć, lub też nie, języków na zlecenie pracodawców, a to już nie będzie indiańskie eldorado.
Zaloguj się aby komentować
Za 5$ płytka rozwojowa z linuchem na pokładzie, 64mb ram, support h264, support usb i innych gadźetów.
No ale cena - za 30zł można kupić na aliexpresie, czyli cena porównywalna do esp32 lub rsp pico (no może 50% droższa)
Czekam na dostawę, jak będzie tak jak opisują - to miazga :3
#arduino #esp32 #diy #programowanie
@Klopsztanga Jak znam życie z tymi tanimi płytkami, to problem będzie z dokumentacją. Co drugi pin GPIO będzie działał tak jak powinien, i żeby to w ogóle działało, będziesz musiał pohaczyć ze sobą kilka niekompatybilnych bibliotek.
Po tym, jak na jednej z tanich płytek musiałem brute forcem ustalać który PIN przekłada się na które oznaczenie (i czy w ogóle działa) stwierdziłem, że pierdzielę i następnym razem biorę RPI.
@LondoMollari dokumentacja ładnie wygląda
https://milkv.io/docs/duo/overview
Jak dla mnie
Co do bibliotek - tak, zawsze to problem... ale jak ma się linuxa to już mi to lotto
@Klopsztanga testował. I nie ma problemu z dokumentacją.
powiem nawet więcej że tak testowałem że zamówiłem na spróbusa kilkanasice egzemplarzy
na arace.tech masz nieco lepsze ceny
@mike-litoris o kurdens, fakt, 20 zeta ino tam kosztuje.. a wersja 256 30 zlociszy :3
eee jednak chyba spasuje xD Może jakbym kupił kiladziesiąt to by się opłaciło... ale wtedy cło i inne gówna dochodzą
@Klopsztanga a, no i jeszcze jeden ważny resource: https://community.milkv.io/c/duo/5
google translate ch -> en daje radę, jak tylko uprzątnę biurkowarsztat to pobawię się w tinyfb.
@mike-litoris co to tinyfb ? coś jak lvgl ?
@Klopsztanga nie, to framebuffer który odpalisz na takich mikrusach. jak zmieścisz się w 64mb ramu to nawet Xorg na tym pójdzie, ale zwykle używa się tego do korzystania z tty, wtedy podłączasz np klawkę na USB i masz normalnego shella.
Zaloguj się aby komentować
#programowanie #rustlang #webdev #programista15k #petproject
Paweł, daj link do githuba
Coś jak ImageMagick tylko w Rust?
@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ć