Zdjęcie w tle
Programowanie

Społeczność

Programowanie

1k+
Od prawie roku korzystam z AI(chatgpt i github copilot) do pomocy przy programowaniu i muszę przyznać że potwornie się mi te narzędzia przydają i znacznie przyspieszyło mi to niektóre czynności.

W moim przypadku działa to świetnie do:

  • Tworzenia funkcji mapujacych obiekt z jednej klasy do drugiej(np. From/TryFrom w Rust)
  • Dopisywania logiki w prostszych funkcjach - czasami wystarczy wpisać nazwę funkcji, argumenty i zwracany typ, by cała logika którą oczekiwałem była wpisana do środka
  • Podpowiadaniu w jaki sposób używać danej biblioteki - zdarza się, że mimo przeczytania dokumentacji, nie mam pomysłu w jaki sposób użyć danej funkcji i zwykle podpowiedzi nawet nie do końca trafne, kierują mnie na właściwe rozwiązanie (pomogło mi to przy bibliotece diesel, która jest trudna do opanowania)

dzięki temu, zamiast żmudnego kopiowania i wklejania czy też tworzenia mniej wymagających funkcji, mogę skupić się na bardziej wymagających zadaniach.

Jednak zauważyłem, że pod niektórymi wątkami na reddicie i innych forach, jest spora rzesza osób, które z ai wcale nie korzystają(nie dlatego że nie wiedzą, ale bo nie chcą korzystać).

Jednym z argumentów, jest kwestia etyczna, bo kod nauczony przez ai nie jest w żaden sposób sprawdzany pod kątem licencji oryginalnego kodu.

Inny argument to kwestia tego, że więcej szkodzi(lub bierze więcej czasu niż jakby pisać to wszystko ręcznie) niż pomaga - akurat w moim przypadku argument chybiony.

Jakie są wasze argumenty za/przeciw?

#programowanie
#ai
#sztucznainteligencja
588d911b-9f78-4179-b25b-9e344a333646

Czy korzystacie z AI przy programowaniu?

62 Głosów
Skylark

Jedyne, co jest naprawdę ważne dla mnie podczas programowania, to żebym dokładnie rozumiał, co piszę. Przeczucie, że nie jestem pewien jak coś ma działać, jest najlepszym sygnałem alarmowym, że zaraz napiszę trudny do poprawienia błąd. Nie wiem, jak mógłbym wykorzystać AI, które zabrałoby mi to bezcenne narzędzie.

koszotorobur

@qarmin - ja się czasem tym co AI wypluwa inspiruję bo nie raz wypluło coś prościej zaimplementowane niż bym ja sam zrobił.

Niemniej kod od AI wymaga wprowadzania poprawek i nigdy nie używam kodu od AI którego nie rozumiem.

GordonLameman

Zaraz zostaniesz zastąpiony przez te narzędzia

Zaloguj się aby komentować

#regex #wyrazeniaregularne
Doskonały interaktywny edytor wyrażeń regularnych obslugujący kilka ich standardów (m.in popularne PCRE)
https://regexr.com
dolitd

Nie dość, że sam regex jest trudny, to jeszcze ma kilka standardów.

Zaloguj się aby komentować

Nie tak dawno temu dokonałem czegoś niemożliwego - znalazłem błąd który był w obcej bibliotece, a nie w moim kodzie.

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
b48a7301-09cf-499d-ab8f-77e27bef38f0
ZohanTSW

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

Ilirian

Najgorzej jak znajdziesz buga w Firefoxie i okazuje się że podobny błąd został zgłoszony w 2006 roku i od 18 lat toczy się pod nim dyskusja. Co jakiś czas ktoś pyta kiedy to będzie naprawione, następnie ktoś z mozilli odpowiada że nad tym pracuje by za dwa lata znowu dostać pytanie o postępy xD


Zauważyłem np że firefox na androidzie bardzo często odświeża strony po powrocie do niego, tak jakby od razu po przeskoczeniu do innej apki czyścił dane strony z pamięci. Oczywiście zgłoszony bug wisi od paru lat w backlogu bo niby ważny błąd ale jakoś tak nie umieją go odtworzyć


(sorki za offtop xD)

sadamasin

Używacie biblioteki scipy i się dziwicie… zaciągnijcie normalnie z github a nie z jakiejś cipy…

Zaloguj się aby komentować

Korzystał ktoś z samby(libsmbclient) z wielu wątków?

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
koszotorobur

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

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ć

Dodałem na główną sortowanie po popularności ogłoszenia. Algorytm użyłem z posta na stack overflow https://stackoverflow.com/questions/11128086/simple-popularity-algorithm

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ć

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
mike-litoris

@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

m_h

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

groman43

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

Proszę o sprawdzenie co jest nie tak, dlaczego pluje mi errory?

Strona to https://ikc.biblioteka.ilawa.pl/
55ce1096-e8c1-48cb-a6f2-c6263ea929dc
9edfb75f-fd4f-4af6-ab1a-641009a37fde
Vuaaas

@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

Bezbronny

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
psalek

@wombatDaiquiri Django spięte z CI/CD.

rm-rf

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.

green-greq

Piszę do DevOpsów ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

Tomki pijcie ze mną kawę. Wygrałem ekspres ciśnieniowy na targach IT. #chwalesie #programowanie #programista15k
62cd6d2d-0598-42c8-b05d-c623a44aece6
Ewidentnie_nie_on

Smacznej kawusi. Ja sobie gadam z AI i nawet nie muszę uruchomić kąkutera ani telefonu. Jeszcze się dąsa.

UmytaPacha

@rayros a Tosie też mogą?

Szpadownik

Eee, kolbowy... Sprzedaj to czym prędzej i kup coś normalnego ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

I tak się żyje jako programista open source

#programowanie
#opensource
eefd97e1-2b70-48a1-a7f6-4e79790d4cb6
628d5a07-8210-44af-bd3b-961d79dbcee3
vinclav

@qarmin O widzę kolega natknął się na bramę indyjską. No niestety.

Jak tak miałem, to dzwoniłem do supportu US.

koszotorobur

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

Catharsis

Zawsze uważałem ffmpeg za nadprogram ale teraz to jeszcze większy szacuneczek.

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
Dzemik_Skrytozerca

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.

Catharsis

@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

vinclav

@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
Klopsztanga userbar
68a85605-edcd-4978-bd25-eae090ce64dc
LondoMollari

@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

@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 Bo system mi to ogranie

mike-litoris

@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

Klopsztanga

@mike-litoris o kurdens, fakt, 20 zeta ino tam kosztuje.. a wersja 256 30 zlociszy :3

Klopsztanga

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ą

46d1e949-3909-4bdb-9ba9-1ed7cd51bf46
mike-litoris

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

Klopsztanga

@mike-litoris co to tinyfb ? coś jak lvgl ?

mike-litoris

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

https://youtu.be/Swo-zJ6brQI

Zaloguj się aby komentować

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 

#programowanie #rustlang #webdev #programista15k #petproject
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ć

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
M4G33k

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?

qarmin

@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

redve123

@qarmin o kurde, to ty stoisz za czkawką

Zaloguj się aby komentować

Następna