Wednesday, December 23, 2009

Ubuntu 9.10 + Mono(WinForms) = Problem

We have one very big application written in C# that is using WinForms. So I decided to test this app on my laptop - Dell Ispiron 6400 using my current installation of Ubuntu 9.10. There ware no problems on Ubuntu 8.04 or Windows machines but ... here comes the big BUT :D on my machine (9.10) I see buttons menus, text boxes etc. but no text! All text was missing.
Started to google this problem to locate a solution. After searching and reading for few hours here is the solution ;)

Original Mono thread is here. After reading this I started to understand that this is not a Mono bug but problem with my Intel Xorg driver. I downloaded and installed it as described here (almost)
download needed driver (in my case 2.9.1)
$ ./configure --prefix=/usr
if everything is fine execute the next 2 lines but you will need some extra libraries to install before configure finishes whit no errors.
$ make
$ sudo make install
reboot PC or restart GDM service
Cool, everything went well till now ... but ... oh no one more BUT :D. Well no that big any way.
Next what happened to me is this: I can see only part of the texts. Solutions can be found in the link I posted ;). Change your Appearance -> Fonts settings and you are done. Problem solved!

Monday, December 14, 2009

ExtJS (3.0.3) and paging in GridPanel

I'm writing this in case someone is trying to make GridPanel to work together with PagingToolbar using XML data.

The problem is very simple. Using examples and API documentation I was trying to achieve this goal. No success! Google it ... no sucess! Everything I found was like the thing I did but:

IT WAS NOT WORKIIIIING!

Finaly I went into the ExtJS code to search for the problem and after few minutes I've located the problem. In the documentation is pointed that the name of the total records in XmlReader is: "totalRecords" but in JSON is "totalProperty".

So what I found is that in the code everywhere was used "totalProperty" ... and once I changed this it started to work!

Friday, December 11, 2009

Zend Server and Xdebug on Ubuntu

You can chose how to install your Zend server from here http://www.zend.com/products/server/
The server works fine :) but the problem appears when I tried to install Xdebug extension included in Zend server distribution. Once I do install the extension the server stops working :( and I ... do not like this at all.
I've found a solution to the problem by building it from source.
First install some development tools:
$ sudo apt-get install build-essential
$ sudo apt-get install autoconf
After this step is completed we can continue with downloading and installing xdebug.
$ wget http://www.xdebug.org/files/xdebug-2.0.4.tgz
$ tar -xzf xdebug-2.0.5.tgz
$ cd xdebug-2.0.5/
$ /usr/local/zend/bin/phpize
$ ./configure --enable-xdebug --with-php-config=/usr/local/zend/bin/php-config
$ make
Copy the compiled library:
$ cp modules/xdebug.so /usr/local/zend/lib/debugger/xdebug.so
Then edit file /usr/local/zend/etc/ext.d/debugger.ini and comment everything you see uncommented :D (this probebly is not required but just in case do it)
and add the following line at the end of the file:
zend_extension=/usr/local/zend/lib/debugger/xdebug.so

Restart zend server:
$/etc/init.d/zend-server restart

You are done. And ... you can "live happily ever after" :D

Friday, October 9, 2009

PostgreSQL as in-memory database 2

Hello again :(
There is a good and bad news. The good new is that the described scenario worked whit out any problem. I was able to mount and to create tablespace in memory.
Now I'm publishing the results so you can make your own conclusions:
N = Normal DB on HDD
V = Virtual in memory DB

INSERT 1 Row
N: 0.0095579624176
V: 0.00312209129333

INSERT 10000 Rows
N: 20.2224640846
V: 20.3045837879

SELECT 10000 Rows
N: 1.2087290287
V: 1.10954594612

SELECT 1 Row with LIMIT
N: 0.00473999977112
V: 0.00209808349609

SELECT 1 Row with WHERE
N: 0.00404500961304
V: 0.00110793113708

SELECT 10000 Rows using LIKE
N: 1.10466790199
V: 1.10219192505

SELECT 1 using LIKE
N: 0.163216114044
V: 0.143918991089

DELETE 1 Row
N: 0.0117321014404
V: 0.00280213356018

DELETE 100 Rows
N: 0.00914406776428
V: 0.00478386878967

DELETE 10000 Rows
N: 0.344476938248
V: 0.0865640640259

UPDATE 1 Row
N: 0.00603103637695
V: 0.00130820274353

UPDATE 10000 Rows
N: 0.158715963364
V: 0.48292517662

Wednesday, September 23, 2009

PostgreSQL as in-memory database

I was reading a specifications of few in-memory databases (here and here). So I started to think how can I and can I use PostgreSQL as in-memory DB ...

Yes! This is possible!

There is one feature in PostgreSQL called "table space". You can register a folder from the file system as data storage. This is the basic procedure.

1. In this article Linux Memory/Temporary File System (FS) you can read how to mount a portion of the memory to a folder.
2. Using the "table space" feature of PostgreSQL to link this virtual folder in the server.
3. Create/Delete/Update tables!

This is it, sounds easy right ;)

But what is the practical aplication for this?
This table space can be used for cache or temporary data of any kind. This in my opinion will increase the speed of your applications.

In my next post I'll publish some speed tests.

Wednesday, June 24, 2009

PHP CLI - bad interpreter??

After some changes on one of our internal servers one of the cron jobs stopped to work with this error: /usr/bin/php: bad interpreter: Permission denied

Everything is in place! PHP is there ... the script is executable ... but the cron job is not working!

I have searched google for some answers. And I have found it on one website. The partition where the script was stored is mounted as "noexec".

To fix this you need to edit your fstab file and change mount options for your partition. After this "mount -a" should work, it did not work for me and I've had to remount partitions manualy (reboot will help too).

Greetings

Friday, June 5, 2009

O3Spaces tests

In the company we have decided to test different DMS systems. I will start with the O3Spaces and later will describe my experience with OpenXchange - both using community editions.
Everything was installed very smooth using .deb packages. OK, now what? I'm connecting to the management interface and to the spaces interface using Firefox. I'm able to manage the company, users and spaces. I'm also able to document using web browser.
The next step is to integrate it with OpenOffice (3.x in my case). So I installed the Workplace assistant (no problems here) and tried to install the OO plugin ... ops!!!
I did a lot of different things to make it install in the first place. I was able to install it using the OO extension manager, because the automatic installation was not working. Plugin is installed but still not functional ... why ... why ... ;(
I spend 1 day searching for solution with no success! Then I have decided to test on SuSE. Connected to Spaces server ... installed Workspace assistant ... installed plugin everything was smooth and easy. Then I noticed that SuSE is using Sun Java engine and on Ubuntu I'm using Openjdk?! I removed it and installed the java from Sun. This solved my problem! I was able to install plugin using normal procedure via Workplace assistant. i was able to connect to Spaces from OO and edit files.
My fight was over :)
We ware able to test this DMS in our work environment. I can recommend this one it is very easy to work with it. Also the community edition is free for up to 10 users.

Wednesday, May 27, 2009

Oracle XE + Ubuntu 9.04

The installation of Oracle XE on Ubuntu 9.04 was very easy. There is also very well done web based administration.
After installation I tried to connect with PHP to the server. And here is the first problem. There is no OCI8 or PDO_OCI extensions in the Ubuntu's repository.
I tried to compile both of this, but I was able to do this with OCI8 extension and not with PDO extension.
There is a problem with PDO dev files, for some reason configuration always ends with this error: "configure: error: Cannot find php_pdo_driver.h", searched google but with no success ... the file is there but configure is able to locate it.

After OCI8 extension I tried to to connect by sqlplus program: /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/scripts/sqlplus.sh
First try ended with this error: "TNS:net service name is incorrectly specified" the solution I found was to add two rows to /etc/profile:
export ORACLE_SID=PROD1
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server

Now everything works!

Saturday, May 2, 2009

Me on Rails

Hello again :)
I've started with Ruby on Rails ... And ... started to like it from the first two chapters of the book. It looks that my philosophy of developing is very similar to the one Rails uses:
  1. Convention over Configuration
  2. DRY (Do not repeat yourself)
  3. Agile development
This are the main principles of Rails framework. This are my principles too. So ... I'm starting to like it very much.

Sunday, April 26, 2009

P2P Conference

P2P conference in Veliko Turnovo - Bulgaria ... what can I say about this? I was part from this event as listener :) Actually the company I work for right now sponsored the development team to be on this conference.
First impressions. Yes there are some. Good organization, using almost in every presentation Linux (me: big fan).
I will mention here few presentations that I was able to listen an liked them very much.

Ruby on Rails
Excellent presentation! This one definitely motivated me to try Ruby on Rails. I was thinking from 2-3 years to start in this direction but there was always something more urgent in some other direction or some other language. Ok! I'm there, I've downloaded 20-30 books and I'm starting. Weee!

PHP on the D-BUS
Presentation by Derick Rethans. He is developing the D-BUS extension for PHP (currently in Pecl's CSV) this could save me a lot of work while developing the OSCTry thing. On a later stage I can try to make it work with this extension. I'll share my experience then. And one last thing for this presentation. I was able to see from a close distance a OpenMoko FreeRunner :D but more on this topic some other time. Now back to the conference.

The happy developer was also very entertaining presentation.
Since I'm a very happy developer most of the thing mentioned there I'm doing and I can say it works! The essence actually of being happy and satisfied from your work (on only for programmers) is to be able to develop your self and to keep the fire for more and more knowledge burning and growing.

Now we are coming to the this presentation:

The use of the social networks in corporations.
This was very helpful to me because a week ago I was able to convince the owner of the company to build our “internal” social network. Now I can see even more the necessity of this SN for the company internally and for our customers externally. We have more then 100 people and BTW all working under Linux ;) except 5-6 Dev PCs.

Ok ... One last thing InitLab. This is something like “club-laboratory” for developers who can develop and collaborate. I'll have to think about this. We could do something like this in Veliko Turnovo too.

Thursday, April 16, 2009

My first post

I have decided some time ago to start blogging :D OK OK but when and how exactly? I have no Idea!
Any way I'll start now with a short presentation of me and my work.

I'm working with PHP for ... about 10 years. For some time I was working on web based systems. CMS, PMS and a lot of custom development. I have managed to produce one of the most flexible CMS systems on the Open Source "market" - PuzzleApps. This "thing" can be used as Web CMS and as framework for rapid developing of web based applications. I will write about this some time later ;)

I was able to participate in one other Open Source project PgAccess (Tcl/Tk) I do not think that this project is still alive but it was very nice peace of software for managing PostgreSQL databases.

What am I dong now? Well ... in the last few years I was working on a cross platform PHP-GTK2 based projects.
1. Muskogee - software that enables people to enter data and save it in database. Ok that was very stupid explanation! One example will explain it better. Imagine: a magazine is making research using mail cards. They receive this cards back, but how to get information from them? Easy - scan them and send images to people that will read them and write them in suitable format. This is what Muskogee is doing. Display image to the user and give him the possibility ti enter data much easier then using notepad ;)
2. Web based statistical reports for Muskogee.
3. OSCTray - this is software that is intended to control user access to different software under Linux based systems. We have every what programs can use on his PC. OSCSoft gets this data using web services and chmods the software to make it executable to the user or not executible. Also tracks the used programs and keeps the time this program is used, after the program is identified the admin users sees this and can decide to forbid it or ignore it. You can say this is a controlling and monitoring program.

This are the programming languages I can work with:
PHP, Java, C#, Perl, TCL/TK, Bash
And some databases:
MySQL, PostgreSQL, SQLite, Firebird
What else ... version control? Yes: CSV and SVN

I prefer to work under Linux. I have tried many distributions in my life (RedHat, Fedora, SuSE, Slackware, Mandrake). Right now I'm using (K/X)Ubuntu and I can say that I'm very happy whit it.

I hope you are not bored from my first post :)