Remote Automated Build System [closed] - c++

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am an Electrical Engineer about to start grad school for Com Sci. Currently I work in the defense industry and as a result most services and websites are blocked here. I'm trying to come up with a solution that will allow me to do my homework/projects while at work since they give us 2 hours a day on the clock to do school work if attending grad school. I don't have the necessary software tools on my work computer nor will I be able to get it. I would like to setup my build system on a ubuntu box and the best solution I could think of would be to use email and possibly FTPmail to automate the build process and email me back any errors that the compiler may return.
Has anyone ever done this before or does someone know of a software package that already implements this solution.

I'd suggest you look on some web-based virtual machine/desktop tools. Some I've seen in the wild are icloud and eyeOS.
Also, since installing any software is basically a no-no, you might want to check for Linux live-CDs. You can just pre-configure the disc with the necessary tools (SCM, IDE, etc.) and boot the computer from the Live disk during your 2 hours. Of course, that won't give you a hard drive to save your stuff, but you can just commit whatever you have before that 2 hours expires.
Edit: whatever you do, get this solution approved by your superior(s) before you attempt it.

It sounds like you will be able to access stuff outside of your network, even if you cannot install any software on your work system. One thing you can do:
Install a version control system (CVS, SVN, etc) on your Ubuntu box. You can store your projects/homework there.
Use Hudson (http://hudson-ci.org/) on your Ubunto box as your build system. You can create a job for it to checkout from your version control system and build. Anytime you want to build a project (lets say you made a change to some class), all you have to do is press the "build-now" button.
Hudson itself is almost entirely web-gui so it is easy to configure, and if you open up a port for Hudson, you should be able to access it directly from work (unless they block external websites).

Could you use a virtual machine at work? Even if you don't have administrator access to your work machine, you may be able to use Qemu and something like Puppy Linux. See, for example, http://www.erikveen.dds.nl/qemupuppy/
Along the lines of your original question, if you can host a machine that receives e-mail at home, you could certainly configure procmail (e.g., see http://www.perlcode.org/tutorials/procmail/proctut/) to match for e-mails from you with a certain subject and run a command (say, make). But you'd also need to set up an filters to fetch and submit files, etc.

Can you use something like VNC to remotely control your desktop or do you have restrictions for this kind of Sw too?
http://www.realvnc.com/
If I recall correctly, the client does not need to be installed, it could run from a pendrive...
http://www.pendriveapps.com/portable-vnc-viewer-realvnc/

This is not a remote system, but it might work if you can select a boot medium on the computers you work on. Your employer might not like this.
It is possible to install a linux box on a usb hard disk and then boot from that. In this you can install all sorts of development tools and projects. You would just borrow their hardware a bit...
I wouldn't advise this if you have not worked on linux before though. Linux can be a royal pain in the ass and you might not get your development environment up and running in a year if you only have 2 hours per day to spend...
good luck

Set your project up on github. You can do editing directly there through a web browser.
Then setup continual integration on Jenkins on your home system, or use Travis CI, and/or Appveyor to monitor your github repo and build your project when there are changes. If there are errors, you can set them up to send notifications.
The advantage of Travis or Appveyor is they are web based so you'd be able to look at the console output of broken builds where jenkins running at home probably wouldn't (I don't recall if you can get the whole output by email or not).

Related

Coding with python software and using files - security re internet attacks? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
can somebody explain to me please:
1) Can a py file just by its mere "existence" on your hard drive (if not opening it), cause any kind of malicious harm for your computer system? And if your goal is only to see the content (text of code) of the file, how could you open it to be 100% sure it could not harm your system (for example by the standard text editor tool?)? Or can you only get to the content with Python specific programs?
2) If someone asks you to look at her python code, and wants to send you for this reason several py files - could opening such file harm your computer system/perform "malicious" actions (how?)?
Please take into account for your answer, these three different ways of how you would open the files:
a) you open with the program from python.org
b) you open with a IDE
And a third question:
3) What about the official program from python.org itself - does this program somehow open up your system to additional internet attack types, just by having it installed?
Finally,
4) Is it more secure in terms of online security, to interact with python programs on a separate computer and not the one you do everyday business?
Thanks community!
Q1: No, it's just a text file. So you can view it with any text editor
Q2. If you mean by "opening", viewing in text edit, see answer to Q1. If by opening, you mean executing the script, then the answer depends on what the script does
web services don't run on your local computer, so they can't harm it.
Q3. The answer is no, because python installed on your computer is dormant.
Q4: There are lots of thing you can do on your computer which can do damage. For instance, you could delete all your files in your file explorer. Surely you already have backups?
Python scripts are human readable which makes them a very ineffective place to put secret code which does nasty things.
I've never heard anyone put python anywhere in a list of security risks, but if you are worried, use virtual box and run it in a virtual machine. I do a lot of my python development in a virtual machine, but not to minimise security risks ... there are other advantages to VMs (such as ease of backup, ease of moving to another computer). The other advantage, if you are using Windows, is that you can use a Linux VM, such as Ubuntu, which is a better experience for modern development. I think because of this, Microsoft has actually made it easy to install Ubuntu directly into Windows, if you have a recent version on Windows 10, so that's another option (e.g. https://tutorials.ubuntu.com/tutorial/tutorial-ubuntu-on-windows#0)
I haven't look at web IDEs for a while. As long as they have interactive python debugging, they could be a good option. I had the impression that cloud 9, now an amazon offer, was the best one, last time I checked them out.

Funding for MathML rendering library [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I have an unfinished MathML rendering library written in C++. I ceased development a few months ago due to lack of time. The library [still] uses the TrueType version (unsupported) of the STIX fonts beta [version 1.0 of the STIX fonts (OpenType Postscript format) has since been released].
Development of this kind of library is a HUGE undertaking and, in fact, requires a number of programmers/developers. In my case, I am doing it alone, and here's my question:
Does anyone of you know of any foundations/philanthropists who may be interested to fund my project in return for open sourcing the code?
The funding will serve as an incentive for me to finish the library - perhaps by taking a sabbatical :p - and, of course, as 'payment' for the intellectual property involved.
I've searched the web, contacted some [e.g., foundations, VCs, angels, etc.], but I either did not get a response (from VCs and angels) or was rejected (one reason is geography since these foundations support only US-based projects).
As an aside, when I search the web for MathML, the results are often outdated. I guess there's not much activity concerning MathML. Yet, I believe this library will be very useful not only to developers but also to anyone who uses math, especially students and teachers. It is useful for e-learning, can be used with desktop apps and web servers (Windows), makes it easy to insert images of formulas in PowerPoint documents, etc.
Any suggestions are most welcome. Thank you.
EDITS: I have finished this library finally without funding, although I don't rule out seeking one.
You can find my new site below with lots of sample formulas; click on the download link to download the SDK.
http://reformath.webnode.com/ (preferred for statistical reason)
http://reformath.weebly.com/ (please use the above link instead)
DON'T forget to provide some feedback - or donations. Thanks!!!!!
Since we've already got open source MathML (Firefox has had it for years) that mean you'd have to do something better than the existing OSS solutions. And at that point, why not work on an existing open source project?
So that leaves commercial apps that may want a closed library for MathML rendering. I would go after companies like the makers of MathCad, Matlab, or any other engineering software that may want to display equations neatly. You should have something that already works for some subset of the things you/they will want it to do. You should also turn yourself into a company before going to those places so they take you seriously and you can license it to multiple customers. Otherwise the most you're likely to get is a job offer where they'd like you to hand over what you've got (for free if they can get you to) and then work on it as an employee - which may be all you want if you love it and hate your day job ;-)
You should probably ask on www-math list, also if you ask there, we can list your application in the software implementations page
http://www.w3.org/Math/Software/

What is the purpose of a dedicated "Build Server"? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
This post was edited and submitted for review 1 year ago and failed to reopen the post:
Original close reason(s) were not resolved
Improve this question
I haven't worked for very large organizations and I've never worked for a company that had a "Build Server".
What is their purpose?
Why aren't the developers building the project on their local machines, or are they?
Are some projects so large that more powerful machines are needed to build it in a reasonable amount of time?
The only place I see a Build Server being useful is for continuous integration with the build server constantly building what is committed to the repository. Is it I have just not worked on projects large enough?
Someone, please enlighten me: What is the purpose of a build server?
The reason given is actually a huge benefit. Builds that go to QA should only ever come from a system that builds only from the repository. This way build packages are reproducible and traceable. Developers manually building code for anything except their own testing is dangerous. Too much risk of stuff not getting checked in, being out of date with other people's changes, etc. etc.
Joel Spolsky on this matter.
Build servers are important for several reasons.
They isolate the environment The local Code Monkey developer says "It compiles on my machine" when it won't compile on yours. This can mean out-of-sync check-ins or it could mean a dependent library is missing. Jar hell isn't near as bad as .dll hell; either way, using a build server is cheap insurance that your builds won't mysteriously fail or package the wrong libraries by mistake.
They focus the tasks associated with builds. This includes updating the build tag, creating any distribution packaging, running automated tests, creating and distributing build reports. Automation is the key.
They coordinate (distributed) development. The standard case is where multiple developers are working on the same code base. The version control system is the heart of this sort of distributed development but depending on the tool, the developers may not interact with each other's code much. Instead of forcing developers to risk bad builds or worry about merging code overly aggressively, design the build process where the automated build can see the appropriate code and processes the build artifacts in a predictable way. That way when a developer commits something with a problem, like not checking in a new file dependency, they can be notified quickly. Doing this in a staged area let's you flag the code that has built so that developers don't pull code that would break their local build. PVCS did this quite well using the idea of promotion groups. Clearcase could do it too using labels but would require more process administration than a lot of shops care to provide.
What is their purpose?
Take load of developer machines, provide a stable, reproducible environment for builds.
Why aren't the developers building the project on their local machines, or are they?
Because with complex software, amazingly many things can go wrong when just "compiling through". problems I have actually encountered:
incomplete dependency checks of different kinds, resulting in binaries not being updated.
Publish commands failing silently, the error message in the log ignored.
Build including local sources not yet commited to source control
(fortunately, no "damn customers" message boxes yet..).
When trying to avoid above problem by building from another folder, some files picked from the wrong folder.
Target folder where binaries are aggregated contains additional stale developer files that shoulkd not be included in release
We've got an amazing stability increase since all public releases start with a get from source control onto an empty folder. Before, there were lots of "funny problems" that "went away when Joe gave me a new DLL".
Are some projects so large that more powerful machines are needed to build it in a reasonable amount of time?
What's "reasonable"? If I run a batch build on my local machine, there are many things I can't do. Rather than pay developers for builds to complete, pay IT to buy a real build machine already.
Is it I have just not worked on projects large enough?
Size is certainly one factor, but not the only one.
A build server is a distinct concept to a Continuous Integration server. The CI server exists to build your projects when changes are made. By contrast a Build server exists to build the project (typically a release, against a tagged revision) on a clean environment. It ensures that no developer hacks, tweaks, unapproved config/artifact versions or uncommitted code makes it into the released code.
The build server is used to build everyone's code when it is checked in. Your code may compile locally, but you most likely won't have all the change made by everyone else all the time.
To add on what has already been said :
An ex-colleague worked on the Microsoft Office team and told me a complete build sometimes took 9 hours. That would suck to do it on YOUR machine, wouldn't it?
It's necessary to have a "clean" environment free of artifacts of previous versions (and configuration changes) in order to ensure that builds and tests work and don't depend on the artifacts. An effective way to isolate is to create a separate build server.
I agree with the answers so far in regards to stability, tracability, and reproducability. (Lots of 'ity's, right?). Having ONLY ever worked for large companies (Health Care, Finance) with MANY build servers, I would add that it's also about security. Ever seen the movie Office Space? If a disgruntled developer builds a banking application on his local machine and no one else looks at it or tests it... BOOM. Superman III.
These machines are used for several reasons, all trying to help you provide a superior product.
One use is to simulate a typical end user configuration. The product might work on your computer, with all your development tools and libraries set up, but the end user most likely won't have the same configuration as you. For that matter, other developers won't have the exact same setup as you either. If you have a hardcoded path somewhere in your code, it will probably work on your machine, but when Dev El O'per tries to build the same code, it won't work.
Also they can be used to monitor who broke the product last, with what update, and where the product regressed at. Whenever new code is checked in, the build server builds it, and if it fails, its clear that something is wrong and the user who committed last is at fault.
For consistent quality and to get the build 'off your machine' to spot environment errors and so that any files you forget to check in to source control also show up as build errors.
I also use it to create installers as these take a lot of time to do on the desktop with code signing etc.
We use one so that we know that the production/test boxes have the same libraries and versions of those libraries installed as what is available on the build server.
It's about management and testing for us. With a build server we always know that we can build our main "trunk" line from version control. We can create a master install with one-click and publish it to the web. We can run all of our unit tests each time code is checked in to make sure it works. By collecting all these tasks into a single machine it makes it easier to get it right repeatedly.
You are right that developers could build on their own machines.
But these are some of the things our build server buys us, and we're hardly sophisticated build makers:
Version control issues (some have been mentioned in earlier responses)
Efficiency. Devs don't have to stop to make builds locally. They can kick it off on the server and get on to the next task. If builds are large, then that is even more time the dev's machine is not occupied. For those doing continuous integration and automated testing, even better.
Centralization. Our build machine has scripts that make the build, distribute it to UAT environments, and even to production staging. Keeping them in one place reduces the hassle of keeping them in sync.
Security. We don't do much special here, but I'm sure a sysadmin can make it such that production migration tools can only be accessed on a build server by certain authorized entities.
Maybe i'm the only one...
I think everyone agrees that one should
use a file repository
do builds from the repository (and in a clean environment)
use a continous testing server (e.g. cruise control) to see if anything is broken after your "fixes"
But no one cares about automatically built versions.
When something was broken in an automatic build, but it's not anymore - who cares? It's a work in progress. Someone fixed it.
When you want to do a release version, you run a build from the repository. And i'm pretty sure you want to tag the version in the repository at that time and not every six hours when the server does it's work.
So, maybe a "build server" is just a misnomer and it's actually a "continous test server". Otherwise it sounds pretty much useless.
A build server gets you a sort of second opinion of your code. When you check it in, the code is checked. If it works, the code has a minimum quality.
Additionally, remember that low level languages take much longer to compile than high level languages. It's easy to think "Well look, my .Net project compiles in a couple of seconds! What's the big deal?" Awhile back I had to mess with some C code and I had forgotten how much longer it takes to compile.
A build server is used to schedule compile tasks (e.g. nightly builds) of usually large projects located in a repository that can sometimes take more than a couple of hours.
A build server also gives you a basis for escrow, being able to capture all the parts necessary to reproduce a build in the case that others may have rights to take ownership.

How to start develop for chinese mobile phones based on nucleus RTOS? (MTK) [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I've noticed that chinese mobile phones became very popular, perhaps because of their very reasonable price and many modern features (touch screens, advanced multimedia, double sim cards etc).
I'm wondering if there's any way to develop custom solutions for this handsets as independent developer? How to obtain a toolkit and documentation?
I've found some resources, but mainly inconsistent tech notes, often in chinese only. For now I know, that majority of chinese handsets are based on chips from MediaTek (MTK), with operating system based on Nucleus RTOS and MMI (plutoMMI?) framework. Unfortunately, there is no Java RE avaiable (ok, there are some handsets with Java, however, Java isn't something I'm looking for)
Is there any SDK, documentation, emulators/simulators, how-tos, etc avaiable? How to develop, deploy and test custom application for MTK mobile?
I am enginner at design company. I have MTK development platform for MT series mobiles with English explanation. The original release and manuals are written in English(About 300mb pdf files). The SDK have simulator written in Visual C++. MMI interface working under nucleus rtos os. The codes are V++.
The MTK service is charged. You need to contact them and pay for the chip, software SDK, document, and technical support.
I don't know where you get the "some resource", but it must be leaked by some customer of their, thus using these resource will be considered as illegal.
I work with a lot of Chinese mobile phone manufacturers because we export mobile phones from China. I'm really interested in building a new applications, especially an email program, for these MTK based devices. Now it's a bit late to be looking at the 6225 platform because the 6235 platform seems to be where we'll see the most growth moving forward. The major differences that I'm aware of between the 6235 and 6225 are that 6235 supports Wi-Fi, works with EDGE, and is faster.
Steve, you mentioned the G2. I think that Android will be the breakout OS for Chinese phone manufacturing. Once their local engineers and designers get a handle on it a plethora of both ridiculous and useful applications and models will flourish and there won't be major export (customs) problems as we see now with the Windows Mobile devices (because the Chinese typically don't offer licensed software).
For platform sources this can be a starting point :
https://www.mentor.com/embedded-software/downloads/nucleus-source-interest_reg
I have no real experience on RTOS, I am GNU/Linux guy
I just bought a SciPhone G2 Dream and have done some initial investigation. This particular phone runs J2ME applications but I am also wondering what can be done (if anything) with native applications. Ideally I would like to get my Bluetooth GPS to work with this phone.
This page discusses getting GCC to work with Nucleus but I'm not sure whether this is useful.
Mentor (the makers of Nucleus) have a trial version of their developer suite available. I have just requested a free trial. It is a bit concerning that the website makes no mention of the cost. They also have an emulator.
What sort of phone did you get and what sort of applications are you planning to develop?
I'm in same wagon like you, trying to select an smartphone with WIFI and available SDK, low cost (lower thatn 40$). Also contacted Mediatek without results. I can give you a piece of advice, in reality is what I'm doing now. Try to negotiate a bulk purchase with a supplier together with access to SDK and documentation. I did that before with an ARM based Thinclient and worked, but I had to buy 30 pcs.
I'm not exactly sure of what you mean by a 'Chinese' phone. However, you may be talking about ODM phones. Most of the time, these phones are system clones of regular phones with some customisation. It may be a good idea to just buy one and take it apart to see what platform it runs on. Maybe it uses OMAP or something else? In which case, you probably have more knowledge on how to proceed. Maybe it is even compatible with Linux.

Guide to New Vista Features [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I'm an MFC programmer. I just had my first taste of Vista (on a VPC... Yup, I'm late). I should be evaluating things in depth in the coming days. On taking a casual look, I noticed two major changes:
The shell is new
User Access Control
Event Viewer has changed (would like more info on this)
What other new features should I look out for from a programmer's point of view?
There's a significant set of changes depending on what sort of software you write.
It's never a bad idea to check out the Windows Logo Certification (for Vista). There's a link to the Software technical requirements here. It always gives you a bit of an idea what to avoid doing (and what to design for).
In my opinion, Vista mostly started to enforce [existing] Logo certification requirements, in particular:
Don't write to HKLM
Don't save application data under the Program Files directory
Don't assume administrative permissions
Do save data to the user's application data directory
Regarding User Access Control (new to Vista), It's also a good idea to get across Manifest files. The best thing I could find on them is this blog entry here.
Windows Drivers are under higher scrutiny under Windows Vista and pretty much require certification IMHO.
The TCP/IP stack was rewritten and so too the audio subsystem (and multimedia streaming etc). Obviously advances in graphics, plus the inclusion of DirectX 10 and usual rollout of an updated Media Player, etc.
Sorry, I also forgot to mention that Microsoft replaced ActiveSync (for Windows Mobile) with a completely new framework in Vista.
Vista is much more strict about enforcing rules that you were supposed to follow for XP anyway.
For example, you're not supposed to do anything that requires write access to your program's install folder. In XP a lot of programmers got away with breaking that because so many users run as adminstrator, but Vista will actually enforce it. A bunch of folders did move around ("Users" instead of "Documents and Settings", my Documents is different, etc), but if you're using the correct methods to retrieve those paths rather than assuming they're always in the same place you'll be fine.
Perhaps wikipedia's Features new to Windows Vista and possibly Features removed from Windows Vista will be of use to you.
Processes and resources have "integrity levels". A process is only able to access resources at or under its own integrity level.
If you ever do any work with IE extensions this will become a PITA when you want to access something and discover that everything has a higher integrity level than IE in protected mode (default).
Well, from a programmer's point of view, WPF is "built in" to the system. That means that if you target an app to the 3.0 version of the .NET Framework, it should be able to install on Vista without a .NET Framework Install.
DirectX 10 is also new in Vista, but I assume if you didn't know that, you probably won't be programming against it.
Search is pervasive. Numerous kernel improvements. SuperFetch (friggin' awesome if you have enough RAM). IMO Vista goes to sleep and wakes up a LOT easier and more reliably than XP ever did. I/O priority -- now apps like AntiVirus and search indexers can request lower priority for disk access than they did in XP or before. That makes the user experience much more enjoyable when something's indexing the drive or a scan is running. All in all, Vista is good stuff IF you have gobs and gobs of memory to throw at it. I run Vista x64 with 4GB of RAM, and I actually like it.
The audio subsystem has been redeveloped, so if you do anything audio related it is worth checking very carefully if everything still works.
Although many of the older API calls still work, some may not work as expected.
As a simple example, sound devices have much longer and more descriptive names than in XP, but if you continue to use the older APIs then you may find these longer names are truncated.
Oh, yeah. There's a completely different driver model where much of the code is kicked out of kernel space and back into userland, to prevent poor drivers from trampling over the system. So if you do any driver work it's almost like starting over from scratch.
1- Machine with Vista have usually more Ram, this is a good news for you :)
2- Path to "Program files" are splitted in 2 : \Program Files (x86)\ and \Program Files\
3- My Document has changed
VIRTUALIZATION is also an interesting and necessary feature of vista.