Google
 

Monday, March 27, 2006

Peace Signs in Sarajevo

There is a great news article on Sarajevo & BiH in the Washington Post.

"After the War, the Capital Rises From the Ruins


The word most often heard from visitors about Sarajevo is "hospitable." After the concert, I walked the city streets, chatting with shop owners selling copper coffee sets and wooden crafts in Old Town, which Ottoman Turks founded in the 15th century. I wondered how a population so recently torn apart by hate could be so warm and inviting. Everywhere I stopped, I was beseeched to stay and share strong Bosnian (Turkish) coffee or something stronger. Who was I to refuse?
"

The return of the VAX cluster

iSCSI is making network shared storage an increasingly popular choice in the midmarket. A $15K device can offer 2.5TB shared storage to 6 servers. Now that looks remarkably like the architecture of the VAX clusters of old. Perhaps it is time to resurrect the Firebird VAX clustering code.

Read more here

New acronyms FLAPS , FWAP, FWIP

FLAPS is FLAP with ssl (that is s for)

FWAP is an acronym for the combination Microsoft Windows, Apache, Firebird and one or more of Perl, PHP and Python. It is modelled after the more well-known FLAP, referring to the all-open source/free software approach which uses Linux instead of Windows.
FWIP is the WIMP equivalent (alias) with firebird used instead of mysql

Firebird 2.0 tagged for RC1!

Dmitry Yemanov reported:

The CVS tree has been tagged for RC1 last week, the release notes are also ready. The build makers are now in the process of compiling the kits and testing them. So we expect RC1 to be released sometime this week.

Sunday, March 26, 2006

Firebird source code reviews

Claudio Valderrama wrote:

"Recently, Coverity presented their first results in their scanning technology that hunts for defects in source code. One of the addressed projects was Firebird. After Roman Rokytskyy reviewed the results, he concluded the failures are in two areas ..."

Saturday, March 25, 2006

[ Firebird/Fyracle ] Example of stored procedure in C #

Several months ago, Carlos Guzmán Alvarez posted sample of stored procedure written in C #.
Article is on Spanish but here is babelfish translation :

"The procedure stored this carried to C # from one of the stored procedures of the data base of example that comes with Firebird (employee.fdb), asi we have the possibility of verifying that the results are the correct ones of a very simple form:)

The procedure stored original in PSQL:


CREATE PROCEDURE to ship_order (po_num CHAR(8))
AS
Ord_stat DECLARES VARIABLE CHAR(7);
Hold_stat DECLARES VARIABLE CHAR(1);
Cust_no INTEGER DECLARES VARIABLE;
Any_po DECLARES VARIABLE CHAR(8);
BEGIN
SELECT s.order_status, c.on_hold, c.cust_no
FROM salts s, to customer c
WHERE to po_number =:po_num
AND s.cust_no = c.cust_no
INTO:ord_stat,:hold_stat,:cust_no;

/ * This purchase to order you have been already shipped.
*/
IF (ord_stat = ' shipped') THEN
BEGIN
EXCEPTION order_already_shipped;
SUSPEND;
END

/ * Customer is on hold. */
ELSE IF (hold_stat = ' * ') THEN
BEGIN
EXCEPTION customer_on_hold;
SUSPEND;
END

/ *
* If there is an unpaid balance on orders shipped
to over 2 months ago,
* put the to customer on hold.
*/
FOR SELECT to po_number
FROM salts
WHERE cust_no =:cust_no
AND order_status = ' shipped'
AND paid = ' n'
AND ship_date < CAST('NOW' AS TIMESTAMP) - 60
INTO:any_po
DO
BEGIN
EXCEPTION customer_check;

UPDATE to customer
SETH on_hold = ' * '
WHERE cust_no =:cust_no;

SUSPEND;
END

/ *
* Ship the to order.
*/
UPDATE salts
SETH order_status = ' shipped', ship_date = ' NOW'
WHERE to po_number =:po_num;

SUSPEND;
END!


The code carried to C # would be left asi:


public FbResultSet ShipOrder(string to
purchaseOrderNumber)
{
string orderStatus = null;
string holdStatus = null;
int to customerNumber = 0;

to purchaseOrderNumber = purchaseOrderNumber.Trim();

FbConnection connection = new
FbConnection(this.GetConnectionString());
connection.Open();

string SQL = "SELECT s.order_status, c.on_hold, c.cust_no" +
"FROM salts s, to customer c" +
"WHERE to po_number = to @PurchaseOrderNumber AND
s.cust_no = c.cust_no";

using (FbCommand select = new FbCommand(sql, connection))
{
to select.Parameters.Add("@PurchaseOrderNumber",
FbDbType.Char).Value = to purchaseOrderNumber;

FbDataReader to reader = select.ExecuteReader();

if (reader.Read())
{
orderStatus = reader.GetString(0);
holdStatus = reader.GetString(1);
to customerNumber = reader.GetInt32(2);
}

reader.Close();
reader.Dispose();
to reader = null;
}

/ * This purchase to order you have been already
shipped. */
if (orderStatus == "shipped")
{
throw new Exception("Order status is \"shipped.\"");
}
else if (holdStatus == "*")// Customer is on hold.
{
throw new Exception("This to customer is on hold.");
}

/ *
* If there is an unpaid balance on orders shipped
to over 2 months ago,
* put the to customer on hold.
*/
SQL = "SELECT to po_number" +
"FROM salts" +
"WHERE cust_no = to @CustomerNumber" +
"AND order_status = ' shipped'" +
"AND paid = ' n'" +
"AND ship_date < CAST('NOW' AS TIMESTAMP) - 60 ";

using (FbCommand select = new FbCommand(sql,
connection))
{
to select.Parameters.Add("@CustomerNumber",
FbDbType.Integer).Value = to customerNumber;

using (FbDataReader to reader = select.ExecuteReader())
{
while (reader.Read())
{
SQL = "UPDATE to customer SETH on_hold = ' * ' WHERE
cust_no = to @CustomerNumber;";

FbCommand update = new FbCommand(sql, connection);
to update.Parameters.Add("@CustomerNumber",
FbDbType.Integer).Value = to customerNumber;

int rowsAffected = update.ExecuteNonQuery();

update.Dispose();
update = null;

throw new Exception("Overdue balance -- dog not ship.");
}
}
}

/ *
* Ship the to order.
*/
SQL = "UPDATE salts SETH order_status = ' shipped',
ship_date = ' NOW' WHERE to po_number = to @PurchaseOrderNumber";

using (FbCommand update = new FbCommand(sql, connection))
{
to update.Parameters.Add("@PurchaseOrderNumber",
FbDbType.Char).Value = to purchaseOrderNumber;

int rowsAffected = update.ExecuteNonQuery();

update.Dispose();
}

//Return an empty resultset
return new FbResultSet();
}


In order to define the almancenado procedure, the name of engine is not definitive and the format to either indicate the class and the method that are going away to execute:


CREATE PROCEDURE to ship_order
(
po_num CHAR(8)
)
LANGUAGE DOTNET
External NAME '
FirebirdSql.ExternalEngine.Samples.Employee,
FirebirdSql.ExternalEngine.Samples::ShipOrder'!


By I complete would be possible to execute using it:


EXECUTE PROCEDURE SHIP_ORDER('V9320630 ')


It will try to publish another example in which resultset is given back."

FlameRobin whitepaper

Milan writes:

"it was recently concluded that the original authors have the copyright
on papers that were published at the Firebird Conference, so I decided
to make my paper available to the public.

Some small portion of the text is outdated (based on version 0.4.0),
but you can read about history and basic ideas around the project:

http://www.flamerobin.org/flamerobin_paper.pdf
"

"DevCo" - Ping...

by Allen Bauer

"It's Friday. It's been a full week. The BDS2006 update is nearing completion. The team is adopting some more agile processes and continuing on Highlander (the codename for the next BDS release) as we peel folks away from the update. We had some “proof-of-concept“ demos in a meeting this morning that seems to have sparked some real interest among the team. The small email storm that followed was a good sign...

We had a new compiler engineer start this week! Yet, there's still some more open req's for the Delphi/C++Builder. We're looking to fill some of those positions now. This is a good opportunity for someone (or more) to get on board before the spin out."


Read more

Leveraging breakpoint properties in the Delphi IDE

Steve Trefethen writes:

"Have you ever tried debugging GUI code where focus changes cause code to execute that you didn't want executed? This is a fairly standard GUI debugging problem and one that Mark Edington (of Delphi R&D) recently discussed relating to debugging drag/drop code in the VCL. Having written a custom menuing system (in ActionBands) I've had my fair share of this type of debugging as well. I was helping Mark debug the above drag/drop problem and it occurred to me that it might be useful to mention a few breakpoint debugger features in our IDE that are likely overlooked by a lot of people."

Read more

Friday, March 24, 2006

Teach Yourself Programming in Ten Years

Teach Yourself Programming in Ten Years

Interesting thoughts. Should be taught at schools. :)

Interbase and Delphi to move to Europe?

Borland CEO promises 'caring' IDE overlord by Gavin Clarke on The Register. The Reg suggests that Delphi and Interbase may be acquired by a European investor.

MSSql difficult to configure? Switch to Firebird!

However I don’t like MSSql server, first of all it is hard to configure, finding solutions to problems is not an easy task, it has lots of dependencies scattered around the hard disk. Hail mysql and firebird.

Let there be Fire - morfik site revamped

Today I was glad to see the new website of Morfik Technology was unveiled. Along with a totally redesigned web site, comes the public release of a test version of the their WebOS AppsBuilder tool. These transformations probably reflect a move by Morfik, to bring the development of the WebOS AppsBuilder into the light, after being kept in the shadows for quite some time.


Ed:if you don't know what is the link between firebird and morfik here is an e-mail interview with the Morfik team

TurboCASH development implementing Firebird database

From the blog of the day department

This blogger's comment:

I think this is really good news, since the Delphi source code poses a lot of limitations, Delphi being a commercial compiler/IDE. The way I understand it, you basically have to purchase Delphi if you want to customize and recompile the TurboCASH source. The same with BDE-Paradox. I'd really like to see TurboCASH take-off in this direction.

Fyracle presentation

Oracle-mode Firebird (Fyracle) was presented at Developer's GigaCon in Warsaw. Paul Ruizendaal's paper is available for general viewing.

Borland CEO promises 'caring' IDE overlord

Nielsen told the annual EclipseCon show in Santa Clara: "Its my commitment to find an investor who will invest in the business and drive it forward. I'm not looking for someone who is a Lex Luthor or the Evil Empire who will destroy the business. That's going to reflect badly on Borland."


Read more

Thursday, March 23, 2006

A few results from a Performance Test of Firebird 2

Holger Klemt from IBExpert have some interesting story.

In short, Firebird 2.0 beta 2 is twice as fast as FB 1.53 and almost 4 times faster than Interbase 7.51!

Read complete story:

"In the latest Edition of IBExpert, we added some new modules, on is
a database script with a simple sales database, that creates its test
data from a stored procedure.

now i had some time to test it against fb153, fb2b2 (and ib751)

What does it do: first it creates a almost empty database with just
some entries in helptables. after the database is created, you have to
start one procedure and wait for the time it takes.

the procedures creates a customer table from the strings in the
helptables, it creates products from other strings, it creates
order header and order lines. based on that some trigger also
write a sales history etc.

all in all you can create a testdatabase as large as you need, because
the procedure called initall gives you the possibilty to fill a
parameter with an integervalue, that defines the size of the final
database. when you use the value 10000, then 10000 customers are
created, 10000 articles and a lot of orders etc. The Testdatabase
is before starting the procedure created with 16k pagesize and the
cache buffers were changed to 50000.

for the test i used a value of 100000 so the final database that is
created has a size of about 200MB.

While executing this procedure with the parameter 100000, it starts
about 5,200,000 Selects, 800,000 Updates and 1,700,000 Inserts, all
in all about 7,700,000 Operations.

now the time when starting this on a dual core AMD Athlon 64 x2 3800+
with 2 GB RAM.

using fb153: 486 Seconds (not bad, about 16,000 Operations per second)

uninstalled fb153, installed fb2 beta 2: 244 Seconds!!!!!!!!

Wow, not that i would say it was slow on fb153, but the results on
fb2b2 are impressive. About 31500 Operations per second.

Congratulations to the developer Team. you made a brilliant job.

Starting with the next IBExpert Version, the Demodatabase will be
available also in the trial version and in the personal edition.

if you would like to test it now on your machine, just Install
IBExpertLive (download details on www.ibexpert.com). I have added
the demodatabase in my session "Holger Klemt - Server Performance -
How to make your application run faster (FBC2005)", so you can connect
to view this session and press on the left side on "download session
files" to get the installer.

Holger
www.ibexpert.com


p.s.: did i mention the result from ib751? 838 Seconds"

Tuesday, March 21, 2006

Tax System of Open Code

I their latest issue, INFO magazine published an article about TAMP Project (where I work), and this is one of Firebird success stories...

I have scanned those 3 pages, and our translator have translated article to English ;-)

Here it is (Bosnian version):

Original page 1
Original page 2
Original page 3

And now English translation

The Big Secret of the OpenSource Community

I have written article about Firebird for Bosnian IT magazine INFO several months ago. I have scanned those 3 pages, and also translated article to English ;-)

Here it is:

Original page 1
Original page 2
Original page 3

And now English translation

I hope that you will like it!
Enjoy!

I am back!

I was too busy to write here in last several (or even more than several) months.
I'll try to write as much as possible from now on!