Patterns For PHP
Przedruk z devzone - wiki z przykładowymi implementacjami wzorców projektowych w PHP. http://patterns.quantum-star.com/index.php/Main_Page
Przedruk z devzone - wiki z przykładowymi implementacjami wzorców projektowych w PHP. http://patterns.quantum-star.com/index.php/Main_Page
Bez żadnej pętli. :) Czy ktoś zna krótszy zapis nie korzystający z zewnętrznych funkcji? [php]< ?php $target = array_combine(array_map(‘strtolower’, array_keys($target)), array_values($target)); ?>[/php]
Zwykle, kiedy potrzebujemy zmienną ilość wartości, które są w tablicy używamy pętli. Da się jednak obejść. Dzisiejszego dnia trafiłem na zadanie, które polegało na pobraniu fragmentu tablicy. Tablica była wierszem z bazy danych, który był wynikiem złączenia kilku tabel a ja chciałem pobrać wartości tylko dla określonej tabeli. Informacje o tym, jakie klucze mnie interesują miałem zapisane w obiektach metadanych, potrzebowałem tylko odpowiednio okroić wiersz do potrzebnych mi rozmiarów. Problem rozwiązałem przy użyciu 4 funkcji, w tym 3 funkcji wbudowanych w PHP. Potrzebne były array_uintersect_uassoc, array_flip, strcasecmp. Dodatkowo musiałem zdefiniować 1 funkcje, która dla 2 argumentów zawsze zwraca zero. Musi ona być zgodna z wymaganiami stawianymi przez “comparatory”. Zero musi być zwracane by nie porównywać wartości (wg porównywaczy zero oznacza, że obie wartości są sobie równe). ...
Oto wpis, wykopany przez kolegę z pracy, na blogu pewnego programisty. Autor piesze, że stworzył łatkę do PHP która pozwala korzystać z podpowiadania dla typów prostych. Więcej : http://www.derickrethans.nl/typehints_for_scalar_types.php
Mały konkursik - jak pobrać stałą z klasy..? Kod jest, jedyny problem to to, że nazwa stałej może się zmienić… [php]< ?php class Foo { const TAK = ‘prawda’; const NIE = ‘fałsz’; const CHGW = ‘a kto go tam wie’; } if($_GET[‘imie’] == ‘Bolek’) { // $constant = ‘TAK’; } elseif(!empty($_GET)) { // $constant = ‘NIE’; } else { // $constant = ‘CHGW’; } echo ‘… wlasnie co ? ..’; ?>[/php] ...
Witam, jakiś czas temu w pracy staneliśmy przed dylematem - którą bazę danych użyć? Dyskusja była długa, w końcu postanowiliśmy przetestować wydajność każdego rozwiązania. Niestety testy niejasności tylko jeszcze bardziej naświetliły. Pierwszy test, jaki przeprowadziliśmy polegał na wstawieniu 3 milionów rekordów do tabeli, która składała się z 5 kolumn. [sql] – pgsql CREATE TABLE users ( user_id serial NOT NULL, user_name varchar(45), user_password varchar(32), user_first_name varchar(15), user_last_name varchar(15), CONSTRAINT users_pkey PRIMARY KEY (user_id) ) [/sql] ...
Nie da się ukryć, że żyjemy w dziwnym kraju. Nie chcę już pić do tego kto nami rządzi bo to świadomy wybór tej większości, która przeważyła w wyborach, ale do tego jak wyglądają u nas zarobki. Prawda jest taka, że jeśli chcesz pracować a masz pecha to pozostają 3 wyjścia: - pracujesz na umowę o dzieło i pracodawca ewentualnie płaci Twoją zaliczkę na podatek dochodowy - pracujesz po zaniżonych kosztach - to znaczy, masz umowę na 1/4 etatu, zarabiasz 700 zł a resztę otrzymujesz pod stołem. - pracujesz na czarno i modlisz się o to by nic Ci się nie stało oraz by stosunki z pracodawcą były zawsze jak najlepsze ...
Niedawno postanowiłem zaryzykować i ściągnąć Oracle XE. Samo ściągnięcie nie trwało dość długo (w międzyczasie sobie jadłem kolację), w końcu to tylko 150 MB. Zapewne niektórym w tym miejscu trudno uwierzyć, że tylko tyle. Tak tylko tyle! ;) Fakt, w porównaniu z MySQL/PgSQL to naprawdę wiele, ale nie w porównaniu do pełnego pakietu Oracle, który waży znacznie więcej. Tak więc w mych rękach wylądowała wersja express Oracle 10, która była gotowa do instalacji. Procesu instalacji nie opisywałbym gdyby nie to, że minimalna ilość pamięci to ponad 256 MB. Zatem niestety, albo i stety nie mogłem zainstalować bazy na laptopie. Nie mniej, podczas pobytu w domu z powodzeniem instalację udało mi się zakończyć. Co mnie zaskoczyło – nie zmuliło mi od razu systemu, jak to ongi bywało. Pamiętam, że gdy pierwszy raz instalowałem Oracle (rozmiar ~500 MB) to system dosłownie stawał w miejscu. Dlaczego? Ponieważ przy normalnej instalacji Oracle używa kilku i więcej procesów pomocniczych, także nie jest to tak jak w przypadku MySQL jeden proces. Dzięki temu baza o wiele lepiej sprawuje się na maszynach wieloprocesorowych. Podstawowe procesy pomocnicze to: - dbw – proces zapisujący do plików danych – procesów tych może być do 9 (dbwr0.. dbwr9) - pmon – monitor procesów - smon – monitor systemu - lgwr – proces zapisujący do plików dziennika powtórzeń - ckpt – proces punktu kontrolnego - reco – odtwarzacz - arc0 – archiwizacja danych W przypadku wersji express tych procesów nie ma, jest jeden główny, który sobie spokojnie radzi ze wszystkim. Nie mam pojęcia jak to jest realizowane, ale na systemie XP, który ma ponad pół roku, gdzie dysk naprawdę jest zawalony po brzegi i gdyby nie zakładki na tychże to by się z niego wylewało baza działała szybko a co najważniejsze nie destabilizowała systemu jak i pracy innych aplikacji. Dla mnie bomba, proces nie zżerał całej dostępnej pamięci, tak że spokojnie mogłem przy 768 MB pamięci pracować jeszcze na Eclipse. Nie do wiary? A jednak, dało radę. W tym przypadku śmiem twierdzić, że gadanie “Oracle zmula” są mocno nieaktualne. Nie zmula! Oczywiście wciąż mówimy cały czas o wersji express, która w sam raz nadaje się do testów a nie o instalacji w pełni funkcjonalnej. Cóż takiego ciekawego jest w tym oprogramowaniu? 1. Po pierwsze, dlaczego powstają książki rozmiarowo przewyższające encyklopedie na jego temat. 2. Po drugie czy nie jest to wodolejstwo. 3. Po trzecie czy możliwości są adekwatne do ceny. ...
Kilka listingów. W czym to jest napisane? [code]list = [1: “a”, 2: “b”, 3: “C”, 6: “asdf”] list.each() { key, value | println “${key} = ${value}” }[/code] [code]add = { x -> { y -> x + y }} println add(2)(4)[/code] [code]def power(n) { { base -> base**n } } square = power(2) cube = power(3) a = square(4) println a // => 16[/code]
Nowe miasto. Po 11 miesiącach w Bydgoszczy przeprowadzka. W Bydgoszczy bądź co bądź zostaje prawie rok mojego życia. Wiele nowych osób, wiele nowych rzeczy. Przyznam, że ciężko było rezygnować z wszystkiego by zaczynać znowu od zera. Same miasto nie było złe, poza niektórymi rejonami dało się w nim żyć. Owszem, nie było tam gromady studentów tak jak w Toruniu, nie było porządku jak w moim rodzimym mieście, ale byli mili ludzie. Nikt na ulicy nie oklepał mi twarzy, nie zostałem napadnięty ani okradziony, zatem, bilans jak najbardziej dodatni. Poznałem w Bydgoszczy wiele nowych osób, nie mówiąc już o nowych miejscach. Zanim przeprowadziłem się do Bydgoszczy słyszałem o tym mieście wiele złego, nigdy nie usłyszałem zdania pozytywnego. Tak, ktokolwiek mówił o nim, mówił: szare, brudne, niemiłe. Nie przeczę - takie jest każde większe miasto, ale nie wszędzie, nie całe. Dzielnica w której mieszkałem a później i pracowałem była czysta i zadbana, nie spotykałem się tam z żadnymi problemami. Dość nostalgii. Teraz pora na Warszawę. Nowa praca. W Bydgoszczy były dwie firmy z którymi współpracowałem - IRTI oraz Front Studios. Obie wspominam miło, chociaż zmiany żadnej nie żałuję, ponieważ w każdej zmianie jest coś dobrego. Obie firmy zajmowały się PHP. W pierwszej był to głównie hosting + wykonywanie zleceń w drugiej gry + erp + zlecenia. Nowa praca, nowe możliwości. Cytat ze strony mojego obecnego pracodawcy: System AutoControl© umożliwia ciągłą analizę i optymalizację wykorzystania taboru transportowego w dowolnym przedsiębiorstwie przewozowym. Użytkownik ma zapewniony dostęp do danych z dowolnego miejsca korzystając z internetowego systemu AutoControl©. Inteligentna aplikacja dostarcza użytkownikowi zdefiniowane przez niego raporty o charakterystyce pracy poszczególnych pojazdów, pozwalając optymalizować wykorzystanie taboru. Zasięg działania systemu AutoControl© obejmuje całą Europę. Życzcie mi powodzenia. W krótce więcej o PHP Unit 3. :) ...