Use of an IDE when my server is on a VM - macos

I mostly develop in PHP, but I'm using Python and Ruby more and more. I edit the code in my OS (I'm on a Mac, so OS X Snow Leopard), but my server is on a VM (VM Fusion).
I use the IDEs mostly for their syntax checking - something TextMate, Espresso, et al, are not so good at. However, I can see that all these IDEs have vastly more power than syntax checking, but I'm not using it because the server is a VM.
For example, being able to set breakpoints and step through code. I've used these features with JavaScript, so I know how useful they are, but I can't use them because my server is on a VM instead of running natively inside the same OS as the IDE.
Is there a way of taking advantage of all these powerful features, without either developing inside the VM or running the server in Mac OS X?

I don't know what sort of server you have that couldn't be run natively in Mac OS X for development -- pretty much anything would work great. Alternatively, you can run the IDE in the VM along with the server -- desktop apps work just fine in VMWare too. So you have two excellent alternatives facing you -- do whichever one is easier!

Related

How to use Eclipse (IDE) with Cygwin (Linux emulator)?

I apologize in advance for the stupidity of this question, but I am confused as h#&! and not even sure what to ask anymore.
For my math thesis - i.e., I am not a programmer - I have to write C code which uses the CVODE library, which is part of SUNDIALS (do you need all that detail?). But I can't work directly on the Gentoo Linux cluster where the proram will ultimately run.
According to the SUNDIALS' website, CVODE has very rarely been compiled and used in a native Windows environment, but it has been used using Cygwin. So I want to set up a C programming environment, including an IDE (especially a debugger), on my Windows PC, using Cygwin.
I have installed and executed the basic Cygwin (plus a package for nano editor) on my 64-bit Windows PC. I want to use Eclipse IDE, which is available for Linux and Windows, and can really only be used in a graphical interface (I think). I think I should set Eclipse up next (and then CVODE after that). That's what I'm trying to do now.
My basic question is how do I setup Eclipse to work with Cygwin? What Cygwin packages do I need to run Eclipse?
From the docs, I see that Cygwin has a server (Cygserver), but does not have a graphical interface. Or, it might have a graphical interface called Cygwin/X. Do I setup Eclipse in Windows to communicate with Cygserver, then do my work in Windows, but compilations and so forth would take place in the Cygserver? Or, do I install Cygwin/X and use a Linux version of Eclipse which, hopefully, works with Cygwin/X? If both are possible options, which is easier (I'm guessing the latter).
Cygwin is nice but I've run into issues now and then with it. I would recommend that you download Virtualbox or some similar VM software and install the same Linux that is there on your production cluster inside it. Then you'll have an environment on your development machine which matches the production one.
Now, install eclipse (and anything else you want) inside the VM and you can develop the software there smoothly without worrying about tangential issues like cygwin and the rest.

Using Mac OS X (Xcode 4.1) for FreeBSD development

Hi stackoverflow community!
I am about to start developing patches for FreeBSD Ports Collection (pkgng utility) using C programming language.
The problem is that I am using Mac OS X and I am really do not want to switch to another operating system. I have installed Freebsd 9.0 on Parallels Desktop VM. Xcode 4.1 seems to be rather nice development tool for C.
Is it possible to implement development for FreeBSD via Xcode 4.1? How to set up project environment for such form of development and compile source for FreeBSD?
I am also opened for any other suggestions concerning cross-platform development using MacOS X to develop patches for FreeBSD. Which is the best way to organize all necessary stuff?
Since you want to develop patches for pkgng, I would strongly suggest that you compile and test the code on FreeBSD, because it is the only system that uses the ports and packages system that pkgng interfaces with. So unless it can cross-compile for FreeBSD, using any OS X IDE is probably not a good idea.
I'm not familiar with Parallels, but there is probably a file-sharing mechanism that you can set up between OS X and the FreeBSD running in the VM. That way you can edit your files on OS X and use them under FreeBSD.
X Code is really nice, and I would lean toward using it but then doing regular builds on a system actually running FreeBSD. If you have source for everything you're using (except standard libraries whose interfaces match), there is no reason not to work on OS X with Xcode. You can build your own libraries if need be. One thing writing cross platform does (provided you regularly build on the other platform) is make your code more portable. It's easier to avoid using platform specific "extensions".

Developing Linux software on Windows

I want to write software for the Linux platform, but I would like to do this on a Windows OS. I'm only developing Linux software for a remote server of mine, so it wouldn't be worth it to switch to Linux just for that. I don't think it's as simple as using a cross-compiler, because I will be writing code that uses headers specifically for Linux, and I would like to test the programs on Windows. I don't want to use VirtalBox etc.
If possible, install the entire development environment on the linux server. Then install an Xserver (e.g XMing) and an ssh client (e.g putty) on your Windows box. Then run the dev. environment remotely.
The big pro of doing this is that the linux windows integrate seamlessly in the Windows enviornment. I used to work with dual platform development and had a virtual linux box on my PC. Still, I used ssh+X-forwarding to access it. This way I got full copy-paste support etc. between the environments.
Now WSL (also known as "Bash on Windows") exists, you can run native Linux binaries directly on Windows. With snapcraft you can package Linux applications entirely under Windows, without using a VM. Might be a better option. I made a super quick video to explain it.
CoLinux allows you to run linux side-by-side with Windows.
You could try VirtualBox and virtualize a Linux environment from within Windows. I do the reverse of what you are trying to do and run Windows from Linux, and it works quite well.
If you are familiar with .NET and C# you can use Mono for your client.
You can use Visual Studio to develop and the Mono runtime one Linux to run the application.
You do need to keep away from windows specific code.
Maybe Cygwin could help. You don't need an entire virtual machine and only the api is emulated.
You could use g++ in cygwin to target a linux binary. It's a pain to setup as you noted you'll need the entire toolchain (not just the compiler). I've used crosstool (domain name makes me giggle every time) in the past with success. It looks like someone did the work already http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html
However I've never targeted linux from windows. I'd install a virtual linux box, way easier and you're likely going to want to do your testing on a real linux box before going live.
Cygwin isn't linux so you can't test your linux binaries there.
Out of curiosity what's keeping you from doing the development on linux? If the server the app runs on isn't mission critical you could even develop there.

Using Time Machine for test environment rollback for Mac platform

When I'm testing software I'm going to deploy or running through tests in the Windows world, I'll use VMWare images so that I can start from a fresh, known state at the beginning of each test. This has worked really well so that I can install software on different OS flavors or with other/different apps and drivers loaded. This makes it super simple to duplicate or nearly duplicate a customer's environment when addressing issues that crop up.
Now I'm tasked with doing something similar for Mac OS X. I'm far less familiar with this OS and didn't really see the same sort of thing available. I noted that the server version of 10.5 might allow this, but I'm not running that here. I've got access to 10.5 on a Mac Book and one of those Mac Minis.
Has anyone used Time Machine to put their test Mac box into a known state? Or do you have other ideas? I'm also interested in a solution for 10.4 since some of my customers run "Tiger".
I tend to test things that don't manipulate the global computer state (i.e. a lot of well written Cocoa applications) with the "Guest" account. Since Tiger (I think), the effects of using this account are wiped at logout, so you can easily get a virgin environment again.
By default, Time Machine excludes certain paths from backup. This could be detrimental to your testing strategy, depending on the system resources that your software touches. See this article for information on the exclusions. At a bare minimum, if you are going to use Time Machine to rollback, make sure nothing you are testing depends on any of the excluded files.
But, I think there is a better alternative, if you can live with Mac OS X Server: VMWare Fusion provides support for virtualizing instances of Mac OS X Server Leopard. Then you can use the same strategy you used for Windows.
From http://www.vmware.com/products/fusion/features.html
VMware Fusion boasts the most complete
OS support, supporting more than 60
operating systems in a virtual
machine, including Windows XP, Windows
Vista, and even Mac OS X Server.
Keep in mind, you cannot virtualize Mac OS X Client due to license restrictions, though.
An alternative (perhaps more lightweight) solution that I just found recently is an app called RooSwitch. It lets you swap configurations for an application. So you could have a bunch of different prefs files, cache files, etc for your app and create a named configuration for it. You can create multiple configurations to test new user setup, or to reproduce an issue using a customer's data without losing your own config. RooSwitch then lets you switch between all these different configs.
I haven't used it myself yet, but heard about it on a podcast recently and thought it sounded useful for my own development and testing.

Mutliplatform application: (Automated) Testing for Mac OSX howto?

I have a firefox based application(ff extension) that is supposedly/allegedly working on Mac OSX too. I wish to make the application formally supported in Mac OSX. For that, I need to incorporate automated tests in the build process specific to Mac OSX.
With ubiquitous availability of Windows and Linux as cloud offering, executing automated tests for these platforms is easy. Not so with Mac OSX.
Any suggestions on how to go about the (light) automated testing for Mac OSX?
[PS:I have come across MediaTemple's OSX cloud in private beta. No luck for me in getting an invite.]
I don't know what kind of testing you'd like to perform, but why don't you install OS X on VMWare and test within the virtual machine? See this SO question if that is an option for you:
https://stackoverflow.com/questions/39159/is-it-possible-to-run-osx-in-a-virtual-machine
Maybe a combination of Selenium(www.seleniumhq.org) and Sikuli (http://sikuli.org/) would work for you?
Selenium to drive anything web based in FireFox and Sikuli to do all the rest. The tools work all fine together with Java API support. Both tools platform independent.
Cheers,
Stefan
I don't know what test you are trying to automate, but if it is command line based (as the comments seem to suggest it is php code under test), then you can install a VM with darwin on it and perform your tests there. Mac OS X being based on darwin should give you similar results. However as I don't know what the test entails there is no guarantee.
You can find the darwin release for Snow Leopard here, 10.5 is here, and 10.4 is here
If it were me, I'd look at Selenium Grid. It should be possible to create a set of Selenium RC tests initially then use Grid to run the tests on your various platforms, including OS X as well as Windows and Linux. I haven't tried it with running tests in the cloud, but that might even be a possibility.

Resources