Cześć, Projektuję aktualnie urządzenie w oparciu o mikrokontroler STM32, które odbiera w przerwaniu pojedyncze bajty, które są zapisywane do bufora. Piszę teraz parser, który miałby operować na tym buforze. Jeśli pojawi się w nim jedna z komend, to musi zostać wykonana jakaś akcja. Mam zagwostkę dotyczącą przetwarzania danych przechowywanych w buforze przez parser, tak żeby nie obciążać nadmiarowo procka. Czy sprawdzenie zawartości bufora musi się odbywać za każdym razem po odebraniu znaku?
Cześć, Jak wygląda testowanie kodu C++ z poziomu pythona? Często w ofertach pracy dla programisty C++ spotykam się z takim wymaganiem. Czy testowanie polega na wstrzykiwaniu danych i oczekiwaniu na konkretną odpowiedź? Czy całkowicie na czym innym?
@Parseval: dużo możliwości, to co opisałeś też prawdopodobne ( ͡°͜ʖ͡°) np u mnie w projekcie zrobiliśmy symulator firmwaru na windowsa z pythonowym cli(wygooglaj embedding python in c/cpp), dzięki temu możemy testować całe api skryptami py zamiast puszczać testy na sprzęcie
Robię oprogramowanie bazujące na komunikacji DBus, wykorzystując sdbus-c++ i napotkałem problem z callbackami:
W uproszczeniu program ma działać tak, że zgłaszany jest callback od DBusa, w którym odbierane są pewne dane i wywołując metodę "push" Managera mają być przekazane do kontenera.
@Parseval: Metoda registerMethod przyjmuje typ method_callback który tak naprawdę jest:
using method_callback = std::function; Wiec możesz tam przekazać dowolny obiekt, który da się wywołać z tym parametrem, najlepiej lambdę jak kolega wyżej napisał.
Mam taki kawałek kodu jak na screenie. Dlaczego w drugiej deklaracji tablicy toEncrypt widnieją w niej stare dane, skoro po wyjściu z pierwszej pętli zostaje niszczona? W przypadku takiej samej nazwy kompilator rezerwuje pamięć pod tym samym adresem? Jak to działa?
W przypadku takiej samej nazwy kompilator rezerwuje pamięć pod tym samym adresem?
@Parseval: może tak być, ale to jest nie istotne. Korzystanie z tablicy, której wartości nie zostały wcześniej zainicjalizowane prowadzi do niezdefiniowanego zachowania i jest błędem. Nie interesuje cię, co znajduje się w tablicy po jej stworzeniu, bo może tam być cokolwiek. Powinieneś ją czymś wypełnić, np. zerami, po stworzeniu żeby jej zawartość miała sens.
Mam taki kawałek kodu jak na screenie. Obiekty klas Socket oraz Alarm muszą się wzajemnie widzieć, a w dodatku używają obiektu klasy XMLParser. Czy jest jakaś bardziej elegancka metoda na ich wzajemne "zazębienie"?
@Parseval: Jak ja to widzę 1) XMLParser powinien służyć tylko do odczytu z pliku XML, do zaczytywania alarmów i klientów zrób osobne klasy, które będą korzystały z XMLParser, roboczo Clients i Alarms 2) Socket powinno zajmować się jedynie przyjmowaniem danych z zewnątrz i ewentualnie wysyłania ich na zewnątz. wywal z tamtąd całą logikę dotycząca sprawdzania co przyszło i obsługi tego ruchu. Możesz to zrobić za pomocą wzorca
@Parseval: Bardzo dużo. Ćwicz i czytaj książki :) Jeżeli ogarniasz już użycie języka jako narzędzia (tj. wiesz co to dziedziczenie, interfejs, kiedy użyć pętli a kedy trzeba dodać instrukcję warunkową) to polecam Ci kolejno te 3 pozycje wujka Boba. "Czysty kod. Podręcznik dobrego programisty", " Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów", "Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów". Zauważyłem, że osoby które zaczynaja swoją drogę do #
Pracuję nad własnym systemem #smarthome. Szukając ciągłych możliwości rozwoju tego systemu stwierdziłem, że dobrze byłoby ustandaryzować protokół. Obecnie urządzenia komunikują się po socketach TCP, a protokół, który jest w użyciu wymyśliłem sam, są to komunikaty typu "Pomieszczenie-czujnik-wartość" itp. Czy znacie jakieś protokoły, którymi posługują się komercyjne urządzenia? Chciałbym mieć możliwość połączenia swojego systemu z gotowymi rozwiązaniami na rynku, np. od #xiaomi.
@Parseval: nie bardzo rozumiem co masz na myśli. Mqtt działa na takiej zasadzie że urządzenia podłączają się do brokera i publikują tam dane oraz nasłuchują komend pod jakimś tematem (topic). Każdy klient może subskrybować w brokerze dowolny topic, oraz publikować w dowolnym topicu.
@Parseval: Myślę że po prostu patrzysz na to od złej strony. Oddziel warstwę transportu (MQTT, Bluetooth, WiFi) od warstwy danych. Sposób w jaki te dane prześlesz jest niezależny od ich formatu. Jeśli chodzi Ci o zdefiniowanie własnego, ustandaryzowanego protokołu to po prostu musisz zdefiniować zdefiniować zawartość wiadomości jaka Ciebie interesuje. I wtedy dostosowujesz swoje systemy do tego wzorca/obiektu wiadomości na jaką ma czekać/wysyłać. Wtedy warstwy transportowej używasz niezależnie, dla jednego
Czy da się dynamicznie tworzyć wątki w #cpp? Moja klasa w polu prywatnym zawiera vector dla wątków - podczas pewnego zdarzenia chciałbym tworzyć wątek z pętla nieskończoną, a później na żądanie mieć możliwość usunięcia takiego wątku. Szukałem już rozwiązań, ale nie widziałem podobnych sytuacji. #programowanie #programista15k
@Parseval: nie pamietam jak wyglada implementacja na Windzie, ale Linux i BSD mają implementację 1:1, co oznacza, że każdy wątek to jeden proces. Oznacza to tyle, że odpalanie wątku jest z reguły bardzo kosztowne (nawet z CoW). Dodatkowo jeśli masz więcej wątków niż ncpu to i tak nie mogą one wszystkie działać współbieżnie i będą się tłuc na schedulerze. A jak do tego dorzucisz nielokalność pamięci, to często może się
@lionbest: Rozumiem, mówię tylko że przykład był tylko super uproszczony, żeby OP załapał o co chodzi z możliwością ubijania wątku przez ustawienie flagi.
Cześć Mirki, Z głównego routera (od dostawcy internetu, IP w sieci lokalnej LAN 192.168.1.1) mam zrobiony DMZ na drugi router (WAN 192.168.1.2). Pierwszy router z LAN ma poprowadzony kabel do WAN drugiego routera. Podsieć LAN drugiego routera to 192.168.200.x . Moim celem jest, żeby obydwie podsieci się widziały, jednakże nie potrafię skonfigurować poprawnie drugiego routera. Obecnie mam taką konfigurację WAN: IP: 192.168.1.2 Maska: 255.255.255.0 Brama: 192.168.1.1 (wątpliwości)
Jeśli nie potrzebujesz dwóch oddzielnych sieci to wyłącz DHCP na drugim routerze i nadaj mu wolne IP z puli pierwszego. Wtedy urządzenia podłączone do drugiego routera będą w jednej sieci z pierwszego.
Cześć Mirasy, Postawiłem #ubuntu Server 16.04. Mam podpięty ethernet, który ma skonfigurowane stałe IP. Do tego postanowiłem dołączyć bezprzewodową kartę sieciową (TP-WN722N), bo docelowo tylko na niej ma działać ten serwer. Nie potrzebuję szybkiego i pewnego łącza. Cała konfiguracja (przypisane stałego IP, łączenie się z WiFi) przebiega pomyślnie, ale w momencie gdy odłączam ethernet (eth0) to pada również wlan0. Jaka może być tego przyczyna?
@Parseval: Wprawdzie nie przyczyna, ale wlan0 możesz skonfigurować statycznie w pliku network/interfaces. Kiedyś tak konfigurowałem Wifi pod Raspbianem i było mega stabilne.
Cześć Mirki, Zrobiłem system #iot, gdzie mam wiele różnych danych, które chciałbym wyświetlać na stronie. Jako, że daleko mi od bycia webowcem mam zagwostke jak to najlepiej zrobić.
Postawiłem socket TCP/IP i serwer http w #nodejs, z którego pomyślnie odbieram dane z mojego systemu. Przykładową daną przechowuję tak:
@Parseval: longpolling - wysyłasz żądanie, a po stronie serwera nie odpowiadasz na nie dopóki nie otrzymasz nowych danych (nowe dane triggerują odpowiedź na żądanie przeglądarki). Jak odpowiesz to przeglądarka od razu wysyła nowe żądanie, które czeka zawieszone do momentu przyjścia nowych danych. W ten sposób zawsze masz czekające zapytanie.
Przesiadłem się z Sublime Text, na Visual Studio Code i do pełni szczęścia brakuje mi jednej konfiguracji, która była w sublime. A mianowicie chodzi o auto uzupełnianie sygnatur funkcji nazwami argumentów, pomiędzy którymi mogę się przełączać tabulatorem. Chodzi mniej więcej o coś takiego: https://github.com/Microsoft/vscode/issues/38887 Czy ktoś z Was wie jak to zrobić? Pobrałem kilka rozszerzeń, ale w ogóle nie widzę zmian jakie wprowadzają, podejrzewam, że źle konfiguruję. Nie wiem czy
@Parseval: ne znaju czy jest gotowa funkcja do tego, ale ctrl + strzałki lewo/prawo i przeskakujesz po całych słowach, teoretico bliżej niż dalej tego co potrzebujesz
Biorę się za projekt "inteligentnego" domu i chciałbym mieć możliwość połączenia się z nim z dowolnego miejsca, stąd pomysł wykorzystania VPN. Dowiedziałem się, że u dostawcy muszę wykupić dodatkową usługę przekierowania portów (niestety nie mam dostępu do routera, który mi udostępniają). Tutaj rodzi się kilka pytań:
1. Czy jeśli wykupię taką usługę i zostanie mi przydzielony jakiś port XXXX, to jak wygląda łączenie się z serwerem VPN, który będę miał postawiony w
@Parseval: Możesz też całkowicie olać operatora i wykupić jakiś tani VPS. Na nim postawisz sobie serwer VPN, z którym połączysz sobie komputery z sieci LAN jak również inne urządzenia z zewnątrz. Ja mam to zrobione w taki mniej więcej sposób, bo w domu mam internet LTE, bez możliwości wykupieni publicznego IP.
@grabtom_: Znajomym którzy nie mają publicznych IP zestawiłem VPNy do mojego mikrotika, potem zestawiłem im po tym VPNie tunel EoIP i działa im na tym ładnie multiroom w nc+ ( ͡°͜ʖ͡°)
#fizyka #studbaza #nauka Cześć Mirki, Mam takie zadanko: muszę wyznaczyć zależność opisującą poruszanie się pojazdu (amfibi) z punktu A do punktu B w jak najkrótszym czasie. Założeniem jest, że pojazd będzie poruszał się szybciej na lądzie niż na wodzie i będzie to ruch jednostajny. Póki co doszedłem do prostych wniosków, że pojazd musi przebyć większość drogi po lądzie i w pewnym miejscu pod odpowiednim kątem wjechać
Siema Mirki, Zgłosiłem wadę klawiatury w #xkom. Klawisz "B" miał dwuklik, czasami nie działał wcale, a czasami zdarzało mu się działać poprawnie. Rzecz jasna "Autoryzowany serwis producenta nie stwierdził występowania zgłaszanej usterki". Reklamację w #xkom zgłosiłem 26.11.18r, a odpowiedź otrzymałem 14.12.18r, czyli po dwóch tygodniach. Wiem, że w normalnym przypadku sprzedający musi zaakceptować moje roszczenia, jednakże w tym przypadku #xkom w pierwszym punkcie regulaminu zgłoszenia
Cześć Mirki, Stoję przed wyborem specjalizacji na magisterkę, bardzo podoba mi się specjalizacja " systemy autonomicznie " na teleinformatyce. Przedmioty takie jak na zdjęciu. Od 3 lat interesuje się systemami wbudowanymi i szeroko pojętą elektroniką. W chwili obecnej staram się opanować Linuxa embedded, STM32 serii F7 i pogłębiam wiedzę z #cpp. Po tej specjalizacji chciałbym pracować w automotive, jest ktoś w stanie wypowiedzieć się czy przy założeniu, że przedmioty
@xan-kreigor Uczę się ciągle na tyle ile mam wolnego czasu. Zdaje sobie sprawę, że w dzisiejszych czasach studia, to głównie papier, ale zawsze dobrze jak dadzą jakiś zarys co do pewnych zagadnień.
Projektuję aktualnie urządzenie w oparciu o mikrokontroler STM32, które odbiera w przerwaniu pojedyncze bajty, które są zapisywane do bufora. Piszę teraz parser, który miałby operować na tym buforze. Jeśli pojawi się w nim jedna z komend, to musi zostać wykonana jakaś akcja. Mam zagwostkę dotyczącą przetwarzania danych przechowywanych w buforze przez parser, tak żeby nie obciążać nadmiarowo procka. Czy sprawdzenie zawartości bufora musi się odbywać za każdym razem po odebraniu znaku?