Integrate C library with Java, Ruby, Node, Python, Go, .NET [closed] - c

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Status Quo
For a project of mine I need a client library that communicates with my API for every major programming platform. Currently I implemented just one (Java) and was thinking 'I don't want to do this 8 times (or hope someone else will)'.
The client is relatively small, but not trivial; does mostly JSON reading/writing and sending TCP/UDP data over SSL. Every call to the client is fire-and-forget, so it works completely asynchronously in its own thread.
Problem
I was asking myself if it made sense to write a single C library and integrate it with the other platforms.
I did a bit of research and it seems every platform deals with this differently (obviously) with varying necessary efforts. I also realised that I never saw something like it - for example database drivers always seem to be written from scratch rather than using a C library at the core. Is the overhead too big?
I also read about Thrift, Protocol Buffers etc. - but this seems to be aimed at network interoperability?
Question
So the final question is:
Is it feasible to use a single C library at the core of each platform's client? If yes: how should it be done?

Using a C library makes sense if you want to consolidate all implementations of the same functionality into one piece of code - it is probably the only language that can be universally used by higher level languages.
Your work would be significantly easier if you could automate the process to a degree. You might want to have a look at SWIG. It is a binding generator that allows C/C++ code to be used with a large number of other programming languages, including most, if not all, of the languages that you mentioned.
For my rather superficial experience with it, SWIG does a rather decent job, although the generated code does occasionally need some tweaking...

Related

Ask recommend ways that Lua cowork with C/C++? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Recently I learned Lua, we need it to co-work with existed C code(HTTP server).
From Lua books, we know that there maybe to way to make them co-working:
From Lua, you can wrap C code in share library(xxx.so) that Lua use require to import them.
From C, you can use existed Lua API to operate on lua_state, it's some trick but it works well.
I adopt both of them and everything seems great, by using Lua we can save a lot of time to implement our business logic. But I'm quite nervous about current architecture, although there was no serious problem in it, I always worried about it, if there was some thing happened, for example, serious performance bottleneck, memory related and so on.
Is anyone got rich experience in this, please give some some advice. Thanks.
Lua is designed to work well with both C and C++. The C API is meant for that.
You don't need to create and use shared libraries to extend Lua. It is the easiest way to extend the standard command line interpreter but it should be easy (if not easier) to link static C libraries for Lua in your own application.
If you want to see some examples of C libraries for Lua, see mine. There are many others.

Which programming language single page web scraping? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I want to build (hire someone to build) a program for windows. This program has to save some data of a single web page like name of the website, product name and product price on a command (under right-click or keyboard shortcuts) in a local database. Which programming language can I chose best? The amount of (affordable) programmers and the possibility to add some extra functionalities in the future is also important.
I found for example that python, Java, Ruby and XPath are used for this job.
Thank You.
Java, python and ruby are all good choices. Xpath is not a programming language, it's a query specification that allows you to extract the data you want from xml or html. No matter which language you choose you will need to also use xpath (all 3 have xpath libraries available).
Python seems to be the most popular but the future of it's libraries
is also the most uncertain (nobody has bothered to port mechanize to
python3 yet, beautiful soup has died and then come back).
Java's biggest strength may be that it's already installed on most
windows machines, but it's also the only one of the three that is not
a scripting language and therefore development time will likely be
longer.
Ruby is a good choice with excellent scraping libs and plenty of
programmers using it.

Where to start to modify an open source software? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am asking this question is because I need to modify an open source software and I completely have no idea on how to start the project.
Here is more details.
I usually works in Linux and use GNU compiler (g++, gfortran, etc) and Intel compiler (icc and ifort). I can write fortran and c/c++ programs. So far, the project that I wrote is less than 10 files (with vim, no IDE so far). I usually compile them separately and put them together as a single executable file.
Now I need to modify an open source software (A software for scientific calculation. No GUI. And it reads an input file with all calculation parameters.). The source of it contains hundreds of files which is too much for me. It does come with a configure script and some makefiles. And it use both c and fortran codes (I suspect the c code calls some fortran subroutines.). But I haven't try to use fortran subroutines in c/c++.
I need to understand it, make a small modification and add some functions or subroutines in the software as new features.
Could you tell me where to start? Is there an IDE which can “import” the software as a project? Or some handy tool to draw the connections between different files? (It is horrible to read the configure script and makefile first, then start to work.)
Thanks.
You could try speaking to the maintainer of the project, or asking for guidance on their discussion forum if one exists. Don't expect them to just tell you want to edit, however. You're more likely to get help if you've at least tried to understand what the source code is doing and how it hangs together, particularly since, in my opinion at least, you really ought to understand what it currently does before you change it.
Having said that, if the change you need to make would be useful to other people, the maintainers may accept your proposed changes as a feature request.

Good source code browser for C [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am on the look out for a good software for browsing kernel level code written in C. I am currently using source navigator. Are there any better suggestions?
EDIT: I work on systems with both Windows and Linux (Ubuntu), so it should run on at least one of them, but Linux software is preferable.
This might not be what you're shooting for; it's less interactive than a dedicated tool, but I've found LXR to be very useful for providing a web interface front-end for browsing large source repositories. In each file, every symbol is linked to its original definition, so it's easy to dial down to exactly what you're looking for.
It was originally designed for indexing the Linux kernel source, and still does so here, (though I must say I'm not jazzed about the new AJAX interface...)
It can be run on any code base, though; not limited to the Linux kernel. And the web interface makes it easy to access from anywhere and from any system.
Visual Slick Edit does the trick for me.
Good tagging for big code bases, building, macros,light ui and support for many languages.
Unfortunately costs some $.
The reason I mostly wanted to switch from source navigator was that the project had closed down and the new project (Source navigator NG)seemed to be defunct(because the website etc. were down). But today, I checked and they had releases upto 2010. So they are probably still up and running.
Check it out, it has a good GUI and searching is easier than in cscope.
I use doxygen when I receive a big lump of code that I need to do a quick review on. You can use a special syntax in your source to make the doxygen output nice, but it does a decent job without.
netbeans works perfect for me
ctrl+click on any symbol will take you to the definition
then alt+left
very convenient for source code navigation
it's also cross platform

Obfuscation and reverse engineering deterrents for C++ Win/OSX app [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I've got a C++ app that ships on Windows and OSX. It communicates with our backend using TCP (encrypted with OpenSSL, natch). I'd like to throw up some speed bumps for folks who are trying to reverse engineer the protocol and/or disassemble the executable.
Skype does an excellent job of this, which is why you won't find a lot of apps that speak skype. Here is a really good read about what it does: http://www.secdev.org/conf/skype_BHEU06.handout.pdf
I'd like some ideas about how to accomplish similar stuff our app. Are there commercial products that make code harder to statically analyze? What is the best way to invest my time to accomplish the goals I've listed?
Thanks,
Some simple suggestions for OSX:
Prevent gdb from attaching to your program
http://www.steike.com/code/debugging-itunes-with-gdb/
(this can be worked around, but will keep some casual explorers away)
Have at least some of the code in your product stored outside the text segment of the executable, for example in data, or in an external (encrypted) shared library.
Minimally protect any sensitive string data by not storing it in plain text. Run "strings" against your executable, and if you see anything that might be helpful to someone trying to figure out the protocol, encrypt it.
GCC's -fomit-frame-pointer option can make debugging more painful (but can interact badly with C++ exceptions).
If I remember correctly Skype is using something similar (maybe they pay them to implement it in Skype, who knows) to "Code Guards" described in:
https://www.cerias.purdue.edu/tools_and_resources/bibtex_archive/archive/2001-49.pdf

Resources