:)
Well, I have NPAPI plugin, and I need convert it to Native Client (NACL).
I have all C/C++ code, but It has not made by me. So I' just a beginner about C/C++ plugins.
I have been reading about NACL, and starting with the tutorial and first steps, but I think it could be a long process to start all codification since beginning.
So, My question is if someone knows how could I compile the same c/c++ code from the NPAPI plugin to NACL, or if I have to codify all from scratch.
I'm developing for windows.
Thanks for help! and sorry for my bad english :)
I clarify: I have been searching too much about how to compile NPAPI code to NACL in Google and here, but I have not found a way that can help me to get my goal. So, i'm asking for someone who knows how to update some particular plugin made in NPAPI to the Google's Native Client
There is no direct translation from NPAPI to NACL. You'll need to start from scratch by learning how NACL works and figure out how to build one, and then you can migrate pieces of the NPAPI plugin as needed into it. Much of it may not be possible, as mentioned. You may need a javascript interface layer to open the files as well, it's hard to say.
NACL is not a replacement for NPAPI, it's a different interface that provides the ability to compile C/C++ code that can run sandboxed in a browser. There is no direct path for porting between them.
Related
I am contemplating designing a framework to allow for one C++ code base to become a desktop application and a web app for most major platforms (Mac OS, Windows, Linux, and possibly Android). I have decided Qt would be best for desktop builds, however I am conflicted between Google Native Client and Wt for the Web App part.
Wt code may be more easily compatible with the Qt code, however I heard Wt is actually AJAX output so I do not know how much this will impact performance (I plan to develop a game engine with this so I need performance).
On the other hand NaCl, is more, well... native. But it seems to be a mess, especially with the JS integration, I just want to write in C++ and be done with it. Additionally I don't know how compatible it would be with Qt.
I have been researching this for weeks and I do not know much about either. So it really boils down to:
A: Could I literally (or pretty much) replace all the W's in the front of the names of all Wt objects with Q's and have it be Qt compatible code?
B: Is Wt native at all, and how fast does it execute at run time (I cant seem to find an answer to this)?
It would be possible to run Wt as a NaCL application as well, in fact, that would combine the best of both worlds. Wt itself (and its dependencies) build fine with the NaCL toolchain, it's only a connector library that is missing currently. There was an opening for a GSOC project to implement last year, but it didn't happen.
I am a somewhat novice programmer (by which I mean I am proficient in many programming languages, but have never taken formal classes) and would like to heavily mod the Chromium web browser for my own purposes. I would need to change the UI significantly, as well as make somewhat major changes to the V8 embedded javascript engine, and I would like to know where I can start. I guess what I really need to know is:
Are there certain programming conventions I should observe to better understand how Chromium works?
Are there any guides/tutorials on how the file system used for the source works?
Are there any guides/tutorials on how to edit/interpret the Chromium source code specifically?
Should I try to mod Chromium, or should I try to build my own web browser using WebKit and V8?
I am also considering basing by browser on FireFox. Would that be easier to get started with? Since I plan on learning as I work, I would like to be able to understand the
Any help would be greatly appreciated, as well as any gems of wisdom from your own, personal experiences.
P.S.: I'm running Ubuntu 11.10, if that makes a difference at all.
The Chromium.org site has some resources :
General http://www.chromium.org/Home
Building on Ubuntu : http://code.google.com/p/chromium/wiki/LinuxBuildInstructions
Conventions : http://www.chromium.org/developers/coding-style
Contributing : http://www.chromium.org/developers/contributing-code
(Sounds RTFM-y, I know, sorry)
That said, you're probably better of tweaking an existing browser codebase rather than creating one "from scratch" - a task which I would assume to be daunting at least.
There is some libraries that lets you run C++. So, it is it possible to run a game that uses directx full mode screen?
Google is developing a tool to allow this kind of thing via Chrome. It is called Chrome Native Client, or NACL for short. http://blog.chromium.org/2010/05/sneak-peek-at-native-client-sdk.html
In general, no. Most online games are written with Javascript, Flash, the newly hatchedd HTML5 and similar technologies. Perhaps C++ integration is possible on some level, but you definitely cannot write a browser-hosted game purely and entirely in C++.
it could also be done with an ActiveX control. ActiveX only works in IE. there are Netscape plugins that work in other browsers. so make a solution that contains both. you need a book on ActiveX/COM/OLE. Better yet, take a class if you can find one, you will learn far more, because COM is not an easy subject to just read about and then really do - versioning is a big problem.
nope, not supported in firefox. but read this: http://www.google.com/chrome/intl/en/webmasters-faq.html#activex
some people may have activex controls disabled. if this is the case, your game will not run. you will have to tell the user that they will need to change their security settings in IE. you can get feedback from the object element in javascript as to whether or not the activex loaded. there is code out there for that.
http://msdn.microsoft.com/en-us/library/7sw4ddf8%28v=vs.85%29.aspx
examples are all over the internet.
I have a few years experience programming c++ and a little less then that using Qt. I built a data mining software using Qt and I want to make it available online. Unfortunately, I know close to nothing about web programming. Firstly, how easy or hard is this to do and what is the best way to go about it?
Supposing I am looking to hire someone to make me a secure, long-term, extensible, website for an online software service, what skill set should I be looking for?
Edit:
I want to make my question a little more specific:
How can I take a bunch of working c++ functions and port the code so I can run it server side on a website?
Once this is done, would it be easy to make changes to the c++ code and have the algorithm automatically update on the site?
What technologies would be involved? Are there any cloud computing platforms that would be good for something like this?
#Niklaos-what does it mean to build a library and how does one do that?
You might want to have a look at Wt[1]. Its a C++ web framework which is programmed more or less like a desktop GUI application. One of the use cases quoted is to bring legacy apps into the web.
[1] http://www.webtoolkit.eu
Port the functions to Java, easily done from C++, you can even find some tools to help - don't trust them implicitly but they could provide a boost.
See longer answer below.
Wrap them in a web application, and deploy them on Google App-Engine.
Java version of a library would be a jar file.
If you really want to be able to update the algorithm implementation dynamically, then you could implement them in Groovy, and upload changes through a form on your webapp, either as files or as a big text block, need to consider version control.
The effort/skillset involved to perform the task depends on how your wrote your code. If it is in a self-contained library, and has a clean (re-entrant, thread safe) API, you could probably hire a web developer (html/php/asp etc) to write the UI interface to the library for a relatively small cost. The skills required would be dependant on the technologies you wanted to use. For Windows development I would suggest C#/ASP. The applicant would require knowledge of interfacing with native libraries from a managed language. This is assuming that you dont mind the costs of Windows deployment for your application.
On the otherhand, if the library is complex or needs to be re-written to support the extensibility you are looking for, asking here will not get you much.
BTW: here is a great article on Marshalling if you chose to implement using C#/ASP
http://msdn.microsoft.com/en-us/magazine/cc164193.aspx
First, DO NOT USE PHP :D
I used it for some projects (the last one with symphony framework) and i almost shoot my self !
If you are very familiar with C++, ASP .NET could be a good solution because if you like C++ you are going to love C#.
Any ways, I personally use Ruby on Rails for 6 months now and I LOVE IT. I won't write you a book here but the framework is pure gold !
The only problem is that Ruby is a very special language. You will probably be a bit lost a the beginning. But as every one you will learn to love it.
But that was only for the server side. Indeed, there 3 technologies you won't be able to avoid if you want to start to develop web applications.
HTML, CSS and JavaScript are presents every where. This is why i'm thinking you should start by HTML and CSS then JavaScript (with jQuery).
When you've got some basics with these 3 technologies you should be able to choose the server side language.
But you've got to tell you one thing, it's not going to be easy !
PS : Ruby on Rails uses HAML and SASS. These 2 languages replaces HTML and CSS you should have a look at them quickly because they are awesome.
I want to create a web application that runs with very little RAM and I think C++ can help me achieve that.
Now, many people say C++ is unsuited for web development because:
there is no easy string manipulation
is an unsafe language (overflows, etc)
long change / build / test cycles
etc.
But I'm sure the C++ community have found ways to alleviate all those (maybe not the compile time) however since I'm not a regular so it is hard for me to put a value on what I find in Google.
So I'm asking for some guidance. I would appreciate if you share what works, what tools/libs are current and alive. What strategies can help with web dev in C++? FastCGI or embedded server (Asio / POCO / Pion / etc.)? How do you address security concerns?
Thanks a lot for any help
Have you looked at http://www.tntnet.org/. They have created a... well let me cut and paste from their website:
Tntnet is a modular, multithreaded,
high performance webapplicationserver
for C++. To create webapplications
Tntnet has a template-language called
ecpp similar to php, jsp or mason,
where you can embed c++-code inside a
html-page to generate active content.
The ecpp-files are precompiled to
c++-classes called components and
compiled and linked into a shared
library. This process is done at
compiletime.
I've used it and it has quite a small overhead plus it has screamingly fast dynamic page generation. Makes PHP, Ruby etc snails in comparison because with tntnet you are running compiled C/C++ code.
There's the Wt Project. It uses a paradigm similar to Qt's signals/slots.
There is nothing wrong with trying to build a web app in C++. It's actually a lot of fun. What you need is a:
Templating system
A CGI lib
A database API wrapper, most likely, to avoid dealing with something like the low-level MySQL API
A logger
ATL Server is a library of C++ classes that allow developers to build internet based applications.
ATL Server. It's open source too! And of course there is always ISAPI. Ah, the bad old days. :)
In your other question you mention that your embedded system is openwrt. As this router firmware already comes with a embedded web server (for it's administration UI), why don't you use that for you app as well?
Our web app backend is in C++ via CGI and we use Clearsilver templates along with the HDF that comes with it.
Give us some more hints about what you're trying to do.
You can write a good old-fashioned cgi program in C++ easily enough, and run it with FastCGI. We used to do that all the time.
You could write a C++ program embedding a lightweight HTTP server as well.
Both of them are much bigger PITAs than using something like perl or ruby.
So for why C++?
Update
Okay, got it. The main thing about FastCGI is that it avoids a fork-exec to run your CGI program, but it is a little bit different API. That's good, but you still have the problem of handling the HTTP stuff.
There are, however, several very lightweight HTTP servers, like Cherokee and Lighttpd. In similar situations (building web interfaces for appliances) I've seen people use one of these and run their C/C++ programs under them as a CGI. Lighttpd in particular seems to concentrate on making CGI-like stuff fast and efficient.
Another update. I just had cgicc pointed out to me: http://www.gnu.org/software/cgicc/
That might solve some problems.
You can try Cutelyst a C++11 built with Qt, with one of the best positions on TechEmpower Benchmarks.
Even though it requires Qt 5.6+ a full CMS (CMlyst) uses around 6MB of RAM while serving around 3000 requests per seconds on a single core.
And for your string manipulation issue QString is just an amazing class for that.