[zeromq-dev] biicode & zeromq
Diego Rodríguez-Losada
diego at biicode.com
Tue Oct 7 19:43:11 CEST 2014
Hi Riskybiz,
I was willing to answer in this thread, as I would love to be able to
connect and receive more feedback from many of the C/C++ devs of this list,
for example wrt this post
http://blog.biicode.com/file-based-cpp-dependency-manager/
and also, because our plans include *economically rewarding open source
developers* (related to your question of the business model). We also plan
to go open-source ourselves soon.
But, it might be a little bit off-topic from the list, and nobody has
responded, so I suggest continuing the conversation in our
http://forum.biicode.com
Could you please copy and paste your question there? I will answer it as
soon as possible.
Thanks very much again!
Best,
Diego
Diego Rodriguez-Losada
CEO Biicode Innovation SL
> 2014-09-27 18:56 GMT+02:00 Riskybiz <riskybizlive at live.com>:
>
>> Diego,
>>
>> Thanks for your suggestion via the zeromq mailing list to
>> try biicode to build the zguide examples on Windows. The paragraph in
>> your blog post/tutorial <http://blog.biicode.com/zeromq-cpp-biicode/>
>> was exactly my experience;
>>
>>
>>
>> “Today, if you try to build the basic C++ client-server example that
>> ZeroMQ provides in their site, you might encounter some problems. You have
>> to guess that the C++ binding is not in the library, instead, it’s inside
>> another repo (zmqcpp). I had to google it myself to find it. You have to
>> get, configure and build the library, then setup your own project to use
>> it.”
>>
>>
>>
>> I code in C++ and have a necessity to use zeromq on Windows. Because of
>> the limited zguide explanations on how to install, setup and integrate
>> zeromq into a C++ (and Windows) code project environment it is possible to
>> go around in circles for quite some time.
>>
>>
>>
>> I began my zeromq experience by using the cppzmq language binding until I
>> had a question on how to retrieve a returned error message from a cppzmq
>> function call; it was suggested to me (on the zeromq mailing list) that in
>> order to do this I should use the raw zeromq api calls rather than the
>> binding. I now use a hybrid of C++ and raw zeromq function calls, because
>> this to me is the simplest way to understand what is actually happening;
>> though after reading the zmqcpp source last night (after a suggestion from
>> another person who commented on my recent zeromq feedback) I now see that
>> it should really be possible to get the error message via the cppzmq
>> binding, it is provided for.
>>
>>
>>
>> Having the option of using either the language binding or the raw zeromq
>> calls in a C++ environment tends to breed confusion in a beginner; there
>> are two sets of commands to memorise (and confuse), add on top of that the
>> multipart message API introduced in some examples and the zhelpers file
>> combining to offer so many commands and ways to send a message, it is very
>> easy to get lost amongst the details. In fact just working out that there
>> was the option of using a binding or the raw api calls took some
>> considerable time.
>>
>>
>>
>> Anyhow back to the matter in hand, I installed biicode and followed the blog
>> post/tutorial <http://blog.biicode.com/zeromq-cpp-biicode/>. You’ll be
>> please to hear that I successfully built hwserver & hwclient and ran them
>> in an ordinary Windows console. I now have some feedback, questions and a
>> challenge for you……..if you don’t mind? You may tell from the questions
>> that I’m not sure yet that I fully understand the magic inside biicode!
>>
>>
>>
>> 1. “Building this example is straightforward with biicode. If you
>> haven’t installed it yet, you might want WILL NEED to try the C++
>> getting started <http://docs.biicode.com/c++/gettingstarted.html> first.”
>> I downloaded and installed biicode but initially missed the need for the
>> ‘bii setup:cpp’ command which meant I got errors pertaining to not being
>> able to find “Visual Studio 12”, which was already installed.
>>
>>
>>
>> 2. Is Biicode, for want of a better term; cross compiling? Taking
>> code intended for one platform and compiling it for another? That would be
>> incredible? Or is it more the case of specifying the language differences
>> between compilers using #include statements such as the difference between
>> sleep() and Sleep(). N.B. I think that Sleep(n * 1000) would be more
>> appropriate to convert milliseconds to seconds.
>>
>>
>>
>> #include "diego/zmqcpp/zmq.hpp"
>>
>> #include <string>
>>
>> #include <iostream>
>>
>> #ifndef _WIN32
>>
>> #include <unistd.h>
>>
>> #else
>>
>> #include <windows.h>
>>
>>
>>
>> #define sleep(n) Sleep(n)
>>
>> #endif
>>
>>
>>
>> 3. Where is biicode downloading dependency files from? Have I got
>> this right, is it downloading dependencies? If it is downloading why can
>> biicode automatically find some of the necessary files yet others are to be
>> uploaded by the user? For example where is this location #include
>> "diego/zmqcpp/zmq.hpp"
>>
>>
>>
>> 4. How does biicode know which version of zeromq to use for a
>> given zguide example?
>>
>>
>>
>> 5. Is the biicode using an intermediate language interpreter in
>> the fashion of Java or C#. Is the application code it produces native?
>>
>>
>>
>> 6. Tell me if I understand biicode correctly. Say, for example, I
>> wrote my own message handling server in C++ using the current stable
>> version of zeromq. When finished I add the C++ source to biicode (Could
>> this be on my local machine and/or on the biicode cloud?) which then
>> analyses and retrieves its dependencies, right? When later, and after a
>> newer version of zeromq is released, I want to integrate my server in a
>> different code project then I can do so from Visual Studio (Express
>> versions also??) with a simple; #include "server" directive and without
>> having to specify include-files or linker-instructions or other similar
>> Visual Studio project configurations on which the server code depends? The
>> new project will compile as would normally be expected into a single
>> functioning application file, no extra DLLs or such?
>>
>>
>>
>> 7. Does biicode integrate with Visual Studio or does it stand
>> alone?
>>
>>
>>
>> 8. There was a breaking change to ROUTER socket identities between
>> zeromq versions. From the zguide: “As a historical note, ZeroMQ v2.2 and
>> earlier use UUIDs as identities, and ZeroMQ v3.0 and later use short
>> integers.” I believe the Paranoid-Pirate-Pattern
>> <http://zguide.zeromq.org/page:all#Robust-Reliable-Queuing-Paranoid-Pirate-Pattern>
>> example from the zguide was affected by the change because it uses this
>> function to set the identity:
>>
>>
>>
>> From zhelpers.hpp
>>
>> // Set simple random printable identity on socket
>>
>> //
>>
>> inline std::string
>>
>> s_set_id (zmq::socket_t & socket)
>>
>> {
>>
>> std::stringstream ss;
>>
>> ss << std::hex << std::uppercase
>>
>> << std::setw(4) << std::setfill('0') << within (0x10000) << "-"
>>
>> << std::setw(4) << std::setfill('0') << within (0x10000);
>>
>> socket.setsockopt(ZMQ_IDENTITY, ss.str().c_str(), ss.str().length());
>>
>> return ss.str();
>>
>> }
>>
>>
>>
>> As a challenge are you able to demonstrate (tutorial style) how to use
>> biicode to make this example functional with its correct dependencies on an
>> older version of zeromq?
>>
>>
>>
>> 9. I’m intruiged by your revenue sharing plan. Are you able to
>> explain who pays whom and for what product or service?
>>
>>
>>
>> 10. Can someone, not a figurehead (joke! You’d have to know the
>> story!) but someone esteemed, in the zeromq community please tell me if
>> this is the right place for this conversation or whether it should be
>> continued elsewhere?
>>
>>
>>
>> Many thanks,
>>
>>
>>
>> Riskybiz.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20141007/3f3a61f0/attachment.htm>
More information about the zeromq-dev
mailing list