#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
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
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ę p-----ć. 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
  • Odpowiedz
@JamesJoyce: jak ten czat jest naprawdę inteligentny, to do ostatniej chwili nie przyzna że chce nas ludzi wygryźć z tego interesu ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
  • Odpowiedz
@placebo_: Nie wiem, który łatwiejszy, bardziej zastanawia mnie skąd weźmiesz materiały do nauki Rusta jeżeli nie potrafisz programować w innym języku.

Po za tym ile Rust ma plusów? C++ ma dwa.
  • Odpowiedz
@placebo_: w Rusta jak początkujący to na jakimś spokojnym serwerku bez PvP żeby się na lajcie budować a c++ to nie znam takiej gry
  • Odpowiedz
#cpp #visualstudio #git
k-----a 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.
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak powinna wyglądać struktura nowoczesnego projektu C++?
Podoba mi się to, otwarty standard, ale nie wiem, czy powinienem słuchać...
Może pójdę klasycznie src i include. Ale to wygląda na starą szkołę, czy ktoś zna dobre praktyki?
Będę używał modułów i szablonów, więc c++20 w górę.
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1204r0.html

#linux #c #cpp #programowanie #programista15k
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
@Szalaputka: Jaki masz problem ? Z kodem, komunikacją czy jakiś sprzętowy ? Może będę w stanie Ci pomóc, parę lat zajmowałem się projektowaniem i programowaniem takich ustrojstw ;)
  • Odpowiedz
#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
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
  • 0
@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ć.
  • Odpowiedz
#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
ZawzietyRobaczek - #programowanie #cpp #winapi #windows #wingdi #gdi #visualstudio Cz...

źródło: Przechwytywanie

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ZawzietyRobaczek: czy jest jakiś szczególny powód, dla którego bezpośrednio piszesz w winapi? W sensie ja wiem, że każdy ma swoje tam preferencje, ale są chyba prostsze sposoby na pisanie okien.
  • Odpowiedz
@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.
  • Odpowiedz
#programowanie #programista15k #cpp #ui #gui Czego mogę użyć do przyjemnego zrobienia GUI i zeby to połąćzyć z kodem CPP w Visual Studio? Do tej pory robilem po prostu interfejs w WinAPI. I jeszcze chodzi o to żeby skompilowany plik wykonywalny był jeden w sensie nie potrzebował linkować dodatkowych biliotek ktore np. musza być w folderze. Wiec zeby sie dało zlinkować statycznie do
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@horus666: żeby spełnić założenia LGPL musisz pozwolić na podmianę libki qt. albo przez dynamiczne linkowanie(które op odrzuca), albo przez dostarczenie źródeł, żeby sobie samemu zlinkować
  • Odpowiedz
@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ć
  • Odpowiedz
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
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Na nofliujobs i innych stronkach są niby widełki over 10k, no ale przy obecnych realiach to xD


Ale patrz na stanowisko junior developer

Mówię zatem teraz 7000 zł, no ale nie wiem sam.


To tyle mów (brutto) najwyżej złożą Ci niższą ofertę.
  • Odpowiedz
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
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
  • Odpowiedz
@IceGoral: Moim zdaniem niezależnie od języka, czas oczekiwania na response i tak będzie dominował czas przygotowania i wysłania requesta, a potem parsowania response. Czyli na jedno wychodzi. A napisać coś takiego chyba i tak najszybciej w Pythonie.
  • Odpowiedz
@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
  • Odpowiedz
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 buildera, ale
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
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
  • Odpowiedz
#technologia #cpp #jezykc #visualstudio
Hej, programiści, czy da się w VisualStudio sprawdzić rozmiar alokacji na stosie przez funkcję/metodę?
W trakcie pisania kodu vs zwrócił mi uwagę (C6262), że funkcja alokuje na stosie powyżej 16 KB, więc coś musi na bieżąco to monitorować. Da się to gdzieś podejrzeć?
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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ą.
  • Odpowiedz
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.
  • Odpowiedz
✨️ Obserwuj #mirkoanonim
Przewijało się pewnie kilkadziesiąt razy takie pytanie, ale może ktoś z #cpp i #gamedev będzie miał jakieś świeższe dane. Krótko o mnie: przebranżowienie po niecałych 2 latach z #plc do #gamedev, studio polskie (~100 osób), ale kapitał zagraniczny. Obecnie stuknęło mi 2 lata na pozycji juniora programisty. Czas na awans, bo i skillsy miękkie się dobrze przetransferowały z kariery
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach