#programowanie #cpp
Potrzebowałem zrobić super prosty endpoint HTTP w C++, i trochę się naszukałem i natestowałem różnych bibliotek. Jedne były większe inne mniejsze, ale finalnie trafiłem na bardzo fajną bibliotekę (jeden pliczek .h):
https://github.com/yhirose/cpp-httplib

Zostawiam dla potomnych, jakby ktoś kiedyś szukał super prostej biblioteki pod restowe API.
Dodatkowo składnia trochę przypomina expressa :D
@Saly: To było po to abyś mógł mieć jeden serwer na jednym porcie obsługujący wiele niezależnych apek, bez możliwości wywalenia serwera przez którąś z apek. To wyrosło jako proste rozszerzenie modelu statycznych stron www - jeden serwer, ale każdy z userów może mieć własną stronkę i wszystkie te stronki są dostępne na tym serwerze pod jednym wspólnym adresem, a tylko różnią się ścieżką. Potem przecież ten sam model był używany w
Jak to się powinnno rozwiązać ?


@walokid: najlepiej bin searchem https://www.geeksforgeeks.org/median-two-sorted-arrays-different-sizes-ologminn-m/ ale dużo roboty i łatwo się #!$%@?ć. Alternatywnie dużo lepszym rozwiązaniem jest po prostu liniowe przechodzenie obu tablic na raz tak, żeby obrabiać elementy w porządku niemalejącym i zwroceniem odpowiedniej wartości jak dojdziemy do środka.

Jak masz algorytm, gdzie jest posortowana liczba to zawsze pomyśl o binsearchu, bo złożoność log w porównaniu do n
@Krolik: jestem tego samego zdania. Ale mowa o rozmowie rekrutacyjnej. To ma się nijak do tego co będę robił. Zawsze na rozmowach wałkowali mnie z jakiś #!$%@? przypadków, które zdarzają się jeden na milion. Albo pisania czystego kodu. A jak dostawałem robote to moja praca polegała głównie na pisaniu ifów i pętli xD
A repozytoria wyglądały jakby ktoś tam nasrał.
#cpp #visualstudio #git
#!$%@? mnie zara strzeli
Chcę zmienić nazwę funkcji, więc ją zaznaczam, ctrl+R i wpisuję nową nazwę, potem chcę skompilowac kod i nagle zonk, jakiś błąd. No to cofam zmianę nazwy funkcji, ale błąd nadal pozostał. A przed zmianą nazwy wszystko ładnie śmigało.
#cpp

Jakie polecacie książki do nauki cpp dla początkujących? Może nie całkiem początkujących, bo na studiach miałam cpp, ale to było sto lat temu, a język od tego czasu ma nową wersję. Może być po angielsku, byle aktualne.

I czy jest sens kupować Opus Magnus Grębosza?
@nostalgiwolf: najzabawniejsze jest to, że większość języków znacznie nowszych od C++ jest nadal mocno w tyle za C++ pod względem ekspresywności, wydajności, przenośności czy nawet narzędzi do debugowania. Przykładowo taki nowoczesny Kotlin jest taki nowoczesny że nie ma nawet typów unsigned, a programiści Go dopiero od roku jarają się że dostali genericsy i nadal czekają na iteratory.

Jedynym nowoczesnym językiem, który jest w stanie rywalizować z C++ jest Rust. Cała reszta
#programowanie #python #perl #c #cpp

Pytanie do programistów.

Swoje pliki konfiguracyjne podzieliłem na pakiety i napisałem sobie narzędzie do zarządzania nimi. Skrypt został napisany na szybkiego, sprawdza się, ale chciałbym go przepisać. I tutaj pojawia się pytanie.

Moje pakiety mają zależności i może znacie jakieś gotowe rozwiązanie, narzędzie, które dostając listę zainstalowanych pakietów i zależności, potrafi zrobić listę pakietów do zainstalowania? Najwięcej czasu i kodu właśnie mi zeszło na zarządzaniu zależnościami.

Efekt
@psiversum: jak siedzisz przy jednej dystrybucji to zrób sobie paczkę (np DEB czy RPM czy coś tam) z konfigiem do danej apki i daj w zależnościach tę apkę. Wtedy przy instalacji configa automatycznie zainstaluje ci apkę + zależności. np robisz desk-vim-config.deb że zależy od vim. A analogicznie robisz paczkę desk-all która zależy od desk-vim-config desk-cos-tam-config itd. Wtedy apt install desk-all i pozamiatane. Wszystko trzymasz w repo GITa.

Tylko musisz wstawić
@m_bielawski: też nie głupie. O tym nie pomyślałem wcale. Kwestia tego, czy ma to sens do zastosować tego typu, co ja potrzebuję. W trakcie np. instalacji systemu, ja mam mój skrypt, deskset dostępny. Nie wiem, jak z narzędziami, które wymieniłeś. Sądzę, że są to dość duże kobyły. Ale trzeba by się temu bliżej przyjrzeć.
#programowanie #cpp #winapi #windows #wingdi #gdi #visualstudio Cześć, mam taki edytor.
Poszukuję jakiegoś prostego przykładu, który by coś rysował nie w głównym oknie aplikacji tylko w dodatkowo utworzonym oknie takim jak tutaj po lewej.
Nie jestem pewien czy dobrze mam to zrobione, chciałbym zobaczyć przykład który pokazuje jak to się powinno robić. jedyne przykłady jakie znajduje to takie gdzie coś się rysuje w głównym oknie aplikacji. Może wiecie gdzie znaleźć taki przykład?
Pobierz ZawzietyRobaczek - #programowanie #cpp #winapi #windows #wingdi #gdi #visualstudio Cz...
źródło: Przechwytywanie
@ZawzietyRobaczek: Rozumiem, że z racji doświadczenia znajomość winapi może się przydać przy utrzymaniu jakichś starych projektów, ale ja osobiście nie trzymałbym się jednej konkretnej platformy (a zwłaszcza Windowsa) myśląc o dalszym rozwoju zwłaszcza w C++. Qt jest na licencji LGPL - możesz podlinkować potrzebne biblioteki statycznie przy zachowaniu licencji. To co potrzebujesz jest tam do zrobienia od strzała i będzie dało się zbudować pod wiele systemów.
#programowanie #cpp #pytaniedoeksperta #programista15k

Chce sprawdzić jak działa Catch2 dla C++ w Debian

przykład:

#include <catch2/catch_test_macros.hpp>

static int Factorial( int number ) {
return number <= 1 ? number : Factorial( number - 1 ) * number; // fail
// return number <= 1 ? 1 : Factorial( number - 1 ) * number; // pass
}

TEST_CASE( "Factorial of 0 is 1 (fail)", "[single-file]" ) {
REQUIRE( Factorial(0) == 1 );
@defoxe: -I /usr/include/catch2 tym zakomunikowałeś gdzie są same headery, ale nigdzie nie dałeś informacji skąd ma sobie dolinkować "mięso" do finalnej binarki. takie coś by wystarczyło jakbyś miał bibliotekę header-only. imo ten -I /usr/include/catch2/ jest niepotrzebny w ogóle, powinien tam z automatu zerkać
Mirki, mam rok doświadczenia w c++ + kilka projektów. Celuję w c++. Ile prosić na start?

Na nofliujobs i innych stronkach są niby widełki over 10k, no ale przy obecnych realiach to xD chyba nie będę tyle proponować. Z drugiej strony, spotkałem się tu z wpisem że przy małym doswiadczeniu powinno się prosić o 4k na start. Przyznam, że to chyba trochę mało jak na juniora?

Ponad rok temu dostałem propozycje roboty
Jeśli mam w językach programowania #c #cpp słowo static, to wtedy kod tych funkcji i zmiennych leci do exe do "data" tak czytałem.

A jak to wygląda w przypadku #csharp ? Jeśli mam jedną funkcje w przestrzeni nazwa, jednej klasy, to dostaje output dll i exe, i mimo, że jest static, to usuwając dll, program nie działa, czyli w csharp działa to jakoś inaczej.

Ale jak?

#programowanie #linux #windows #pytaniedoeksperta
Jeśli mam w językach programowania #c #cpp słowo static, to wtedy kod tych funkcji i zmiennych leci do exe do "data" tak czytałem.


@pyroxar: ło panie. w cpp masz z 10 różnych zastosowań i znaczeń static
- static free function
- static member function
- (inline) (constexpr) static global variable
- static variable inside function
- (inline) (constexpr) static member variable

pewnie coś jeszcze przeoczyłem. zachowują się one totalnie inaczej, nie
@IceGoral: Tutaj nie chodzi o to, czy ping z różnych miejsc jest podobny czy nie, ale o porównanie czasu oczekiwania do czasu parsowania JSONa i przygotowania kolejnego requesta. Ping pewnie masz w okolicach kilkudziesięciu milisekund. Parsowanie JSONa i przygotowanie requesta powinno zająć kilka milisekund, czy o rząd wielkości mniej. Może i uda Ci się urwać jedną czy dwie milisekundy tu i tam, ale i tak to nic nie da bo czas
Cześć,

Zrobiłem prosty system IoT bazujący na MQTT i JSONach. Serwer odbiera wiadomość, robi dispatch i przekazuje żądanie do konkretnego interfejsu, który parsuje requesta, składa odpowiedź i publikuje na MQTT. Kolekcjonowanie danych do złożenia odpowiedzi naturalnie odbywa się na różne sposoby (komunikacja po fizycznych interfejsach z czujnikami) w zależności co jest żądane. Jednak czuję, że architektonicznie mogłoby coś zagrać lepiej jeśli chodzi o budowanie odpowiedzi.
Chodzi mi po głowie stworzenie jakiegoś generycznego
@Parseval O MQTT przeczytałem 5 minut temu, ale może trochę pomogę. Nie podoba mi się w Twojej architekturze to, że zewnętrzny interfejs przenika do głębszych warstw abstrakcji. Głupia zmiana formatu wiadomości lub przeniesienie jakiegoś pola do innego requestu powoduje zmiany w serwerze, dispatcherze i kodzie modułów komunikujacych się z czujnikami.

Zewnętrzny interfejs zatrzymaj w aplikacji serwera i tam zrób logikę która będzie parsować requesty i na tej podstawie, delegować konkretne zadania do
Chodzi mi tutaj o problem czysto software'owy, tzn. jak skonstruować buildera dla tych odpowiedzi. W tym przypadku chodzi mi o jakąś klasę abstrakcyjną albo inny twór bazujący na statycznym polimorfizmie, który na podstawie tego requesta zrobi to co napisałeś w punkcie 3.


@Parseval: jak nie masz wspólnego zachowania dla wiadomości to co możesz abstrachować? Powinieneś mieć dispatchera, który robi switch po typie wiadomości przychodzącej i tak robisz logikę dla każdej wiadomości
A jednak VS ostrzega już w trakcie pisania, a przed kompilacją. Zacząłem się więc zastanawiać, czy można to jakoś sprawdzić przed wystąpieniem ostrzeżenia.


@MostlyRenegade: ale o co w sumie pytasz? Sam napisałeś, że VS pokazuje warning przed kompilacją.
Jest to rozwojowa działka?


@cordianss: Tylko jeśli jesteś masochistą xD

Tak na serio, embedded zajmuję się prawie 9 lat i nauczyłem się, że wszystko zależy od tego, czym dokładnie się zajmujesz. Moduły kernela Linuksa i grzebanie w rejestrach bare metal jest moim zdaniem najnudniejsze. Ale są również ciekawsze rzeczy, które wymagają dodatkowo wiedzy domenowej.