Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: batman, dodany: 09.12.2009 08:11, tagi: internet

Dzisiaj (09.12.2009) Google uruchomiło galerię oficjalnych rozszerzeń do przeglądarki Google Chrome. Na chwilę obecną ilość dodatków nie powala, jednak nie trzeba będzie długo czekać na pojawienie się najpopularniejszych rozszerzeń. Z ciekawszych dodatków, które znajdują się w galerii można wymienić Google Mail Checker, AdThwart (blokowanie reklam), Google Calendar Checker, Google Wave Notifier,

Autor wpisu: Diabl0, dodany: 08.12.2009 12:35, tagi: php

2009-12-08 12-15-01Ostatnio dawno nic nie pisałem, ale niestety nie zajmowałem się niczym nadzwyczajnym, ciekawym czy ambitnym. Dzisiaj też nie będzie o niczym ambitnym (dla większości też o  niczym ciekawym), ale być może niektórym ułatwi to pracę.

Niestety, jako że zajmuję się jednym podprojektem samodzielnie,  to na mnie trafiła żmudna robota z generowaniem PDF’ów. A żeby nie było zbyt łatwo, to PDF”y muszą być wygenerowane na formularzu dostarczonym przez zewnętrzną instytucję w identycznym układzie. Słowem, trzeba nanieść masę różnych tekstów, ticków itp. w ściśle określone miejsca na skanie formularza. Jak to nazywa współpracownik – gra w statki :)

Na dodatek jakoś marnie mi szło to całe “trafianie”. Nijak “milimetry TCPDF nie pasowały mi do tego co pojawia się na ekranie, przez co “zabawa” była bardzo czasochłonna. Do czasu aż nie wpadłem na pomysł banalny w swej prostocie, ale znakomicie ułatwiający pracę.

Nałożymy sobie tymczasową siatkę na PDF z skalą :)

Od pomysłu do realizacji, chwila programowania i odpowiednia metoda TCPDF gotowa.

2009-12-08 12-14-57

Prawda że genialne? A dzięki tej prostej siatce w jeden dzień udało mi się “trafić więcej statków” niż przez ostatnie 3 :)

A dla chętnych troszkę kodu:

class Mao_TCPDF extends TCPDF
{

    public function drawGrid ($minor = 5, $major = 10, $font = array(), $colors = array())
    {
        $_fontSize = $this->getFontSizePt();
        $_fontFamily = $this->getFontFamily();
        $_autoPageBreak = $this->AutoPageBreak;

        $minorColor = array(0 , 0 , 0);
        $majorColor = array(255 , 0 , 0);

        if (isset($colors['minor'])) {
            $minorColor = $colors['minor'];
        }
        if (isset($colors['major'])) {
            $minorColor = $colors['major'];
        }

        if (is_array($font)) {
            if (isset($font['family'])) {
                $this->SetFont($font['family']);
            }
            $this->SetFontSize((isset($font['size']) ? $font['size'] : 6));
        }

        $this->SetAutoPageBreak(false, 0);

        for ($x = 0; $x < $this->w; $x = $x + $minor) {
            if ($x % $major == 0) {
                $this->Line($x, 0, $x, $this->h, array('width' => 0.01 , 'color' => $majorColor));
            } else {
                $this->Line($x, 0, $x, $this->h, array('width' => 0.01 , 'color' => $minorColor));
            }
            $this->MultiCell(5, $this->getFontSizePt(), $x, 0, 'C', 0, 1, $x - 2.5, 0, true, 0, true);
            $this->MultiCell(5, $this->getFontSizePt(), $x, 0, 'C', 0, 1, $x - 2.5, $this->h - ($this->getFontSizePt()/2), true, 0, true);

        }

        for ($y = 0; $y < $this->h; $y = $y + $minor) {
            if ($y % $major == 0) {
                $this->Line(0, $y, $this->w, $y, array('width' => 0.01 , 'color' => $majorColor));
            } else {
                $this->Line(0, $y, $this->w, $y, array('width' => 0.01 , 'color' => $minorColor));
            }
            $this->MultiCell(5, $this->getFontSizePt(), $y, 0, 'L', 0, 1, 0, $y - ($this->getFontSizePt()/2), true, 0, true);
            $this->MultiCell(5, $this->getFontSizePt(), $y, 0, 'R', 0, 1, $this->w - 5 , $y - ($this->getFontSizePt()/2), true, 0, true);
        }

        $this->SetFont($_fontFamily);
        $this->SetFontSize($_fontSize);
        $this->SetAutoPageBreak($_autoPageBreak);
    }
}

Metoda przeznaczona jest do TCPDF lub klasy dziedziczącej, ze względu na użycie kilku pól prywatnych. Mam nadzieję że komuś się przyda.

Autor wpisu: cojack, dodany: 07.12.2009 17:00, tagi: php

Dawno nic ciekawego nie napisałem, nie martwcie się, nic się nie zmieni. Ale chciałbym poruszyć temat, który jest dość “śmieszny”. Dużo nieświadomych programistów swojej upośledzonej wiedzy nt tego co robią używają określenia czegoś czym nie jest. A mowa tutaj o inicjacji (poprawnie inicjalizacji). Śmieszy mnie jak widzę gdzieś w necie jakiś temat poruszony o programowaniu oczywiście i tam wojny, oj wojny kto lepiej kto ładniej, oj jakie wojny… A najbardziej rozbawia mnie:

“źle inicjujesz zmienne”

Jak pisze mój promotor programowania J. Grębosz, sprawdź sobie czym jest jedno a czym drugie to się uśmiejesz. I rzeczywiście można się uśmiać i jednocześnie zrobić z siebie totalne pośmiewisko. Ale wybaczajmy ludziom upośledzonym umysłowo. Wychodzących z założenia że jak strzeli się pięćdziesiąt wykrzykników i napiszę się tekst za pomocą CapsLock’a to się wszystko wie. A moja domena jest sprzeczna z tym założeniem, oto one:

“jeżeli czegoś nie wiem, to nie myślę że wiem”

Mam nadzieję że gdy ktoś będzie szukał czegoś o inicjacji w programowaniu to trafi na ten wpis i się 3x dobrze zastanowi niczym użyje tego słowa.

Autor wpisu: batman, dodany: 07.12.2009 08:42, tagi: zend_framework

Ostatnio musiałem dodać do elementu Label w Zend_Form kod HTML. Wydawałoby się, że nie może być nic prostszego. Niestety okazało się, że po dodaniu znaczników do etykiety, zostały one wyświetlone na stronie i wyglądało to mniej-więcej tak: Niestety dokumentacja nie była zbyt pomocna w tym przypadku i trzeba było pogrzebać w kodzie frameworka. Rozwiązanie okazało się równie banalne jak sam

Autor wpisu: stormfly, dodany: 06.12.2009 15:06, tagi: sql

CREATE INDEX - przyspieszenie zapytań Pora sobie odpowiedzieć na pytanie kiedy i w jaki sposób warto zastosować index by przyspieszyć nasze zapytania. Mamy kilka typów indeksów, ale używać będziemy domyślnego, czyli B-tree. Nie jest to moje widzi misie, ale te pozostałe są po prostu...

Autor wpisu: batman, dodany: 06.12.2009 08:34, tagi: javascript, jquery

Na oficjalnym blogu jQuery pojawiła się informacja o wydaniu pierwszej alfy nowej wersji biblioteki jQuery. Wprowadzone zmiany to dodanie obsługi nowych zdarzeń w metodzie live oraz szereg optymalizacji powodujących, że jQuery będzie jeszcze szybszy. Nową wersję biblioteki można pobrać w dwóch wersjach: regular minified

Autor wpisu: Zyx, dodany: 04.12.2009 13:22, tagi: php

W ostatnich dniach witryna Smarty.net dosłownie zalewała nas kolejnymi wydaniami beta bilioteki Smarty 3, następcy systemu szablonów Smarty. Korzystając z chwili wolnego czasu, postanowiłem przyjrzeć mu się bliżej i ocenić, czy autorzy faktycznie czegoś się nauczyli przez ostatnie lata, bo - nie ukrywajmy - Smarty 2 to jeden z gorszych istniejących systemów szablonów, który żyje jedynie dzięki swej nieuzasadnionej popularności.
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.