Projekt "droga do zawodowego programisty C"

Projekt "droga do zawodowego programisty C"
gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
8

Hey! Jestem studentem pierwszego roku informatyki na Politechnice Lubelskiej, który już jakiś czas (kilka lat) siedzi w programowaniu. Próbowałem różnych technologii i dziedzin IT, ale obecnie zdecydowałem się wyspecjalizować i "ograniczyć" do głównie jednej - programowanie embedded.

Pod tym postem będę opisywać daily progress, czyli co zrobiłem w danym dniu w kierunku zostania zawodowym programistą embedded. Będzie to swoisty "dziennik rozwoju".

Wiem, że embedded jest to nisza, więc jeśli nie uda mi się znaleźć pracy stacjonarnej, zdalnej lub wystartować na Upwork'u to podejmę się jej w innej technologii - przy pierwszej lepszej okazji, a następnie będę cały czas szukał i "czuwał" nad pracą w embedded.

Mam w planach do nauki i przerobienia następujące "zagadnienia":

  • Język C
  • Język C++
  • Osdev
  • Jądro Linuxa
  • Algorytmy, struktury danych
  • programowanie ARM, STM32
  • Linux ("użytkowanie"), bash
  • trochę Pythona (podstawy) do skryptowania
  • Git
  • Jakieś podstawy telekomunikacji, Ethernet, TCP, IP
  • CAN, I2C, SPI
  • FreeRTOS
  • Architektura AUTOSAR
  • Przetwarzanie sygnałów
  • Boost
  • STL
  • wielowątkowość i jej koncepty
  • Docker
  • Inne rzeczy związane z embedded

Część z tych rzeczy już znam w jakimś stopniu, więc niektóre "zagadnienia" będą szły szybciej, inne wolniej.

W ramach nauki tego wszystkiego chciałbym realizować różne projekty z "tego", udzielać się na stack overflow, prowadzić ten dziennik postępu oraz wrzucać kontrybucje do open-source (np. jądra Linuxa).

Kilka linków:
https://github.com/Grzegorz-Malyska
https://stackoverflow.com/users/12242086/grzegorz-ma%c5%82yska

Pozdrawiam, gjm

Zobacz pozostały 1 komentarz
gjmreborn
Człowiek zmądrzał trochę :PP
K5
@kq: nie przejrzałem jeszcze całego wątku ale skąd wiedziałeś, że to ta sama osoba?
kq
Nie jestem pewien czy w tym wątku, czy później u Gyna na IRC-u podał swoje dane ;​)
E2
nauczysz się tego wszystkiego i skończysz z depresją
szweszwe
  • Rejestracja:ponad 11 lat
  • Ostatnio:3 dni
  • Lokalizacja:Kraków
  • Postów:1694
0

Nie myślałeś o założeniu kanału na YT?

gjmreborn
Szczerze to nie :( nie umiem "into-filmy" :((
Silv
Nauczyć się.
VE
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 5 godzin
  • Postów:363
0

Bez kanału na yt i bloga może się nie udać

grski
  • Rejestracja:ponad 9 lat
  • Ostatnio:8 miesięcy
  • Postów:245
3

Przydatna rada: dokumentuj swój postęp. Pisz teksty na bloga, artykuły i tak dalej. Dużo ci to pomoże, realnie wpłynie na szanse zatrudnienia. Ucząc innych, uczysz siebie też. Powodzenia.

Poza tym, nie żebym zniechęcał, ale...

screenshot-20191031151121.png


Napisałem książkę - Programowanie z Górskim: Junior Python Developer
Pora na następny krok na drodze po pierwszą pracę w it i WCALE-NIE-MITYCZNE #programista40k? Zapraszam.
edytowany 1x, ostatnio: grski
Zobacz pozostałe 4 komentarze
grski
@Silv popularny ostatnio mem, który znaczy plus minus tyle, że ktoś znowu robi to samo, coś znowu się powtarza. np. kolejny projekt nauki autora wątku czy też po prostu generalnie kolejny temat z cyklu biore się za naukę!!!!, który kończy swą aktywność po tygodniu (zazwyczaj, może tutaj tak nie będzie)
Silv
OK, dzięki.
LukeJL
@Silv ja mam takie skojarzenia z tą sceną, że jak straciłem sejwy z GTA:SA to musiałem przechodzić misje od nowa (to chyba pierwsza misja czy jakoś tak) i było to wkurzające trochę. Swoją drogą ciekawe, czy fakt, że akurat wtedy bohater mówi "ah, shit here we go again" nie jest jakimś easter eggiem (mrugnięciem oka do ludzi, którzy zaczynają grę od nowa, bo np. stracili sejwy)? (chociaż jak grałem w to, to nie zwróciłem uwagi, że tam jest taki tekst).
Silv
@LukeJL: ach, seria GTA. Kiedyś grałem, teraz całkiem mam inne spojrzenie. :)
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
2

Jako ten, który szukając technicznych rzeczy misi się przekopać przez 20 bezwartościowych blogów kanałów YT itp zanim znajdę coś co ma wartość merytoryczną, proszę cię nie powiększaj internetowego śmietniska.

Jeśli chodzi o rekrutację więcej sensu ma konto na github ze zrealizowanymi projektami. Żaden rekruter nie będzie oglądał YT, albo czytał bloga kandydata (nie znam takiego przypadku).
Jak człowiek od technicznej części zobaczy konto github to jest spora szansa, że zajrzy tam na 5 minut. Bloga raczej nie będzie trawił.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
LukeJL
Re: Żaden rekruter nie będzie oglądał YT, albo czytał bloga kandydata (nie znam takiego przypadku). - Mało tego. TechLead został wywalony z Facebooka, bo miał vloga na Youtube.
PL
Na youtube jest obcja subskrybowania wartościowych kanałów.
grski
  • Rejestracja:ponad 9 lat
  • Ostatnio:8 miesięcy
  • Postów:245
2

@MarekR22: albo czytał bloga kandydata (nie znam takiego przypadku). A ja z kolei miałem co najmniej dwie rekrutacje do firm, które normalnie byłyby poza moim zasięgiem sądząc po cv, na które dostałem się dzięki blogowi.


Napisałem książkę - Programowanie z Górskim: Junior Python Developer
Pora na następny krok na drodze po pierwszą pracę w it i WCALE-NIE-MITYCZNE #programista40k? Zapraszam.
MarekR22
rekrutacja na juniora vs na tech lead. W którym przypadku jest sens zaglądać na blog-a?
grski
Nie rozumiem jaki jest sens porównania? Oczywiście, że tech leada prześwietlisz pod każdym możliwym względem bo może cały projekt położyć. myślę, że porównanie powinno być na zasadzie: dwóch podobnych juniorów, jeden dodatkowo pisze bloga drugi nie. Czasem na rozmowę nawet nie trzeba zapraszać, bo patrzysz na blogu co tam wypisuje i wiesz, czy warto rozmawiać, czy nie.
MD
Ja spotkałem się z sytuacją, że podczas rozmowy odkopano mojego bloga (nierozwijanego od roku:P) o którym kompletnie zapomniałem. Rekrutacja na mida/seniora, a osoba rekrutująca poświęciła chwilę, aby zerknąć w google na moją osobę. Trochę to w sumie przerażające, natomiast podczas rozmowy wyciągnięte bardzo na plus.
TD
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:380
3

Zapewne wszystko zależy od osoby czytającej CV. Ja osobiście też nie jestem fanem tworzenia jakiejkolwiek treści nie wnoszącej nic nowego (czy to blogi, filmy, książki, konferencje). Sam fakt posiadania bloga też nie musi pomagać, bo kto ma czas sprawdzić co kandydat tam wypisuje. Choć pewnie znajdzie się ktoś kto to doceni.

Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 15 godzin
3

Na PolLub prawdopodobnie odpalimy (jako Grupa .NET) w tym semestrze albo projekt, w którym będzie element IoT do zaprogramowania, albo przynajmniej kilka wykładowarsztatów z IoT. Raczej Arduino/ESP8266 + Azure, ale może cię zainteresuje. Śledź https://www.facebook.com/grupanetPL/

10 dni temu robiłem warsztaty z Gita ;)

BTW, sporo rzeczy, które masz na tej liście, będziesz miał w ramach różnych przedmiotów na studiach.

IR
czy ja wiem czy sporo będzie miał z tego? Algorytmika jest na średnim poziomie, bo to typowe klepanie algosów z neta, bez głębszego zrozumienia. Więcej algorytmiki nauczyłem się klepiąc zadania na hackerranku, aniżeli robiąc coś na uczelni. Cpp na uczelni też leży mimo wszystko, jak widziałem tam cpp11, to już byłem szczęśliwy. Niektórzy prowadzący niestety się zatrzymali w rozwoju dość mocno :/ Mikroklocki faktycznie może się czegoś nauczyć, kwestia że więcej da mu budowanie łazika w microchipie, jeśli faktycznie w tym kierunku będzie się chciał kierować.
IR
Linux, jeśli trafi na sensownego prowadzącego, to można faktycznie się można czegoś nauczyc, jeśli nie trafi na kogoś sensownego, to nie nauczy się absolutnie nic. Z tego co wiem, to chłopak ma background javowy, więc raczej linuxa ogarnia na tyle, że niewiele zyska tak naprawdę.
E9
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:6
0

Computer science student which is actively looking for a web development job (Java, JS). Interested also in embedded programming.

To emby czy jednak webowka ?

gjmreborn
Only emby, rzeczywiście opis trochę mylący, trzeba będzie poprawić :P
gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0

Dzień 1 projektu

Zaczynamy naukę C od książki "Język C. Szkoła programowania. Wydanie VI".

Co dziś zrobiłem?

  • Utworzyłem to repozytorium (https://github.com/Grzegorz-Malyska/MojePublikacjeIT), które będzie moim swoistym "blogiem", gdzie będę opisywał rzeczy, których się nauczyłem; 1 zagadnienie per 1 publikacja.
  • Zacząłem przerabiać powyżej wymienioną książkę.
  • Co przerobiłem z książki? Rozdziały od 1 do 4, wraz z pytaniami kontrolnymi i ćwiczeniami.
  • Jakie zagadnienia przerobiłem? Historia C, parę basic rzeczy o kompilatorach i linkerach, standardy języka C, struktura programu w C, definiowanie własnych funkcji, typy danych, operator sizeof, #define, const, trochę o printf() i scanf(), podstawy stringów

Wszystko dziś poszło gładko z racji tego, że już od dawna znałem te zagadnienia. Nie mniej jednak trochę sobie poćwiczyłem i "odświeżyłem" wiedzę :P

Pozdrawiam

gjmreborn
Wstępne plany na jutro (formalnie dziś :P ): dalej książka z C i coś zrobić w Linuxianie. Warto rzucić okiem na ten mój projekt: https://github.com/Grzegorz-Malyska/Linuxian
TM
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 3 lata
  • Postów:15
0

Cześć. Fajny temat, będę go śledził.

Masz już wybraną dystrybucję Linuxa do "użytkowania"? I jeśli tak to pytam z ciekawości jaką i dlaczego.

gjmreborn
Hey! Ubuntu. Z powodu takiego, że od jakiegoś czasu używam tego Linuxa, a czemu zacząłem akurat jego używać? Dlatego, że najbardziej popularna, spróbowałem i "zaskoczyło" XD
AO
  • Rejestracja:około 9 lat
  • Ostatnio:dzień
  • Postów:183
2

To wszystko co napisałeś w pierwszym poście jak najbardziej ok choć nie wiem czy docker jest często w embedded używany, na pewno na plus jest znajomość działania tego na czym się docker opiera - namespaces, cgroups etc.. Do tego dołóż jeszcze umiejętność używania oscyloskopu, miernika i lutownicy, znajomość bootloaderów np. U-Boot i znajomość assemblera - przynajmniej czytanie, wbrew pozorom raz na jakiś czas się przydaje. Oczywiście nie wszystko naraz, IMO najlepiej jakbyś jak najszybciej poszedł do jakiejś pracy w embedded.

Ja też pracuję w embedded, rynek w PL niewielki tym bardziej jeśli nie lubisz Windowsa i będziesz chciał na co dzień pracować na Linuksie przynajmniej na hoście ale praca może być ciekawa.

EDIT: nie żebym ja to wszystko umiał :) nawet połowy nie umiem ale wiem że jest potrzebne

edytowany 2x, ostatnio: aoeuidhtn
gjmreborn
Mógłbyś rozwinąć embedded z Windowsem?
AO
Nienawidzę Windowsa. Byłem ostatnio na rozmowie, pracują na C166 - tylko Windows. Keil - tylko Windows. W poprzedniej pracy pracowaliśmy z dostawcami chipów z Tajwanu, różne toole np. programatory tylko na Windowsa. W obecnej pracy też trafiłem do projektu z Windowsem i Visual Studio "bo klient tylko Windowsa ma" ale tak narzekam że albo się zwolnię zaraz po tygodniu albo mnie przeniosą do innego projektu. Różne firmy embedded w ogóle nie używają Linuksa, np. AVL, pytałem się o to. Miałem rozmowę z Intelem, oczywiście na stanowisko Linux programmer i dowiedziałem się że
AO
na co dzień to bym miał Windowsa na swoim kompie a z Linuksem to bym się mógł zdalnie łączyć. Choć to się trochę zmienia, np. ST zaczął oficjalnie dawać st-link na Linuksa jakoś w lutym, jeden z dostawców z USA dał nam programator na Linuksa po tym jak go zapytaliśmy czy ma ale szansa używania Windowsa jest niestety wielka. Mniejszy problem jak do użycia pojedynczego toola, gorzej jak do codziennej pracy.
gjmreborn
Ja w sumie też siedzę na Windowsie a używam tego basha linuksowego (headless ubuntu) :D
S0
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:1
4

jako osoba która też studiuje na polibudzie lubelskiej 3 rok, styczność z embedded ma od 5 lat i pracuje komercyjnie 4 miesiąc dam ci takie protipy

po pierwsze - ogarnij C11 i leć w STM32, najlepiej na tym wyjdziesz w kwestii przyszłości. Nie wiem na którym roku jesteś, na 3 będą uczyć atmegi32 na zajęciach i będzie wstęp z asma a potem (jak prowadzący pozwoli xD) C.
Jak chcesz łatwiejszą drogę, to lecisz w C++a i Arduino, STMy też mają wsparcie.
Co prawda, STMy da się też w czystym cpp kodzić używając HALa, ale trzeba troszkę pokombinować czasami żeby to wyszło tak jak powinno, szczególnie jak się używa CubeMX'a.

co do jajka linuxa - zależy od tego w jakie embedded celujesz, ja pracuję na STM32 i Arduino więc jeśli też planujesz zostać na etapie mikrokontrolerów i nie bawić się w osdev, to nie ma większego sensu żebyś sie zagłębiał w działanie kernela linuxowego. FreeRTOS wtedy ci się zdecydowanie przyda, ale raczej nie linux.

STL C++owy w embedded ci się nie przyda, bo nie jest przystosowany do działania pod embedded i jak już masz użyć jakiejś libki standardowej to raczej nie tej oficjalnej, tylko jakieś klony które mają znacznie mniejszy code footprint.

docker/multithreading - j/w, nie w mikrokontrolerach. docker to jeszcze jak cię mogę, jak chcesz robić CI na symulatorze albo inne magiczne [CIACH!], ale takie rzeczy się robi raczej jak masz za dużo czasu i potrzebujesz kodu ostro obłożonego testami.

olso zapraszam do mojego koła naukowego Microchip, jak chcesz poznać szczegóły to pisz do mnie tutaj: https://www.facebook.com/steelph0en1x (albo na discordzie pollubu jak tam jesteś)

IR
XD hla na niskopoziomówce to rak, bo null materiałów, już lepiej asm czystego byłoby uczyć xD i asm jest tylko u lacha w sumie na mikroklockach jest, reszta w C pozwala to pisać xD
Ktos
Nie wiem czy akurat na 3. roku będzie teraz niskopoziomówka, bo się znacznie zmienił program studiów od tego roku - a kolega jest na pierwszym. Ale to tak tylko nawiasem.
JJ
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 lata
  • Postów:11
1
edwi-92 napisał(a):

Computer science student which is actively looking for a web development job (Java, JS). Interested also in embedded programming.

Popraw to "which" na "who", bo aż uszy bolą przy czytaniu ;-)

E9
to raczej do autora powinno być ;-), ale jesteś juniorem, trzeba Wam wybaczać :D
gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0
gjmreborn
Lekkie uzupełnienie wczorajszego dnia: Z książki przerobiłem rozdziały od 5 do 8, wraz z pytaniami kontrolnymi i ćwiczeniami. Jakie zagadnienia przerobiłem? Pętle, operatory jakieś basic, rzutowanie, następne rzeczy z funkcji, podstawy tablic, instrukcje sterujące, trochę funkcji typu rodzina ctype.h, getchar(), putchar(), jakieś podstawowe z math.h typu fabs() i kilka innych, przekierowanie strumieni (stdin, stdout, stderr) z terminala, różnica pomiędzy IO buffered a unbuffered. Oczywiście 99% jak nie wszystko z tego już dobrze znałem :P
gjmreborn
Mniej więcej plan na dziś: dalej ta książka z C, chciałbym kilka godzin (1/2) na odpisywanie na stack overflow poświęcić, a także dalej pokodzić Linuxiana (link gdzies na poprzedniej stronie w tym temacie)
Shizzer
  • Rejestracja:prawie 8 lat
  • Ostatnio:4 miesiące
  • Postów:231
2

Pamiętam Cię z postów o nauce OSDevu i pamiętam też, że w sumie jesteś w podobnym wieku do mnie i też jesteś na drodze "zdobywania expa". Dlatego napiszę Ci przede wszystkim, żebyś się szybko nie zraził i nie poddawał się. Skoro znasz już podstawy programowania w C i czytasz książkę, która tych podstaw uczy to z jednej strony dobrze, bo zawsze znajdziesz tam coś nowego - jakieś szczegóły. Ale jest też druga strona medalu, a mianowicie prostota i szybkość przyswajania tych rzeczy.

Zmierzam do tego, że na początku nauka jest dość łatwa i przyjemna, ale potem zaczynają się schody. Po Twoich wcześniejszych postach (jeśli @Vaversky to Twoje konto, a myślę, że tak biorąc pod uwagę maila podanego na stacku) wnioskuję, że walczyłeś sam ze sobą, żeby w ogóle skupić się na samym zdobywaniu wiedzy. Nie popełnij tego błędu drugi raz i po prostu się ucz, nie patrz na innych i nie przestrasz się czegoś trudniejszego niż podstawy.

Powodzenia! Będę śledził Twój projekt ;)


MrMadMatt
  • Rejestracja:ponad 9 lat
  • Ostatnio:2 dni
  • Postów:373
1

Jeżeli studiujesz na Politechnice Lubelskiej to poczekaj do trzeciego roku gdzie pojawiają się systemy wbudowane i mikro-kontrolery. Jeżeli Pan Wojtek i Zbyszek #pdk nie zabiją w Tobie ciekawości do systemów wbudowanych: wtedy będziesz wiedział na pewno że to twoja miłość a nie przelotny romans i możesz traktować to poważnie. ;) Twój wątek wygląda trochę tak jak: złapałem zajawkę i teraz niech każdy o tym wie, tak czy siak. Powodzenia xD

gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0

Dzień 3 projektu.

Kontynuujemy naukę C z książki.

Z książki przerobiłem rozdziały od 9 i 10, wraz z pytaniami kontrolnymi i ćwiczeniami.
Jakie zagadnienia przerobiłem? Ostatnie informacje o funkcjach i ich prototypach, resztę informacji o tablicach, wszystko o wskaźnikach.

Większość informacji już znałem, jednak dowiedziałem się o literałach złożonych i sposobach definiowania tablic (tych, których nie znałem).

Udało się coś napisać na stack overflow:

Ciekawe linki:

Zrobiłem trochę rzeczy w Linuxianie (link do commita: https://github.com/Grzegorz-Malyska/Linuxian/commit/bfad528b98748f3f38af5a9eb4c04f86b9ff103d), głównie refaktoryzację podpinania ISRów do IDT.

Będę to ofc robił dalej w ramach projektu.

gjmreborn
Plan na dziś: duuużo pokodować Linuxiana (już od 7 kodzę XD), coś z książki do C i jak starczy czasu to popisać coś na stack overflow.
Shizzer
Ten "ciekawy link" to coś dla mnie. ;) Dzięki
Tenonymous
Zmień te książkę, za dużo tekstu - Ansi C od K&R zaoszczędzi Ci sporo czasu. :P
Tenonymous
  • Rejestracja:ponad 7 lat
  • Ostatnio:18 dni
  • Postów:425
3

Wyznaczyłeś sobie bardzo dużo rzeczy do nauki, a żeby zostać programistą embedded wystarczy C, Git, Algorytmy, podstawy SO i matematyki :P

Zobacz pozostałe 8 komentarzy
Satanistyczny Awatar
A gdzie struktury danych zjadłeś, ty susle niebieski? xD
Tenonymous
Jakoś podpiąłem to pod "C". Nie wiem czemu, ale dla mnie ciężko mówić o znajomości języka bez znajomości struktur danych. Nawet jak C jest tutaj ubogi, to jednak wraz z nauką tego języka pasowałoby sobie napisać przynajmniej te podstawowe. :P
Satanistyczny Awatar
@gjmreborn matematyka żebyś nie umarł w butach jak trzeba by było generator liczb pseudolosowych przeportować z jednej architektury procesora na inną i nie stworzył czegoś o entropii kostki do gry albo jeszcze mniejszej bo nie rozumiesz co się dzieje. xD
Tenonymous
Portować to tam jeszcze - gorzej jak trzeba go samemu napisać.
Satanistyczny Awatar
Częściej raczej się przenosi niż pisze od podstaw. Jak już się pisze od podstaw to przeważnie wie się co się robi.
gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0

Dzień 4 projektu.

Dziś większość dnia to kodowanie i praca nad Linuxianem.

Co zostało zrobione?

AM
Absolutnie zgadzam się z póżniejszym postem @Satanistyczny Awatar, chcesz się czegoś nauczyć to dodawaj jakies swoje malutkie featury, a nie leć przez codebase zmieniając formatowania/nazwy zmiennych/castowania/consty.
Satanistyczny Awatar
  • Rejestracja:ponad 6 lat
  • Ostatnio:około godziny
  • Postów:699
2

A umiesz uzasadnić "po grzyba" te zmiany?

EDIT 1
Zwłaszcza takie kwiatki jak wywalenie Copyrightów?

EDIT 2
Czytałeś w ogóle https://www.kernel.org/doc/html/v4.10/process/coding-style.html

edytowany 2x, ostatnio: Satanistyczny Awatar
Zobacz pozostałe 3 komentarze
Satanistyczny Awatar
Jaki zatem jest cel wywalenia rzutowań na (void *)? Umiesz uzasadnić tą decyzję?
gjmreborn
Z tego co pamiętam, każdy wskaźnik można niejawnie rzutować na void *. Ale pewien nie jestem :(
Satanistyczny Awatar
No to przebadaj temat i wyciągnij wnioski. Zmiany rzeczy których nie rozumiesz do końca, a które wydają ci się błahe mogą cię zagrzebać na kilka miesięcy w debugowanie i to takie w którym nie będziesz dosłownie wiedział co się dzieje nawet jakbyś przeleciał instrukcje wykonywane na bieżąco przez JTAG. Szczególnie lubi się to trafiać kilka miesięcy po wprowadzeniu tych zmian przy okazji jakichś niepowiązanych wprost pierdółek. Na tak niskim poziomie twoim przyjacielem jest niedowierzanie sobie i pokora wobec zastanego kodu. Tutaj nawet kompilator potrafi być twym wrogiem.
WeiXiao
Niby dojrzałe środowisko, a kompilator potrafi być wrogiem :D
Satanistyczny Awatar
Takie są uroki niepisania od razu w języku maszynowym.
gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0

Dzień 5 projektu.

Dziś większość dnia to kodowanie i praca nad Linuxianem.

Co zostało zrobione?

Ogólnie to na ten moment priorytetem w projekcie jest przelecieć, zrozumieć i mieć "obcykany" cały code base - orientować się w nim bez problemu.

Postaram się za niedługo dodawać nowe feature'y do projektu.

Satanistyczny Awatar
  • Rejestracja:ponad 6 lat
  • Ostatnio:około godziny
  • Postów:699
0
  1. Czy to się buduje?
  2. Czy to działa?
  3. Jakie wnioski z pytania o rzutowanie rzeczy typu 0xDEDEDE na (void *)?
gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0
  1. Tak
  2. Tak
  3. Implicit cast warning :(
Satanistyczny Awatar
  • Rejestracja:ponad 6 lat
  • Ostatnio:około godziny
  • Postów:699
0

Jakieś przemyślenia na temat tego nieszczęsnego punktu 3? Lub po prostu pytania?

gjmreborn
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Lublin
  • Postów:16
0

IMO dlatego, że musimy jasno dać znać kompilatorowi, że chcemy dany integer potraktować jako adres (wskaźnik) - duże ryzyko popełnienia błędu i customowa sytuacja.

edytowany 1x, ostatnio: gjmreborn
Satanistyczny Awatar
  • Rejestracja:ponad 6 lat
  • Ostatnio:około godziny
  • Postów:699
2

Są i inne powdy - czy też przypadki, które mogą być powiązane mniej lub bardziej z tym co piszesz np. takie rzeczy jak
modele ILP32 oraz LP64
Przykładowy tekst o tym - polecam zapoznać się z rozbieżnościami między nimi:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.cbcpx01/datatypesize64.htm

Ogólnie przy pisaniu (bądź rżnięciu z internetu i książek) kodu na tym poziomie trzeba uważać na takie rzeczy jak

  • endianness
  • wielkości typów zależne od architektury

A całą epopeję można by pisać na temat jakim jest kolejność upakowania danych w strukturach i "dopełnianie" pól - tutaj też bywa zależnie od sytuacji powiązanie z powyższymi rzeczami jeśli zatrudnisz do tego wszelkiej maści rzutowania, przepisywania i kopiowania wartości. Jak zaczniesz robić przemeblowania w strukturach - pamiętaj że może mieć to konsekwencje dla bibliotek i aplikacji.

Shizzer
  • Rejestracja:prawie 8 lat
  • Ostatnio:4 miesiące
  • Postów:231
3

Pod to co wyżej napisał @Satanistyczny Awatar można podpiąć jeszcze security. Ja na przykład siedzę w low level sec (wciąż się uczę oczywiście) i mogę Ci napisać, że takie rzutowania albo nierozważne operowanie pointerami lub np. nieuważne operacje na intach mogą prowadzić do poważnych błędów, a skutki są potem takie, że atakujący może robić w systemie co chce. (przykładowo)

Także jeśli chcesz pracować w embedded to zainteresuj się choć trochę jak pisać w miarę bezpieczny kod. Możesz mieć farta, że firma, w której będziesz pracował będzie zatrudniała researcherów, którzy takie błędy będą znajdować odpowiednio wcześnie, ale jak nie będziesz miał tego farta to może być nieciekawie. Ogólnie C jest bardzo error prone i na każdym kroku trzeba myśleć co się robi.


Satanistyczny Awatar
Z ciekawości zapytam, siedzisz - w sensie edukujesz się czy pracujesz?
Shizzer
Dopisałem w nawiasie, że wciąż się uczę, a chciałbym kiedyś pracować
P9
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 2 miesiące
  • Postów:144
3

Inicjatywe podziwiam itd., ale naprawdę zamierzasz pisac tu post codziennie? Nie lepiej zalozyc bloga i tam sie przeniesc zamiast robic taki watek tasiemiec?

andijaw
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:NML
  • Postów:23
0

Czy do nauki języka C na potrzeby programowania AVR (bo chyba lepiej czyste AVR niż Arduino) bardziej nada się książka Pana Praty czy Francuza?

B2
ja polecam tez na start jezeli chodzi o AVR to ksiazki Kardasia
Ulrich
Ja Polecam ARM(STM32). Obecnie AVR prawie nie uzywa sie w komercyjnych projektach. ARM sa trudniejsze, ale na poczatek mozna uzyc gotowych driverow, pozniej warto pogrzebac samemu aby zobaczyc co w srodku siedzi. Jest bardzo duzo poradnikow w interenecie i ksiazek dotyczacych ARM.
B2
@mat3usz: moze w nowych projektach nie, ale jest sporo starych projektow na AVR, ktorych nie oplaca sie portowsac na STM32.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)