Potyczki Algorytmiczne 2011: Zadanie "Wieże".

Z lekkim poślizgiem publikuję analizę kolejnego zadania z konkursu “Potyczki Algorytmiczne” 2011 - 1B “Wieże”. Zadanie nie było trudne, aczkolwiek dosyć ciekawe. Nie udało mi się uzyskać jakiegoś specjalnie optymalnego wyniku, aczkolwiek pomyślnie przeszedłem wszystkie testy i kolejne 10 punktów wylądowało na moim koncie. Warto czasem rozruszać komórki mózgowe, dlatego zapraszam do lektury.

symfony: klasa sfWidgetFormI18nDate i problem z podawaniem zakresu lat.

Witajcie. Programuję ostatnio we frameworku symfony i ze względu na sporą przerwę trafiam na różne problemy związane ze białymi plamami wiedzy na temat funkcjonowania pewnych małych trybików, bez których jednak ciężko byłoby ogarnąć działanie całego projektu. Niedawno niemałą zagwozdkę dał mi komponent sfWidgetFormI18nDate, który jest odpowiedzialny za wyświetlanie elementu formularza pozwalającego na wprowadzenie daty, a dokładnie sama część “roku”. Problem niby prosty, ale nadal problem, dlatego zapraszam do lektury. ;]

PHP: Obsługa wartości typu DWORD.

W komentarzu do wpisu o flagach bitowych zostałem poproszony przez jednego z komentujących, Bartosza Wójcika, o opisanie obsługi wartości typu DWORD w PHP. Wychodząc naprzeciw tej prośbie, rozbiłem temat na pewnego rodzaju wprowadzenie we wpisie o odczytywaniu wartości bajtów w zmiennych liczbowych, a dzisiaj podejmuję temat właściwy. Zapraszam do lektury, a także zgłaszania własnych pomysłów na tematy wpisów, o których chcielibyście przeczytać. Żadne zgłoszenie nie zostanie przeze mnie pozostawione bez echa. ;]

PHP: Błąd "Parse error, unexpected '<' in Command line code on line n".
Interpreter PHP, poza oczywistą funkcjonalnością dotyczącą wykonywania napisanego przez nas kodu posiada kilka innych ciekawych możliwości. Jedną z nich jest wykonywanie fragmentu kodu przekazanego bezpośrednio jako parametr wywołania. W dzisiejszym wpisie chciałbym pokazać jeden z problemów, na jaki można w tym przypadku natrafić. PHP: Przełącznik “-r”. Aby uruchomić wspomnianą funkcjonalność, należy wywołać interpreter PHP z przełącznikiem “-r”, po którym należy przekazać parametr zawierający żądany przez nas kod. Weźmy pod uwagę przykładowe wywołanie:
PHP: Sprawdzanie, czy plik został włączony do kodu.

Ci, którzy śledzą stronę niniejszego blogu na Facebooku, na pewno zauważyli status, jakim się z nimi podzieliłem w środę. Strasznie się wtedy zdenerwowałem, bo straciłem kilka godzin życia, a popełniony błąd był trywialny. Podczas analizy działania zwyczajnie skupiłem się na bardziej zaawansowanych częściach kodu, zapominając o podstawach, co odbiło się niestety na procesie “debugowania”. Skoro powstał problem, to na pewno istnieje dla niego rozwiązanie, dlatego w niniejszym wpisie chciałbym przedstawić Wam sposób na zabezpieczenie się przed tym “błędem”.

Funkcja require_once() działa… tylko “once”.

O co chodziło w całym problemie? Otóż, moja praca inżynierska, w ramach której piszę framework w języku PHP w pewnym momencie przekazuje sterowanie do modułu widoku [View]. Widok ten, pomijając całą abstrakcję, jaka za nim stoi, w pewnym momencie wykonuje zwyczajną instrukcję require_once(), włączając plik z kodem szablonu.

[PHP] Ustawienie short_open_tag = Off i zachowanie kodu zawartego w short open tagach.
Dzisiejszy wpis nie traktuje bezpośrednio o jakimś konkretnym problemie programistycznym, ale jest swojego rodzaju “niezapominajką” po pewnym problemie, na który natrafiłem podczas pracy nad jednym z projektów. Jako programista nigdy nie powinienem zakładać, że cokolwiek zachowa się “tak jak powinno”, a przynajmniej dopóki nie potwierdzą mi tego testy jednostkowe i podobne im narzędzia. Tym razem jednak złamałem tą zasadę, co w ramach bonusu przysporzyło mi kilku godzin szukania błędu… tam, gdzie go nie było.
[PHP] Zmienne zmienne, czyli słów kilka o mechanizmie variable variables.

Języki skryptowe, ze względu na swój charakter [kod, to tylko zwykły tekst, który zaczyna “coś” znaczyć dopiero w momencie interpretacji] mają praktycznie nieograniczone możliwości manipulacji stanem aktualnie przetwarzanego żądania, ze względu na to, że w dowolnym momencie możemy dołożyć żądany kawałek kodu poprzez funkcje typu require_once(). PHP jest jednym z takich języków, stąd nieobce są mu pewne “dziwne” na pierwszy rzut oka funkcjonalności. Być może zastanawiasz się, Czytelniku, czym są wspomniane w tytule “zmienne zmienne” - po lekturze tego artykułu na pewno nie będziesz zawiedziony informacjami wyniesionymi z niniejszego wpisu, więc serdecznie zapraszam do kliknięcia w link “Czytaj dalej”. ;]

Wstęp.

Programując w językach kompilowanych na pewno zauważyłeś, że po przetworzeniu kodu przez kompilator mamy niewielkie możliwości manipulacji strukturą kodu. Mam tu na uwadze szczególnie język C++, w którym raz zapisane funkcje, zmienne, klasy, istnieją przez cały czas działania programu. Dodawanie nowych bytów tego typu jest praktycznie niemożliwe w tradycyjny sposób. Jedyne, co oferują współczesne biblioteki to tzw. refleksja, czyli możliwość analizy struktury kodu i wyciągania informacji o poszczególnych jego elementach.

[Linkdump #17] Wielki Przegląd WordPressa.

Pomyślałem, że wypadałoby trochę zdywersyfikować tematy podejmowane w ramach serii, stąd przeprowadziłem krótką, wewnętrzną burzę mózgów [elektronowych, sztuk 1], owocem której była lista tematów poza samymi językami programowania, które można by wykorzystać do skompletowania kilku linków i przekazania Wam, Czytelnikom. Zapraszam więc dzisiaj do zapoznania się z czymś interesującym na temat skryptu, na którym stoi niniejszy [i wiele innych] blogów.

Linkdump.

1. 8 useful code snippets to get started with WordPress 3.0. kilka ciekawych fragmentów kodu dla twórców szablonów i ludzi, którzy lubią pogrzebać w swojej instalacji WP.

[Życie] Wesołych Świąt i szczęśliwego Nowego Roku!

Z okazji nadchodzących Świąt Bożego Narodzenia chciałbym życzyć czytelnikom tego bloga oraz ich bliskim wszystkiego najlepszego, zdrowia, szczęścia i pomyślności. Niech nadchodzący rok będzie pełen sukcesów, radości i spełnienia w życiu. Życzę Wam, żebyście spędzili te Święta w atmosferze rodzinnego ciepła i wzajemnego zrozumienia. Także spełnienia marzeń - chyba zgodzicie się, że wszystko, co chcemy w życiu osiągnąć, to nasze marzenia. ;]

[DreamWeaver] Kolorowanie kodu w plikach o niestandardowych rozszerzeniach.

Pomagałem ostatnio koledze w przepisaniu i uproszczeniu pewnego skryptu w języku PHP. Pomijam jakość samego kodu, która, mówiąc kolokwialnie, nie była zbyt wysoka. Wszystkie pliki które były w trakcie jego działania wstawiane przez różne wywołania funkcji:

js/^(include|require)(_once){0,1}\(\);$/

[include(), require(), include_once() i require_once(), taki mały żarcik ;]] miały rozszerzenie “.inc”, w związku z czym DreamWeaver, którego używaliśmy do edycji kodu, wyświetlał nam jedynie czarny tekst, który był mało czytelny. Jako, że zawsze staram się robić wszystko porządnie, od razu poszukałem rozwiązania problemu, ponieważ praca z nieczytelnym kodem to jedynie strata czasu, a jak wiadomo, czas to pieniądz, nawet, jeśli się pracuje za darmo. ;]