This is the firebird related news from week 7-14 June
News around firebird world:
Firebird django backend call for testing help and progress.
Firebird 2.1.2 included in SourceMage Linux.
Flamerobin 0.9.2 packages into Fedora Linux and epel repository
Fedora 11 released with Firebird included in the main repository
New IBProvider version with enhanced Firebird 2.5 support
About FB support in Delphi Weaver
How to Query the Firebird Fisheye
Firebird: Deal with Unavailable Database
Firebird DTP Plugin for Eclipse released
Firebird Source Patches and Commits:
Fix CORE-2370: SQL Plan greater than 2048 characters is not printed at all in ISQL.
This is the client side fix. Server-side fixes will follow.
We should be careful to not upset FB2.1 and before.
New messages to fix CORE-2505: beware of built-in functions returning NaN and Inf. Code will follow in one day.
Better input type for SQZ_decompress plus a bit of style
Apply Alex/Bill/Jerry/me patch re. portability in redefinition of operator new
Sign extension problem, thanks Bill Oliver.
Update logic for ininf() in POSIX and use macro isnan instead of _isnan in Windows.
Update to-do a tad.
Locking something in AST turns out to be a bad idea. Let's use a "dirty read" approach and honestly return the "unknown" state for a not initialized backup manager (quite rare situation in practice).
The third incarnation of the monitoring internals. I'm not happy to commit such big changes into the point release, but this is the only solution for the AST signal safety issues in POSIX (see CORE-2483).
The change consists of a few parts
Remove unneeded reference to isc_ipc, since this file is not needed to build gpre_boot
In 3.0 binreloc should be turned on
Opportunist developer sees the place to constify the code.
:-)
Undo huge and not friendly fix for Sun compiler. Missed file
Patch by DS and VKh to speed up SQZ in some cases
Avoid sign extension problems in CVT
Much more easy way to please Sun compiler and not touch anything more
isc_ipc usage cleanup
Though we do not actively use signals since 2.5, let's better initialize paths before setting handlers
Rename function as agreed with Alex and Dmitry.
Don't be strictive with compiler warnings
Reworked class Semaphore:
1. Mach semaphores on Darwin.
2. No more local SysV semaphores.
3. Fixed bugs in conditional var based semaphore.
4. Moved big methods from .h to .cpp file.
Mac port - use correct full name for libib_util
Fix CORE-2501: bin_shl and bin_shr shouldn't accept negative shifts.
Put bad_port_context() in alphabetical order and created a little helper, send_error().
Use PORT_FILE for port file lock - thanks to Claudio
Make initialization distributed - each subsystem does what it needs when needs, removed gds.cpp:init()
Backport improvement CORE-1171: make floating point's exponential format the same across platforms.
After asking Alex, he confirms that calling fb_shutdown_callback in isql is for everything except WIN_NT (make code equivalent to previous versions).
Improvement CORE-1171: make floating point's exponential format the same across platforms.
Declare exported functions correctly - thanks to Paul Beach
Robocop added Paranoid checks in server.cpp
Slightly improve the retry loops in inet.cpp. Let's give up as soon as the call fails with any unexpected error.
CORE-2263: RemoteAuxPort for SuperClassic and regular Classic.
This change also fixes the possible races in SuperServer (possible after getting rid of the global mutex in the remote subsystem).
robocop is Minimizing casts (reinterpret_cast).
Fixed use of monitoring tables in on disconnect trigger, make pool for DatabaseSnapshot independent
.:(firebird):..:(databases):..:(sql):.
Friday, June 19, 2009
Tuesday, June 09, 2009
Firebird Weekly News #2
This is the firebird related news from week 1-7 June
News around firebird world:
phpBB “quite furry” 3.0.5 released
Under the Firebird umbrella - site updates
Lazarus and Firebird Embedded tutorial on Windows 32 bits
Embarcadero Tools and FB , news from Delphi Day Italy
Here is an interview with Jim Davis, SAS Institute SVP and Chief Marketing Officer.
Firebird Source Patches and Commits:
Improvement CORE-2498 - Make a single attachment usabe by more than one simultaneous threads in embedded
Fixed CORE-2499 - Implementation limit of DISTINCT items are not enforced, causing generation of incorrect BLR
Backported changes extending range of usable auto* tools
What is new and fixed in Version 2.1.x
Backport fix for bug CORE-2348 : More problems with transaction numbers overflowing 32-bit signed integer and corrupting database
Backport sub-task CORE-1647 : Close external table's file even if it used by some cached (inactive) requests.
It also fixed bug CORE-2475 : External table data not visible to other sessions in Classic.
Backport fix for bug CORE-2416 : AV preparing a query with aggregate over derived table
Minor cleanup by robocop
Dimitry Added timeouts to the network event listener code.
Fixed wrong usage of SO_REUSEADDR on Windows.
Alex Fixed Sun compiler warnings
Fixed CORE-2483: Database permanent pool may get corrupted when working with monitoring tables.
Better way to compile utilities/ntrace/os/*/platform.cpp for different platforms
Alex Fixed SYSV semaphores + const correctness + cleanup
Code simplification by robocop (claudio)
This is already a Windows file, no need to check for the WIN_NT macro.
Alex Fixed posix build
.:(firebird):..:(databases):..:(sql):.
News around firebird world:
phpBB “quite furry” 3.0.5 released
Under the Firebird umbrella - site updates
Lazarus and Firebird Embedded tutorial on Windows 32 bits
Embarcadero Tools and FB , news from Delphi Day Italy
Here is an interview with Jim Davis, SAS Institute SVP and Chief Marketing Officer.
Firebird Source Patches and Commits:
Improvement CORE-2498 - Make a single attachment usabe by more than one simultaneous threads in embedded
Fixed CORE-2499 - Implementation limit of DISTINCT items are not enforced, causing generation of incorrect BLR
Backported changes extending range of usable auto* tools
What is new and fixed in Version 2.1.x
Backport fix for bug CORE-2348 : More problems with transaction numbers overflowing 32-bit signed integer and corrupting database
Backport sub-task CORE-1647 : Close external table's file even if it used by some cached (inactive) requests.
It also fixed bug CORE-2475 : External table data not visible to other sessions in Classic.
Backport fix for bug CORE-2416 : AV preparing a query with aggregate over derived table
Minor cleanup by robocop
Dimitry Added timeouts to the network event listener code.
Fixed wrong usage of SO_REUSEADDR on Windows.
Alex Fixed Sun compiler warnings
Fixed CORE-2483: Database permanent pool may get corrupted when working with monitoring tables.
Better way to compile utilities/ntrace/os/*/platform.cpp for different platforms
Alex Fixed SYSV semaphores + const correctness + cleanup
Code simplification by robocop (claudio)
This is already a Windows file, no need to check for the WIN_NT macro.
Alex Fixed posix build
.:(firebird):..:(databases):..:(sql):.
Sunday, May 31, 2009
Firebird Weekly News #1
This is the firebird related news from 25-31 May Week
News around firebird world:
Firebird Romanian community had an small booth and tequila/beer meeting at eliberatica.ro event
I was in the middle of ubuntu.ro/fedoraproject.ro people also one suseromania.ro guy also I want to mention www.rosedu.org and softwareliber.ro.
Here are the picture with faces and names on it

Music/Book/Movie Label uses Firebird
Preparing for 6th FDD - Firebird Developers Day
Firebird Maestro 9.5 released
FirebirdConfig 0.2.0.34 released
Change Manager from Embarcadero will add Firebird support (at last)
Firebird Python PowerConsole 0.7 is released
Flamerobin will switch from subversion to git
Flamerobin Blob Editor on the way
Nice Requests and Bugs:
Ability to rename a table
Firebird Source Patches and Commits:
Make engine create lock files in /tmp/firebird
Lock files location should not be affected by value of TMP environment variable
Do not overload placement new operator. That is not valid accordingly to C++ standard.
Robocop fixed the VC9 project files.
Feature CORE-2470 - Support for alternate format of strings literals but on Firebird-Architect there was an long thread about it .
Added possibility to user inform external routines body , Made external routines entrypoint optional.
Fixed issue with two-phase procedure store and DDL triggers
HVlad Fixed MSVC8 build
Firebird Use COMMONAPPDATA folder on Windows for shared memory files placement (lock table, even table, etc).
Alex Peshkoff worked on Solaris port, related cleanup
Let's not crash while internally disconnecting a Classic process after a database shutdown.
Fix AV in trace when UNICODE collation is not found - thanks to Alex
Multi Threaded safe floating point exceptions control. Raise error in case of FP overflow according to SQL standard requirements.
Alex Peshkoff fixed warnings in AIX port.
Better error reporting. Also, don't block the requester in the case of error.
More fixes for bug CORE-2444 : make remapping of shared memory work correctly.
Fixed CORE-2482: Monitoring tables data collection is unstable when attaching or detaching database.
.:(firebird):..:(databases):..:(sql):.
News around firebird world:
Firebird Romanian community had an small booth and tequila/beer meeting at eliberatica.ro event
I was in the middle of ubuntu.ro/fedoraproject.ro people also one suseromania.ro guy also I want to mention www.rosedu.org and softwareliber.ro.
Here are the picture with faces and names on it

Music/Book/Movie Label uses Firebird
Preparing for 6th FDD - Firebird Developers Day
Firebird Maestro 9.5 released
FirebirdConfig 0.2.0.34 released
Change Manager from Embarcadero will add Firebird support (at last)
Firebird Python PowerConsole 0.7 is released
Flamerobin will switch from subversion to git
Flamerobin Blob Editor on the way
Nice Requests and Bugs:
Ability to rename a table
Firebird Source Patches and Commits:
Make engine create lock files in /tmp/firebird
Lock files location should not be affected by value of TMP environment variable
Do not overload placement new operator. That is not valid accordingly to C++ standard.
Robocop fixed the VC9 project files.
Feature CORE-2470 - Support for alternate format of strings literals but on Firebird-Architect there was an long thread about it .
Added possibility to user inform external routines body , Made external routines entrypoint optional.
Fixed issue with two-phase procedure store and DDL triggers
HVlad Fixed MSVC8 build
Firebird Use COMMONAPPDATA folder on Windows for shared memory files placement (lock table, even table, etc).
Alex Peshkoff worked on Solaris port, related cleanup
Let's not crash while internally disconnecting a Classic process after a database shutdown.
Fix AV in trace when UNICODE collation is not found - thanks to Alex
Multi Threaded safe floating point exceptions control. Raise error in case of FP overflow according to SQL standard requirements.
Alex Peshkoff fixed warnings in AIX port.
Better error reporting. Also, don't block the requester in the case of error.
More fixes for bug CORE-2444 : make remapping of shared memory work correctly.
Fixed CORE-2482: Monitoring tables data collection is unstable when attaching or detaching database.
.:(firebird):..:(databases):..:(sql):.
Wednesday, May 06, 2009
firebird driver for ruby updated to 0.6
you can see the latest fixes for ruby 1.9 and version is now at 0.6 in the gem.spec
seems that you can install directly from github with gem (see the gem ruby icon in the right )
Tuesday, March 17, 2009
django and firebird support
I have started to read the book and maybe i could make it work with firebird (and use the firebird patch to it )
I'm at the chapter 2 Getting started
Also i have started to install the dev version maybe it's easier to patch it and use with firebird

Step 02 completed , I should do the 03 one
http://djangobook.com/en/2.0/chapter03/
So i will try to start with django pre 1.0
$ mkdir django_r7519
$ cd django_r7519/
$ svn checkout http://django-firebird.googlecode.com/svn/trunk/ django-firebird-read-only
$ wget http://django-firebird.googlecode.com/files/django-firebird-7519.diff
$ svn --revision 7519 co http://code.djangoproject.com/svn/django/trunk/
$ cd django-firebird-read-only/
$ mv firebird ../trunk/django/db/backends/
$ cd ../trunk
$ patch -p0 < ../django-firebird-7519.diff
patching file django/db/models/sql/query.py
patching file django/db/models/sql/subqueries.py
patching file django/db/models/fields/__init__.py
patching file django/db/models/fields/related.py
patching file django/db/backends/__init__.py
patching file django/conf/project_template/settings.py
patching file django/__init__.py
patching file django/core/management/validation.py
patching file django/core/management/sql.py
patching file django/contrib/redirects/models.py
patching file django/contrib/admin/models.py
patching file django/contrib/contenttypes/models.py
patching file django/contrib/auth/models.py
patching file django/contrib/flatpages/models.py
So i reached the db and the The MTV Development Pattern (Beavis and Butthead pattern maybe )
http://djangobook.com/en/2.0/chapter05/
In a way i like the Dumb pattern VC
Only the View and the Controller and The Model is in database anyway (triggers/rules/procedures)
I have created an empty database in /var/lib/firebird/2.1/data/firedjango.fdb
with flamerobin
Ok so the the shell worked with my firebird db config in settings.py
$python manage.py shell
>>> from django.db import connection
>>> cursor = connection.cursor()
So the next thing was to create the models and generate the db
$ python manage.py validate
$ python manage.py sqlall books
and here is the output http://gist.github.com/81981
but there is an issue there rand() is now am internal function and it cann't be declared as udf so it should be deleted from django/db/backends/firebird/creation.py or sql script
After that sync worked
$ python manage.py syncdb
import md5
Creating table books_publisher
Creating table books_book
Creating table books_author
Installing index for books.Book model
$ python manage.py shell
(InteractiveConsole)
>>> from books.models import Publisher
>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
... city='Berkeley', state_province='CA', country='U.S.A.',
... website='http://www.apress.com/')
>>> p1.save()
>>> p2 = Publisher(name="O'Reilly", address='10 Fawcett St.',
... city='Cambridge', state_province='MA', country='U.S.A.',
... website='http://www.oreilly.com/')
>>> p2.save()
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[

after i have added the _unicode method
$ python manage.py shell
>>> from books.models import Publisher
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<Publisher: Apress>, <Publisher: O'Reilly>]
databene benerator - added support for firebird
The new freshmeat website is now at version 3.0 and in the new clean interface you can read about this new
tool databene benerator
The true story of Blob on reddit
Saturday, March 07, 2009
Redhat/Fedora port in progress for Firebird
Installing Firebird on FreeBSD - FFAP (Firebird Apache Php)
By far the easiest way to install Firebird is via a package, or the ports tree.
When people in the FreeBSD community get a package running on FreeBSD, they often submit how they did it as a 'port', back to FreeBSD.
( This saves you working out what configure scripts to change, which make to use (make, gmake, bmake, aimk, etc) )
So we'll follow the road they've already blazed. Of course, feel free to download the source tarball, and get it building yourself, but it could take a while...
If you can't find a pre-compiled binary package on FreeBSD.org, firebirdsql.org, or ibphoenix.com, sync up your ports tree.
(Building it yourself ensure's it's built using optimisations for the processor you're running, too)
once ports tree is updated, do:
code:
cd /usr/ports/databases/firebird2-server
make install
Once this is finished, all dependencies are installed, the database is installed, the startup scripts are in place, the firebird user is added, and we're ready to go.
As the comment at the end of the install process suggests, we should change the password of the sysdba user, so lets do that now.
Starting Firebird
This involves running
code:
/usr/local/etc/rc.d/000.firebird.sh start
killall -HUP inetd
Or, simply reboot
Setting up Firebird's SYSDBA User
code:
cd /usr/local/firebird
./bin/gsec -user SYSDBA -pass masterkey
( the ./bin/ is required if you haven't got /usr/local/firebird/bin in your path )
GSEC> modify SYSDBA -pw
( We might add a user while we're here )
GSEC> add testuser -pw testuser
( Now quit out )
GSEC> quit
Done. Now we're ready for databases. the Firebird runs as the user firebird, thusly needs read/write permissions to a directory to store the databases.
I usually make one called '/usr/db':
code:
mkdir /usr/db
chown firebird /usr/db
chgrp firebird /usr/db
chown 770 /usr/db
There we have a nice, secure little home for our databases.
This directory isn't created by the install,as people will always want their databases stored in a different place, on a different HDD controller, etc.
Lets make a database
using your favourite editor, start a file in your home directory called 'fire1.sql', and in it, put the following:
code:
CREATE DATABASE "localhost:/usr/db/fire1.gdb".
COMMIT.
CREATE TABLE tbl_test1(
str_name VARCHAR(100) NOT NULL,
str_phone VARCHAR(20),
PRIMARY KEY(str_name)
).
Then save, and exit the file
Now, well create the database
( It may pay to put '/usr/local/firebird/bin' in your path, to save using the full path to the binaries every time )
code:
isql -u testuser -p testuser <>
Logging in for the very first time
Lets log in, and have a look. Run:
isql -u testuser -p testuser localhost:/usr/db/fire1.gdb
Database: localhost:/usr/db/fire1.gdb, User: testuser
SQL>
You're in! Lets see what's inside:
( Note. Put a semi-colon at the end of every command. It's the terminator at the moment )
SQL> show tables;
TBL_TEST1
SQL>
Let see how that table's made up:
SQL> show table tbl_test1;
STR_NAME VARCHAR(200) Not Null
STR_PHONE VARCHAR(20) Nullable
CONSTRAINT INTEG_2:
Primary key (STR_NAME)
SQL >
Lovely! put some data in
SQL> insert into tbl_test1 (str_name, str_phone)
CON> values ('henry','12345678');
SQL>
( Note the 'CON>' appears while a statement is continuing )
Let's select everything in the table
SQL> select * from tbl_test1;
STR_NAME STR_PHONE
===== ===
henry 12345678
Lets put some more in
SQL> insert into tbl_test1 (str_name, str_phone)
CON> values ('jane','87654321');
SQL>
Select all
SQL> select * from tbl_test1;
STR_NAME STR_PHONE
==== ========
henry 12345678
jane 87654321
Select henry
select * from tbl_test1 where str_name = 'henry';
select people starting with 'h'
select * from tbl_test where str_name like 'h%';
select the first record
select first 1 * from tbl_test1;
select 1 record, but skip 1
select first 1 skip 1 * from tbl_test1;
select any records with the letter 'e' in them
select * from tbl_test1 where str_name containing 'e';
As you can see, the SQL is very similar to other databases.
portsnap fetch
portsnap extract
Installing apache 2.2
cd /usr/ports/www/apache22/
make install clean
Installing php extension
cd /usr/ports/lang/php5
make install clean
cd /usr/ports/lang/php5-extensions
make install clean
cd /usr/ports/database/php5-interbase
make install clean
We need now to enable the Php and firebird extension for it (interbase.so)
Firstly we will edit apache’s config - this lives in /usr/local/etc/apache22/
Open /usr/local/etc/apache22/httpd.conf in your favroute editior (or nano while your learning to love vi)
Look for this line : LoadModule rewrite_module libexec/apache22/mod_rewrite.so
directly underneath this line add the following 3
LoadModule php5_module libexec/apache22/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Then find this line : DirectoryIndex index.html and change it to DirectoryIndex index.php index.html
After this is done we need to give php an ini - the easiest way to do this is to copy the dist one into place
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
open /usr/local/etc/php/extensions.ini in your favroute editor and look for this line : extension=interbase.so if it isnt there, add it.
one last change and we are good to go!
open /etc/rc.conf in your text editor of choice and add these lines :
apache2_enable="YES"
once your done reboot and enjoy!
Recomdeded Reading :
1.The Complete FreeBSD Book
2.Free BSD Handbook
I was inspired for the Apache/Php install from this article
When people in the FreeBSD community get a package running on FreeBSD, they often submit how they did it as a 'port', back to FreeBSD.
( This saves you working out what configure scripts to change, which make to use (make, gmake, bmake, aimk, etc) )
So we'll follow the road they've already blazed. Of course, feel free to download the source tarball, and get it building yourself, but it could take a while...
If you can't find a pre-compiled binary package on FreeBSD.org, firebirdsql.org, or ibphoenix.com, sync up your ports tree.
(Building it yourself ensure's it's built using optimisations for the processor you're running, too)
once ports tree is updated, do:
code:
cd /usr/ports/databases/firebird2-server
make install
Once this is finished, all dependencies are installed, the database is installed, the startup scripts are in place, the firebird user is added, and we're ready to go.
As the comment at the end of the install process suggests, we should change the password of the sysdba user, so lets do that now.
Starting Firebird
This involves running
code:
/usr/local/etc/rc.d/000.firebird.sh start
killall -HUP inetd
Or, simply reboot
Setting up Firebird's SYSDBA User
code:
cd /usr/local/firebird
./bin/gsec -user SYSDBA -pass masterkey
( the ./bin/ is required if you haven't got /usr/local/firebird/bin in your path )
GSEC> modify SYSDBA -pw
( We might add a user while we're here )
GSEC> add testuser -pw testuser
( Now quit out )
GSEC> quit
Done. Now we're ready for databases. the Firebird runs as the user firebird, thusly needs read/write permissions to a directory to store the databases.
I usually make one called '/usr/db':
code:
mkdir /usr/db
chown firebird /usr/db
chgrp firebird /usr/db
chown 770 /usr/db
There we have a nice, secure little home for our databases.
This directory isn't created by the install,as people will always want their databases stored in a different place, on a different HDD controller, etc.
Lets make a database
using your favourite editor, start a file in your home directory called 'fire1.sql', and in it, put the following:
code:
CREATE DATABASE "localhost:/usr/db/fire1.gdb".
COMMIT.
CREATE TABLE tbl_test1(
str_name VARCHAR(100) NOT NULL,
str_phone VARCHAR(20),
PRIMARY KEY(str_name)
).
Then save, and exit the file
Now, well create the database
( It may pay to put '/usr/local/firebird/bin' in your path, to save using the full path to the binaries every time )
code:
isql -u testuser -p testuser <>
Logging in for the very first time
Lets log in, and have a look. Run:
isql -u testuser -p testuser localhost:/usr/db/fire1.gdb
Database: localhost:/usr/db/fire1.gdb, User: testuser
SQL>
You're in! Lets see what's inside:
( Note. Put a semi-colon at the end of every command. It's the terminator at the moment )
SQL> show tables;
TBL_TEST1
SQL>
Let see how that table's made up:
SQL> show table tbl_test1;
STR_NAME VARCHAR(200) Not Null
STR_PHONE VARCHAR(20) Nullable
CONSTRAINT INTEG_2:
Primary key (STR_NAME)
SQL >
Lovely! put some data in
SQL> insert into tbl_test1 (str_name, str_phone)
CON> values ('henry','12345678');
SQL>
( Note the 'CON>' appears while a statement is continuing )
Let's select everything in the table
SQL> select * from tbl_test1;
STR_NAME STR_PHONE
===== ===
henry 12345678
Lets put some more in
SQL> insert into tbl_test1 (str_name, str_phone)
CON> values ('jane','87654321');
SQL>
Select all
SQL> select * from tbl_test1;
STR_NAME STR_PHONE
==== ========
henry 12345678
jane 87654321
Select henry
select * from tbl_test1 where str_name = 'henry';
select people starting with 'h'
select * from tbl_test where str_name like 'h%';
select the first record
select first 1 * from tbl_test1;
select 1 record, but skip 1
select first 1 skip 1 * from tbl_test1;
select any records with the letter 'e' in them
select * from tbl_test1 where str_name containing 'e';
As you can see, the SQL is very similar to other databases.
Next we will instal the apache to FAP (Firebird,Apache, Php)
portsnap fetch
portsnap extract
Installing apache 2.2
cd /usr/ports/www/apache22/
make install clean
Installing php extension
cd /usr/ports/lang/php5
make install clean
cd /usr/ports/lang/php5-extensions
make install clean
cd /usr/ports/database/php5-interbase
make install clean
We need now to enable the Php and firebird extension for it (interbase.so)
Firstly we will edit apache’s config - this lives in /usr/local/etc/apache22/
Open /usr/local/etc/apache22/httpd.conf in your favroute editior (or nano while your learning to love vi)
Look for this line : LoadModule rewrite_module libexec/apache22/mod_rewrite.so
directly underneath this line add the following 3
LoadModule php5_module libexec/apache22/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Then find this line : DirectoryIndex index.html and change it to DirectoryIndex index.php index.html
After this is done we need to give php an ini - the easiest way to do this is to copy the dist one into place
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
open /usr/local/etc/php/extensions.ini in your favroute editor and look for this line : extension=interbase.so if it isnt there, add it.
one last change and we are good to go!
open /etc/rc.conf in your text editor of choice and add these lines :
apache2_enable="YES"
once your done reboot and enjoy!
Recomdeded Reading :
1.The Complete FreeBSD Book
2.Free BSD Handbook
I was inspired for the Apache/Php install from this article
Friday, March 06, 2009
Bug of the day fixed :Penguin Semaphores exhausted
From bug of the day category we present you Linux Semaphores exhausted
Subscribe to:
Posts (Atom)


