Recital

Login Register
Occasionally subversion can get itself confused about what is and what is not in a working copy. This usually occurs if you have replaced the contents of a directory such as when you upgrade a component in Joomla!

You receive a message such containing this:

"working copy admin area is missing"

How to resolve this: 

Step 1 -- Rename the directory that is causing the error from a shell prompt and prefix it with __ 

mv com_docman __com_docman

Step 2 -- Using your subversion client refresh your working copy, then "update" the directory that is causing the problem e.g. update com_docman.

Step 3 -- Now you can commit the __com_docman directory.

After you have done this follow these steps, using your subversion client:

Step 4 -- delete the com_docman directory from your working copy
Step 5 -- rename __com_docman back to com_docman

Now "commit all" and both your working copy and repository will be in sync.
Published in Blogs
Read more...
After installing nomachine, if you get an error connecting whereby nomachine errors out after  "Negotiating link parameters"
 

When installing nomachine on redhat 5.3 64-bit be sure to:

  1. Make sure you have installed the 64-bit packages as the 32-bit ones will not work.
  2. add the hostname to /etc/hosts
  3. Check "Disable encryption of all traffic" (in configuration / advanced tab)
On Centos 32-bit:
  1. add the hostname to /etc/hosts
  2. make sure the host IP is not specified as 127.0.0.1 line
  3. Uncheck "Disable encryption of all traffic" (in configuration / advanced tab)
 
Published in Blogs
Read more...

MQCURMSGS()

Syntax

MQCURMSGS( <expN> )

Description

The MQCURMSGS() function returns the current number of unread messages in the queue specified by <expN>

Example

mqdes=mqopen("/myqueue")
if (mqdes < 0)
   messagebox(strerror()+",errno="+alltrim(str(error())))
   return
endif
do while (mqcurmsgs(mqdes) > 0)
   mstr=mqreceive(mqdes)
   if (empty(mstr))
      messagebox(strerror()+",errno="+alltrim(str(error())))
      return
   endif
   messagebox(mstr)
end do
mqclose(mqdes)

Published in Blogs
Read more...

Many motherboards nowadays have integrated gigabit ethernet that use the Realtek NIC chipset.

The Realtek r8168B network card does not work out of the box in Redhat/Centos 5.3: instead of loading the r8168 driver, modprobe loads the r8169 driver, which is broken as can be seen with ifconfig which shows large amounts of dropped packets. A solution is to download the r8168 driver from the Realtek website and install it using the following steps:

Check whether the built-in driver, r8169.ko (or r8169.o for kernel 2.4.x), is installed.

# lsmod | grep r8169

If it is installed remove it.

# rmmod r8169

Download the R8168B linux driver from here into /root.

Unpack the tarball :

# cd /root
# tar vjxf r8168-8.012.00.tar.bz2

Change to the directory:

# cd r8168-8.012.00

If you are running the target kernel, then you should be able to do :

# make clean modules   
# make install
# depmod -a
# insmod ./src/r8168.ko (or r8168.o in linux kernel 2.4.x)

make sure modprobe knows not to use r8169, and that depmod doesn’t find the r8169 module.

# echo "blacklist r8169" >> /etc/modprobe.d/blacklist
# mv /lib/modules/`uname -r`/kernel/drivers/net/r8169.ko   \ /lib/modules/`uname -r`/kernel/drivers/net/r8169.ko.bak

You can check whether the driver is loaded by using the following commands.

# lsmod | grep r8168
# ifconfig -a

If there is a device name, ethX, shown on the monitor, the linux driver is loaded. Then, you can use the following command to activate it.

# ifconfig ethX up

After this you should not see any more dropped packets reported.

Published in Blogs
Read more...
When debugging C code it is common to write debugging to an external text file using the __FILE__ and __LINE__ preprocessor defines to trace execution flow.

Unfortunately java does not support __FILE__ and __LINE__ but you can get the same functionality with this code which can be placed in one of your libraries.
	
public static void showTrace(String msg)
{
	if (msg.length() > 0) System.out.println(msg);
	System.out.println("Trace: " + 
				   "file " + new Throwable().getStackTrace()[1].getFileName() +
				   " class " + new Throwable().getStackTrace()[1].getClassName() +
				   " method " + new Throwable().getStackTrace()[1].getMethodName() +
				   " line " + new Throwable().getStackTrace()[1].getLineNumber());
}
Published in Blogs
Read more...
Recital Web: cookies, sessions, 64-bit Apache module: documentation update:

Recital Web Getting Started
Published in Blogs
Read more...
Recital 10.0 introduced the COPY DATABASE <name> TO <name> command.. The full syntax is;
COPY DATABASE <name> TO <name>  [ IF [ NOT ] EXISTS ] 
This command is used to copy an existing database to a new database. By default an error will be returned if the target database already exists. Specifying the optional IF NOT EXISTS keywords no error will be returned if the target database already exists. If the optional IF EXISTS keywords are specified and the target database already exists, then it will be removed before the copy. Both the databases must be closed before they can be copied.
Published in Blogs
Read more...
 
The best way to learn Recital is to build some applications. The developers of Recital have written a book "Recital Essentials" which you can read here.
Published in Blogs
Read more...

DRBD:
DRBD (Distributed Replicated Block Device) forms the storage redundancy portition of a HA cluster setup. Explained in basic terms DRBD provides a means of achieving RAID 1 behavoir over a network, where whole block devices are mirrored accross the network.

To start off you will need 2 indentically sized raw drives or partitions. Many how-to's on the internet assume the use of whole drives, of course this will be better performance, but if you are simply getting familar with the technology you can repartition existing drives to allow for two eqaully sized raw partitions, one on each of the systems you will be using.

There are 3 DRBD replication modes:
• Protocol A: Write I/O is reported as completed as soon as it reached local disk and local TCP send buffer
• Protocol B: Write I/O is reported as completed as soon as it reached local disk and remote TCP buffer cache
• Protocol C: Write I/O is reported as completed as soon as it reached both local and remote disks.

If we were installing the HA cluster on a slow LAN or if the geogrphical seperation of the systems involved was great, then I recommend you opt for asyncronous mirroring (Protocol A) where the notifcation of a completed write operation occurs as soon as the local disk write is performed. This will greatly improve performance.

As we are setting up our HA cluster connected via a fast LAN, we will be using DRBD in fully syncronous mode, protocol C.
Protocol C involves the file system on the active node only being notified that the write operation was finished when the block is written to both disks of the cluster. Protocol C is the most commonly used mode of DRBD.

/etc/drbd.conf

global { usage-count yes; }
common { syncer { rate 10M; } }
resource r0 {
protocol C;
net {
max-buffers 2048;
ko-count 4;
}
on bailey {
device    /dev/drbd0;
disk      /dev/sda4;
address   192.168.1.125:7789;
meta-disk internal;
}
on giskard {
device    /dev/drbd0;
disk      /dev/sda3;
address   192.168.1.127:7789;
meta-disk internal;
}
}

drbd.conf explained:

Global section, usage-count. The DRBD project keeps statistics about the usage of DRBD versions. They do this by contacting a HTTP server each time a new DRBD version is installed on a system. This can be disabled by setting usage-count no;.

The common seciton contains configurations inhereted by all resources defined.
Setting the syncronisation rate, this is accoimplished by going to the syncer section and then assigning a value to the rate setting. The syncronisation rate refers to rate in which the data is being mirrored in the background. The best setting for the syncronsation rate is related to the speed of the network with which the DRBD systems are communicating on. 100Mbps ethernet supports around 12MBps, Giggabit ethernet somewhere around 125MBps.

in the configuration above, we have a resource defined as r0, the nodes are configured in the "on" host subsections.
"Device" configures the path of the logical block device that will be created by DRBD
"Disk" configures the block device that will be used to store the data.
"Address" configures the IP address and port number of the host that will hold this DRBD device.
"Meta-disk" configures the location where the metadata about the DRBD device will be stored.
You can set this to internal and DRBD will use the physical block device to store the information, by recording the metadata within the last sections of the disk.
Once you have created your configuration file, you must conduct the following steps on both the nodes.

Create device metadata.

$ drbdadm create-md r0
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

Attach the backing device.
$ drbdadm attach r0

Set the syncronisation parameters.
$ drbdadm syncer r0

Connect it to the peer.
$ drbdadm connect r0

Run the service.
$ service drbd start

Heartbeat:

Heartbeat provides the IP redundancy and the service HA functionailty.
On the failure of the primary node the VIP is assigned to the secondary node and the services configured to be HA are started on the secondary node.

Heartbeat configuration:

/etc/ha/ha.conf

## /etc/ha.d/ha.cf on node1
## This configuration is to be the same on both machines
## This example is made for version 2, comment out crm if using version 1
// replace the node variables with the names of your nodes.

crm no
keepalive 1
deadtime 5
warntime 3
initdead 20
bcast eth0
auto_failback yes
node bailey
node giskard

/etc/ha.d/authkeys
// The configuration below set authentication off, and encryption off for the authentication of nodes and their packets.
//Note make sure the authkeys file has the correct permisisions chmod 600

## /etc/ha.d/authkeys
auth 1
1 crc

/etc/ha.d/haresources
//192.168.1.40 is the VIP (Virtual IP) assigned to the cluster.
//the "smb" in the configuration line represents the service we wish to make HA
// /devdrbd0 represents the resource name you configured in the drbd.conf

## /etc/ha.d/haresources
## This configuration is to be the same on both nodes

bailey 192.168.1.40 drbddisk Filesystem::/dev/drbd0::/drbdData::ext3 smb

Published in Blogs
Read more...
When the node is clicked set editable to false. Set editable to true in the double-click event handler.
// the click event handler 
private function onclick_sourcetree(e:Event):void  {     
    yourTree.editable = false; 
}  

// the doubleclick event handler  
private function ondoubleclick_sourcetree(e:Event):void  {     
    yourTree.editable = true;    
    yourTree.editedItemPosition = {columnIndex:0, rowIndex:sourceTree.selectedIndex}; 
} 
Published in Blogs
Read more...

Copyright © 2025 Recital Software Inc.

Login

Register

User Registration
or Cancel