RTV forum PL | NewsGroups PL

Jak wygląda rynek pracy dla programistów STM32? Perspektywy i wynagrodzenia

Rynek pracy STM32

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wygląda rynek pracy dla programistów STM32? Perspektywy i wynagrodzenia

Goto page Previous  1, 2, 3 ... 11, 12, 13 ... 22, 23, 24  Next

Piotr Gałka
Guest

Tue Jul 19, 2022 1:25 pm   



W dniu 2022-07-19 o 14:58, heby pisze:
Quote:
Sądzę, że jeszcze trochę potrwa zanim powiesz programowi, że płytka
będzie w obudowie nie ekranowanej a mimo ma spełnić taką a taką normę
EMC i on już się tym zajmie.

ASICe "same się routują". Czemu PCB nie miałyby? Przynajmniej częściowo.
Wrzucasz komponenty krytyczne a reszta drobicy sam się gdzieś wciśnie.

Napisałem 'jeszcze trochę' a nie 'jeszcze długo'.

Jak projektuję PCB to 90% roboty to jest rozmieszczenie elementów.
Ale ja sobie tę robotę robię bo nie chce mi się przerzucić na 4 warstwy,
a na 2 warstwowej wymagam aby 100% bottom było GND. Więc (poza GND)
wychodzi mi projekt jednowarstwowy i rozplątanie tego (takie położenie,
aby dla każdego połączenia przewidzieć drogę którędy pójdzie) zajmuje
najwięcej czasu. Potem pociągnięcie ścieżek to już po prostu realizacja
tego, co się brało pod uwagę przy rozmieszczaniu.

Quote:
Nie o szybkosc pracy chodzi, ale o intuicyjność. Te same operacje w CAD
oznaczają coś innego niż w resztcie świata. Sama selekcja w
KiCAD/Eagle/Protel jest zupełnie inna, nieintuicyjna, a to dopiero
początek przygody.

Jestem bardziej przyzwyczajony do Protela i KiCada niż do tej reszty
więc szybciej uznam, że to tam jest nieintuicyjnie.
Ale nie kojarzę na czym polega ta odmienność przy selekcji.

Quote:
Głupie usunięcie routingu ścieżek zajmuje mi w KiCADdzie zazwyczaj koło
5 minut szukania. Za każdym razem po miesięcznej przerwie. To jest tak
nieintuicyjnie, że niemożliwe do zapamiętania w mięśniach od klikania.

Nie kojarzę problemu.
W Protelu 3 była łatwa możliwość Unroute całej płytki, ale nie używam go
już od 5 lat.
Modyfikacja ścieżek była ciężka, dlatego najłatwiej było usunąć i
narysować od nowa. Jak pamiętam była tam taka dla mnie bardzo fajna
rzecz - każdą operację dawało się rozszerzyć na inne elementy wybierane
według określanego w danym momencie klucza (bardzo szeroka gama możliwości).

W KiCadzie chyba faktycznie trudniej jest usuwać ścieżki. Ale mnie to
raczej nie boli, bo jest z kolei duża łatwość ich modyfikacji - to jest
miodzio jak to działa. Jeden gość mocno aktywny na forum KiCada pisze,
że on w ogóle nie zwraca uwagi jak się mu ścieżki prowadzą. Jak wszystko
jest połączone to potem je przesuwa tak aby było tak jak mu pasuje.
Ja się jeszcze aż do tego stopnia nie przełamałem i czasem wojuję z
KiCadem aby poprowadził dokładnie tak jak ja chcę a on szczególnie przy
podłączaniu do padów ma jakieś swoje widzimisię. Ale piszę o V5, bo pod
V6 na razie zaprojektowałem 0 płytek.
P.G.

heby
Guest

Tue Jul 19, 2022 1:29 pm   



On 19/07/2022 15:25, Piotr Gałka wrote:
Quote:
Jestem bardziej przyzwyczajony do Protela i KiCada niż do tej reszty
więc szybciej uznam, że to tam jest nieintuicyjnie.
Ale nie kojarzę na czym polega ta odmienność przy selekcji.

Zaznaczanie ramką *zazwyczaj* zamiast zaznaczać, ciągnie mi elementy już
zaznaczone lub wykonuje inne akcje.

Piotr Gałka
Guest

Tue Jul 19, 2022 1:43 pm   



W dniu 2022-07-19 o 15:07, heby pisze:
Quote:
Ale stosuje go jakoś inaczej niż mi by przyszło do głowy. Ma na
przykład w każdym projekcie plik h o jednej wspólnej nazwie i wczytuje
go we wszystkich plikach c używanych w wielu projektach. W ten sposób
te pliki (jakby biblioteczne) generują dla każdego projektu inny obj.

Czyli emuluje templates z C++ używając sztuczek z inkludowaniem.

Nigdy nie opanowałem templates, ale tak jak ja je sobie wyobrażam to
chyba to jest jednak coś innego.

U niego raczej chodzi o to, że w pliku jest na przykład komunikacja ze
scalakiem RFID. Ale to jak ona jest faktycznie realizowana zależy od
tego pliku h o wspólnej nazwie dla wszystkich projektów a tam jest
informacja jaki procesor i jak jest podłączony dla danej wersji płytki.
Funkcjonalność, która jest w danym projekcie niezbędna też pewnie jest w
tym pliku (czytamy tylko ID karty, czy pełna komunikacja z kartą Desfire.
Ale nie jestem pewien tego co piszę.

Ja (okolice 1990) emulowałem klasy za pomocą wskaźników na funkcje.

Quote:
To jest ogólnie niebezpieczne jak jasna cholera. W większych projaktach
takie rzeczy są zabronone. Po pierwsze dlatego, że są trudne w
utrzymaniu, po drugie dlatego, że od tego są templates w C++.

Każdy programista C wynajduje po latach kwadratowe koła tego typu,
broniąc się przez przejściem do C++ gdzie statyczny polimorfizm jest
częścią jezyka.

Muszę poszukać co to hasło oznacza. Może wiem, tylko nie wiem, że tak
się nazywa.

Quote:
Nie używaj więc Buildera. Nikt tego nie sprawdza.

Nie rozumiem.
P.G.

heby
Guest

Tue Jul 19, 2022 1:54 pm   



On 19/07/2022 15:43, Piotr Gałka wrote:
Quote:
Czyli emuluje templates z C++ używając sztuczek z inkludowaniem.
Nigdy nie opanowałem templates, ale tak jak ja je sobie wyobrażam to
chyba to jest jednak coś innego.
U niego raczej chodzi o to, że w pliku jest na przykład komunikacja ze
scalakiem RFID. Ale to jak ona jest faktycznie realizowana zależy od
tego pliku h o wspólnej nazwie dla wszystkich projektów a tam jest
informacja jaki procesor i jak jest podłączony dla danej wersji płytki.

Tak. To statyczny polimorfizm. Wykonuje się go w C++ za pomocą
templates. Dokładnie tak jak opisujesz - umożliwia np. rozdzielenie
implementacji hardwareowej UART od kodu implementującego protokół bez
ani jednej nadmiarowej instrukcji asm.

To się też da zrobić dynamicznym polimorfizmem (polimorficzne klasy z
metodami wirtualnymi), ale ktoś może marudzić, że to zajmuje cenne cykle
zegarowe na indirect call. Dlatego istnieje też polimorfizm statyczny,
który nie generuje dodatkowego kodu.

Quote:
Ja (okolice 1990) emulowałem klasy za pomocą wskaźników na funkcje.

W '95 pisałem w SasC na Amidze kod C++. Wtedy był on w tle konwertowany
przez kompilator na goły C i dopiero kompilowany. Wtedy nikomu bym go
nie polecał, ale od tamtego czasu jednak troche się zmieniło. Obecnie
wiele technik pisania w C++ jest najzwyczajniej lepszych niż kwadratowe
koła wymyślane przez programistów C.

Quote:
Nie używaj więc Buildera. Nikt tego nie sprawdza.
Nie rozumiem.

Napisałeś, że nie możesz używać C++ bo używasz Buildera. A po co używac
Buildera?

heby
Guest

Tue Jul 19, 2022 1:58 pm   



On 19/07/2022 15:50, Dawid Rutkowski wrote:
Quote:
W takim razie czy SVN nie ma gdzieś szklanego sufitu, przy którym przestaje się skalować?

Pracowałem o *ogromną* aplikacją z *ogromem* programistów na jednym repo
SVN. Absolutnie nie ma szklanego sufitu. Skaluje się i działa poprawnie
do absuradlych rozmiarów kodu, branchy i zajętosci repo. Klikasz i masz.
Od razu, co chcesz.

Piotr Gałka
Guest

Tue Jul 19, 2022 2:00 pm   



W dniu 2022-07-19 o 15:09, heby pisze:

Quote:
Opisany w języku VHDL/Verilog jest *skrajnie* hierarchiczny. Tam
wszystko w zasadzie jest podporządkowane hierarchi.

Nie znam VHDL/Verilog ale coś mi mówi, że schemat realizowany w scalaku
to nieco co innego niż schemat urządzenia.

Quote:
Jak do programu dołożysz wewnątrz procedur wiele różnych goto gdzieś
do wnętrza innej procedury to program przestanie być czytelny.

To nie używaj goto Wink Proste.

Ale jak procesor ma mieć możliwość podglądnięcia czegoś w zasilaniu, na
przykład dowiedzieć się:
- jaki jest poziom tętnień (aby zasygnalizować wysychające kondensatory
na długo zanim objawi się to inaczej),
- że zapas energii w kondensatorze (po wyłączeniu) wystarczy tylko na
dokończenie rozpoczętych zapisów do flasha,
- że akumulator ma już małą pojemność i pora go wymienić,
- że ktoś odłączył akumulator więc jak będzie przerwa w zasilaniu to nie
będzie podtrzymania,
to są to właśnie połączenia w schemacie odpowiadające goto w programie.

No dobra można uznać, ze blok zasilacza ma po prostu ileś wyjść i nie są
to goto tylko hierarchiczny fragment połączony wieloma połączeniami.
Ale słownie opisany taki schemat byłby dla mnie po prostu nieczytelny.
P.G.

heby
Guest

Tue Jul 19, 2022 2:08 pm   



On 19/07/2022 16:00, Piotr Gałka wrote:
Quote:
Opisany w języku VHDL/Verilog jest *skrajnie* hierarchiczny. Tam
wszystko w zasadzie jest podporządkowane hierarchi.
Nie znam VHDL/Verilog ale coś mi mówi, że schemat realizowany w scalaku
to nieco co innego niż schemat urządzenia.

Mowa o schemacie elektronicznym. Opis *HDL ma cech pozwalajace "rysować"
w nim schematy, podobnie jak rysuje się je w Spice. Z tą róznicą, że nie
jest to płaski schemat, ale hierarchiczny. Co ułatwia analizę.

Routowanie ASICa to troche inne zagadnienie. Bliżej projektowania PCB.

Quote:
To nie używaj goto Wink Proste.
Ale jak procesor ma mieć możliwość podglądnięcia czegoś w zasilaniu, na
przykład dowiedzieć się:
- jaki jest poziom tętnień (aby zasygnalizować wysychające kondensatory
na długo zanim objawi się to inaczej),
- że zapas energii w kondensatorze (po wyłączeniu) wystarczy tylko na
dokończenie rozpoczętych zapisów do flasha,
- że akumulator ma już małą pojemność i pora go wymienić,
- że ktoś odłączył akumulator więc jak będzie przerwa w zasilaniu to nie
będzie podtrzymania,
to są to właśnie połączenia w schemacie odpowiadające goto w programie.

I dokładnie takie połaczenia istnieją też w HDL. Albo są to "referencje
hierarchiczne", które są odpowiednikiem goto i równie ostro zwalczane,
albo ciągnie się osobną magistralę przez kilka poziomów hierarchi - w
ten sposób od razu widać *kto* jest zainteresowany tymi informacjami.

Quote:
No dobra można uznać, ze blok zasilacza ma po prostu ileś wyjść i nie są
to goto tylko hierarchiczny fragment połączony wieloma połączeniami.
Ale słownie opisany taki schemat byłby dla mnie po prostu nieczytelny.

Kwestia przyzwyczajenia. Podobnie jak do vi.

Mateusz Viste
Guest

Tue Jul 19, 2022 2:38 pm   



2022-07-19 o 06:50 -0700, Dawid Rutkowski napisał:
Quote:
klienta umieszcza się tylko czujniki (na ATmega) oraz "gatewaye" -
bramki pomiędzy radiową siecią czujników (xbee albo lora) a
"internetem" - a wszystkie dane idą do serwerów firmy, tam są
przetwarzane i udostępniane przez przeglądarkę - nie ma czegoś
takiego jak "serwer u klienta".

Tzn. serwer git jest gdzieś hostowany na zewnątrz? No ok... ale
przecież z svnem można dokładnie tak samo, a nawet prościej bo klient
svn jest dużo lżejszy od gita.

Quote:
i ATmega3209, dalmierz B, inklinometr B) a nie w 8 wersjach. Pomoże
coś tutaj programowanie strukturalne - wróć - VCS - czy jednak
potrzebny jest talent?

Nie widzę związku. svn (jak i git, cvs czy inny bazaar) służy do
wersjonowania kodu w czasie, nie ma nic wspólnego z tym, jak dany jest
napisany i poskładany. Oczywiście można sobie trzymać różne "wersje"
kodu dla różnych urządzeń w różnych branchach.... ale to nie do tego
powinno służyć. Branch z założenie powinien być tymczasowy - pracuję nad
częścią kodu i po miesiącu albo wyrzucam kod bo eksperyment się nie
udał, albo merguję z trunkiem jeśli nowy moduł okazał się skuteczny.
To, o czym ty piszesz to różne "wersje" kodu dla różnych urządzeń.
Takie rzeczy raczej załatwia się ogólnopojętą abstrakcją.

Quote:
Jest sobie SVN, będący podobno ulepszonym CVS, który był RCSem
rozszerzonym o projekty (i dlatego pewnie nie był atomowy) - i jest
git - no i jeszcze kilka innych systemów. No ale są przynajmniej dwa.
Dlaczego? Czy jak Linux pisał gita to jeszcze nie było SVNu

Oczywiście, że był. Ale potrzeba Linusa jest niszowa - on potrzebował
decentralizacji i możliwości współpracy nieograniczonej ilości
nieufających sobie programistów. W tej niszy git spisuje się dość dobrze
- niestety świat uznał, że git to taki "lepszy svn" i efekt mody zrobił
swoje.

Quote:
jednym z założeń gita było - rób odwrotnie jak w CVS)? A potem git
okazał się zbyt skomplikowany dla rzeczy dużo prostszych niż kernel
Linuxa - który i tak jedzie na #ifdefach, bo inaczej i tak się nie da?

ifdefy mają się nijak do VCSa (lub jego braku).

Quote:
W takim razie czy SVN nie ma gdzieś szklanego sufitu, przy którym
przestaje się skalować?

Pewnie ma, jak każde scentralizowane rozwiązanie. Ja tego sufitu nie
znam i nigdy go nie doświadczyłem. Przy czym przy *naprawdę* dużych
projektach svn jest właśnie lepszy, bo programista dostaje tylko jedną
- aktualną - wersję a historia siedzi tylko na serwerze. W git każden
jeden ludź jest serwerem, i musi lokalnie trzymać całą historię zmian i
to wszystko synchronizować na bieżąco.

Quote:
Jak np. podobno (tfu) mssql który działa do
100k rekordów a potem się zatyka?

To chyba tylko w wersji "EXPRESS" tego wynalazku? Powody raczej
licencyjne niż techniczne, bo 100k rekordów można obsłużyć byle flat
filem. Ale nie znam MSSQL więc tylko gdybam, na codzień korzystam tylko
z Postgresa.

Mateusz

Mateusz Viste
Guest

Tue Jul 19, 2022 2:57 pm   



2022-07-19 o 07:44 -0700, Dawid Rutkowski napisał:
Quote:
To jak taki fajny ten SVN, bez wad, to po co Linus pisał gita?

To jest pytanie z serii "skoro mam traktor, to po co mi samochód".
svn i git to dwa VCSy, ale rozwiązujące nieco inne klasy problemów.

Mateusz

heby
Guest

Tue Jul 19, 2022 3:25 pm   



On 19/07/2022 16:44, Dawid Rutkowski wrote:
Quote:
Pracowałem o *ogromną* aplikacją z *ogromem* programistów na jednym repo
SVN. Absolutnie nie ma szklanego sufitu. Skaluje się i działa poprawnie
do absuradlych rozmiarów kodu, branchy i zajętosci repo. Klikasz i masz.
Od razu, co chcesz.
To jak taki fajny ten SVN, bez wad, to po co Linus pisał gita?

Pytaj Linusa.

Quote:
Może wtedy nie było jeszcze SVNa?

Bez znaczenia. Linux ma inne potrzeby niż zwarta grupa programistów w
jednej lokalizacji.

git i scvn mają inne cele. Obecnie moda jest taka, że nawet jak masz
cele do których git nie pasuje, to się go tam wciska.

Janusz
Guest

Tue Jul 19, 2022 3:29 pm   



W dniu 2022-07-19 o 15:54, heby pisze:
Quote:
Ale to jak ona jest faktycznie realizowana zależy od tego pliku h o
wspólnej nazwie dla wszystkich projektów a tam jest informacja jaki
procesor i jak jest podłączony dla danej wersji płytki.

Tak. To statyczny polimorfizm.
Guzik prawda, w tym 'h' trzyma pewnie tylko połączenia więc z

polimorfizmem to nic nie ma wspólnego, to tylko konfiguracja sprzętowa.

--
Janusz

Piotr Gałka
Guest

Tue Jul 19, 2022 3:45 pm   



W dniu 2022-07-19 o 15:29, heby pisze:
Quote:
On 19/07/2022 15:25, Piotr Gałka wrote:
Jestem bardziej przyzwyczajony do Protela i KiCada niż do tej reszty
więc szybciej uznam, że to tam jest nieintuicyjnie.
Ale nie kojarzę na czym polega ta odmienność przy selekcji.

Zaznaczanie ramką *zazwyczaj* zamiast zaznaczać, ciągnie mi elementy już
zaznaczone lub wykonuje inne akcje.

Masz rację.
W V5 na schemacie po obrysowaniu od razu ciągnęło blok. Ale, od razu jak
to zauważyłem to sprawdziłem sobie, że można się nie przejmować, kliknąć
prawy przycisk myszy i wybrać funkcję (np Copy). Blok był kopiowany a na
schemacie automagicznie wracał na swoje miejsce. Jak już to wiedziałem
to przestało mi przeszkadzać, że ciągnie. Szczególnie, że najczęściej
zaznaczam blok aby go przesunąć w inne miejsce na schemacie. Mój schemat
składa się z bloków podłączonych do szyny. Jak zaznaczam cały blok to
nic się za nim nie ciągnie tylko mogę go przenieść w inne miejsce. To
akurat robię często układając tak bloki, aby mieć miejsce (na razie
udaje mi się wszystkie schematy mieścić na jednym arkuszu).

Teraz sprawdziłem w V6 - już nie ma tego efektu ciągnięcia.

Kiedyś dawno pewnie ktoś tak zrobił. Może przyświecała mu idea, że
najczęściej zaznacza się blok aby go przesunąć. Prace głównie skupiały
się na PCB co jest oczywiście ważniejsze I jeszcze chyba trochę brakuje
KiCadowi do Protela 3 pochodzącego z 1997r. Chyba, bo nie miałem jeszcze
okazji zapoznać się dokładniej ze wszystkimi możliwościami V6.

Teraz między V5 a V6 pozmieniali format plików bibliotecznych elementów
schematu więc trochę przy schemacie też pogrzebali i może dlatego
zniknęło to ciągnięcie.
P.G.

Dawid Rutkowski
Guest

Tue Jul 19, 2022 3:50 pm   



wtorek, 19 lipca 2022 o 14:49:23 UTC+2 Mateusz Viste napisał(a):
Quote:
2022-07-19 o 00:40 -0700, Dawid Rutkowski napisał:
A na serio wdrażam się do git (w wydaniu bitbucket) - "intuicyjne" to
nie jest, ale jak zobaczyłem w wiki, że napisał to w dwa dni/miesiąc
sam Linus Torvalds, to kredyt zaufania urósł niebotycznie.
Tylko po co? Tzn. jeśli zarządzasz lub bierzesz udział w projekcie z
setkami rozproszonych programistów... no to może mieć jakiś sens. W
przeciwnym razie svn jest dużo trafniejszą opcją, bo w pełni
scentralizowaną i łatwiejszą w codziennej obsłudze.

Klient ma i wymaga.
W skrócie firma oferuje "chmurowy" system czujników.
Nie wiem dokładnie, jak to sprzedają/fakturują, ale w każdym razie u klienta umieszcza
się tylko czujniki (na ATmega) oraz "gatewaye" - bramki pomiędzy radiową siecią
czujników (xbee albo lora) a "internetem" - a wszystkie dane idą do serwerów firmy,
tam są przetwarzane i udostępniane przez przeglądarkę - nie ma czegoś takiego jak "serwer u klienta".

No i używają gita - nie wiem, dlaczego git, a nie svn - i twierdzą, że cały system chmurowy pięknie
tego używa - ale dla "projektów w C" - czy oprogramowania ATmeg w czujnikach - jakoś
nie daje rady się tego wdrożyć.
I rzeczywiście - póki co dla każdego z tych projektów jest tam tylko repozytorium plików,
które można sobie pobrać i na lokalnym dysku rozpakować, żeby otworzyć w microchip studio i skompilować.
Jak zaczęliśmy to oglądać to nawet udało się utworzyć branch - ale nie wiedzieliśmy, w co kliknąć,
żeby w tym branchu podmienić pliki.
No bo chyba nie trzeba używać tylko wbudowanego w bitbucket edytora?
Wczoraj mieli u klienta pokazać koledze, jak to się robi.
Ale do takich cudów jak merge gałęzi to pewnie jeszcze daleko, nie wyobrażam sobie, że to może dobrze działać,
ale może sam sobie życie utrudniam.
I zastanawiam się też, jak wyglądają pliki wynikowe takiego merge i jak się potem z nimi pracuje?

Np. w takiej sytuacji - jest jakieś urządzenie produkowane i sprzedawane w jakimś tam tempie,
na to tempo są robione zapasy magazynowe.
I nagle się okazuje, że przychodzi jakieś wielkie zamówienie.
Oczywiście sytuacja dodatkowa taka jak teraz - okazuje się, że producent używanego dalmierza
nagle wprowadza nowy model, inaczej obsługiwany, nie można dokupić chipów inklinometru (cokolwiek by to byłoWink
ale na szczęście jest jakiś inny - no i żeby było jeszcze ciekawiej, brakuje mikrokontrolerów
dajmy na to to ATmega324P (i nie ma też innych ATmegaxx4 - no, może są ATmega164P,
ale programu nie zmniejszysz), ale można kupić ATmega3209, bo microchip ma taki kaprys.
A wielkie zamówienie oczywiście musi być "na teraz".
No to zaczynasz produkcję z tego, co w magazynie tam jeszcze masz,
ale na hurra trzech programistów (bo szybko musi być) bierze się za robotę - jeden opanowuje nowy dalmierz,
drugi inklinometr, a trzeci przerabia wszystko specyficznie dla ATmega324P na ATmega3209 (mogłem
dla utrudnienia kazać zamienić ATmega324P na jakiegoś STMa, bo ATmeg nie ma w ogóle Wink.
W miedzyczasie jakoś trzeba sobie testować to, co się pisze - a płytki tylko w dwóch (ATmega324P, dalmierz A,
inklinometr A i ATmega3209, dalmierz B, inklinometr B) a nie w 8 wersjach.
Pomoże coś tutaj programowanie strukturalne - wróć - VCS - czy jednak potrzebny jest talent?

Takie problemy też miałem, jak sobie założyłem, że program dla uC w unifonach do systemu domofonowego będzie jeden,
niezależnie od tego, czy będzie to unifon ze słuchawką czy głośnomówiący oraz niezależnie od tego,
z jakim systemem domofonowym będzie współpracował.
Problemy oczywiście wtedy, gdy po dłuższym czasie się okazuje, że pojawia się pomysł na nową funkcję,
która ma być dodana do dawno wersji sprzętu, dla której dawno nie zmieniano programu - albo,
co jeszcze lepsze, niemożliwa do zintegrowania z inną funkcją - albo też trzeba tą zmianę zrobić
na działającym już od długiego czasu bezawaryjnie systemie (bo to jest problem, jak coś działa,
a potem nagle zonk, to jest 100 razy głośniej niż jak ludzie są przyzwyczajeni, że nie działa Wink
Dobrze, jeśli choć możesz dostać hexa, którymi programowano urządzenia na ten obiekt - i potem
szukaj wersji plików, z których tego hexa skompilowano.
Albo najbliższych - a potem szukaj w hexie różnic i wymyślaj, co zmienić w źródle, żeby tak samo się
kompilowało.

I jeszcze jedno.
Jest sobie SVN, będący podobno ulepszonym CVS, który był RCSem rozszerzonym o projekty (i dlatego pewnie
nie był atomowy) - i jest git - no i jeszcze kilka innych systemów.
No ale są przynajmniej dwa. Dlaczego?
Czy jak Linux pisał gita to jeszcze nie było SVNu (bo jednym z założeń gita było - rób odwrotnie jak w CVS)?
A potem git okazał się zbyt skomplikowany dla rzeczy dużo prostszych niż kernel Linuxa - który i tak jedzie
na #ifdefach, bo inaczej i tak się nie da?

W takim razie czy SVN nie ma gdzieś szklanego sufitu, przy którym przestaje się skalować?
Jak np. podobno (tfu) mssql który działa do 100k rekordów a potem się zatyka?
Ja z bazy (pgsql) usuwam co kilka miesięcy kilka milionów rekordów (a z drugiej tabeli
kilkanaście - 8 razy więcej - bo ktoś przeklęty chyba się w głowę uderzył i wymyślił,
że jeśli w komunikacie, oprócz innych pól, jest 8 odchyłek od rozkładu jazdy,
to będzie "postaciowo-normalnie", że dla tych odchyłek zrobi osobną tabelę,
w której będzie wpisywał identyfikator komunikatu - spory string, numer odchyłki - int,
oraz samą odchyłkę - bajt...).
Troszkę to trwa, na szczęście udało się wyszarpać opcję, aby komunikaty nie były wpisywane
do tych tabel - więc nie ma konfliktu między delete+vacuum+reindex a insertami
i system może sobie na bieżąco działać.
Ostatnio wziąłem się za inną tabelę, nieruszaną od 2015, bo miała już 30GB - a index drugie 30GB - tylko
że tu niestety nie ma takiej fajnej opcji - więc delete poszło, ale jak puściłem vacuum,
to po pół godziny zadzwonili, że system nie działa ;>
A że jest praktycznie bezawaryjny (taaa, chyba że mam urlop - to najpierw podłączą
kamery jakieś i dadzą jednej z nich IP twojego serwera - całe szczęście, że udało się podłączyć drugi
kabel, ale jak potem obserwowałem tcpdumpem, że serwer widzi pakiety ze swoim IP
i w ogóle na nie nie reaguje, to się mocno zastanawiałem, czy to mi covid rozwalił mózg
czy powaliło Linuxowi kernel - ale w końcu przyszło mi na myśl, żeby zobaczyć, jakie są MAC
w tych pakietach i sprawa się wyjaśniła - a potem znów dzwonią z rana że system zdechł - a to gdzieś
prąd mignął i jakiś router wszedł w stan nieustalony - ciekawostką było, że na pingi nie odpowiadał,
ale udało się go zdalnie zresetować - i może przez to wcześniej wydawało się, że działa w porządku)
Ufff, dobrze, że to pgsql i można vacuum momentalnie scancelować.
Potem jeszcze szybko sprawdziłem, że przy reindex tak samo się blokuje.
Tak że drogie dzieci, nie naśladujcie wujka (Wujcia Wariatuńcia Wink i pamiętajcie - nie testujemy na produkcji.
A jak nie chcecie mieć kłopotów z bazą danych, to bierzcie pgsql - tabela i index mogą mieć po 30GB
i nie wpływa to na pracę systemu (chyba że się dysk zapcha).

Żeby ostatecznie dobić mssql to pani księgowa ma na nim niestety płatnika - i chyba nigdy nie zapomnę
siedzenia nad jeziorem drugiego dnia urlopu i przypominania sobie kolejności kliknięć, żeby ten
serwer uruchomić w sytuacji, kiedy z jakiegoś nieznanego powodu (dzieje sięto co jakiś czas)
przestanie się uruchamiać przy starcie windows...
Oczywiście ten drugi dzień urlopu to był jakiś 8 czy 9 dzień miesiąca...
Więc mogło się mssqlowi odwidzieć już sporo wcześniej - ale płatnika zwykle używa się raz w miesiącu.

heby
Guest

Tue Jul 19, 2022 4:00 pm   



On 19/07/2022 17:29, Janusz wrote:
Quote:
Ale to jak ona jest faktycznie realizowana zależy od tego pliku h o
wspólnej nazwie dla wszystkich projektów a tam jest informacja jaki
procesor i jak jest podłączony dla danej wersji płytki.
Tak. To statyczny polimorfizm.
Guzik prawda, w tym 'h' trzyma pewnie tylko połączenia więc z
polimorfizmem to nic nie ma wspólnego, to tylko konfiguracja sprzętowa.

To dalej do osiągniecia statycznym polimorfizmem a nie reinkludowaniem
przypadkowych plików.

Piotr Gałka
Guest

Tue Jul 19, 2022 4:21 pm   



W dniu 2022-07-19 o 15:54, heby pisze:

Quote:
Tak. To statyczny polimorfizm. Wykonuje się go w C++ za pomocą
templates. Dokładnie tak jak opisujesz - umożliwia np. rozdzielenie
implementacji hardwareowej UART od kodu implementującego protokół bez
ani jednej nadmiarowej  instrukcji asm.

Chyba muszę jeszcze raz poczytać o templates. Dotychczas rozumiałem, że
to się głównie nadaje do opisania tego samego typu działań realizowanych
na różnych typach zmiennych. Dla każdego typu zmiennych powstaje osobny
kod (ale robi w sumie to samo tylko uwzględnia tym zmiennych).
Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie wiem
jak to się nazywa) tego templates.
Jak to zaprząc to machania na innej nodze gdy LED jest gdzie indziej
podłączony.

Quote:
To się też da zrobić dynamicznym polimorfizmem (polimorficzne klasy z
metodami wirtualnymi), ale ktoś może marudzić, że to zajmuje cenne cykle
zegarowe na indirect call. Dlatego istnieje też polimorfizm statyczny,
który nie generuje dodatkowego kodu.

To chyba nie tyle chodzi o czas na indirect call co o wkładanie do kodu
tylko tego co potrzeba.
Jak mamy 20 pochodnych danej klasy z funkcjami wirtualnymi (wszystko
opisane w jednym cpp) to kompilator potrafi zorientować się, że w tej
aplikacji używana jest ta jedna klasa i nie wstawić kodu pozostałych?
Bo jak zrobimy to w 20 plikach i będziemy ręcznie dokładać do projektu
tylko to co potrzeba to właściwie my załatwiamy to co miało 'się załatwić'.

Quote:
Nie używaj więc Buildera. Nikt tego nie sprawdza.
Nie rozumiem.

Napisałeś, że nie możesz używać C++ bo używasz Buildera. A po co używac
Buildera?

Używam C++. Nie mogę użyć C++ 11.
Używam Buildera 5 bo go kiedyś kupiliśmy i załatwia mi (łatwo i w znany
mi sposób) interfejs użytkownika.
Mam też Buildera 2010, ale używałem go tylko jak już koniecznie
musiałem. Wynikało to z tego, że on się kłócił w Win7. Dawał się
uruchomić raz. Jak odruchowo go zamknąłem to następne uruchomienie po
resecie komputera.
W pakiecie z Builderem 2010 jest jakaś biblioteka komunikacji przez
internet, którą z wielkim trudem udało mi się (z 8 lat temu - już nic
nie pamiętam) na tyle ogarnąć, aby się po UDP z naszymi urządzeniami
komunikować. Jakieś udane próby TCPIP też chyba robiłem, ale nie
rozumiem całej tej koncepcji z serwerami z komunikacją z wieloma
chętnymi. Nie miałem musu tego robić, bo ja nie piszę aplikacji dla
ludzi tylko tak na prawdę nasze programiki testowe.

Teraz przeniosłem się na Win10. Na razie tylko sprawdziłem, że Buildera
2010 można zamknąć i znów otworzyć. Ale Builder 2010 to też coś
starszego niż C++11. A pisząc poprzedni post jak chciałem sprawdzić jak
się te C++ nazywa, to zauważyłem, że oprócz 11 i 14 o których wiedziałem
to też jest już 17. Z tego wynika, że tę książkę Stroustrupa
przeglądałem między 2014 a 2017 rokiem.

Nie wykluczam, że przeniosę wszystkie moje programy do 2010.

Jak nie używać Buildera to napisz mi co mam używać.
Ale nie chcę się zajmować samemu tworzeniem interfejsu użytkownika
(dawno dawno temu, używając Turbo C++ 1.0, pisałem swoją obsługę okienek
pod DOS).
P.G.

Goto page Previous  1, 2, 3 ... 11, 12, 13 ... 22, 23, 24  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wygląda rynek pracy dla programistów STM32? Perspektywy i wynagrodzenia

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map