OS X Loads DYLIB from App folder ignoring install_path … Oops?

Our Valentina Studio project has one Application target and dozen of plugins targets. Plugins are made as bundles.
All these targets build products into the same folder “Debug (Native)” or “Release (Universal)”.
Then Run Scripts do copy plugins into App package and using install_name utility correct install paths for them.

Continue reading OS X Loads DYLIB from App folder ignoring install_path … Oops?

XCODE Breakpoints Not Working

Yesterday I have decide to resolve problem with absolutely not working breakpoints in the XCODE 3.2.3 on OS X 10.6 (may be others also) working with our Valentina Studio project.

In the past we also did have such problems, but not so bad. Breakpoints did work sometimes, in worse case we was able to insert DebugStr(“\p”) into code, and that 100% did stop in the debugger as for app, so fot its plugins and for database engine DYLIBs.

And yesterday I have to see the first time that even DebugStr() do not stops. Wow.

I have spent many hours googling about this problem. And have found few key places.

Continue reading XCODE Breakpoints Not Working

NOW V4CC/iV4CC Works with GarbageCollection-enabled apps also

For this we just have set option GarbageCollection = SUPPORTED for V4CC (32/64)  and iV4CC (Dev/Sim)  targets. This means that now these frameworks will work in both kinds of apps: GC-enabled and GC-not-enabled.

Note, that internally V4CC still uses retain/release. Also keep in mind that we very recommending to developers manage lifetimes of database objects manually. Just image that you have allow to GarbageCollector manage a VCursor instance. When you think record locks will be released?

[TIP] Protection from SQL Injection Attack.

This tip is expired by article two-steps-forward-to-more-secure-applications. The First part of the article discusses  SQL Injection Attack and how to develop code protected from it.

After read of the article you will know that to easy way for protection – is usage of SQL binding. Wow? One more reason to ALWAYS use SQL binding!  Other well known reason are

  • reduces CPU time as for client so for server, because no string concatenations on the client side, and less job for parser on the server side.
  • enables usage of Query Pool, because SQL command is the same byte to byte.

[NEW][API] Valentina.CopyCursorToNewTable()

We introduce a new utility method Valentina.CopyCursorToNewTable(), which is able to save you hundreds of lines of advanced code in your ADK-based applications. This method added into major Valentina ADKs.

You can read detailed description of this new method here.

[IMPROVE] FTP Folders for Valentina Products (32/64/OS)

Since we have constantly growing number of Valentina products, supported OS and now 64-bit versions, we have got quite big number of files for single folder.

From now we will change organization of a release folder. It will contains sub-folders

  • lin32
  • lin64
  • mac32
  • mac64
  • win32
  • win64

So you can easy locate sub-set of products required for your OS and Bits.

[NEW] 64-bit ADK added to MAC OS X: C++, Cocoa, PHP

We introduce our first 64-bit ADKs for MAC OS X:

  • Valentina for C++ (VSDK)
  • Valentina for  Cocoa (V4CC)
  • Valentina for  PHP Standalone (VPHP)

It is clear that we cannot make V4RB, V4REV and such to be 64-bits because their IDEs do not support this.

Next our step in this direction, will be introduction of 64 bit ADKs for Windows, VSDK, VNET, …

Changes in Valentina for Cocoa API.

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 rename these methods in all VField sub-classes. Rules now are simple:

Continue reading Changes in Valentina for Cocoa API.