<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Valentina Dev Log</title>
	<atom:link href="http://www.valentina-db.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.valentina-db.com/blog</link>
	<description>Valentina Database Development News weblog</description>
	<lastBuildDate>Tue, 27 Jul 2010 21:26:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>IOEncoding usage in V4REV</title>
		<link>http://www.valentina-db.com/blog/?p=365</link>
		<comments>http://www.valentina-db.com/blog/?p=365#comments</comments>
		<pubDate>Tue, 27 Jul 2010 08:28:42 +0000</pubDate>
		<dc:creator>Ivan Smahin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Paradigma Software]]></category>
		<category><![CDATA[Valentina for Revolution]]></category>
		<category><![CDATA[4.8]]></category>

		<guid isPermaLink="false">http://www.valentina-db.com/blog/?p=365</guid>
		<description><![CDATA[Assume there is some &#8220;not-latin&#8221; text  (it could be russian or umlauts or something similar). And we have to store it to the Valentina database and then read it back.

Revolution has a property to get an UTF16-encoded content &#8211; unicodeText. So we can easily get it doing something like this one:
put unicodeText of field &#8220;ValueField&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Assume there is some &#8220;not-latin&#8221; text  (it could be russian or umlauts or something similar). And we have to store it to the Valentina database and then read it back.</p>
<p><span id="more-365"></span></p>
<p>Revolution has a property to get an UTF16-encoded content &#8211; unicodeText. So we can easily get it doing something like this one:</p>
<p>put unicodeText of field &#8220;ValueField&#8221; into uniText</p>
<p>Seems to be ready to pass this value to some vField, but Revolution externals (including V4REV) receive the data as a char pointers. For UTF16 encoding the very first symbol is zero &#8211; so it is treated as a terminated zero and finally V4REV receives empty string. Obviously we should pass the data encoded with some single-byte code-page to avoid it. In most cases it could be UTF8. So we do following -</p>
<ul>
<li>Set appropriate IOEncoding property for the database first (we promise pass  any strings to this db as UTF8 and vice versa &#8211; any string received from this database will be in UTF8):</li>
</ul>
<p style="padding-left: 60px;"><em>get VDatabase_IOEncoding( mDBRef, &#8220;UTF-8&#8243; )</em></p>
<ul>
<li>Prepare UTF16 value:</li>
</ul>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<div style="padding-left: 60px;"><em>put unicodeText of field &#8220;ValueField&#8221; into uniText</em></div>
<div><em><br />
</em></div>
<div>
<ul>
<li>Decode it to UTF8:</li>
</ul>
</div>
<div style="padding-left: 60px;"><em>put uniDecode( uniText, &#8220;UTF8&#8243;) into univalue</em></div>
<div><em><br />
</em></div>
<div>
<ul>
<li>Write it to the database:</li>
</ul>
</div>
<div style="padding-left: 60px;"><em> put VTable_Field( inTblRef, 1 ) into fldRef</em></div>
<div style="padding-left: 60px;"><em> get VField_Value( fldRef,  univalue )</em></div>
<div style="padding-left: 60px;"><em> get VTable_AddRecord( inTblRef)</em></div>
<ul>
<li>Reading data back:</li>
</ul>
<p style="padding-left: 60px;"><em> get VTable_FirstRecord(inTblRef)</em></p>
<p style="padding-left: 60px;"><em> put VTable_Field( inTblRef, 1 ) into fldRef</em></p>
<p style="padding-left: 60px;"><em> put uniEncode( VField_Value( fldRef ), &#8220;UTF8&#8243;) into fldValue</em></p>
<p>Also, you can omit UTF16-UTF8 transformation using some &#8220;natural&#8221; code-page. But you should note it could be  OS dependent.</p>
<p style="padding-left: 30px;"><em>//If MacOS Then</em></p>
<p style="padding-left: 60px;"><em>get VDatabase_IOEncoding( mDBRef, &#8220;Macintosh&#8221; )</em></p>
<p style="padding-left: 30px;"><em>// else</em></p>
<p style="padding-left: 60px;"><em>get VDatabase_IOEncoding( mDBRef, &#8220;Latin1&#8243; )</em></p>
<p style="padding-left: 30px;"><em>&#8230;</em></p>
<p style="padding-left: 30px;"><em>put text of field &#8220;ValueField&#8221; into myValue</em></p>
<div style="padding-left: 30px;"><em>put VTable_Field( inTblRef, 1 ) into fldRef</em></div>
<div style="padding-left: 30px;"><em>get VField_Value( fldRef,  myvalue )</em></div>
<div style="padding-left: 30px;"><em>get VTable_AddRecord( inTblRef)</em></div>
<p style="padding-left: 30px;"><em>// Reading data back:</em></p>
<p style="padding-left: 30px;"><em>get VTable_FirstRecord(inTblRef)</em></p>
<p style="padding-left: 30px;"><em>put VTable_Field( inTblRef, 1 ) into fldRef</em></p>
<p style="padding-left: 30px;"><em>put  VField_Value( fldRef ) into fldValue</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=365</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New LogFilesLocation property</title>
		<link>http://www.valentina-db.com/blog/?p=363</link>
		<comments>http://www.valentina-db.com/blog/?p=363#comments</comments>
		<pubDate>Sat, 26 Jun 2010 09:41:21 +0000</pubDate>
		<dc:creator>Ivan Smahin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Paradigma Software]]></category>
		<category><![CDATA[Valentina ADKs]]></category>
		<category><![CDATA[Valentina KERNEL]]></category>
		<category><![CDATA[Valentina SQL]]></category>
		<category><![CDATA[Valentina Server]]></category>
		<category><![CDATA[4.7]]></category>

		<guid isPermaLink="false">http://www.valentina-db.com/blog/?p=363</guid>
		<description><![CDATA[There is a new property &#8211; LogFilesLocation for both server and local.
It defines a folder where the logs should be placed in.
Default folder is &#8220;./vlogs&#8221;
Examples:
SET PROPERTY LogFilesLocation TO &#8216;myLogsFolder&#8217;;
GET PROPERTY LogFilesLocation;
or
SET PROPERTY LogFilesLocation OF SERVER TO &#8216;myLogsFolder&#8217;;
GET PROPERTY LogFilesLocation OF SERVER;
If kernel works under the vserver global LogFilesLocation is unavailable and you should operate with [...]]]></description>
			<content:encoded><![CDATA[<p>There is a new property &#8211; LogFilesLocation for both server and local.<br />
It defines a folder where the logs should be placed in.<br />
Default folder is &#8220;./vlogs&#8221;</p>
<p><span id="more-363"></span>Examples:<br />
SET PROPERTY LogFilesLocation TO &#8216;myLogsFolder&#8217;;<br />
GET PROPERTY LogFilesLocation;</p>
<p>or</p>
<p>SET PROPERTY LogFilesLocation OF SERVER TO &#8216;myLogsFolder&#8217;;<br />
GET PROPERTY LogFilesLocation OF SERVER;</p>
<p>If kernel works under the vserver global LogFilesLocation is unavailable and you should operate with vserver&#8217;s LogFilesLocation property instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=363</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MAC 64 bits &#8211; introducing vcomponents_x64 for ADKs/x64</title>
		<link>http://www.valentina-db.com/blog/?p=360</link>
		<comments>http://www.valentina-db.com/blog/?p=360#comments</comments>
		<pubDate>Sat, 26 Jun 2010 08:52:06 +0000</pubDate>
		<dc:creator>Ruslan Zasukhin</dc:creator>
				<category><![CDATA[64 bit]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[4.7]]></category>

		<guid isPermaLink="false">http://www.valentina-db.com/blog/?p=360</guid>
		<description><![CDATA[Yesterday I have try to make installer of VPHP_Standalone_x64, which could be our first 64-bit ADK,  and have realize that it is not good idea keep in the same /usr/local/lib/vcomponents both 32 and 64 bit DLLs.

So I have start process of changes all our kernel and vserver XCODE projects and scripts to use for 64 [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I have try to make installer of VPHP_Standalone_x64, which could be our first 64-bit ADK,  and have realize that it is not good idea keep in the same /usr/local/lib/vcomponents both 32 and 64 bit DLLs.</p>
<p><span id="more-360"></span></p>
<p>So I have start process of changes all our kernel and vserver XCODE projects and scripts to use for 64 bit targets separate folder  /usr/local/lib/vcomponents_x64.</p>
<p>VSERVER project will be corrected to use it and install it inside of self.</p>
<p>ADK 64 bits (and this is going to be in the nearest time VPHP_Standalone_x64, VSDK_x64, V4CC_X64) also will use this folder in installers.</p>
<p>Note that on Windows we already have two such folders:<br />
/Program Files/Paradigma Software/vcomponents_win_vc<br />
/Program Files (x86)/Paradigma Software/vcomponents_win_vc</p>
<p>On Linux we also do not have such problem, because linux-32 and linux-64 are separated itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=360</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Renew Before Expiration for Discounted Pricing</title>
		<link>http://www.valentina-db.com/blog/?p=356</link>
		<comments>http://www.valentina-db.com/blog/?p=356#comments</comments>
		<pubDate>Mon, 24 May 2010 04:37:48 +0000</pubDate>
		<dc:creator>Lynn</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Paradigma Software]]></category>

		<guid isPermaLink="false">http://www.valentina-db.com/blog/?p=356</guid>
		<description><![CDATA[Last year, Paradigma Software announced a grace period to go along with changes to the upgrade policy. The grace period on updates will finish on July 1, 2010. Each purchase or update of a Valentina DB product includes 12 months of free updates including any fixes, improvements and new features.

Renewal means you get an additional [...]]]></description>
			<content:encoded><![CDATA[<p>Last year, Paradigma Software announced a grace period to go along with changes to the upgrade policy. The grace period on updates will finish on July 1, 2010. Each purchase or update of a Valentina DB product includes 12 months of free updates including any fixes, improvements and new features.</p>
<p><span id="more-356"></span></p>
<p>Renewal means you get an additional 12 months of updates. To qualify for upgrade pricing, you must renew your Valentina licenses no later than the last day of your previous license.</p>
<p>How do you know when your license expires? The easiest way is to look at email you received that contained your serial number or license file. If you are unsure, you can also contact Valentina support through the online support system.</p>
<p>Paradigma will honor renewal pricing for all expired licenses through the end of June 2010, so if you haven&#8217;t upgraded your ADK or Valentina Developer Network in over a year, now is the time to take advantage of renewal pricing and get the current version of your product, plus an additional 12 months of updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=356</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vClient becomes thread-safe</title>
		<link>http://www.valentina-db.com/blog/?p=353</link>
		<comments>http://www.valentina-db.com/blog/?p=353#comments</comments>
		<pubDate>Fri, 21 May 2010 08:53:53 +0000</pubDate>
		<dc:creator>Ivan Smahin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Valentina Server]]></category>
		<category><![CDATA[Valentina Studio Admin]]></category>
		<category><![CDATA[Valentina Studio Pro]]></category>

		<guid isPermaLink="false">http://www.valentina-db.com/blog/?p=353</guid>
		<description><![CDATA[Now you should not synch vClient API calls  - vClient do it self and you are free to access and operates with vClient&#8217;s remote objects from different threads similiangly.
In particular, vStudio operates with remote connections via multiple threads  and it was a source of some glitches and unexpected errors especially with a long queries.  Now there [...]]]></description>
			<content:encoded><![CDATA[<p>Now you should not synch vClient API calls  - vClient do it self and you are free to access and operates with vClient&#8217;s remote objects from different threads similiangly.</p>
<p>In particular, vStudio operates with remote connections via multiple threads  and it was a source of some glitches and unexpected errors especially with a long queries.  Now there are no more errors like &#8220;EOF reached&#8230;&#8221; or &#8220;Broken packet received&#8230;&#8221; which were result of incorrect thread synch.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=353</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Altering ObjectPtr</title>
		<link>http://www.valentina-db.com/blog/?p=350</link>
		<comments>http://www.valentina-db.com/blog/?p=350#comments</comments>
		<pubDate>Tue, 04 May 2010 14:56:51 +0000</pubDate>
		<dc:creator>Ivan Smahin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Paradigma Software]]></category>
		<category><![CDATA[Valentina KERNEL]]></category>
		<category><![CDATA[Valentina SQL]]></category>

		<guid isPermaLink="false">http://www.valentina-db.com/blog/?p=350</guid>
		<description><![CDATA[ObjectPtr field contains RecID values of some &#8220;target&#8221; table. If you need to change ObjectPtr in order to point another table those values are not valid anymore &#8211; so default behavior is to nullify them.  But sometime it looks to be too strong. For instance - changing  field or link name or on-delete policy should not cause [...]]]></description>
			<content:encoded><![CDATA[<p>ObjectPtr field contains RecID values of some &#8220;target&#8221; table. If you need to change ObjectPtr in order to point another table those values are not valid anymore &#8211; so default behavior is to nullify them.  But sometime it looks to be too strong. For instance - changing  field or link name or on-delete policy should not cause such data zeroing.</p>
<p>There are two ways to keep existed values altering ObjectPtr:</p>
<ol>
<li>There is a global property &#8211; OnChangeTypeZeroPtr. It is set to true by default. But you may change it with following statement &#8211; &#8220;SET PROPERTY OnChangeTypeZeroPtr TO false&#8221;. After this altering ObjectPtr will prevent zeroing data (sure it will be nulls for records which are absent in the new target table).  This property is not &#8220;schema-storable&#8221; &#8211; so you should set it up on each run if you need it.</li>
<li>The first approach is a global setting &#8211; so you will be able to keep some ObjectPtr values even changing &#8220;target&#8221; table. So we implement one more way &#8211; much more simple because the only thing you should keep in your mind is &#8211; the values will be preserved until you touch &#8220;target table&#8221; ObjectPtr property (because all values will be valid for the same target anyway).</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=350</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paradigma Software Sponsoring Portland Code Camp 2010</title>
		<link>http://www.valentina-db.com/blog/?p=313</link>
		<comments>http://www.valentina-db.com/blog/?p=313#comments</comments>
		<pubDate>Tue, 27 Apr 2010 14:47:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Paradigma Software]]></category>
		<category><![CDATA[Portland Code Camp 2010]]></category>

		<guid isPermaLink="false">http://valentina-db.com/blog/?p=313</guid>
		<description><![CDATA[Paradigma Software is a truly international company, but it also has strong roots in the great Northwest &#8211; the Silicon Forest area including the greater Portland area.  Paradigma Software is proud to be a sponsor for Portland Code Camp 2010.
About Portland Code Camp
Portland Code Camp and SQL Saturday are combining and coordinating  efforts to [...]]]></description>
			<content:encoded><![CDATA[<p>Paradigma Software is a truly international company, but it also has strong roots in the great Northwest &#8211; the Silicon Forest area including the greater Portland area.  Paradigma Software is proud to be a sponsor for <a title="Portland Code Camp" href="http://www.portlandcodecamp.org/" target="_blank">Portland Code Camp 2010</a>.<span id="more-313"></span></p>
<p>About Portland Code Camp</p>
<blockquote><p>Portland Code Camp and SQL Saturday are combining and coordinating  efforts to bring 700–800       regional software development professionals together for the  opportunity to immerse themselves in seminars,       presentations, group exploration, and networking.       Participants will be able to engage in their preferred technology,  as well as to sample other options,       with a focus on extending information exchange and enhancing the  cross pollination of ideas.</p></blockquote>
<p>Portland Code Camp happens on May 22, 2010 at the University of Portland.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=313</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changes in Valentina for Cocoa API.</title>
		<link>http://www.valentina-db.com/blog/?p=346</link>
		<comments>http://www.valentina-db.com/blog/?p=346#comments</comments>
		<pubDate>Sat, 24 Apr 2010 10:53:17 +0000</pubDate>
		<dc:creator>Ruslan Zasukhin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Valentina for Cocoa]]></category>
		<category><![CDATA[4.6]]></category>

		<guid isPermaLink="false">http://valentina-db.com/blog/?p=346</guid>
		<description><![CDATA[Erne have report bug http://www.valentina-db.com/bt/view.php?id=4885 in Valentina for Cocoa (V4CC).
Problem was that VField.value in ObjC implemented as pair of methods (in other Valentina ADKs, e.g. Valentina for REALbasic it is a true property of class). So if to override this pair in the sub-classes then always will be called overridden methods.
To resolve issue, we have decide to [...]]]></description>
			<content:encoded><![CDATA[<p>Erne have report bug <a href="http://www.valentina-db.com/bt/view.php?id=4885">http://www.valentina-db.com/bt/view.php?id=4885</a> in Valentina for Cocoa (V4CC).</p>
<p>Problem was that VField.value in ObjC implemented as pair of methods (in other Valentina ADKs, e.g. Valentina for REALbasic it is a true property of class). So if to override this pair in the sub-classes then always will be called overridden methods.</p>
<p>To resolve issue, we have decide to rename these methods in all VField sub-classes. Rules now are simple:</p>
<p><span id="more-346"></span></p>
<p>a) for VField we have methods, which return and accept value is (id) object. If you have come to ObjC from other languages, you can think about (id) object as kind of VARIANT.</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> &#8211; (id) value;<br />
- setValue: (id) inValue;</span></p>
<p>b) for all sub-classes of VField we name these pair of methods according to sub-class name. For example:</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> &#8211; (long) longValue;<br />
- setLongValue: (long) inValue;</span></p>
<pre>    - (float) floatValue;
    - setFloatValue: (float) inValue;</pre>
<div><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;"><br />
</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=346</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NEW Function Added: hash MD5()</title>
		<link>http://www.valentina-db.com/blog/?p=299</link>
		<comments>http://www.valentina-db.com/blog/?p=299#comments</comments>
		<pubDate>Fri, 16 Apr 2010 21:03:17 +0000</pubDate>
		<dc:creator>Ruslan Zasukhin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Valentina KERNEL]]></category>
		<category><![CDATA[Valentina SQL]]></category>
		<category><![CDATA[4.6]]></category>

		<guid isPermaLink="false">http://valentina-db.com/blog/?p=299</guid>
		<description><![CDATA[Ivan have implement today MD5() function, which can be used in EXPRESSION of Valentina SQL. 
Bart have asked this function to be able produce UNIQUE INDEX for strings/texts bigger of 128 chars. This limit comes from fact that indexes of Valentina use pascal-like storage format for strings, e.g. 256 bytes maximum, 128 for UTF16.
]]></description>
			<content:encoded><![CDATA[<p>Ivan have implement today <a href="http://valentina-db.com/dokuwiki/doku.php?id=valentina:vcomponents:vsql:reference:expr:funcs_string#md5_str">MD5()</a> function, which can be used in EXPRESSION of Valentina SQL. </p>
<p>Bart have asked this function to be able produce UNIQUE INDEX for strings/texts bigger of 128 chars. This limit comes from fact that indexes of Valentina use pascal-like storage format for strings, e.g. 256 bytes maximum, 128 for UTF16.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=299</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPEED of DB Open for Database with 1000+ Tables: -20 sec</title>
		<link>http://www.valentina-db.com/blog/?p=297</link>
		<comments>http://www.valentina-db.com/blog/?p=297#comments</comments>
		<pubDate>Thu, 15 Apr 2010 20:51:52 +0000</pubDate>
		<dc:creator>Ruslan Zasukhin</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Valentina KERNEL]]></category>
		<category><![CDATA[4.6]]></category>

		<guid isPermaLink="false">http://valentina-db.com/blog/?p=297</guid>
		<description><![CDATA[44 Seconds for that 1023 tables DB still not looks good for me, and I have continue search for ways to improve it. And after one more day of work time have go down to 34 sec from original 54.
And this new optimization is even better! It is also made on INDEX-level and affects absolutely [...]]]></description>
			<content:encoded><![CDATA[<p>44 Seconds for that 1023 tables DB still not looks good for me, and I have continue search for ways to improve it. And after one more day of work time have go down to 34 sec from original 54.</p>
<p>And this new optimization is even better! It is also made on INDEX-level and affects absolutely ANY index search operation!!  Especially we will see effect for searches that return many records into Set. </p>
<p>I see yet two possible steps to optimize speed of open for database.<br />
* [minor] &#8211; &#8230;<br />
* [major] &#8211; start to cache data in the algorithms that read schema from recursive sysItem table.</p>
<p>Target is to make time few seconds only.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.valentina-db.com/blog/?feed=rss2&amp;p=297</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
