Programowanie

Nowa Planeta PHP.pl

Posted in PHP, PHP.pl on Sierpień 30th, 2007 by Tomasz Cudok – 17 Comments

Właśnie uruchomiłem nową wersję serwisu Planeta PHP.pl. Całość została przepisana praktycznie od nowa, ostał się tylko specyficzny, wortalowy layout. Planeta działa teraz w oparciu o framework symfony, który umożliwił bardzo szybkie odtworzenie starej funkcjonalności i dodanie kilku nowości. Oto najważniejsze z nich:

  • Lepsza kontrola nad blogami, dzięki procesowi weryfikacji autora bloga.
  • Panel zarządzania dla autorów, gdzie mogą zmienić informacje o blogu, a także proponować nowe tagi. Panel jest zintegrowany z kontem na forum, więc nie ma potrzeby tworzenia nowej pary login-hasło. Co za tym idzie, wymagane jest posiadanie konta na Forum PHP.pl. No chyba, że ktoś ma już dodanego bloga, a nie potrzebuje dostępu do zarządzania.
  • Obsługa kanałów w formacie ATOM. Również kanał planety jest teraz w tym formacie.
  • Poprawki w layoucie, małe porządki w sidebarze.
  • Dodanie stron informacyjnych (Kontakt i O planecie)

Wątpliwości może budzić proces weryfikacji. Zdarzało się w przeszłości, że planeta agregowała blog osoby, która w ogóle o tym nie wiedziała i nie wyrażała na to zgody. Aby zapobiec takiej sytuacji, każdy nowo dodany blog musi zostać zweryfikowany. Zapożyczyliśmy wynalazek Google (przynajmniej tak mi się wydaje, choć nie wykluczam, że ktoś wymyślił to dużo wcześniej): aby mieć pewność, że osoba, która dodała blog jest jego autorem, musi ona wrzucić plik o podanej (losowo wygenerowanej) nazwie na serwer z blogiem. Planeta sprawdza, czy plik istnieje i jeśli tak jest, blog zostaje zweryfikowany. Potem jeszcze musi zostać zaakceptowany przez administratorów – powiadomienie o akceptacji (bądź też, w skrajnych przypadkach, odrzuceniu) bloga przychodzi na adres e-mail, wykorzystywany na Forum PHP.pl.

Osoby, które dodały blogi w starej wersji również muszą przejść proces weryfikacji, jeśli chcą mieć dostęp do zarządzania. Dla nich przygotowany został oddzielny formularz. Proces wygląda dokładnie tak samo, jak w przypadku nowo dodanych blogów. Oczywiście, nie jest on obowiązkowy, planeta będzie cały czas agregować treści z tych blogów.

Wszelkie sugestie jak zwykle mile widziane.

Wordpress + OpenID + Greasemonkey + PHP = …

Posted in OpenID, PHP, Programowanie on Luty 17th, 2007 by Tomasz Cudok – 24 Comments

Największą wadą OpenID w tej chwili jest fakt, że nawet mając już konto na serwerze tożsamości, nie bardzo jest do czego swój identyfikator wykorzystać. Z Wikitravel czy Mag.nolii raczej nie korzystam, a blogów, które umożliwiają dodawanie komentarzy z wykorzystaniem OpenID (zamiast standardowego Nick + E-mail) jest w tej chwili ledwie kilkanaście, jeśli weźmiemy pod uwagę blogi polskojęzyczne. Logowanie się za pomocą OpenID jest bardzo wygodne, gdy raz się tego spróbuje, wpisywanie swoich danych przy rejestracji/dodawaniu komentarza/postu/etc. przychodzi z dużym trudem. Dlatego, nie czekając aż OpenID upowszechni się mocniej, postanowiłem sam umożliwić sobie korzystanie z niego w większej ilości serwisów. read more »

Konsola pod Windowsem

Posted in Programowanie, Windows on Sierpień 22nd, 2006 by Tomasz Cudok – 7 Comments

Od dłuższego czasu prawie codziennie mam styczność z Windowsowym cmd.exe. To, jak domyślna konsola Windowsa wygląda i jakie utrudnienia stwarza na każdym kroku pracy z nią, najlepiej świadczy o bylejakości niektórych rozwiązań Microsoftu.

Na całe szczęście, Microsoft zauważył to niedociągnięcie i postanowił opracować nowy shell, dający dużo większe możliwości piasnia skryptów, niż pliki *.bat i dający dużo większą swobodę, niż archaicznie podobne do DOSa cmd.exe. Od premiery Windows PowerShell, o którym mowa, minęło już całkiem sporo czasu (wcześniej projekt miał nazwę kodową Monad). W WPS dostajemy do ręki język skryptowy zbliżony do C# oraz możliwość z korzystania z dużej ilości klas .NET. Można w łatwy sposób tworzyć profile, aliasy (nareszcie ls pod Windowsem i to domyślnie!) funkcje i pewnie wiele innych ciekawych rzeczy, o których jeszcze mi nic nie wiadomo. Jednym słowem cud, miód i orzeszki :)

read more »

Kombinator ;)

Posted in C#, Programowanie on Luty 11th, 2006 by Tomasz Cudok – 1 Comment

Nie tak dawno temu, podczas przerabiania rachunku prawdopodobieństwa, nauczyciel dał nam do rozwiązania dość trudne zadanie na dodatkową ocenę. Przysiadłem do niego w domu i nie mogąc nic wymyślić, postanowiłem rozwiązać je metodą brute-force. Napisałem na szybko programik, który generował permutacje danego zbioru, każdy z otrzymanych w ten sposób zbiorów sprawdzałem pod kątem odpowiednich kryteriów w pętli i w ten sposób wynik znalazł się sam. Następnego dnia poszedłem się pochwalić nauczycielowi i zostałem mile zaskoczony. Otóż mój nauczyciel matematyki również lubi dłubać w kodzie. I tym sposobem dostałem zadanie specjalne – napisać program generujący permutacje, kombinacje, wariacje (z powtórzeniami i bez) podanego zbioru (max. 10 elementów). Jako, że zadanie było ciekawe, wziołem się za nie niemal natychmiast.

Oczywiście wybór platformy nie był trudny. Bez wahania wybrałem .NET i C#. Program napisałem w darmowym Visual C# Express 2005 Microsoftu. Główną trudnością było opracowanie w miare wydajnych algorytmów mutujących zbiory. Jednak szybko okazało się, że dużym problemem jest też wyświetlenie listy z milionem elementów. Tak więc przy dużych ilościach wynikowych zbiorów program upomina się o bezpośredni zapis do pliku, co jest zdecydowanie bardziej wydajne. W ten sposób, na moim sprzęcie, można sobie utworzyć plik ze wszystkimi permutacjami zbioru 10 elementowego (jest ich 10! = 3628800) w nieco ponad minutę. A algorytm permutacji można by pewnie sporo zoptymalizować, ponieważ jest on… rekurencyjny (lenistwo wzieło górę…).

Niby prosty programik, a dzięki niemu nabyłem całkiem sporo doświadczenia w programowaniu aplikacji okienkowych pod Windowsa. Wytworzyłem sobie styl nazewnictwa kontrolek, doświadczyłem na własnej skórze, że zaprojektowanie ładnego GUI nie jest wcale takie proste jak się może wydawać, przyswoiłem sobie parsowanie dokumentów XML w .NET. A przy okazji nauczyłem się na pamięć wzorów na obliczenie ilości wyników poszczególnych operacji kombinatorycznych. Uwielbiam łączyć przyjemne z pożytecznym ;)

Program do działania wymaga zainstalowania .NET Framework 2.0.

Kombinator 1.0
Kombinator 1.0 – źródła

Jak Cudi został piekarzem…

Posted in PHP, Programowanie on Luty 10th, 2006 by Tomasz Cudok – 7 Comments

Ostatnio, głównie ze względów finansowych, wróciłem do programowania w PHP. Pierwszą rzeczą jaką robi się po długiej przerwie w programowaniu w danym języku jest sprawdzenie, czy ktoś w międzyczasie nie znalazł sposobu by umilić kodowanie. I rzeczywiście, komuś udało się to zrobić.

Jakieś pół roku temu świat usłyszał o Ruby on Rails. Jest to framework do tworzenia aplikacji internetowych, napisany w języku Ruby. Najważniejszą jego cechą jest to, że nie trzeba się szczególnie wysilać, żeby stworzyć jedne z bardziej pracochłonnych elementów strony, jak np. formularze. RoR zachwycało prostotą, było to RAD w pełnym tego słowa znaczeniu, choć w podejściu zupełnie innym niż to znane z J2EE czy ASP.NET. Zamiast pracochłonnej obsługi zdarzeń i tworzenia ogromnych plików konfiguracyjnych w XML’u, RoR oferował jak największą automatyzacje zadań. Zamiast plików konfiguracyjnych są konwencje nazw plików, klas, metod i zmiennych. Niby ograniczanie swobody, ale przy okazji pozwala zachować porządek w kodzie.

O RoR można się jeszcze długo rozpisywać, ale ja miałem pisać o pieczeniu. Konkretniej, o pieczeniu ciasta. Mowa o frameworku CakePHP, który chyba najbardziej obrazuje to jak wyglądałby Rails gdyby był pisany w PHP. Chociaż PHP nie posiada tylu ‘magicznych’ kruczków składniowych co Ruby, w kilku względach jest od niego lepsze. Po pierwsze, jest powszechnie instalowane na serwerach. Z Ruby… bywa bardzo różnie. Po drugie, szkoda uczyć się, bądź co bądź skomplikowanego języka jakim jest Ruby, tylko po to by nie móc tego wykorzystać.

Muszę przyznać, że twórcom Cake’a bardzo dobrze udało się oddać RoRowy sposób pisania aplikacji. Piszę w nim średnio skomplikowanego CMSa i choć czasami widać w tym frameworku braki i błędy, to w niektórych miejscach pokazuje prawdziwą potęgę. Przykład, tworzenie panelu administracyjnego. Modele tworzą się praktycznie same, kontroler to kilka linijek kodu. Dzięki helperom w prosty sposób tworze sobie formularz, podpinam pod wszystko bibliotekę Prototype i w ciągu 30 minut mam panel zarządzania podstronami, oparty o AJAXa, z pięknymi efektami przejściowymi. Gdybym chciał to pisać bez Cake’a, zajęłoby to co najmniej 10 razy więcej czasu.

O CakePHP będę na pewno jeszcze nie raz tutaj pisał w miarę tworzenia kolejnych projektów. Już teraz udało mi się go mocno rozbudować o własne funkcje (komponenty, helpery, elementy itd.), a pracuje z nim dopiero od wczoraj. Zachęcam do testowania, można sobie stworzyć bardzo wygodną platformę do tworzenia aplikacji przy minimum wysiłku.