Grzegorz Z.

Grzegorz Z.
Programista/Webdevel
oper

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Wojciech B.:
Specjalista od zabezp danych z formualrzy: Tutaj proszę przefiltrować zmienną z imieniem i nazwiskiem.

Czyli filtrowanie danych jest domyślnym obowiązkiem programisty ?
Jeżeli nastąpiło włamanie na stronkę, kto ponosi odpowiedzialność (programista w firmie, umowa o pracę) ? Programista, pm, właściciel firmy, specjalista od zabezp danych z formularzy, handlowiec, architekt oprogramowania, sekretarka ?

No programista, bo to on pisząc kod, ma go pisać bezpiecznie, ale kolega wyżej uważa inaczej. Że musi mieć to w specyfikacji.
Taka sytuacja masz stronke 400 żądań na sekundę, każde odświeżenie strony to odpalenie twojego sql query. Czy da się to zoptymalizować ? Chodzi o uniezależnienie częstotliwości wykonywania selecta od ilości żądań na sekundę.
Cache?Ten post został edytowany przez Autora dnia 21.08.13 o godzinie 15:59

konto usunięte

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Robert P.:
Grzegorz Z.:
Robert P.:

1. Filtrowanie sprawdza czy kod nie zawiera danych, które tam nie powinny być np kod html, php, sql, walidacja sprawdza czy dane są tym czym powinny być np PESEL NIP odpowiednia suma kontrolona długość itp. sanitizowanie to odrzucanie nieprawidłowych danych np jak ktoś wpisze 123a to ma zostać 123 albo usuwanie html, znakow SQL itd.

2. Najprostszy przykład to
SELECT col FROM t1 ORDER BY  rand() LIMIT 5
jak można to ulepszyc? Większość programistów stosuje tego typu zapytanie a nie wielu wie, że funkcja rand jest wywoływana dla każdego rekordu.

Aż z ciekawości spytam, jaka jest odpowiedź? :)

Tutaj masz to fajnie rozpisane wraz z testami i odpowiedzią http://jan.kneschke.de/projects/mysql/order-by-rand/

sporo tych artykułów opiera się na tym że nie podajemy żadnego warunku na wynikach, czyli proste "select * from t1"
a niestety prawda jest taka że większość osób doda warunek w WHERE że data ważności artykułu taka i taka albo że mają to być produkty z kategorii Y.

Stąd proponowane pomysły z budowaniem cache wskaźników do id "bez dziur" robi się problematyczne, bo trzeba je robić dla każdego warunku.

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Grzegorz Z.:
No programista, bo to on pisząc kod, ma go pisać bezpiecznie, ale kolega wyżej uważa inaczej. Że musi mieć to w specyfikacji.
A jednak można http://www.wrotamalopolski.pl/root_BIP/BIP_w_Malopolsc...

Jak nie ma tego w specyfikacji, to programista realizuje niezamówioną funkcjonalność, na czyj koszt ?
Cache?
Ogóle cache, jedno z możliwych rozwiązań to webservice z cache np 10 sekundowe efektywnie redukuje obciążenie bazy zapytaniami.

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Dariusz R.:

mi tylko te 5 pasujących? A tak to musiałbym jeszcze przygotować jakąś metodę w programie, po co skoro wszystko można załatwić jednym prostym zapytaniem? No chyba że składnia SQL czegoś nie obsługuje.

Koszt wszystkich mało efektywnych zapytania sql nawet na małej ilości danych sumuje się.
Koszt ten to zwiększone zużycie prądu, dysków, pamięci etc.
Ciekawe myślenie abstrakcyjne to dostrzeganie, że pisanie efektywnych zapytań sql to działanie proekologiczne, a klepacze "byle działało" szkodzą środowisku.

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Robert P.:

Wczytywanie wszystkich rekordów do array może spowodować stackoverflow ;) rozwiązanie przedstawiłem powyżej testowałem je na bazie mającej 400k rekordów i działa bardzo dobrze. Przy takich bazach każdy JOIN jaiekolwiek zapytanie ma znaczenie i trzeba zwracać ogromną uwagę na optymalizację.

ciekawym zbieżnym z moim tokiem rozumowania jest http://snippetsofcode.wordpress.com/2011/08/01/fast-ph...
Sebastian Błaszczak

Sebastian Błaszczak Programista Symfony,
Symfony2

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Wojciech B.:
Grzegorz Z.:
No programista, bo to on pisząc kod, ma go pisać bezpiecznie, ale kolega wyżej uważa inaczej. Że musi mieć to w specyfikacji.
A jednak można http://www.wrotamalopolski.pl/root_BIP/BIP_w_Malopolsc...

Jak nie ma tego w specyfikacji, to programista realizuje niezamówioną funkcjonalność, na czyj koszt ?

"Reagowanie i odpowiadanie na zgłoszenia użytkowników dotyczące funkcjonowania portalu,"

Na swój koszt, przez 24 miesiące wykonawaca musi wykonywać wszystko co tylko zażyczy sobie zleceniodawca. Koszty sprzętowe jak i obsługi ponosi także wykonawca.

Jestem ciekaw jak będzie wyglądała zgodność zamawianego CMS-a z xHTML-em 2.0 i jak to będzie sprawdzane.

konto usunięte

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Wojciech B.:
Koszt wszystkich mało efektywnych zapytania sql nawet na małej ilości danych sumuje się.
Koszt ten to zwiększone zużycie prądu, dysków, pamięci etc.
Ciekawe myślenie abstrakcyjne to dostrzeganie, że pisanie efektywnych zapytań sql to działanie proekologiczne, a klepacze "byle działało" szkodzą środowisku.

Nikt nie wypuści na rynek nie przetestowanego, także pod względem wydajności produktu. Mówimy o zagadnieniach optymalizacji wydajności, takie błędy wynikają po prostu z niewiedzy albo braku doświadczenia, niestety człowiek uczy się na własnych błędach. Gdyby tak wszystko działało bezbłędnie należało by chyba powywalać z pracy testerów gdyż po prostu nie byliby potrzebni. Żaden problem przeczytać coś o optymalizacji, np. tu:

http://kotu.pl/artykuly/strojenie-baz-danych-optymaliz...
Grzegorz Z.

Grzegorz Z.
Programista/Webdevel
oper

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Wojciech B.:
Grzegorz Z.:
No programista, bo to on pisząc kod, ma go pisać bezpiecznie, ale kolega wyżej uważa inaczej. Że musi mieć to w specyfikacji.
A jednak można http://www.wrotamalopolski.pl/root_BIP/BIP_w_Malopolsc...

Jak nie ma tego w specyfikacji, to programista realizuje niezamówioną funkcjonalność, na czyj koszt ?

Bezpieczeństwo jest dodatkową, dodatkowo płatną funkcjonalnością? Rozumiem.... ja tam to wliczam :)

*tekst usunięty*

Po zastanowieniu stwierdzam bezsensowność dalszej polemiki.
Miłego pisania!Ten post został edytowany przez Autora dnia 22.08.13 o godzinie 08:50
Robert P.

Robert P. Senior PHP Developer

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Grzegorz Z.:
Taka sytuacja masz stronke 400 żądań na sekundę, każde odświeżenie strony to odpalenie twojego sql query. Czy da się to zoptymalizować ? Chodzi o uniezależnienie częstotliwości wykonywania selecta od ilości żądań na sekundę.
Cache?


Tak Cache. Osobiście programuje w zend framework gdzie masz 2 rodzaje cache. Front i backendowy. W zależności od potrzeb używam jednego i drugiego + cache przeglądarki. Jeżeli wiem, że strona nie zmieni się w ciągu 5 min, a jest czesto odwiedzana to dodaje cache przeglądarki po to by php nie musiał na nowo wykonywać nowych obliczeń. Jeżeli wygląd może sie zmienić a dane nie wtedy stosuje cache backendowy. Czasem można stosować cache bezpośrednio w systemie szablonów np. smarty. Polecam http://framework.zend.com/manual/1.12/en/zend.cache.html
Piotr Jasiulewicz

Piotr Jasiulewicz PHP/Java
professional

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

W ZF jakies poronione te cache byly troche, szczegolnie frontowy... jest mechanizm ESI do takich rzeczy.
Jakub Korupczyński

Jakub Korupczyński Software Developer

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Grzegorz Z.:
Wojciech B.:
Specjalista od zabezp danych z formualrzy: Tutaj proszę przefiltrować zmienną z imieniem i nazwiskiem.

Czyli filtrowanie danych jest domyślnym obowiązkiem programisty ?
Jeżeli nastąpiło włamanie na stronkę, kto ponosi odpowiedzialność (programista w firmie, umowa o pracę) ? Programista, pm, właściciel firmy, specjalista od zabezp danych z formularzy, handlowiec, architekt oprogramowania, sekretarka ?

No programista, bo to on pisząc kod, ma go pisać bezpiecznie, ale kolega wyżej uważa inaczej. Że musi mieć to w specyfikacji.

Przypominam że rozmawialiśmy o tym że twierdzisz że programista powinien być niemową i bać się pytać o cokolwiek bo ktoś go jeszcze uzna za stażystę :)
Pisać kod powinno się bezpiecznie i to normalne, ale poza filtrowaniem jak to ujmujesz formularza są inne rzeczy, o których wiedzieć nie będziesz jak nie zapytasz, np klient przyjdzie do Ciebie i się zapyta dlaczego zarejestrowała się u niego 5 letnia dziewczynka, skoro on chciał żeby tylko osoby powyżej 15 roku życia miały dostęp. Domyślisz się tego? nie.

Gdzieś ktoś pisał że jak się buduje most to nikt nie pyta czy musi być bezpieczny. Może i nie, ale w specyfikacji masz np jaki ruch i jakie ciężary ma wytrzymywać. Jak budowniczy będzie niemową i będzie się bał pytać to może zrobić most dla czołgów, po którym będą jeździły tylko rowery.

Nie wiem, mi się raczej wydawało że proponowanie swoich rozwiązań, rozwijane wątpliwości o w ogóle omawianie projektu to normalna sprawa, ale najwyraźniej się mylę.
Grzegorz Z.:
To kto u Ciebie wpisuje w specyfikacje to, że trzeba przefiltrować dane? Bo jak programista nie ma pojęcia o tym (bo nie musi) i lekarz też nie ma. To czy jest ktoś zatrudniony specjalnie do tego, żeby wpisać w specyfikacji:
"Tutaj proszę przefiltrować/zwalidować/sanitizować dane" ?
Już sobie to wyobrażam (przy burzy mózgów):
Lekarz: Tutaj będziemy wymagać imienia i nazwiska
Programista: Ok, to tutaj dodamy formularz i dodawanie do bazy
Specjalista od zabezp danych z formualrzy: Tutaj proszę przefiltrować zmienną z imieniem i nazwiskiem.

Specjalistą od zabezpieczeń formularzy jest programista, który się mógłby np zapytać co w sytuacji gdy ktoś ma więcej niż jedno imię, czy dodać pola na to, czy nie ma to znaczenia, czy np dodać jakieś inne pola typu telefon czy e-mail i czy to mają być pola wymagane czy nie.
A inna sprawa że do zbierania wymagań jest raczej inna osoba niż programista, i jest właśnie po to żeby takie pytania zadawać, bo klient właśnie może nie pomyśleć o wszystkim. W końcu to klient a nie specjalista od tworzenia stron.Ten post został edytowany przez Autora dnia 22.08.13 o godzinie 20:47
Grzegorz Z.

Grzegorz Z.
Programista/Webdevel
oper

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Jakub K.:
Grzegorz Z.:
Wojciech B.:
Specjalista od zabezp danych z formualrzy: Tutaj proszę przefiltrować zmienną z imieniem i nazwiskiem.

Czyli filtrowanie danych jest domyślnym obowiązkiem programisty ?
Jeżeli nastąpiło włamanie na stronkę, kto ponosi odpowiedzialność (programista w firmie, umowa o pracę) ? Programista, pm, właściciel firmy, specjalista od zabezp danych z formularzy, handlowiec, architekt oprogramowania, sekretarka ?

No programista, bo to on pisząc kod, ma go pisać bezpiecznie, ale kolega wyżej uważa inaczej. Że musi mieć to w specyfikacji.

Przypominam że rozmawialiśmy o tym że twierdzisz że programista powinien być niemową i bać się pytać o cokolwiek bo ktoś go jeszcze uzna za stażystę :)
Pisać kod powinno się bezpiecznie i to normalne, ale poza filtrowaniem jak to ujmujesz formularza są inne rzeczy, o których wiedzieć nie będziesz jak nie zapytasz, np klient przyjdzie do Ciebie i się zapyta dlaczego zarejestrowała się u niego 5 letnia dziewczynka, skoro on chciał żeby tylko osoby powyżej 15 roku życia miały dostęp. Domyślisz się tego? nie.

Gdzieś ktoś pisał że jak się buduje most to nikt nie pyta czy musi być bezpieczny. Może i nie, ale w specyfikacji masz np jaki ruch i jakie ciężary ma wytrzymywać. Jak budowniczy będzie niemową i będzie się bał pytać to może zrobić most dla czołgów, po którym będą jeździły tylko rowery.

Nie wiem, mi się raczej wydawało że proponowanie swoich rozwiązań, rozwijane wątpliwości o w ogóle omawianie projektu to normalna sprawa, ale najwyraźniej się mylę.
Grzegorz Z.:
To kto u Ciebie wpisuje w specyfikacje to, że trzeba przefiltrować dane? Bo jak programista nie ma pojęcia o tym (bo nie musi) i lekarz też nie ma. To czy jest ktoś zatrudniony specjalnie do tego, żeby wpisać w specyfikacji:
"Tutaj proszę przefiltrować/zwalidować/sanitizować dane" ?
Już sobie to wyobrażam (przy burzy mózgów):
Lekarz: Tutaj będziemy wymagać imienia i nazwiska
Programista: Ok, to tutaj dodamy formularz i dodawanie do bazy
Specjalista od zabezp danych z formualrzy: Tutaj proszę przefiltrować zmienną z imieniem i nazwiskiem.

Specjalistą od zabezpieczeń formularzy jest programista, który się mógłby np zapytać co w sytuacji gdy ktoś ma więcej niż jedno imię, czy dodać pola na to, czy nie ma to znaczenia, czy np dodać jakieś inne pola typu telefon czy e-mail i czy to mają być pola wymagane czy nie.
A inna sprawa że do zbierania wymagań jest raczej inna osoba niż programista, i jest właśnie po to żeby takie pytania zadawać, bo klient właśnie może nie pomyśleć o wszystkim. W końcu to klient a nie specjalista od tworzenia stron.

Mam wrażenie, że kolega wyolbrzymia to co napisałem, aby wybronić swoje zdanie :)
Temat był: " "Sanitizowanie" danych, to jest obowiązkiem prog". Nie wiem skąd porównanie do wymagań o których klient decyduje.
Nie wiem, czy kolega zauważył różnicę:
- Klient Wie jakich chce użytkowników (TEGO programista nie może wiedzieć - i ja nie pisałem, że takie rzeczy ma wiedzieć)
- Klient nie wie co to "Sanitizowanie" danych, wiec tego ma pilnować programista. (Tego klient może nie wiedzieć, a programista tak)
Nie wiem czemu kolega sprowadza obie te rzeczy do jednej, ja pisałem o technicznych umiejętnościach programisty (co można przeczytać w postach wcześniej, gdzie pisałem o obowiązku programisty do przewidywania kto będzie użytkownikiem?), a nie o umiejętności przewidywania przyszłości.

konto usunięte

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Piotr J.:
Jedna osoba pisała pół zadania pierwszego przez 2.5 godziny!.

No bez jaj...

To nawet ja, który można powiedzieć, że się dopiero uczę, zrobiłbym 3 pierwsze zadania bez problemu - nad czwartym musiałbym nieco posiedzieć.
Ale pierwsze zadanie... Powiedziałabym gościowi: "Do widzenia, skoro nie umie Pan nawet tabeli stworzyć i połączyć się z bazą..."

Pozdrawiam.

konto usunięte

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Wytłumaczcie mi bo ja tu czegoś nie łapię. Jeśli jest ogłoszenie o pracę i ludzie wysyłają swoje CV to rekruter odpowiada tylko na wybrane zgłoszenia (wstępna selekcja), czy tak ? Jeśli tak (a zapewne dzieje się to na podstawie tego co taki kandydat wpisze ewentualnie na podstawie jego własnych prac) to chyba kandydat powinien posiadać jakieś umiejętności (chyba tym bardziej jeśli wpisze że pracował już w firmie). No chyba że kłamie, wtedy takiego dość łatwo zweryfikować niekoniecznie testami.

Można chyba założyć że jeśli kandydat coś tam realizuje z zakresu baz danych, to chyba powinien poradzić sobie z tak prostymi zadaniami jak tworzenie tabel i napisanie jakiegoś programu odczytującego te dane. Mam rozumieć że na rozmowy kwalifikacyjne przechodzą ludzie którzy kłamią i nic nie potrafią? No to fajną mamy rzeczywistość informatyczną. :) Tylko kto tak naprawdę jest temu winien?
Robert P.

Robert P. Senior PHP Developer

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Dariusz R.:
Wytłumaczcie mi bo ja tu czegoś nie łapię. Jeśli jest ogłoszenie o pracę i ludzie wysyłają swoje CV to rekruter odpowiada tylko na wybrane zgłoszenia (wstępna selekcja), czy tak ? Jeśli tak (a zapewne dzieje się to na podstawie tego co taki kandydat wpisze ewentualnie na podstawie jego własnych prac) to chyba kandydat powinien posiadać jakieś umiejętności (chyba tym bardziej jeśli wpisze że pracował już w firmie). No chyba że kłamie, wtedy takiego dość łatwo zweryfikować niekoniecznie testami.

Można chyba założyć że jeśli kandydat coś tam realizuje z zakresu baz danych, to chyba powinien poradzić sobie z tak prostymi zadaniami jak tworzenie tabel i napisanie jakiegoś programu odczytującego te dane. Mam rozumieć że na rozmowy kwalifikacyjne przechodzą ludzie którzy kłamią i nic nie potrafią? No to fajną mamy rzeczywistość informatyczną. :) Tylko kto tak naprawdę jest temu winien?


Bo niektórzy liczą na farta, a mnie uczono, że w CV się nie kłamie.. Z resztą po co pisać coś czego się nie potrafi gdy potem przy weryfikacji wychodzi się na kłamcę i osobę bez kompetencji.

konto usunięte

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Robert P.:
Bo niektórzy liczą na farta, a mnie uczono, że w CV się nie kłamie.. Z resztą po co pisać coś czego się nie potrafi gdy potem przy weryfikacji wychodzi się na kłamcę i osobę bez kompetencji.

Myślę że to jest częściowy problem związany z rozpowszechnianiem tego typu pierdół:
http://gazetapraca.pl/gazetapraca/1,120733,11469500,Pr...

a z tym związana jest nadprodukcja programistów. Problem jest bardziej złożony i było wiele argumentów np. tu (istotne to co jest w komentarzach):

http://blog.rbenkel.me/2012/05/czego-nie-robic-na-rozm...
Grzegorz Z.

Grzegorz Z.
Programista/Webdevel
oper

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Dariusz R.:
Robert P.:
Bo niektórzy liczą na farta, a mnie uczono, że w CV się nie kłamie.. Z resztą po co pisać coś czego się nie potrafi gdy potem przy weryfikacji wychodzi się na kłamcę i osobę bez kompetencji.

Myślę że to jest częściowy problem związany z rozpowszechnianiem tego typu pierdół:
http://gazetapraca.pl/gazetapraca/1,120733,11469500,Pr...

a z tym związana jest nadprodukcja programistów. Problem jest bardziej złożony i było wiele argumentów np. tu (istotne to co jest w komentarzach):

http://blog.rbenkel.me/2012/05/czego-nie-robic-na-rozm...

Wow, ostatnio jak patrzylem to było 4,5tys. Jak ta branża się rozwija :).

A tak serio to myślę, że nie mamy nadprodukcji programistów. Chyba że naprawdę wliczasz tych, co tych zadań nie zrobili :P. Oni są gdzieś na początku i do programistów dużo im brak.

Ale tak patrząc na to, nie dziwne że potem programiści innych języków się śmieją z PHP że to same tłumoki. Bo wszyscy się na to rzucają, żeby tylko zarobić. Uczą się tacy podstaw, a potem narażają ludzi na straty i problemy.
Szkoda, że większość ludzi robi to tylko i wyłącznie dla kasy. A takich co jest to ich prawdziwą pasją jak na lekarstwo.
Ja już widziałem takie kwiatki, że chyba nic mnie nie zdziwi.

konto usunięte

Temat: Zadania podczas rekrutacji na stanowisko programista PHP

Grzegorz Z.:
Wow, ostatnio jak patrzylem to było 4,5tys. Jak ta branża się rozwija :).

A tak serio to myślę, że nie mamy nadprodukcji programistów. Chyba że naprawdę wliczasz tych, co tych zadań nie zrobili :P. Oni są gdzieś na początku i do programistów dużo im brak.

Pytanie ile jest tak średnio zgłoszeń na takie ogłoszenie o pracę? Kwalifikacje podlegają zapewne pod rozkład Gaussowski, więc można założyć że jest trochę przyzwoitych średniaków a prawdziwych rodzynków garstka.
Ale tak patrząc na to, nie dziwne że potem programiści innych języków się śmieją z PHP że to same tłumoki. Bo wszyscy się na to rzucają, żeby tylko zarobić. Uczą się tacy podstaw, a potem narażają ludzi na straty i problemy.
Szkoda, że większość ludzi robi to tylko i wyłącznie dla kasy.

A co, lepiej żeby pracowali jako wolontariusze? Nie w dorosłym życiu. A zresztą i w tym przypadku to też jakość i wydajność oprogramowania to bardzo istotna sprawa. Jak ktoś zaczyna od podstaw to może być ciężko, choć prawdę mówiąc szacunek dla niektórych blogerów (w tym także bardziej doświadczonych programistów) za artykuły dotyczące kwestii wzorców projektowych, optymalizacji i jakości oprogramowania.

Po to powinien być okres próbny żeby taki programista miał szansę się sprawdzić - jak ktoś chce to z pewnością przyswoi sobie to co trzeba. No chyba że od razu potrzeba specjalisty, no to ja tylko współczuję, bo to by tłumaczyło te bariery które skutecznie blokują wielu ambitnym ludziom szanse na rynku pracy.

Następna dyskusja:

Starszy programista PHP Taj...




Wyślij zaproszenie do