Rynek pracy STM32

Gwoli malego wyjasniena: kazda wersja to logicznie w miare jednorodna i kompletna zmiana, ktora sie kompiluje i przeszla wszystkie testy. Experymentalny kod i wersje robocze _nie_ umieszczam w systemie kontroli wersji (tu sa rozne praktyki, czesc osob mocno agituje zeby wersje robocze trzymac w branchach, wtedy wersji byloby duzo wiecej). Mimo testow wersja moze wprowadzic blad. Gdzies ze 2-3 razy naprostszym sposoblem lokazacji bledu bylo binarne szukanie wersji ktora wprowadzila blad (wersja K nie ma bledu, wesja N ma blad, spradzamy wesje (K+N)/2 i przechodzimy do odpowiedniego podprzedzialu). Troche wiecej razy po lokalizacji bledu popatrzenie na zmiane ktora wprowadzila blad pomoglo w poprawce.

Jak planuje zmiane jakiegos kawalka kodu to popatrzenie na historie pomaga: pokazuje zaleznosci, widzac cala zmiane (lacznie z komentarzem) latwiej ustalic/przypomniec sobie jakies problemy ktore trzeba bylo rozwiazac.

No i jeszcze jedna rzecz: komfort psychiczny. Mozna by "oszczedzac" pamietajac tylko niektore wersje (w skrajnym przypadku jedna, tzn. ostatnia). Ale wtedy ryzykuje duzo pracy jak cos zepsuje a 500 wersji pozniej odkryje blad. Majac stare wersje prawie zawsze moge naprawic problem wycofujac zmiane ktora wprowadzila blad.

Reply to
antispam
Loading thread data ...

A konkretnie dlaczego?

Reply to
heby
2022-07-20 o 14:54 -0000, snipped-for-privacy@math.uni.wroc.pl napisał:

Kiedy trunk to właśnie z założenia jest wersja robocza. To, o czym piszesz to tagi. Jeśli nie trzymasz kodu roboczego w VCS to tracisz granularną widoczność na wprowadzone zmiany - widzisz tylko jeden wielki changelog kodu z jednej publicznej wersji do drugiej. Dlaczego tak? Nie umiem dostrzec zalet takiego działania, a wad sporo - choćby brak możliwości automatyzacji procesu kompilacji i testów. U mnie system buildowy jest podpięty pod svn, i każdy commit wywołuje build i testy, dzięki czemu większość regresji można wychwycić na bardzo wczesnym etapie.

Mateusz

Reply to
Mateusz Viste

Ad personam?

Reply to
heby

Raczej mnie zwiodłeś. Jesteś jak ten szeryf blokujący lewy pas aby potem za chwile wpierdolić się przed światła z poczuciem ostatniego sprawiedliwego.

Swoją drogą, to kiedy w pieluch szczałem? Chętnie się dowiem, skoro już uznałeś ten temat za niezwykle istotny na grupie elektornika.

Reply to
heby

Jak chcesz mozesz go nazwac wersja robocza. Ale u mnie trunk ma sie kompilowac i przejsc testy, a wersja robocza to niekoniecznie.

Granularnosc mam taka jaka chce i potrzebuje. Jak np. dodaje plik z nowymi funkcjami to moge go pisac funkcja po funkcji i rozne posrednie wersje istnieja po pare minut. W system kontroli wersji plik umieszczam jak jest w miare kompletny. Albo np. zmiana jednej konstrukcji na inna w calym kodzie, to moge robic plik po pliku, testujac etapy posrednie a do systemu wersji idzie calosc. Czasami zmiana jest malutka: poprawka moze sie sprowadzac do zamiany jednej linii kodu (+ testy i pozycja w ChangeLog). Czasami zmiana nie dziala z powodu bledu w innej czesci kodu, wtedy zmiana moze czeka na to az ta inna czesc bedzie poprawiona. Experymentalna wersja moze byc tylko po to zeby zobaczyc jaki bedzie efekt zmiany.

Pelna kompilacje i normalne testy robi 'make' i dla mnie jest to wystarczajaco zautomatyzowane. Ok, jest jeden problem: testy sobie chodza automatycznie, ale dla sporej czesci musze popatrzec na wynik by wiedziec czy jest poprawny. Ale to jest zupelnie niezalezne od tego jak uzywam system kontroli wersji, po prostu trzeba by zautowatyzowac kryteria poprawnosci a tu sa subtelnosci (co jest latwe to jest zautomatyzowne, ale musze patrzec na klopotliwe przypadki). Przy pracy nad wersjami roboczymi czesto uzywam kompilacje przyrostowa, tu polecenia kompilacji sa podawane recznie. Zaleta jest taka ze kompilacja przyrostowa jest znacznie szybsza niz uzycie 'make' (zwykle wystarczy rekompilacja malego kawalka, ale czasami trzeba rekompilowac duzo wiecej i regula dla 'make' jest konserwatywna, tzn. obsluguje najgorszy przypadek). Przy tym jest to cecha jezyka, gdyby kod byl w C to "optymalna" rekompilacje robilby 'make' (ale ten "reczny" wariant pozwala na rekompilacje + prosty test ponizej 2s, w C + 'make' test bylby bardziej klopotliwy).

Hmm, ja _nie_ chce blednych wersji w systemie kontroli wersji. Dlatego commit jest dopiero _po_ kompilacji i testach. Teoretycznie mozna system kontroli wersji skonfigurawac tak zeby wlasciwy commit zaszedl tylko jak przejda testy. Ale jak cos robie to chce wiedziec ze skonczylem, czyli w praktyce tak czy siak czekalbym na zakonczenie testow.

Reply to
antispam

W dniu 2022-07-20 o 13:55, heby pisze:

Rozumiem, że robiąc backup jednego dnia poprzedni mogę już zniszczyć - to nie ja mam dbać o historię. P.G.

Reply to
Piotr Gałka

Repozytorium ma być wieczne. Trzyma cała historię, od zawsze.

Backupy mają być odzyskiwalne.

Sam decydujesz ile % pewnosci wkładasz w swoje backupy.

Ja, w przypadkach tego typu, trzymam po kilka backupów na róznych nośnikach, i nie kasuję starych jak nie muszę.

Ponadto sprawdzam, czy backup da się odzyskać. To bardzo ważne.

Paranoicznie czasami dodaje md5, bo miałem nieprzyjemne problemy z kablami sata.

Zamiast robić backupy codziennie - może warto zainwestować w hardware który zapewnia sensowny poziom bezpieczeństwa danych? Wiele NASów ma możliwośc wsadzenia kilku dysków w "jakimś raidzie". Nie twierdze, że to super rozwiązanie, ale lepsze niż brak jakiegokolwiek. Paranoicznie można nawet uzywać zfs z automatycznymi sumami kontrolnymi... ale to może przesada.

Reply to
heby

Jeszcze uwaga: nie traktuj rozwiązania z "Create repository here" jako docelowego. To raczej miejsce do orientacji czy ma to sens. Prawidłowo powinieneć mieć serwer sieciowy z repozytorium dostępnym protokołem svn://. Głównie dlatego, że będzie ono znacznie bezpieczniejsze. Pliki na dysku możesz przypadkiem skasować jako repo. Repozytorium svn:// na osobnej maszynie raczej przypadkiem nie uszkodzisz, a jeśli zmienisz coś źle, zawsze możesz wycofać zmianę. Tylko że to inny poziom trudności i dlatego nie warto zaczynać z tego miejsca.

Jeśli chcesz sprawdzić subversion i TortoiseSVN to daj znać - poprowadzę Cię za rękę krok po kroku co wyklikać. To jest trywialne, ale za pierwszym razem może być mniej oczywiste.

Reply to
heby

środa, 20 lipca 2022 o 20:37:46 UTC+2 heby napisał(a):

O, a co się może dziać przez kable sata? Mój dysk SATA od jakiegoś czasu (po 15 latach) zaczyna głupieć - ale przez jakiś czss po resecie jest OK, ostatnim razem po 91k sekund, ale dziś już po 17k. dmesg zawiera informacje o resecje sata, a dysk roni brzydki bzyk głowicami, jakby walił w obudowę. Ale odczyty i zapisy w końcu się udają, choć sync potrafi sprawy nie załatwić i po resecie wymaga ręcznego fsck.

Reply to
Dawid Rutkowski

W dniu 2022-07-20 o 20:42, heby pisze:

Zapisałem sobie wszystko co ważne w pliku wsadzonym do kartoteki podlegającej backupowaniu.

U mnie od rozważenia czegoś do decyzji mija zazwyczaj sporo czasu. Na razie wykorzystałem okazję aby zdobyć trochę wiedzy o czymś o czym nie miałem pojęcia.

W tym tygodniu miałem pilnie coś zrobić (pierwsza płytka po przeniesieniu się do KiCad V6) na czwartek (promocja w Techno-service). A tymczasem poniedziałek i wtorek zeszedł ma na p.m.e. Choć to malutka płytka to nowe footprinty itp. Choć dziś już się za to wziąłem to jeszcze nie skończyłem.

Kiedyś siedziałem w samochodzie koło 9-latka, który czytał "Tajemniczą wyspę" Verne'a. Bardzo szybko się przekonałem, że ja czytam 6x wolniej od niego. Takie czytanie/pisanie na p.m.e pochłonęło mi 100% czasu.

Pamiętam o Tobie. Już parę razy różnych rzeczy się od Ciebie dowiedziałem. Według mnie 'masz swoje za uszami' ale dajesz się lubić :) Wydaje mi się, że ja nigdy nie twierdziłem / twierdzę / stwierdzę, że coś wiem, gdy tego nie wiem na 100% i dlatego chyba mnie tolerujesz :)

Nie lubię nagabywać kogoś o coś. Jak mam pytanie to wolę zapytać na grupie - wtedy nikogo nie przymuszam do angażowania się. Kto chce może się odezwać. Ale bardzo dziękuję za deklarację!

Tylko, że przy moim programowaniu (góra miesiąc w roku) to mam podejrzenie, że system kontroli wersji to trochę aż na wyrost. Wprawdzie lubię robić różne nowe rzeczy, ale ostatnio jestem strasznie zarobiony. Między innymi przez braki na rynku. Co rusz spada na mnie rozwiązywanie problemów typu - tego nie możemy dostać - co robimy. I muszę wyważać otwarte drzwi - jak inaczej nazwać projektowanie tego samego na innych podzespołach tylko dlatego, że te oryginalnie użyte mają być dostępne za rok. Ta płytka na jutro też w ogóle by nie powstawała gdyby nie to, że jakiegoś procesora nie da się dostać. P.G.

Reply to
Piotr Gałka

No to teraz ładnie przeproś :)

Reply to
Janusz

Zaraz po tym jak określisz dlaczego dynamiczny polimorfizm działa na moim Harvardzie.

Reply to
heby

Naiwnie zakładałem że nic. Przecież transmisje są z sumami kontrolnymi od czasu UDMA133.

A dzieje się coś takiego:

1) zapisuje grzecznie 2) kabel ma *nagle* jakiś problem 3) w dmasg widzę tysiace komunikatów "dma error, ble ble, retrying". 4) po chwili pliki uszkodzone bo kernel się poddał i nie zapisał jakiegoś bloku.

Wymieniłem kabel w akcie desperacji i nagle wszystko działa.

Wniosek: sumy kontrolne to fajna sprawa, ale istnieje limit zapisów ze zła sumą kontrolną...

Reply to
heby

:) Moja ulubiona ksiązka Verne. Być może ulubiona w ogóle ;)

To jedyna ksiązka z dzieciństwa, w której pozytywny bohater jest ścisły :)

Pamiętaj, że jestem złośliwy tylko, jesli ktoś mnie puknie kijem bez przyczyny.

To źle. Ogólnie ludzie w IT lubią dzielić się wiedzą. "Szkolenia z subversiona" realizowałem praktycznie co chwile z racji zawodu, więc niejako pojmuję czego kto nie pojmuje statystycznie najczęsciej i gdzie są niejasności.

Widzisz, problem nie w tym, abyś go użył. Możesz pomarudzić, że to głupie i nigdy nie użyć. W pełni to rozumiem.

Rzecz w tym, aby pojmowac, że ma się alternatywę. Nie ma nic gorszego niż beton w poglądach na to że "tak jak robie jest najlepiej, bo tak robię od 30 lat". W embedded takich sytuacji jest ogramna ilość. Nie wiem, dlaczego to środowisko jest takie specyficzne, ale praktycznie wszystkie anegdoty i opowieści zasłyszane, dotyczące średniowiecza narzędziowego, dotyczą embedded. Nawet duże korpo potrafią wstydliwie chować pakowanie źródeł do ftp jako substytut systemów kontroli wersji. Mam wrażenie, że nie ma przepływu wiedzy pomiędzy programistami dużych komputerów a embedded. Środowiska odizolowane od siebie i w dodatku obrażone. Nie mieszają się. A to mieszanie jest krytyczne ważne. Nic tak nie cieszy, jak ktoś, kto pokaze mi, że można zrobic coś *lepiej* niż ja potrafię. A to się dzieje codziennie w moim wypadku.

Jesli nawet z tego mieszania nic nie wyjdzie i zostaniesz z tym co masz, nic straconego. Może inni, czytający te wypociny obok, zainteresuja się tematem.

Swoją drogą chińczycy skopiowali STM32 bit-w-bit i noga-w-nogę i nazwali bodaj GD32. Moze i z Twoim procesorem zrobili to samo?

Reply to
heby

No właśnie ze względu na menu pod prawym klawiszem. Nie znoszę tego, podobnie jak i Windows Explorera. VCS w postaci wtyczki do IDE też niezbyt do mnie przemawia, aczkolwiek jest to rozwiązanie lepsze od Tortoise*. W każdym razie ja lubię mieć VCS-a jako oddzielny programik ze swoim własnym oknem.

Reply to
JDX

A, czyli to kwestia gustu.

Menu pod prawym działa w Total/Double Commander. 99% ludzi jakich znam, pszących pod Windowsem, używa tego softu (TC/DC), również komercyjnie, podzas programowania poważnych rzeczy.

To na tyle dobre, że jest i na Linuxie, RabbitCVS.

Ok, przyjmuje do wiadomości, choć przyznam że oglądając inne narzedzia, takie jak perforce p4v, tęsknię za tortoise.

Reply to
heby

A w którym miejscu napisałem że nie może? tylko że w tym wykonaniu nie różni się on niczym od osobnych funkcji na każdy typ zmiennej, jedynie zapis jest prostszy.

Reply to
Janusz

Tutaj:

On 19/07/2022 18:35, Janusz wrote: >> Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie >> wiem jak to się nazywa) tego templates. > Ale na avr-ze to nie pójdzie bo ten procek nie wykonuje programu z ram-u > (architektura Harvard) więc żadnej kopi nie uruchomi.

Co prawda dotyczy to statycznego, ale tym gorzej dla Ciebie.

Reply to
heby

Co gorzej, odpowiedz na pytanie, czy avr wykona program z ramu?

Reply to
Janusz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.