Zdjęcie w tle

Społeczność

Programowanie

1k+

Mam problem w github CI, że projekt który kompiluję bierze całą dostępną przestrzeń dyskową.


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

A nie dałoby rady budować bibliotek (.a) z poszczególnych komponentów i na koniec z linkować je do końcowej binarki?

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

Zaloguj się aby komentować

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

eloszka #programowanie jak robicie migracje #bazydanych ? każda technologia mile widziana #ankieta dla zasięgów xD #gownowpis też


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?

93 Głosów

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.

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

Zna ktoś może fajny artykuł jak zaimplementować filtr Kalmana dla GPS + IMU + Kompas? Tak żeby jeszcze brane było pod uwagę opóźnienia w odpowiedzi GPSa #programowanie #robotyka

Zaloguj się aby komentować

Zaloguj się aby komentować

Zaloguj się aby komentować

Jak nie śledzicie ostatnich dram w świecie programowania/open source, to oto przedstawiam nową i dość specyficzną, bo ocierającą się o możliwe tworzenie backdoorów przez rządy w popularnej bibliotece do kompresji w Linuxie(nawet jeśli jej nie używacie bezpośrednio, to masa programów w systemie jej używa pod spodem).


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:



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

4dfb1ac0-745c-4efb-99b4-b878c6930ee0

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ć

Testował ktoś z was Milk-V Duo  ?


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

68a85605-edcd-4978-bd25-eae090ce64dc

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

@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

Zaloguj się aby komentować

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

No i stało się co miało się stać.

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


Link do dodatku - https://addons.mozilla.org/en-US/firefox/addon/imager/

Najfajniejsze jest to że jak próbuję to wyszukać w wyszukiwarce dodatków po frazie "imager" to nic mi nie wyszukuje(pewnie musi być nieco bardziej popularny).


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


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


Filmik przedstawia krótką instrukcję jak zainstalować dodatek i go używać

Jeśli zaznaczonych jest wiele kart, to potrafi na nich wszystkich za jednym razem zadziałać


https://streamable.com/yx4r8g


#programowanie

#firefox

#tworczoscwlasna

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

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


Co do tego konkretnego rozszerzenia, to nie jestem pewien czy korzystałem z jakichś niestandardowych funkcji ale raczej nie.

Tylko z browser.storage/tabs/menus i zwykłymi funkcjami operującymi na dom, więc raczej nie powinno tego być trudno przeportować na chromowate przeglądarki

Zaloguj się aby komentować

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


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


document.body.innerHTML = "";

var scripts = document.getElementsByTagName('script');

for (var i = scripts.length; i >= 0; i--) {

if (scripts[i] && scripts[i].parentNode) {

scripts[i].parentNode.removeChild(scripts[i]);

}

}

dalej w tle skrypty są uruchomione i czasami wpadają w jakąś dziwną pętlę.

W jaki sposób mogę wyszyścić ze strony absolutnie wszystko?

Na filmiku widać że popup z hejto wyskoczył, mimo że w tle podmieniłem całą stronę


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


  • kod się roztył do 300 linijek javascriptu - całkowicie nieotypowany, nie wiem jak to może działać, ale działa

  • obrazy są teraz pokazywane w x kolumnach bez niepotrzebnych pustych przestrzeni

  • dodane są ustawienia(ale nie wiem czy działają po ponownych uruchomieniu przeglądarki) - można dostosować liczbę kolumn, ignorowane linki, śledzenie href linku czy ignorowanie linków bez rozszerzeń obrazowych

  • nowe, brzydkie logo


https://streamable.com/9sltr8


#programowanie

@Catharsis Nie wiem jak się to robi.

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

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

Zaloguj się aby komentować

Ktoś jeszcze bawi się w RAG? Postawiłem sobie ollama + longchain + chroma. Napisałem parę prostych skryptów do indexiwania plików, które mnie interesują i konektor który bierze prompt i robi chain między vector db a ollamą i zwraca wynik. Robi to wszystko co chciałem i mam przeczucie, że to jest "za proste". Coś pominąłem? Czy to rozwiązanie jest w jakiś sposób upośledzone? Pomijając oczywiście fakt, że sporo rzeczy na ten moment mam zahardkodowane bo się tylko bawię. Rozumiem, że jest jeszcze cała otoczka typowej apliacji (security, interfejsy itp itd). Ale chodzi mi o samo uzyskiwanie wyników odnośnie tego co siedzi w plikach. Napisanie interfejsu do czatu jako takiego zajęło mi więcej czasu.


edit: żeby było jasne - jestem stosunkowo zielony w tej dziedzinie programowania


#programowanie #llm

@mortt próbowałem tutorial z Realpython.com ale mnie przerosło wchodzenie w szczegóły danych szpitalnych i nie potrafiłem tego przełożyć na swoje potrzeby, więc mi bardziej się przyda "za proste" podejście.

@htcone nie mam zbytnio przykładu w pytonie bo robiłem to w node. Prawda jest taka, że i tak najcięższe zadania dzieją się poza aplikacją.


Zależy co chcesz zrobić ale najbardziej bazowe rozwiązanie to indeksowanie całych plików bez analizowania ich. Wtedy to jest tylko kwestia zrobienia tego co opisałem. Vector z plików zapisać do chromy przy użyciu ollama embedings (longchain ma to wbudowane) a potem wyciągnąć z chromy kolekcję i zrobić chain longchainowy łączący vektor z ollamą i voila. Można czekać na pełny respons albo stresmować. Więcej roboty jest z tym, żeby uploadować pliki albo wskazać ścieżkę i zaindeksować albo żeby napisać klienta do tego niż samo gadanie llm z wektorami

Zaloguj się aby komentować

Ostatnio potrzebowałem narzędzia do wyświetlania wszystkich obrazów z danej strony i zrobiłem to co programista powinien zrobić - napisałem go od zera, bo nigdzie nie znalazłem dodatku, który by to robił.


Doświadczenia z javascriptem w przeglądarce miałem 0, więc nie obyło się bez problemów i wygląda to brzydko.

Wcześniej myślałem nawet, że mógłbym nawet udostępnić dodatek w sklepie firefoxa bo być może inni też potrzebują takiego narzędzia, ale okazało się że udało mi się to napisać w 150 liniach kodu i w sumie każdy kto chciał to sobie to sam napisał


#programowanie


https://streamable.com/6qxf6y

@qarmin Hmm też kiedyś coś takiego potrzebowałem i też to sam napisałem bo to tylko querry selector na wszystkie img ale

nigdzie nie znalazłem dodatku, który by to robił.

https://chromewebstore.google.com/detail/download-all-images/ifipmflagepipjokmbdecpmjbibjnakm

https://chromewebstore.google.com/detail/download-all-images/nnffbdeachhbpfapjklmpnmjcgamcdmm

https://chromewebstore.google.com/detail/images/iieipaakoflfijmpbjdoicmhgafhmgme


takich dodatków jest masa xD, wiem bo kiedyś też szukałem i żadne mi się nie podobało dlatego napisałem swoje.

@Catharsis Tyle że ja niczego nie chcę pobierać, tylko wylistować sobie wszystkie obrazy - na wykopie był kiedyś tryb galerii we wpisach i chciałem coś podobnego zrobić, tyle że dla każdej strony.


Akurat używam firefoxa i znalazłem ani jednego dodatku który by działał w podobny sposób tak jak to teraz to zrobiłem

@mike-litoris Zwykle chowam, ale tutaj nie musiałem. To jest przeglądarka uruchomiona poleceniem web-ext specjalnie do tworzenia dodatków i przy każdym uruchomieniu się czyści sama

@libertarianin Nie sądzę, nie znalazłem ani tego wbudowanego ani jako dodatku(jeśli istnieje, to porzucam to co robię i zaczynam używać wbudowanej funkcji, bo to łatwiejsze)

Zaloguj się aby komentować

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

@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

Zaloguj się aby komentować