Using Coroutines with Boost.Cobalt
1:23:39
Introduction to Coroutines
1:23:14
2 ай бұрын
Refactoring Tool Roundup
1:36:16
9 ай бұрын
Boost String Algorithms Library
1:11:46
Porting from MFC to wxWidgets
1:49:28
Parsing with Boost Spirit X3
2:02:12
Promise-Cpp with Boost.Beast
1:44:34
TCP/IP Networking with Boost.Asio
1:33:36
Writing Functors with Boost.Lambda2
1:11:08
Messaging with 0MQ (ZeroMQ)
1:19:17
Жыл бұрын
Cerealization and RPC with Cap'n Proto
1:53:20
Serialization with Boost.Serialization
1:09:24
Adding a REST API with Pistache
1:02:38
Writing a Network Client with POCO
1:20:05
Пікірлер
@LordMoopCow
@LordMoopCow Күн бұрын
I respect Utah. Fuck those woke states.
@stevenbroshar7948
@stevenbroshar7948 3 күн бұрын
Going over the info on github is a bit lame ... especially since the github info is not very good. You should create new and better content.
@ВикторГиль-ф2ф
@ВикторГиль-ф2ф 24 күн бұрын
How to spend a lot of time for stupid testing, which actually tests near nothing.
@UtahCppProgrammers
@UtahCppProgrammers 23 күн бұрын
When you blow up a 200 million euro rocket (google Ariane 5 software failure) because you didn't test your code, you won't think it's stupid.
@ВикторГиль-ф2ф
@ВикторГиль-ф2ф 23 күн бұрын
​@@UtahCppProgrammers For understanding stupidness of UT you have to know mathematics a bit. Inventor of this garbage had no experience in programming. Each additional "if" statement will at least double required test sequences (it is simplified). If you have 32 "if", you will need to create 4294967296 test sequences. If you will write each sequence (to pass each "if" branch) by hand every 10 seconds, you will need more than 1300 years ( 24 hours per day, 7 days per week, no sleep). How many tests you run before, 10 000 or 100 000 ? For simple program with 32 "if" it will be 0.0002% of required tests. So such testing tests nothing and guarantees nothing. In reality you have more than 32 "if" ( from BIOS, OS, API, your code...)... Additionally, your tests are program too and will have errors and requires own testing...
@cosmintofan
@cosmintofan Ай бұрын
Should target system dropdown be populated automatically when configuring cross-platform -> connection manager -> ssh connections ? Or do i need to have them specified in the CMakeSettings.json file for configurations list using remoteMachineName field ? I only have Local Machine on my project even after i configured an ssh connection to a linux box i want to build on
@ElementaryWatson-oxo
@ElementaryWatson-oxo Ай бұрын
Frankly, C++ should have standardized stackful coroutines (fibers), those fit naturally in C++ philosophy. The stackless coroutines are foreign to C++, they are non-composable, with lots of limitations, difficult to use. I think they will fade away after fibers are standardized.
@miguelofre
@miguelofre Ай бұрын
awesome!!!! thank a lot
@SamWhitlock
@SamWhitlock Ай бұрын
33:40 I think the explanation for this is a bit different. It looks like the template params are <ReturnType, InputType>. When you co_await the generator, 2 things happen. First is that you input the next param value (4 for the first case) and get back the return value (0.5) in the calling code. The coro itself gets the input value (4) as a result of the co_yield statement (which is a return + co_await iirc) and does the next calculation. In other words, this basically operates like a "delayed multiply by 0.1", which you can pump as many values in as you want unless it's 0, then it finishes.
@UtahCppProgrammers
@UtahCppProgrammers Ай бұрын
The author of the library helped me solve my problem of getting multiple values out of my generator in a unit test. See the discussion here: github.com/boostorg/cobalt/issues/202#issuecomment-2361341146
@klemensm
@klemensm Ай бұрын
Thanks, I am happy the library is getting some attention.
@seheyt
@seheyt Ай бұрын
Hear hear! I've only had 2 or so questions on StackOverflow, but I've just created the tag for it :)
@SamWhitlock
@SamWhitlock 2 ай бұрын
Highly looking forward to the Cobalt discussion and symmetric transfer. That is still one of the confusing aspects of coros!
@UtahCppProgrammers
@UtahCppProgrammers 2 ай бұрын
As I understand it, communicating into and out of the coroutine is done via your promise_type and your client wrapper type.
@SamWhitlock
@SamWhitlock 2 ай бұрын
@@UtahCppProgrammers kzbin.info/www/bejne/bWnRqKBverVlaaMsi=AehmJWRfOyVcktyd this recent cpp now talk went over it. However, this is one of the these topics that I need to see a dozen different ways to finally get it, so if/when you cover it, I'm definitely watching too!
@julianyumanji1159
@julianyumanji1159 2 ай бұрын
Is there a discord for Utah CPP?
@UtahCppProgrammers
@UtahCppProgrammers 2 ай бұрын
There was a C++ discord server, I think, but none of the links work for me. I am on the C++ slack instance.
@esjay3562
@esjay3562 2 ай бұрын
Just 3 years later it kind of seems WinRT is dead. The documentation lacks good examples, Xaml-based apps for unpackaged Win32 C++ apps is not a topic anymore. VS2022 does not include WinRT project templates anymore. An so on. That's MS.
@RoboGameOfficial
@RoboGameOfficial 21 күн бұрын
It does include WinRT project templates? You just need to install the UWP package
@kentma7516
@kentma7516 4 ай бұрын
wy microsoft bothered to have init_apartment explicitly
@BuluChowdhury-cl8ci
@BuluChowdhury-cl8ci 4 ай бұрын
Hi Sir, How i can send POST request from http client ?
@UtahCppProgrammers
@UtahCppProgrammers 4 ай бұрын
Use verb::post www.boost.org/doc/libs/1_85_0/libs/beast/doc/html/beast/ref/boost__beast__http__verb.html
@grzesiek1664
@grzesiek1664 4 ай бұрын
The little IC you are talking about at 1:50 is a DC-DC 3V3 regulator. The QSPI memory is the other little chip (the one between RP2040 and BOOTSEL button).
@UtahCppProgrammers
@UtahCppProgrammers 4 ай бұрын
Thanks for the correction; I don't work with these chips regularly enough to recognize them on-the-fly accurately!
@rk40155
@rk40155 4 ай бұрын
Fantastic, this helped me out in my GUI application reading Data from Arduino, thank you so much!
@thegoodtgg
@thegoodtgg 5 ай бұрын
Compared with QtWinMigrate, wxMfc seems not to be a sound out-of-box library. I am developing a plugin for rhino, which using MFC. Because of I am not familar with MFC, I try to using modal dialogs created from wxWidgets. However, it seems not to work well. When the dialog "ShowMoal". the application not blocked by modal dialog.
@guilhermecorrea3604
@guilhermecorrea3604 5 ай бұрын
Thanks for the content! It's been really helpful. However I feel like I'm having some gaps and struggle to grasp some concepts, like I'm missing some base. Could you point me to some references to learn about networking in C++ (preferable using boost) that are more beginner friendly and explain some concepts in detail?
@UtahCppProgrammers
@UtahCppProgrammers 5 ай бұрын
This video on Boost.Beast builds on several earlier videos using Boost.Asio for network programming. Take a look at our network programming playlist to find them: kzbin.info/aero/PLJDO7P5jAoXzQvuy7UjFoDSdSy_FLqfOf
@guilhermecorrea3604
@guilhermecorrea3604 5 ай бұрын
@@UtahCppProgrammers thanks for the response!
@TheOnlyAndreySotnikov
@TheOnlyAndreySotnikov 6 ай бұрын
Boost Spirit X3 has been broken since version 1.78, and nobody is willing to fix it. I had to switch to the old Boost Spirit in my projects. Check issue 707. In brief, Spirit X3 is useless.
@UtahCppProgrammers
@UtahCppProgrammers 6 ай бұрын
Boost.Parser just passed review and was accepted into boost. Boost.Parser is essentially a successor to Boost.Spirit X3. I intend to do a video on that library in the future.
@TheOnlyAndreySotnikov
@TheOnlyAndreySotnikov 6 ай бұрын
@@UtahCppProgrammers Thank you for the news. I'll check it.
@TheOnlyAndreySotnikov
@TheOnlyAndreySotnikov 6 ай бұрын
@@UtahCppProgrammers I tried it and found a couple of bugs. However, it looks promising. I especially like that for structure initialization, one doesn't have to use BOOST_FUSION_ADAPT_STRUCT.
@DerekZhang-p1z
@DerekZhang-p1z 4 ай бұрын
@@UtahCppProgrammers Hi, in which version can I use Boost.Parser?
@__hannibaalbarca__
@__hannibaalbarca__ 7 ай бұрын
I make one for myself use to wasting time to trying understand what functions and classes do.
@Lancelot69
@Lancelot69 7 ай бұрын
Does anybody have an example of integrating this into Waf build system?
@verymuchgoodgaming132
@verymuchgoodgaming132 7 ай бұрын
Great stuff, thanks for the thorough guide to iwyu!
@palomine21040
@palomine21040 7 ай бұрын
just found this channel while learning about boost. Thanks for covering!
@rhtcguru
@rhtcguru 8 ай бұрын
If you printed out the ctx.run() return value in your main() would it be the count for each time you received a stream that ended in newline?
@victorrico-z4b
@victorrico-z4b 8 ай бұрын
An IPv6 address is 128 bits not 64. You stated it was 4 x 16 bits. You may be thinking of the host portion of the address, but you'd need to know the full address to communicate.
@UtahCppProgrammers
@UtahCppProgrammers 8 ай бұрын
Thanks for the correction!
@nirlevy4091
@nirlevy4091 8 ай бұрын
Anyone knows what extension enables the auto replace with actual type at: kzbin.info/www/bejne/bIfCnYmQr7tpd6c ?
@UtahCppProgrammers
@UtahCppProgrammers 8 ай бұрын
That's coming from ReSharper for C++, a commercial add-on for Visual Studio. You can get a free 30 day trial here: www.jetbrains.com/resharper-cpp/ It's my favorite C++ productivity tool!
@AlfredoCorrea
@AlfredoCorrea 8 ай бұрын
Great video with historical value. Arcane tools for arcane C++ programming style.
@UtahCppProgrammers
@UtahCppProgrammers 8 ай бұрын
C++ backward compatibility means that 20 year old libraries are still useful!
@UtahCppProgrammers
@UtahCppProgrammers 8 ай бұрын
Use discount code CPPOnlineSLC20 for 20% off the CppOnline conference February 29th through March 2nd, 2024! cpponline.uk
@UtahCppProgrammers
@UtahCppProgrammers 9 ай бұрын
Source code: github.com/LegalizeAdulthood/nntp-poco
@thegoodtgg
@thegoodtgg 9 ай бұрын
Is there code repository available?
@UtahCppProgrammers
@UtahCppProgrammers 9 ай бұрын
I've added a pinned comment with a link to the source code.
@UtahCppProgrammers
@UtahCppProgrammers 9 ай бұрын
Source code on github: github.com/LegalizeAdulthood/comicsdb-capnproto
@sabbirshubho3135
@sabbirshubho3135 9 ай бұрын
Is it possible to get the source code github link?
@UtahCppProgrammers
@UtahCppProgrammers 9 ай бұрын
I've added a pinned comment with the link.
@movewithwerner
@movewithwerner 10 ай бұрын
Thanks for the very interesting talk! Do you have experience with porting modeless dialogs from MFC to WxWidgets? We have a lot of modeless dialogs in our application where the dialog is interacting in a quite complex way with other windows (CAD drawings). Does the mentioned mfc sample handle modeless dialogs and the corresponding event handling? We are not sure, if this could work nicely if we have MFC dialoges in a WxWidget application? Thank you very much!
@UtahCppProgrammers
@UtahCppProgrammers 10 ай бұрын
The main difference between dialog handling in wxWidgets vs. MFC is the way data validation and updates take place. wxWidgets uses validators and doesn't have a one-to-one facility corresponding to DDX/DDV in MFC. Otherwise, it doesn't matter where the dialog is modal or modeless.
@movewithwerner
@movewithwerner 10 ай бұрын
@@UtahCppProgrammers: So do you think MFC dialoges (modal or modeless) can be integrated/merged with a wxWidget application. Could there be problems with the different event systems / dialog handling? We have a fairly large program code with more than 800 dialogs and there is a fairly strong interlocking of our interface with the viewing windows. So do you think it makes sence and is it possible to migrate the code in chunks and it is possible to release versions of the program during the migration with both MFC and wxWidgets dialoges? Or is it too error prone and it is better to eliminate all MFC code before. What would take some time of course... Thank you very much for your opinion!
@__hannibaalbarca__
@__hannibaalbarca__ 10 ай бұрын
Hi, Yeah, I don't know there are equivalent of ncursor in windows, I just make my console library only from escape code and I m more than 1000 lines .
@UtahCppProgrammers
@UtahCppProgrammers 10 ай бұрын
pdcurses, as shown in the example code and described in the video, is a curses library for DOS/Windows.
@scotthinton4610
@scotthinton4610 11 ай бұрын
I find the compiler errors utterly incomprehensible. It's a cool library, but after a few months of using it, I end up spending more time debugging the library than I ever would manually wiring things. I think it also promotes sloppy design because you don't think about your dependencies as much. That's probably true of every DI framework though.
@Aj_codes
@Aj_codes Жыл бұрын
#including <boost/asio.hpp> header generate bunch of errors in my code.
@Aj_codes
@Aj_codes Жыл бұрын
i have installed boost, i dont know if there is something else i should do
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
​@@Aj_codes This presentation is about the boost string algorithm library not asio. I will add build instructions to the README on github.
@TheEddie581
@TheEddie581 Жыл бұрын
Excellent! I write wxWidgets mainly from Mac OS X but porting applications to Win32 is never a problem. wxWidgets is terrific and much nicer to use than Qt.
@RolandNSI
@RolandNSI Жыл бұрын
I really appreciate the detailed, precise description on how to use this tool. Most of the times you find half assed information, that is not to the point, and "assumes" you know the "trivials". Thank you again, you helped me configure the clang formatter for visual studio 2019. ( which to my humble opinion will still not help us a lot with code clarity because the team is using CamelCase1IllIlliterateDung as standard... great_job_on_explaining_dear_human_fellow.
@workflowinmind
@workflowinmind Жыл бұрын
This video is a statement on how good ZMQ's doc is!
@lalitsharma9002
@lalitsharma9002 Жыл бұрын
i am calling the async_write like this //created a buffer for my data which is around 5000 bytes and passed this in lemda, so that it will not destroy till the callback invoked. std::unique_ptr<char, DeleteChar> ptrMesssage(new char[strMessage.length() + 1],std::default_delete<char[]>()); memset(ptrMesssage.get(), 0, strMessage.length() + 1); memcpy(ptrMesssage.get(), strMessage.c_str(), strMessage.length()); boost::asio::mutable_buffer objBuff = boost::asio::buffer(ptrMesssage.get(), strlen(ptrMesssage.get())); ws_.async_write(objBuff, [this,ptrMesssage = std::move(ptrMesssage)](beast::error_code ec, std::size_t transfer) { }); actually the issue which i am facing right now is that my program is consuming more memory means ptrMesssage are created much faster then its destroy. For example:- i have send 1000 messages using async write but i received the call back for 600 messages. rest 400 are in the processing. This gap between the number of creation of message and deletion is continuously increasing as the application continue running. How should i hanlded this.
@__hannibaalbarca__
@__hannibaalbarca__ Жыл бұрын
Is there asm-like for GPU as CPU.
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
PTX (Parallel Thread eXecution) is the assembly language for use with CUDA. When we compiled the CUDA C++ code with nvrtc without linking, the intermediate representation was PTX. The returned data is PTX text that you can examine in the debugger. PTX reference documentation: docs.nvidia.com/cuda/parallel-thread-execution/index.html
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
Example code: github.com/LegalizeAdulthood/nvrtc-example
@johnkost2514
@johnkost2514 Жыл бұрын
Awesome!
@MegaVikas91
@MegaVikas91 Жыл бұрын
Is ZeroMQ a good alternative to dbus?
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
I am not familiar dbus, but this article compares them for the Pub-Sub pattern. Hope that helps. hackaday.io/project/279-sonomkr-noise-monitoring/log/86364-zeromq-vs-dbus-for-pub-sub-pattern
@debduttahalder1375
@debduttahalder1375 Жыл бұрын
Is there a recipe example available for restbed that can be used for Yocto projects?
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
Are you referring to the embedded linux distro? www.yoctoproject.org/ It's just linux, so normal linux development practices would apply.
@kltechhub
@kltechhub Жыл бұрын
Fantastic examples and very comprehensive explanations! Thanks you so much for making these videos!
@bzdzgwa
@bzdzgwa Жыл бұрын
One thing you haven't mentioned. If the program waits for a data to send to the server (from a user for example) and there are no asynchronous read/write operations pending, you recommended using executor_work_guard, to keep io_context.run() method busy. But what if the server closes the connection at that moment. How the program will know about this?
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
If you are attempting to send/receive data to/from a server and it closes the connection, your handler is invoked with an error code indicating the connection was closed. TCP/IP has a specific sequence that the socket goes through in the protocol in order to indicate that one side has closed the connection cleanly. If the other end of a socket just crashes, then you get an error code when you attempt to read or write on that connection, possibly after a timeout period (e.g. you are waiting for acknowledgement of sent data and it doesn't arrive before the timeout).
@bzdzgwa
@bzdzgwa Жыл бұрын
If I wanted to be notified immediately if the server closed the connection gracefully, should I always have async_read in the background? Will the async_read handler be invoked immediately with an error in such case?
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
@@bzdzgwa In TCP/IP, when one side closes the connection a FIN packet is sent. So if the server closes the connection, you would get this notification as an error code the next time you attempt to do anything with the connection. That's how I understand it. My advice is to write a simple program and test it out to find out what the exact behavior will be. You can use the sample code I wrote in the linked github repository to try this.
@LavinOficial
@LavinOficial Жыл бұрын
thanks <3
@bzdzgwa
@bzdzgwa Жыл бұрын
In the serial port example, what will happen if the incoming data doesn't have a newline character? Asio::streambuf will be allocating more and more memory and will eventually run out of it? Or the handler will be invoked with an error?
@UtahCppProgrammers
@UtahCppProgrammers Жыл бұрын
In my example, I control the data that is being generated on the serial port, so I know that it will contain a newline without causing large amounts of buffering on the receiver side. If the amount of data coming in is unknown, you can call async_read_some instead of async_read_until and it will tell you how many bytes it read. (async_read_until also tells you how many bytes were read, but we didn't need that information directly in my example.)
@АртемЗебелян-ш9р
@АртемЗебелян-ш9р Жыл бұрын
Can you help me with source of knowledges about boost::asio. Now I do my course work. And the main task is to create client-server application to send messages between clients. So, where I can read more about this topic. I ask this question because there are a lot of sources, but information there is not clear.
@alang.2054
@alang.2054 2 ай бұрын
😂