O pv2c, s.r.o.

Spoločnosť pv2c, s.r.o. bola založená v roku 2001.

Dôvodom založenia vlastnej firmy bola naša nespokojnosť s existujúcimi softvérovými produktami. Všetci sme už mali skúsenosti s prácou pre veľké a stredne veľké spoločnosti, na programátorských a administrátorských miestach. Tam sme sa presvedčili, že o zásadných veciach väčšinou rozhodujú ľudia bez potrebných vedomostí a skúseností. Aj samotné produkty sú prevažne donekonečna upravované a rozširované programy staré niekoľko rokov. Hlavnou prácou na nich je hľadanie a opravovanie chýb.

Je nám jasné, že nič nemôže byť dokonalé. Napriek tomu sa ešte stále idealisticky nazdávame, že je možné vytvoriť naozaj kvalitný softvér. Od začiatku navrhovaný čo najuniverzálnejšie a s čo najmenšími obmedzeniami. Čo najlepšie konfigurovateľný, modulárny a viacvrstvový. Používajúci otvorené štandardy a prevádzkovaný hlavne na systémoch s otvoreným kódom.

S takýmto softvérom sa nemôže stať, že pri neočakávane rýchlom raste firmy prestane stačiť a treba prechádzať na iný. V prípade potreby zmeny rozhrania (alebo jeho výzoru) ho netreba celý prerábať. Nie je závislý na žiadnom konkrétnom produkte nejakej komerčnej firmy. Zmena jedného parametra (napríklad spôsob výpočtu, alebo sadzby DPH) nevyžaduje komplikované (a drahé) upravovanie kódu. Možnosť nových výstupných formátov (napríklad WML pre WAP) je samozrejmosťou. Je maximálne prispôsobený konkrétnym požiadavkám používateľa a nenúti ho kupovať doplnkové aplikácie vyžadované funkciami, ktoré vlastne nepotrebuje.

Nevýhodou takéhoto prístupu je o niečo dlhšia fáza vývoja a prispôsobovania (konfigurácie). Za to sa vám ale odmení bezproblémovou a spoľahlivou prevádzkou. Opačný prípad, čiže kúpiť „jednoduchý“ produkt a následne s ním mať celý čas problémy, sa nám zdá menej výhodný...

Ak sa chcete sami presvedčiť, nakoľko sa nám tento cieľ podarilo splniť, pozrite sa na naše služby a produkty.

Pbatenghyngvbaf Lbh ner n bofreinag jro unpxre Vs Lbh jnag n wbo va bhe pbzcnal cyrnfr znvy gb gbhtuthl ng ci2p qbg fx Unir n avpr qnl
The new rooster caused a great stir in the barnyard.  From resplendent comb
to defiant spurs, he was the picture of young bantamhood.  Almost immediately
upon arrival, he was greeted by and elderly rooster who took him behind the
barn and whispered in his ear: "Young fellow, I'm long past my prime.  All I
want now is peace and solitude.  So you take over right now as ruler of the
roost with my blessings."
	The newcomer did just that.  He went about his squirely duties as only
a young rooster could.  After several days, however, the elder rooster again
took the young champion behind the barn.  "Kid," he said, "the hens are after
me for giving up my position so readily.  So why don't we have a race, say,
ten laps around the farmhouse?  The winner becomes undisputed keeper of the
henhouse and the hens will stop nagging me.
	The young rooster, with only contempt for his elder, agreed.  
Surprisingly, the older one jumped off to an early lead.  His counterpart, 
weakened by the activities of the previous week, was never quite able to
overtake him.  As they rounded the barn for the fourth time, the elder rooster 
maintained a formidable lead.
	Suddenly, a shotgun blast rang out.  The young rooster fell in the 
dust, his plumage riddled with buckshot.
	"Dammit, Emmy," said the farmer.  "That's the last rooster we buy
from Ferguson.  Four of 'em this month, and every one's been queer."
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }
        
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }