TCPDF – polskie czcionki

Jeśli potrzebujemy (a na pewno tak będzie) polskich czcionek w dokumentach PDF generowanych przez php’ową bibliotekę TCPDF, można to osiągnąć w prosty sposób: czcionkę z polskimi znakami, np windowsowy Courier, zapisujemy jako cour.ttf na serwerze, a w pliku, który będzie generował pdf’a:

require_once('tcpdf.php');
$pdf = new TCPDF('L', 'mm', 'A4', false, 'iso-8859-2');
$pdf->SetFont('cour');

z konsoli natomiast wydajemy odpowiednie polecenia (będąc w katalogu TCPDF’a):

ttf2afm cour.ttf > cour.afm
php fonts/utils/makefont.php cour.ttf cour.afm cp1250
cp cour.* fonts/

I cieszymy się polskimi znakami w PDF’ach 🙂

Read more

Usuwanie pustych tagów html

Dzisiaj krótka recepta, na pozbywanie się z tekstu pustych tagów html. Jest to przydatne na przykład gdy używamy TinyMCE, który czasami poza naszą kontrolą wstawia tagi, które mają w CSS’ie ustawiony margines lub padding – wtedy tekst będzie nienaturalnie porozciągany w takich miejscach. Aby to osiągnąć, skorzystamy z funkcji preg_replace i odpowiedniego wyrażenia regularnego.

Read more

Symfony 1.2 wydane

Najlepszy, moim zdaniem, framework PHP Symfony doczekał się stabilnej wersji 1.2. W najnowszej odsłonie, znajdziemy między innymi 2 równoległe ORM’y – propel w wersji 1.3 oraz Doctrine 1.0 – do wyboru. Tym samym Doctrine weszło do Core Symfony, co bardzo dobrze wróży na przyszłość. Poza tym, z okazji wydania wersji 1.2 rusza projekt Jobeet będący 24-odcinkowym tutorialem, pokazującym krok po kroku tworzenie aplikacji w Symfony. Jest to następcą Askeeta, który został stworzony pod Symfony 1.0, które powoli odchodzi na emeryturę 🙂 Polecam ten kurs na początek – bardzo fajnie zapozna każdego laika z frameworkiem.

Do tego polecam też lekturę dokumentacji:http://www.symfony-project.org/doc/1_2/, możemy w niej znaleźć między innymi książkę Definitive Guide to Symfony, książkę na temat Formularzy oraz Doctrine.

Read more

svn:externals – czyli jak utrzymać porządek w wersjonowanym kodzie

Tworząc nowy  projekt w Symfony zdecydowałem się na ORM’a Doctrine. Niestety instalacja tej wtyczki nie przebiega standardowo, za pomocą Pake-Taska, ponieważ trzeba zrobić sobie checkouta z repozytorium Symfony. I tutaj pojawił się pewny problem. Ponieważ cały projekt jest wersjonowany przy pomocy SVN’a, to przy każdym wywołaniu, na przykład svn status otrzymywałem:

?   plugins/sfDoctrinePlugin

Dodawanie tej ścieżki do repozytorium nie pomagało, bo pojawiał się komunikat, że ten folder jest już wersjonowany (bo istotnie tak było – przecież zrobiliśmy checkout z repo Symfony). Z pomocą przyszedł svn:externals.

Read more

Prosty skrypt zwalczający spam

Pewnie nie jednemu programiście aplikacji webowych zdarzyło się, że po wystawieniu swojej księgi gości na świat, po paru dniach znajduje na niej kilkanaście spamowych wpisów. Ja również doświadczyłem tego ostatnio. Większość w takim przypadku decyduje się na zastosowanie CAPTCHA, czyli obrazka z zdeformowanym tekstem, który użytkownik musi podać przy dodawaniu posta. Jest to rozwiązanie średnio przyjemne, coraz mniej skuteczne i bardzo odstraszające potencjalnych gości, którzy są ludźmi. Postanowiłem więc napisać prosty filtr (w tym przypadku został on akurat wykorzystany jako validator w Symfony), który będzie wyszukiwał słowa, które na 99% znajdą się tylko w niechcianych wiadomościach.

Pewnie nie jednemu programiście aplikacji webowych zdarzyło się, że po wystawieniu swojej księgi gości na świat, po paru dniach znajduje na niej kilkanaście spamowych wpisów. Ja również doświadczyłem tego ostatnio. Większość w takim przypadku decyduje się na zastosowanie CAPTCHA, czyli obrazka z zdeformowanym tekstem, który użytkownik musi podać przy dodawaniu posta. Jest to rozwiązanie średnio przyjemne, coraz mniej skuteczne i bardzo odstraszające potencjalnych gości, którzy są ludźmi. Postanowiłem więc napisać prosty filtr (w tym przypadku został on akurat wykorzystany jako validator w Symfony), który będzie wyszukiwał słowa, które na 99% znajdą się tylko w niechcianych wiadomościach.

Read more

Sans-serif w CSS’owym font-family, czy to komuś potrzebne?

Odpowiedź na to pytanie brzmi: tak! Gdy używasz czcionek, które powinny być w każdym Windowsie, to Twoja strona ładnie się wyświetli w Windowsie, ale już raczej średnio w Linuksie, który może nie mieć czcionek windowsowych. W takim przypadku przy wyświetlaniu czcionki Tahoma, zamiast tego linuksiarze zobaczą domyślną czcionkę szeryfową (czyli coś pokroju windowsowego Times New Roman). Efekt jest naprawdę niepiękny. Rozwiązaniem tego jest prosty trick, który należy wykonać umieszczając definicje czcionek w CSSie (przeważnie jest to jedno miejsce, np body):

font-family: Tahoma, sans-serif;

Ten zabieg pozwoli zastępować niedostępne czcionki domyślną czcionką nieszeryfową dla systemu. Drobiazg, ale jak to mówią: diabeł tkwi w szczegółach.

Read more

PyCon 2008 – moje wrażenia

Dzisiaj wróciłem z dwudniowej konferencji PyCon, która odbyła się w Rybniku. Impreza jest polską edycją ogólnoświatowego cyklu imprez PyCon i traktuje o Pythonie i rozwiązaniach na nim opartych. Dla tych, którym nie wystarcza ten krótki opis, polecam stronę konferencji: http://liwo.polsl.pl/pycon-pl

Jako, że z Pythonem do tej pory nie miałem wiele wspólnego, uczestnictwo w tej imprezie było nie lada wyzwaniem 😉 Na codzień pracuję jako główny programista, rozwijając aplikacje w PHP, a jak wiadomo PHP to zło, jak to mówią pythonowcy ;-). I jak się okazało, mają trochę racji, ale tylko trochę 🙂

Python od dłuższego czasu leży w sferze moich zainteresowań, których nigdy nie mam czasu pogłębić. Od dawna chcę poznać Django, jako alternatywę dla Symfony. Jednym z wykładów było wprowadzenie do Django, więc mój start został solidnie ułatwiony 🙂

Read more

Escapowanie % w sprintf

W PHP możemy formatować łańcuchy znaków na kilka sposobów. Najpopularniejszy, to używanie kropek, do łączenia ciągów i ewentualnie konkretnych funkcji do formatowania na przykład liczb zmiennoprzecinkowych. Ta metoda mnie nie do końca przekonuje, bo przy dłuższych ciągach jest średnio czytelna. Dlatego też, często korzystam z sprintf’a, poznanego jeszcze za czasów programowania w C.

Read more

Metody synchronizacji projektu z serwerem produkcyjnym

Większość z programistów aplikacji webowych wie, że transfer na serwer produkcyjny to często tzw. „pain-in-the-ass” (po polsku: źródło nieszczęścia). W tym poście opowiem trochę, o znanych mi sposobach przesyłania aplikacji na serwer produkcyjny.

Read more

Otwieranie pliku na konkretnej linii w Vimie

Podczas codziennej pracy, coraz częściej dostrzegam pewne małe detale, które cholernie ułatwiają życie 🙂 Jednym z nich jest otwieranie pliku w vimie na konkretnej linii.

vim classes/foobar.php +69

Powyższa komenda przenosi do linii 69 po otwarciu. Ale to nie do końca było to czego szukałem. Przy pracy z zakładkami (tabs) jest to średnie rozwiązanie. Szukałem więc jak zrobić to przy pomocy polecenia tabe. Niestety :tabe classes/foobar.php +69 nie działa, bo Vim krzyczy: E172: Only one file name allowed. Będąc bliko zwątpienia, w istnienie tej funkcji, z pomocą przyszedł manual 🙂

Read more
older
newer