Tuesday, March 24, 2009

Pettry rendered LaTeX equations using PHP

When I was writing a simple scientific webapp, during my undergrads studies, I needed to generate some equations to be shown by the app. I was already familiar with LaTeX equation formatting syntax, so I decided to use this nice peace of software.

So, after "googling" a little, I found the imgtex, written by Koji Nakamaru, which is a fast CGI script, written in perl. What I did, was port it to PHP.

To run it, you must have a LaTeX distribution and the dvipng software both installed on the same machine which you will run the PHP script.

Here is the PHP code:

To use this code, you just have to pass the LaTeX commands through GET to the PHP. For example,
adding the following string to your URL:


The res variable sets the resolution for the generated image and the cmd specifies the LaTeX command. This way, the above URL will produce the following image:

Monday, March 16, 2009

Finally, something could replace my Moleskine

Engaged came with article describing a new netbook from Lenovo, with leather cover. The Pocket Yoga is been keeped in screet by Lenovo.

Perhaps, with one of this, I could drop my Moleskine.

Sunday, March 8, 2009

PHP + GNU Octave to build a web based pump dimensioning system

During my undergrad studies, when I was doing the fluid dynamics class, we had to dimension pumping systems. The work involved in doing that used to be laborious, many coefficients, constants, etc, and we had to use only our scientific calculators. To check our answers when in home, everybody used to wrote their own spreadsheet. As a FLOSS enthusiast and long time PHP programmer, I decided to write a web based pump dimensioning system.

As we calculated the fluid density depending on watter temperature, and we had used small numbers (E-5) which lead to underflow errors when the calculations were did using only PHP statements. In other hand, when using GNU Octave, the precision was great and things were much easy, because I didn't really needed to care about precision, was just type the calculations, press enter and get the right answer.

So I wrote a PHP function that calls the exec command to run GNU Octave and get back the Octave output into one PHP variable. That way I got all calculations I needed on PHP, and with the desired precision.

$filename = round(time() / 10 * rand(1,10));
$filename = $path_to_temp_dir . $filename;

function octave_calc($expression){
if (
$script_octave = fopen($filename . ".m", "w");
fputs($script_octave , $expression . "\n");
$ans = exec($path_to_octave . " -q " . $filename . ".m");
$ans = explode("=", $ans);
$ans = $ans[1];
$fr = $ans;
unlink($filename . ".m");

In PHP, the code to calculate the fluid density is as follows:

$rho_a = 999.79684;
$rho_b = 0.068317355;
$rho_c = -0.010740248;
$rho_d = 0.00082140905;
$rho_e = -2.3030988e-5;

// From here the calculations are made using the GNU Octave
$command = $rho_a . " + ";
$command .= "(" . $rho_b . " * " . $T . ") + ";
$command .= "(" . $rho_c . " * ((" . $T . ")^2)) +";
$command .= " (" . $rho_d . " * ((" . $T . ")^2.5)) + ";
$command .= "(" . $rho_e . " * ((". $T . ")^3))";
$rho = octave_calc($command);


A demo system stills avaliable on the University web site, at my personal home page: http://www.ee.pucrs.br/~filipi/pumps/

The PHP source code is also avaliable, at the same site.

A new google product

How about a new google product? A google which finds our personal stuff, things which we have lost inside the house, office, workshop, etc ... I never find my keys when I am in hurry.

Perhaps we should suggest it to “Amigoogle” (translates from Portuguese to Googlefriend) from the Brasilian comic strip Nerdson.