ParanoyaBLOG

programmare necesse est,
vivere non est necesse

 

ParanoyaCMS na facebook’u

 

Nie da się ukryć przed mediami społecznościowymi – atakują nas z każdej strony. Toteż postanowiłem przyłączyć się do tego ataku i pochwalić swoim „produktem” na facebook’u.

 

Dużo do chwalenia się nie ma po prostu powiem, że więcej informacji znajdziecie na samym facebook’u pod adresem: www.facebook.com/ParanoyaCMS

 

Odwiedzajcie i lajkujcie :P

 

software’owy WebGL w google chrome

 

Tym razem szybka i w sumie prosta porada. Jak włączyć obsługę WebGL w google chrome na linuxie (zapewne na innych systemach operacyjnych też zadziała lecz osobiście sprawdzałem tylko na tym) gdy nasza karta graficzna znalazła się na czarnej liście – nie jest obsługiwana przez google chrome.

 

1. W pasku adresu wpisujemy chrome://flags

2. Wyszukujemy opcję „Zastąp listę renderowania programowego” i „Włączamy” ją

3. Uruchamiamy ponownie przeglądarkę

 

Funkcje Ceil i Floor w @Formula

 

Ostatnimi czasy przyszło mi zmienić pracę i jak to zawsze w nowej pracy nauczyć musiałem się czegoś nowego. Obecnie więc powiększam swoją wiedzę na temat programowania kręcąc się w okolicach języków @formula oraz Lotus Script. Jako, że blog ten założyłem głównie po to aby umieszczać w nim rozwiązania i informacje, których nie chcę co chwilkę szukać w internecie (czyli jako swoistą bazę wiedzy) również i o tych językach kilka postów się pokaże – poczynając od tego.

 

Na razie prosto. Chociaż troszkę czasu już spędziłem programując w języku @formula to jednak nie spotkałem się z funkcjami Ceil czy Floor. Jednak takowe były mi potrzebne. Dlatego też szybka informacja jak brak tych funkcji sobie zrekompensować. Tłumaczyć nie będę – kod poniżej:

 

  1. REM { FUNKCJA CEIL };

  2. zmienna_temp:=@Round(zmienna);

  3. @If(zmienna_temp>zmienna; zmienna:=zmienna_temp; zmienna:=zmienna_temp + 1);

  4.  

  5. REM { FUNKCJA FLOOR };

  6. zmienna_temp:=@Round(zmienna);

  7. @If(zmienna_temp>zmienna; zmienna:=zmienna_temp – 1; zmienna:=zmienna_temp);

 

Portret :)

 

Ostatnio jakoś mało czasu jestem w stanie poświęcić na rysowanie. Ciągle zabiegany nie jestem w stanie chwycić ołówka w rękę i utrzymać tak długo aby dokończyć pracę. Kilka rysunków czeka (i pewno wiecznie czekać będzie) na dokończenie. A jedynym który udało mi się dokończyć w ostatnich dniach chcę się pochwalić tutaj – na łamach mojego bloga.

 

Nie jest to może arcydzieło, co więcej sam uważam, że nie wyszedł najlepiej – niestety nie przypomina w 100% osobę, którą chciałem narysować, ale warto się nim pochwalić :) Jest to portret, portret dziewczyny (ale to zapewne widać), a dokładniej portret mojej narzeczonej :). Wzorowałem się na zdjęciu na którym miała trochę miej lat niż obecnie i taka miała być na rysunku … niestety podobieństwa nie udało mi się zachować – wypadłem z wprawy zdaje się.

 

A dlaczego warto się nim pochwalić ? Gdyż odważyłem się użyć pewnej techniki do której nigdy nie miałem zbytniego zaufania. Rozmywałem cienie kawałkiem zmiętej kartki i palcem (palcem częściej, bo miałem go bliżej pod ręką :P). Efekt całkiem niezły i myślę, że będę częściej stosował tę technikę.

 

Jeśli ci się podoba ten portret zajrzyj na mój profil na deviantart (lw-winetou.deviantart.com)

 

Elektroniczne CV

 

Nareszcie, po dłuższym czasie, udało mi się skończyć swoje elektroniczne CV – czyli Curriculum Vitae umieszczone w internecie. Poza swoją podstawową funkcją przekazania relacji z mojego życiorysu ewentualnemu przyszłemu pracodawcy strona ta ma również funkcję dodatkową. Jest to swego rodzaju moje programistyczne portfolio. Stworzyłem ją w taki sposób, aby odwiedzający mógł domyślić się jakie posiadam umiejętności i żeby pokazać, że poza wypisaniem ich listy potrafię je także zastosować.

 

 

Jeżeli jesteś zainteresowany jak takie „cudo” może wyglądać skoro tak się tym chwalę, przejdź na cv.paranoya.info.

 

Przeczytaj resztę wpisu »

 

PHPMailer i tytuł wiadomości w UTF-8

 

Wygląda na to, że znana wszystkim i wykorzystywana przez wielu biblioteka phpmailer nie wystrzegła się błędów. Zresztą trudno się dziwić przy tak wielkich projektach. Jak to się mówi: „Nie ma programów bez błędów, są tylko programy źle sprawdzone”.

 

Błąd, o którym piszę związany jest z tytułami wiadomości zakodowanymi w UTF-8. Gdy przekraczają pewną długość biblioteka phpmaile zdaje się gubić i zwraca błąd „Language string failed to load: instantiate”. Na szczęście problem ten daje się rozwiązać i to dość łatwo. Wystarczy zakodować temat wiadomości używając base64:

 

  1. $mail = new PHPMailer();

  2. $mail->CharSet = ‚utf-8’;

  3. $mail->Subject = „=?UTF-8?B?”.base64_encode(str_replace(

  4.    array(„\r”, „\n”, „\r\n”, „\n\r”, „\t”),

  5.    array(”, ”, ”, ”, ”),

  6.    ‚temat wiadomości’

  7. )).”?=”;

  8. $mail->Body = ‚treść wiadomości’;

  9. $mail->Subject = „=?UTF-8?B?”.base64_encode(str_replace(

  10. $mail->AddAddress(’email odbiorcy’, ‚pełna nazwa odbiorcy’);

  11. $mail->Send();

 

Ważne tutaj są linie od 3 do 7 włącznie. Można też zauważyć, że przy okazji z tematu wiadomości zostały wywalone znaki ENTER i TAB.

 

Internet Explorer i CSS3

 

CSS3 wprowadza wiele nowych funkcji ułatwiając webdeweloperom stylowanie stron internetowych. Jako, że niestety nie został on jeszcze uznany za standard cała ta funkcjonalność nie jest dostępna w poszczególnych przeglądarkach, a to z czego możemy skorzystać zazwyczaj wywołujemy dodając odpowiedni prefix (np. -moz). Pomęczyć się z prefixami zawsze można, szczególnie że dodając kilka linii kodu do pliku css zaoszczędzamy sporo czasu uzyskując pożądany efekt bez niepotrzebnego kombinowania.

 

Z większością przeglądarek problemu nie ma, sytuację jednak komplikuje (jak zawsze) dzieło firmy Microsoft. Firma ta stara się jak może, ale spora część rynku jest „opanowana” przez starsze wersję ich aplikacji, które nie są w stanie wyświetlić jakiegokolwiek stylu wprowadzonego przez CSS3.

Przeczytaj resztę wpisu »

 

Problem z centrowaniem tekstu w PHP

 

Podczas generowania obrazków za pomocą biblioteki GD języka PHP napotkałem problem z wycentrowaniem tekstu. W przypadku centrowania według osi X (poziomego) wszystko było w porządku. Schody pojawiły się gdy chciałem tekst wyśrodkować w pionie (oś Y). Problematyczne okazały się głównie polskie znaki diakrytyczne… ale nie tylko, gdyż i wszelkiego rodzaju nawiasy czy cudzysłowy powodowały ten sam efekt.

 

Wyśrodkować w pionie jest prosto wystarczy obliczyć wynik wzoru:

 

Y = (wysokość obrazka - wysokość tekstu) / 2

 

Do wypisywania tekstu na obrazku używam funkcji imagettftext. W funkcji tej trzeba podać kilka parametrów a w nich między innymi położenie X oraz Y początku tekstu. Więc wartość z wyżej wymienionego wzoru powinna być tu idealna. I tu pierwsza niespodzianka: Y nie jest liczone o lewego-górnego rogu płótna – Y to tak zwane położenie baseline tekstu. I na to znalazło się rozwiązanie – drobna modyfikacja wzoru który teraz wyglądałby następująco:

 

Y = (wysokość obrazka + wysokość tekstu) / 2

 

Żeby pobrać wysokość tekstu używam funkcji imagettfbbox. I tu pojawił się kolejny problem – funkcja ta zwraca (po odpowiednim obliczeniu) wysokość wypisanego tekstu a nie „wysokość” baseline czcionki. Do tego jeszcze dodać trzeba, że mimo iż czcionki posiadają ten sam baseline nie mają one jednej wielkości (wysokości) – inną wysokość będzie miała literka „A” a inna na przykład „y”. Dlatego jedynym rozwiązaniem jest obliczenie osobno szerokości tekstu i osobno wysokości, z tym że obliczamy wysokość dla litery która będzie najmniej „wystawała” poza baseline – ja używam do tego małego „a”. Niestety takie rozwiązanie wymaga podwójnego użycia funkcji imagettfbbox.

 

Nowa funkcjonalność w ParanoyaCMS

 

Ostatnio kilka nowości znalazło miejsce w moim systemie zarządzania treścią. Większość z nich to drobnostki jednak dwie zasługują na przybliżenie na łamach tego bloga.

Przeczytaj resztę wpisu »

 

Zmiana wyglądu bloga

 

Po dłuższym czasie nareszcie mój blog doczekał się swojego indywidualnego wyglądu (interfejsu). Do tej pory nie mogłem jakoś znaleźć czasu na jego „odświerzenie” czyli zmianę domyślnej skórki teraz mi się jednak to udało. Na pewno kilka osób zauważyło, że w ostatnim tygodniu wygląd bloga zmieniał się powoli acz nieubłaganie.

 

No a skoro już jest wygląd nowy to czas na wypełnienie bloga treścią, a raczej uzupełnienie kilku działów bo wypełnić to on się sam wypełni z czasem :P