Recital is a proven and cost-effective database solution that will help reduce the cost of your database and application software infrastructure substantially. As an added benefit, Recital can run many legacy applications with little to no change as it understands FoxBASE, FoxPRO and Clipper languages as a subset of it's overall capability.
In this article Barry Mavin explains step by step how to setup a Linux HA (High Availability) cluster for the running of Recital applications on Redhat/Centos 5.3 although the general configuration should work for other linux versions with a few minor changes.
Tagged under
In Recital 10, you can declare anonymous classes and call anonymous methods in these classes.
// declare some simple procedures
proc display(cArg)
echo "display=" + cArg
endproc
proc show(cArg)
echo "show=" + cArg
endproc
// create an object based on an anonymous class
myobj = new object()
// add some properties
myobj["name"] = "barry"
myobj["company"] = "recital"
// now declare an anonymous method
myobj["mymethod"] = display
// call the method
myobj.mymethod("hello world") // displays "display=hello world"
// redeclare the method
myobj["mymethod"] = show
// call the method
myobj.mymethod("hello world") // displays "show=hello world"
Where this becomes particularly useful is when you have a procedure that calls anonymous methods in order to process data. This technique can be used to call anonymous procedures in your code.
proc processdata(oArg)
oArg.mymethod(oArg.name)
endproc
proc show(cArg)
echo "show=" + cArg
endproc
myobj = new object()
myobj["name"] = "barry"
myobj["mymethod"] = show
processdata(myobj) // displays "show=barry" Yes, your FoxPlus and FoxPRO applications should run under Recital with little to no changes at all. We provide expert product support if you have any questions or problems. If you lack the resources to move your applications into Recital we can provide that service to you also if required.
There is a good article here this describes agile software development techniques. This is what we have always been doing but it's nice to see it defined formally.
We use this technique ourselves on our development portal.
RTOS()
Syntax
RTOS( [ <workarea> ] )Description
The RTOS() function returns all the fields in the current row as a string. The string will begin with the unique row identifier and then the deleted flag, followed by the data in the record. An optional workarea can be specified, otherwise the current workarea will be usedExample
use backup in 0
use accounts in 0
nrecs=reccount()
for i = 1 to nrecs
if rtos(accounts) != rtos(backup)
debug("record "+recno()+" don't match")
endif
next
If you use Eclipse Ganymede with large projects on linux you may run out of memory. To prevent this happening, you can specify the amount of memory to be allocated to Eclipse in the eclipse.ini file which is located in the eclipse directory.
Specifying this seems to reslove the problem:
Specifying this seems to reslove the problem:
-Xmx512m -XX:MaxPermSize=512m
This website runs in a virtual machine under vmware server. It is clustered between two servers using heartbeat and DRBD.
When VMware server starts up a virtual machine it generates a uuid (unique id) based on the machine it is running on and stores this in the .vmx file.
When heartbeat switches from slave to master, it will start VMware server (which is setup as a resource in the haresources file).
Virtual machines that you want started automatically when you start VMware server will not start because the uuid changes between the master and backup systems. To get around this problem always do the following:
- edit the .vmx file and add the following line
uuid.action = "keep"
If this is not done then everytime you try to run the virtual machine on the backup system in your cluster, VMware server will complain that the virtual machine has been copied or moved and it will not start it.
- set the virtual machine to power off when vmware is stopped. Do not set this to "suspend" or it will not restart on the backup machine.
This will allow the virtual machine to start properly on the backup machine.
There's a nice article on IBM developerworks describing how to package software using RPM. You can read it here.