Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Co musi umieć programista php?

Przemek Czekaj:
http://pl.wikipedia.org/wiki/Kolejka_komunikat%C3%B3w

Sekcja: Synchroniczne vs asynchroniczne
niestety na wiki jest blad ;), ale ok koniec off topa

konto usunięte

Temat: Co musi umieć programista php?

Łukasz Cepowski:

niestety na wiki jest blad ;), ale ok koniec off topa


Dobrze alfa i omego. Jak zostaniesz moderatorem na wiki to przestane jej używać.Przemek Czekaj edytował(a) ten post dnia 27.01.11 o godzinie 15:34
Marcin Lenkowski

Marcin Lenkowski Szukasz
programistów?
Zapraszamy do
Exulto!

Temat: Co musi umieć programista php?

Jakub L.:

A co je miliard much.

Myślę że ty najlepiej znasz odpowiedź na to pytanie ;)
Spróbuj znaleźć odpowiedź na pytanie dlaczego akurat w tym języku.

Bo PHP jest wolne. Wiem o tym ale pytanie w temacie raczej nie dotyczy tego "co jest wolne a co nie" tylko co musi umieć programista PHPMarcin Lenkowski edytował(a) ten post dnia 27.01.11 o godzinie 16:08
Tomasz Zadora

Tomasz Zadora programuję

Temat: Co musi umieć programista php?

Marcin Lenkowski:
Bo PHP jest wolne, a konkretnie nie kompiluje się.

Ależ jak najbardziej kompiluje się, to jedna z rzeczy którą dobry programista PHP powinien wiedzieć ;-)

Może chodziło Tobie o to, że w domyślnej konfiguracji ten stan kompilacji nie jest jakoś keszowany, tylko przy każdym uruchomieniu skryptu PHP musi następować kompilacja (i tu trzeba np. APC lub komercyjnych rozwiązań takich jak ZEND Server) ?
Marcin Lenkowski

Marcin Lenkowski Szukasz
programistów?
Zapraszamy do
Exulto!

Temat: Co musi umieć programista php?

interpretacja?
Tomasz Zadora

Tomasz Zadora programuję

Temat: Co musi umieć programista php?

Interpretacja czego ?

Bo jeżeli chodzi o kompilacje, to jest to zmiana kodu w danym języku programowania na KOD MASZYNOWY. Więc nawet program napisany w assemblerze jest ostatecznie kompilowany do kodu maszynowego.

Jeżeli komuś wydaje się, że np. program w Javie albo C/C++ jest kompilowany a PHP nie, to niestety się myli ;-)

Przy okazji polecam pobawić się w programowanie bezpośrednio w kodzie maszynowym - samymi cyferkami, niezły ubaw, i wtedy nie ma kompilacji, we wszystkim innym zawsze jest.Tomasz Zadora edytował(a) ten post dnia 27.01.11 o godzinie 16:18
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Co musi umieć programista php?

Przemek Czekaj:
Dobrze alfa i omego. Jak zostaniesz moderatorem na wiki to przestane jej używać.Przemek Czekaj edytował(a) ten post dnia 27.01.11 o godzinie 15:34

wspolczesne przegladarki jak firefox czy opera w jednym polaczeniu wysylaja wiecej niz jeden request nie czekajac na to czy response z serwera juz dotarl czy nie, dlatego protokol http nie jest dobrym przykladem protokolu synchronicznego gdyz w realnym swiecie poprostu nim nie jest, specu :P
Tomasz Zadora

Tomasz Zadora programuję

Temat: Co musi umieć programista php?

Jeszcze tylko offtopowo dodam, że kompilacją można też określić konwersję między językami programowania, czyli np. w javie z postaci pliku .java do .class, a .class to po prostu zapis w innym języku - "abstrakcyjnym kodzie bajtowym".

To samo zresztą można zastosować w PHP - przekształcenie z postaci skryptu do postaci "kodu bajtowego".

http://php.net/manual/en/book.bcompiler.php

Zob. też: http://pl.wikipedia.org/wiki/Kompilacja_(informatyka)
Jakub L.

Jakub L. Programista

Temat: Co musi umieć programista php?

Łukasz Cepowski:
Przemek Czekaj:
Dobrze alfa i omego. Jak zostaniesz moderatorem na wiki to przestane jej używać.Przemek Czekaj edytował(a) ten post dnia 27.01.11 o godzinie 15:34

wspolczesne przegladarki jak firefox czy opera w jednym polaczeniu wysylaja wiecej niz jeden request nie czekajac na to czy response

FF może ale domyślnie ma to wyłączone - HTTP pipelining:
http://en.wikipedia.org/wiki/Http_pipelining

Ogólnie dość interesujący pomysł, ale ma problemy z proxy po drodze.

Co do synchroniczności - mając (1) stronę w PHP z losowym delayem od 1 do 10 sekund, oraz (2) stronę HTMLową z dwoma lub więcej wywołaniami AJAXowym do strony (1).
Przypuszczam że niekoniecznie wywołania na stronie (2) dostaną odpowiedzi w kolejności wysyłania.
Maciej W.

Maciej W. Ruby on what?!

Temat: Co musi umieć programista php?

Jakub L.:
Co do synchroniczności - mając (1) stronę w PHP z losowym delayem od 1 do 10 sekund, oraz (2) stronę HTMLową z dwoma lub więcej wywołaniami AJAXowym do strony (1).
Przypuszczam że niekoniecznie wywołania na stronie (2) dostaną odpowiedzi w kolejności wysyłania.

OOOOH to pewnie dlatego AJAX jest skrotem od Asynchronous JavaScript and XML! Dzieki!

konto usunięte

Temat: Co musi umieć programista php?

..:
Jakie mószę mieć umiejętności abym mógł sobie napisać jestem programistą php? Obecna moja list to: znajomość składni php, oop w php, wzorce projektowe, achach-e i mysql, xml, yml, javascript, ajax idea, rest, mvc idea, symfony.

Co musi znać jeszcze programista php?

Zaobserwowałem kiedyś taką rzecz, że programista, który jest „w tym” programistą PHP i ma ogólne doświadczenie N lat, jest cenniejszy, niż programista z doświadczeniem tych samych N lat, ale „wyłącznie” PHP.

Dlaczego tak? A otóż to, że świat na webie się nie kończy, i programista, który przez N lat tylko szlifował sobie umiejętność przekształcić tabliczkę w stringa, będzie miał poważne trudności ze zrozumieniem bardziej fundamentalnych algorytmów, pracy z pamięcią, podpinaniem bibliotek zewnętrznych i w ogóle stworzeniem programów pomocniczych, nie odpalanych przez Apache i zabijanych za max_script_execution_time sekund. Been there, done that.

Temat: Co musi umieć programista php?

Jakub L.:
Łukasz Cepowski:
Przemek Czekaj:
Dobrze alfa i omego. Jak zostaniesz moderatorem na wiki to przestane jej używać.Przemek Czekaj edytował(a) ten post dnia 27.01.11 o godzinie 15:34

wspolczesne przegladarki jak firefox czy opera w jednym polaczeniu wysylaja wiecej niz jeden request nie czekajac na to czy response

FF może ale domyślnie ma to wyłączone - HTTP pipelining:
http://en.wikipedia.org/wiki/Http_pipelining

Ogólnie dość interesujący pomysł, ale ma problemy z proxy po drodze.

Co do synchroniczności - mając (1) stronę w PHP z losowym delayem od 1 do 10 sekund, oraz (2) stronę HTMLową z dwoma lub więcej wywołaniami AJAXowym do strony (1).
Przypuszczam że niekoniecznie wywołania na stronie (2) dostaną odpowiedzi w kolejności wysyłania.

Ja nie przypuszczam, tylko jestem tego pewien. Niemniej jednak, istnieją metody synchronizacji tego typu wywołań, jeśli zajdzie taka potrzeba.
Jakub L.

Jakub L. Programista

Temat: Co musi umieć programista php?

Aż zrobiłem test bo mnie interesowało coraz bardziej, szczególnie w obliczu przedstawionej pewności.
index.html:
<script type="text/javascript">
function do_me() {
var req = new XMLHttpRequest();
req.open('GET', 'http://' + document.location.host + '/~jakub/rozne/async/async.php', true);
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4 && req.status == 200) {
document.getElementById('here').innerHTML += '<hr />req:<br />' + req.responseText;
}
}
req.send();

var rew = new XMLHttpRequest();
rew.open('GET', 'http://' + document.location.host + '/~jakub/rozne/async/async.php', true);
rew.onreadystatechange = function (aEvt) {
if (rew.readyState == 4 && rew.status == 200) {
document.getElementById('here').innerHTML += '<hr />rew:<br />' + rew.responseText;
}
}
rew.send();
}
</script>
<button onclick="do_me()">do me</button>
<div id="here"></div>
async.php:
<?
echo $_SERVER['REQUEST_TIME'] . '<br />';
sleep($_ = rand(1, 10));
echo 'slept for ' . $_ . '<br />';
echo microtime();
?>

Dla pojedynczego hosta i pliku jak w kodzie wyniki są... zaskakujące - zawsze szeregowo, niezależnie jak grzebałem FireFoxowi w about:config (zmiana HTTP 1.1 na 1.0, zamykanie połączenia, wyłączony pipelining, różne liczby połączeń do serwera), Chrome to samo (minus grzebanie w konfigu).

Jak podlinkowałem async.php do async2.php i zmieniłem urla w rew, zrobiło się tak jak podejrzewałem - zależnie od ustawień - jak jest jedno połączenie do serwera, to tylko szeregowo, jak więcej to równolegle.

Temat: Co musi umieć programista php?

Z moich doświadczeń wynika, że praktycznie w ~99% przypadków żądania są ładowane w takiej kolejności, w jakiej zostały wysłane, ponieważ z reguły odbiera się dane o podobnym rozmiarze, które są wczytywane w podobnym czasie. Na kolejność odbierania żądań ma wpływ przede wszystkim czas oczekiwania i ilość ładowanych danych. W Twoim eksperymencie manipulujesz czasem oczekiwania i tam zmiany powinny być widoczne. Możliwe, że ich nie widać, ze względu na zbyt podobny czas oczekiwania.

Zrobiłem podobny eksperyment, tylko skorzystałem z jQuery i wygenerowałem większe rozbieżności w czasie ładowania danych:

plik: test.html

<!DOCTYPE html>
<html lang="pl">
<head>
<title>Test</title>
<meta charset="utf-8" />
<script src="jquery-1.4.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
for(var i = 0; i < 100; i++)
{
$.get('load.php?id=' + i, function(data) {
$('#result').append(data);
});
}
});
</script>
</head>
<body>
<div id="result"></div>
</body>
</html>


plik: load.php

<?php
sleep(3);
echo 'load.php?id='.$_GET['id'].'<br/>';
for($i = 0; $i < 5; $i++)
{
sleep(rand(0,10));
}
?>


Tutaj wyraźnie widać, że dane są ładowane nie po kolei. Gdy usuniemy pętlę z pliku load.php, dane prawie zawsze będą ładowane w kolejności wysyłania. Możliwe, że jedynie ok. 1% tych wszystkich żądań załaduje się z innej kolejności, co potwierdza moją wcześniejszą teorię.

Test wykonywałem w firefoksie i nie grzebałem w żadnych ustawieniach przeglądarki.

Możemy też zrobić inny eksperyment, w którym będziemy manipulować ilością ładowanych danych oraz czasem oczekiwania.

plik: load.php


<?php
sleep(3);
echo 'load.php?id='.$_GET['id'].'<br/>';
$array = array('http://onet.pl','http://goldenline.pl','http://wp.pl','http://localhost');
for($i = 0; $i < 5; $i++)
{
file_get_contents($array[rand(0,3)]);
}
?>


plik: test.html

j.w.

Tutaj też widać wyraźne rozbieżności.

Generalnie, w tego typu podejściu nie mamy wpływu na to, co załaduje się w pierwszej kolejności, gdyż dane są ładowane asynchronicznie.

Jeśli chcemy wyeliminować ten efekt, możemy synchronizować żądania, o czym już wcześniej pisałem. Można to zrobić m.in. za pomocą pluginu dla jQuery o nazwie AjaxQueue: http://docs.jquery.com/AjaxQueue

ps. Ta rozmowa odbiega trochę od tematu wątku, ale przynajmniej jest ciekawa ;-).
Robert B.

Robert B. Web Development
Manager

Temat: Co musi umieć programista php?

Piotr Wittchen:
Z moich doświadczeń wynika, że praktycznie w ~99% przypadków żądania są ładowane w takiej kolejności, w jakiej zostały wysłane, ponieważ z reguły odbiera się dane o podobnym rozmiarze, które są wczytywane w podobnym czasie.
[...]
ps. Ta rozmowa odbiega trochę od tematu wątku, ale przynajmniej jest ciekawa ;-).
Nie da się ukryć, że temat trochę odbiega od głównego wątku :-)

HTTP jest asynchroniczne i założenie, że coś będzie działo się synchronicznie jest błędne. Możemy ją zagwarantować na (przynajmniej) trzy sposoby:
1. Włączając synchronicze wywołania ajax - ale przeglądarka będzie 'zawieszała' się na czas requestu, więc nie sądzę, żeby ktoś przy zdrowych zmysłach z tego korzystał i wierzył, że będzie działać.
2. Synchronizować zapytania po stronie JavaScriptu przez odpalanie ich sekwencyjnie (pierwsze wróciło, uruchom drugie, etc).
3. Włączyć (w PHP) sesje oparte na plikach - dostajemy synchronizacje w prezencie.

Warto też pomyśleć o ubijaniu zapytań ajaxowych jeśli nie są nam już potrzbne (np.: suggest, czy filtry które długo się wykonują). Metoda jeśli dobrze pamiętam, to nazywała się .abort() albo .cancel().

A najlepiej unikać konieczności synchronicznego wywołania requestów tam gdzie to tylko możliwe i zaoszczędzić sobie dużo kłopotów :-)

Robert

konto usunięte

Temat: Co musi umieć programista php?

myśleć i być edukowalnym, reszta to pochodne

Temat: Co musi umieć programista php?

Witam,
macie jakieś informacje na temat co trzeba umieć, aby ubiegać się o stanowisko Junior PHP?

Chodzi mi o to, co trzeba umieć jako podstawę do startu.Szymon Skirgajllo edytował(a) ten post dnia 14.04.13 o godzinie 22:24

konto usunięte

Temat: Co musi umieć programista php?

Robert M.:
Ze strony agencji Advox - wymagania na senior PHP:

Wymagania:

PHP - (OOP) - (Yoda mistrz level)
bazy danych - SQL -(MySQL) - (Yoda mistrz level)
znajomość Magento - (szeregowy Jedi)
XHTML, CSS - (level Chewbacca)
Javascript (JQuery, AJAX) - (level Chewbacca)
j. angielski

Mile widziane:

Znajomość zagadnień SEO,
Znajomość Zend Framework
Znajomość programów Gimp/Photoshop,
Znajomość Api Facebooka,
Znajomość technologii mobilnych,
Znajomość jakiegoś innego języka programowania,

To wymagania przy pensji 4.500,00 - 8.000,00

Naprawdę uważacie że znajomość konkretnych technologii (API) jest wartością? ;)

konto usunięte

Temat: Co musi umieć programista php?

Mateusz G.:
Znajomość zagadnień SEO,
Znajomość Zend Framework
Znajomość programów Gimp/Photoshop,
Znajomość Api Facebooka,
Znajomość technologii mobilnych,
Znajomość jakiegoś innego języka programowania,

To wymagania przy pensji 4.500,00 - 8.000,00

Naprawdę uważacie że znajomość konkretnych technologii (API) jest wartością? ;)

TAK. Nie jest to wymagane, bo kazdy moze sie nauczyc, ale po co marnowac czas na nauke jesli moze przyjsc ktos to juz to wszystko zna.

Następna dyskusja:

[warszawa]Programista PHP




Wyślij zaproszenie do