don_jaro
Odpowiedzi: 11
-
2010-02-27 15:09:00 bookmarklety i nie tylko - dziwna konstrukcja
Chodzi o to, aby stworzyć (pierwszy nawias) i wywołać (drugi nawias) anonimową funkcję, która będzie niewidoczna w głównej przestrzeni nazw. Dzięki temu, nie będzie widziana przez skrypt na stronie oraz nie spowoduje konfliktu z żadną już zdefiniowaną.
-
2010-03-26 23:40:47 PHP: substr(array
Gdybyś miał włączone pełne raportowanie błędów, to mógłbyś zobaczyć komunikat podobny do tego:
Notice: Array to string conversion in C:\executephp.php on line 5Co oznacza, że tablica została zrzutowana na string (ponieważ substr wymaga stringa). Tablica rzutowana na string, da zawsze "Array".
Na chwilę obecną tak jest. Ale kto wie, co będzie w przyszłych wersjach PHP?
I dla higieny kodu na Twoim miejscu, jakoś bym się przed tym zabezpieczył - sprawdził czy mamy Array czy stringa i coś z tym zrobił.
-
2010-02-23 22:51:51 Dlaczego należy rozróżniać wyjątki?
Wyobraź sobie, że jest klasa
item. W konstruktorze tej klasy pobierasz dane z bazy danych wyszukując je poidpodanym jako parametr konstruktora. Korzystasz przy tym z klasydatabase. Klasadatabasemoże wyrzucić wyjątekdbErrorjeżeli np. nie może połączyć się z bazą danych. Klasaitemwyrzuca wyjątekitemNotFoundError, jeżeli danych w bazie nie ma. Pisząc moduł/funkcję/cokolwiek korzystające z klasyitemmożesz przechwycić tylko wyjątekitemNotFoundErroraby wyświetlić informację o braku danych w bazie. Nie przejmujesz się wyjątkiemdbErrorktóry zostanie "podrzucony wyżej" i przechwycony przez bardziej ogólny blokcatchw innej części projektu.Reasumując: dzięki rozróżnianiu wyjątków, możesz przechwytywać specyficzne wyjątki w takim miejscu, gdzie to jest najbardziej wygodne/logiczne. Obsługę wyjątków bardziej ogólnych możesz przygotować tylko raz we wspólnej części projektu.
Oczywiście, podobny efekt teoretycznie uzyskasz przekazując kod błędu w wyjątku, ale imho: będzie to niewygodne i trudne do zarządzania (a wyjątki są wygodniejsze - w końcu mogą dziedziczyć po sobie). Po drugie, możesz wykorzystać dziedziczenie tak, aby w wybranych wyjątkach przekazywać dodatkowe informacje (np. jeżeli
databasezwrócidbErrorto możesz zwrócić treść zapytania SQL i informację o błędzie zwróconą przez serwer bazy danych. Na końcu zapiszesz te dane do loga). -
2010-03-19 21:30:45 Pobieranie wartości z bazy do określonego miejsca
Dla MySQL będzie coś takiego:
select *, left(opis, instr(opis, '<hr/>') - 1) from tabelaGdzie opis to kolumna w której trzymasz ten tekst, a tabela to tabela ;)
-
2010-01-24 23:17:19 wyważanie otwartych drzwi, czyli pisanie czegoś, co już jest napi
Motywacje, żeby pisać coś na nowo mogą być różne... Najczęściej piszę coś od nowa, bo lepiej będzie dostosowane do środowiska jakie stworzyłem.
Niestety, bardzo często jednak nie mam wyboru. Ponieważ pracuję nad komercyjnym projektem, muszę zwracać uwagę na licencje. Paradoksalnie, najniebezpieczniejszą licencją jest... GPL*. Dlatego unikam jej jak ognia (o wiele bardziej przyjazną jest MIT). Najsmutniejsze jest to, że wielu programistów udostępnia swoje biblioteki na licencji GPL w dobrej wierze, nie zdając sobie zupełnie sprawy z tego, że blokują ich użycie w produktach komercyjnych.
*) Patrz: licencje wirusowe.
-
2010-03-13 20:57:42 Php i MySQL - limit połączeń..
Musisz użyć mysql_connect(). Ten błąd wygląda mi na problemy z dostępem do serwera. Upewnij się, że podajesz prawidłowe dane (nazwa serwera | socket, login, hasło) oraz, że serwer działa (jest dostępny) i możesz się do niego zalogować używając danych które podajesz.
Jeżeli to jest baza z tego samego serwera (i jest dostępna dla tego samego użytkownika) powinno wystarczyć mysqlselectdb(). Pamiętaj, aby po użyciu, wybrać poprzednią bazę.
"LINK" o którym pisze rzientek to dodatkowy (opcjonalny) parametr mysql_connect(). Ustawiony na true powoduje, że PHP nie użyje istniejącego połączenia gdy dane logowania które podałeś są identyczne z tymi, użytymi do ustanowienia aktualnego połączenia.
-
2010-04-02 16:49:06 Ochrona skryptu php - zakodowanie zend Guard?
Używam w pracy ionCube. Do zabezpieczania służy windowsowa aplikacja. Można w niej stworzyć projekt i kodować przy każdej potrzebie nowe wersje bez konieczności zmiany ustawień czy definiowania parametrów za każdym razem.
Wersja której używamy, umożliwia tworzenie plików licencji dla każdego projektu. Dzięki temu kodujesz raz i dla każdego klienta wystawiasz po prostu nowy plik licencyjny.
Przy kodowaniu (lub wystawieniu licencji) można nałożyć ograniczenia co do czasu, numeru IP, adresu MAC i domeny.
Co bardzo przydatne - można w pliku licencji umieszczać dodatkowe, własne informacje (np. nazwa klienta).
Ogólnie - polecam.
-
2010-01-25 10:29:32 Elementy na jakich licencjach można stosować w komercyjnych aplik
Na każdej z wymienionych wcześniej licencji... ALE niektóre z nich są licencjami wirusowymi (poczytaj w wikipedii) np. licencja GPL. Wymaga ona tego abyś swój kod udostępnił na tej samej licencji, co w przypadku projektu komercyjnego może być niedopuszczalne. W takim wypadku musisz zrezygnować z cudzego kodu.
-
2010-02-01 00:32:01 Kolejność stosowania stylów CSS
Nie bardzo rozumiem, o co chodzi na tym portalu... Pytający zadaje pytanie, przy czym widać po treści pytania, że ma wiedzę wystarczającą do tego, aby samemu sprawdzić jaka jest na nie odpowiedź. Po czym trzech użytkowników rzuca się do odpowiedzi, a Wujek Staszek daje tak obszerną, że jej napisanie zajęło mu tyle czasu, ile pytający potrzebowałby na sprawdzenie odpowiedzi samodzielnie i zrobienie sobie kawy. Trzy razy.
Ludzie, jeżeli chcecie zostać "programistami", to musicie wykazać zdecydowanie więcej inicjatywy niż zadawanie pytań z przedszkola.
A może tu wcale o wiedzę nie chodzi?
-
2010-03-26 23:53:21 PHP: mysql a mysqlI (MySQL Improved Extension)
Zdecydowanie warto. Dla mnie największą zaletą mysqli jest możliwość używania "prepared statements". Są to zapytania przygotowane raz i wykorzystywane wiele razy, z różnymi danymi wejściowymi. Np. możesz przygotować coś takiego:
select * from tab where id = ?A następnie "podpiąć" (bind) parametr do tak przygotowanego zapytania. Bindując podajesz typ parametru (string/integer) i jego wartość.
Swoją przewagę takie zapytania pokazują, gdy muszą być wykonane wiele razy.
Z innych zalet mysqli wymienić można właśnie obiektowość, obsługa wielu zapytań (multiple statements), wsparcie dla transakcji.
Z tego co wiem, w PHP6 nadal będzie dostępne rozszerzenie mysql, ale nie jest ono zalecane przez zespół PHP dla nowych projektów. Nie jest też dalej rozwijane.








7