Autor Wątek: WD, GD - PHP i SQL  (Przeczytany 12432 razy)

Offline maro

  • Użytkownik

# Listopad 16, 2015, 12:03:12
Cytuj
- bezużyteczny poza webem
Jakiś czas temu napisałem parser w PHP, który otwiera socket i czeka na dane z urządzeń meteo, dane parsuje i wrzuca do bazy danych. Parser nie korzysta z zewnętrznych bibliotek - wszystko co potrzebne było pod ręką. Proces uruchomiony pod debianem, działa bez przerwy od 1.5 roku (bo taki jest uptime serwera), i zajmuje ok 3MB ramu.
Co do stabilności PHP nie mam żadnych zastrzeżeń.
Wprawdzie nowszą wersję parsera, dla nowych urządzeń, napisałem pod nodejs, ale tylko dlatego, że taka była moda;) a JS bardziej mi odpowiada. Dla porównania, wersja nodejs o podobnej funkcjonalności zajmuje ok 20MB w ramie, i z jakiegoś nieznanego mi bliżej powodu wywala się raz na kilka miesięcy (na tyle rzadko, że nie opłaca się szukać błędów).

Cytuj
- wygląda jak by przybył do nas z Szwajcarii - niestety nie pod postacią zegarka czy scyzoryku, ale sera (nie, nie jest taki smaczny - jest taki dziurawy)
Masz jakiś przykład dziur w php? Fakt, trzeba wiedzieć jak skonfigurować środowisko (szczególnie pod web), żeby uniknąć niespodzianek, ale dziur w samym php raczej nie kojarzę.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xender

  • Użytkownik

  • +1
# Listopad 16, 2015, 21:55:47
Hm, polecam jeszcze porównać listy WAT-ów w internecie:

http://phpsadness.com/
http://excess.org/article/2011/12/unfortunate-python/ (przy czym ten z hasattr poprawiono w Pythonie 3).

Ogólnie zachęcam do poznania frameworków bo rozwiązują masę problemów a prace przyspieszają naprawdę sporo.
Ok, piszę aplikację webową w Pythonie 3 i używam frameworka (Flaska konkretnie). Moim zdaniem:

Co mam:
- Pisanie w języku, w którym nie czai się tyle pułapek na każdym rogu.
- Osobny język do szablonów stron (Jinja2) - dedykowany do tego zadania, a nie kolejny język "ogólnego zastosowania", co znajduje odzwierciedlenie w funkcjonalności i czyni separację szablonu od handlera widoku trywialną.
Nie chodzi mi drobnostki w stylu "dolar przed zmienną", te argumenty są śmieszne.
Chodzi mi o autoescaping, makra, anonimowe makra, bloki i dziedziczenie, bajery w pętlach (z rekurencją włącznie), i inne - przegląd tu:
http://jinja.pocoo.org/docs/dev/templates/
- W trybie debug: Debugger z interaktywną konsolą (REPL-em) na każdej ramce stosu przy niezłapanym wyjątku.
- W trybie debug: Toolbar z informacjami diagnostycznymi (wykaz zapytań do DB, profiler, załadowane moduły i inne).
- W trybie release: Pewność, że jak coś się sypnie, to użytkownik zobaczy stronę 500 Internal Server Error a nie szczegóły moich zapytań do bazy danych i inne informacje diagnostyczne (potencjalnie ułatwiające z-pwn'owanie strony).
- Bibliotekę do obsługi relacyjnych baz danych (SQLAlchemy), która wspiera kilkanaście backendów, jest solidnie zbudowana, posiada porządną warstwę abstrakcji pozwalającą wygodnie i bezpiecznie budować zapytania, dopiero na której zbudowany jest opcjonalny ORM.
Oczywiście pełna i automatyczna transakcyjność jest tu opcją domyślną, a nie jakimś "dodatkowym bajerem".
Powtórzę jeszcze raz, że to jest zdecydowanie bardziej elastyczne i potężne, niż prosty ORM.

Co tracę względem PHP z frameworkiem:
- Chyba nic?

Pytanie do PHP-owców: czy wasze frameworki udostępniają wszystkie powyższe albo równoważne funkcjonalności?


@Apache, MySQL, Notatnik - czemu, czemu i czemu?
Czemu oprócz dennego języka polecacie denny serwer WWW i denny RDBMS?
Jak ktoś jest PHP-owym die hard-owecem, to niech chociaż powstawi sobie Nginxa i Postgresa.

Tylko niech odpowiedzią nie będzie "bo ktoś kiedyś zapakował to badziewie razem, a ja mogę sobie dwukliknąć i nie myśleć nad tym, co wybrać".

Wspominanie o możliwości programowania w Notatniku to albo żart, albo sadyzm.
Nie jestem fanem IDE, ale uważam, że albo IDE, albo dobry edytor (klasy Vima, Emacsa, czy Sublime) to podstawa.

W sumie to dobre podsumowanie - PHP, Apache, MySQL, Notatnik - wszystkie są siebie warte.


- bezużyteczny poza webem
Nie stricte "bezużyteczny", ale mało użyteczny - chciałbym tę myśl rozwinąć:
Chcecklista:
- Programy commandline.
- Skryptowanie innych programów (jak GIMP, Inkscape, Blender, Anki).
- Aplikacje okienkowe (GUI).
- Obliczenia naukowe/numeryczne/symboliczne (numpy, sympy, scipy).
- Obróbka plików graficznych.
- OpenGL (niekoniecznie od razu użyte do gier AAA, ale i tak może być przydatne).
- I inne...

W Pythonie da się zrealizować wszystkie z powyższych.
Nie tylko się da, ludzie to robią z powodzeniem.
Dla odmiany nigdy nie widziałem aplikacji GUI (desktopowej) napisanej w PHP...

Offline maro

  • Użytkownik

  • +2
# Listopad 16, 2015, 23:18:34
Nie jestem PHPowcem, nie przepadam za PHP, ale też nie ignoruję wszystkiego co dotyczy PHP, więc mogę coś odpowiedzieć w temacie tej listy:

Cytuj
- Programy commandline.
- Nie widzę żadnych przeszkód.
Cytuj
- Aplikacje okienkowe (GUI).
- OpenGL (niekoniecznie od razu użyte do gier AAA, ale i tak może być przydatne).
Widziałem kiedyś przykłady, bodajże w bamcompiler.
Zresztą google wypluwa dużo różnych wyników.
Cytuj
- Obróbka plików graficznych.
Why not?

Cytuj
Dla odmiany nigdy nie widziałem aplikacji GUI (desktopowej) napisanej w PHP...
Ja widziałem, ale kogo to obchodzi...

Offline Karol

  • Użytkownik

  • +3
# Listopad 17, 2015, 00:40:06
Widać Xender na serio Twoje obeznanie z PHP jest na mega niskim poziomie, coś tam widziałeś, coś tam słyszałeś, wyrobiłeś sobie ideologię i tyle. W Pythonie też mogę sobie wywalić błąd do klienta co mi w tym przeszkadza? Jak koder dupa to we wszystkim kupę zrobi. Poza tym czepianie się jednej dyrektywy konfiguracji serwera to iście true-wanna-be-php-hater poziom. Na równi z dolarem na początku zmiennej. Debugowanie PHP? No problem, step by step z podglądem stosu. Profilowanie? No problem. Templatki? Jest Twig, bardzo podobny do tej Twojej Dzińdzi.

Czemu Apache, MySQL są złe? Dżizaz, wyluzuj trochę. Na świecie są produkty, które Tobie nie pasują, ale komuś innemu tak. Nie jesteś pępkiem świata, ani wyrocznią, która określa co używać, a co nie. "Moje softy som lepsiejsze i najlepsiejsze, a syśko inne to kupa, bo ja tak rzeczę! A tu ściana tekstu z argumentami sprzed 20 lat i linkami do hipsterskich serwisów, bo każdy link daje mi +20 do respektu" tak to wygląda :P. Się linuksowcy skupcie na swoich miliardzie dystrybucji i zróbcie jedną dobrą, a nie każdy swoją i każda tak samo do kitu :P. Dla mnie sowiecki nginx to kupa, który ma ułomne rewrite urlów i wymaga restartu, żeby je załapał. Wyobrażam to sobie na produkcji "sorry reset, bo dodajemy nową podstronę i musimy regułki rewrite przeładować!" :P.

Notatnik to przysłowiowa metafora, że można pisać praktycznie w byle czym, ale wiadomo, że lepiej w IDE, który dany język wspiera. Czemu tak wszystko musi być dosłownie traktowane? Jeny....

PHP nie jest jedyny, który nie potrafi wielu rzeczy, powstał do konkretnego zastosowania i tyle. Jednakże, commandline toolsy jak najbardziej istnieją, czy luzem w postaci skryptu php czy w formie archiwum phar.

Cytuj
Dla odmiany nigdy nie widziałem aplikacji GUI (desktopowej) napisanej w PHP...
No to wybitnie pokazuje jak daleko nos wytykasz poza swój światek ;). Taki gimmick w zasadzie, ale dla mnie tak samo jest tworzenie aplikacji okienkowej w jakimś języku skryptowym, naotwiera to badziewo milion okien :P.

Uwaga bo coś w internetach ta umiejętność zanika - post pisany z przymrużeniem oka, szczególnie tam gdzie jest emotka :P.

Offline 10log

  • Użytkownik

  • +2
# Listopad 17, 2015, 00:40:18
Cytuj
- Programy commandline.

Ej no weź, to akurat najprostsze co można zrobić z PHPem :)

Cytuj
- Aplikacje okienkowe (GUI).

http://gtk.php.net/
http://sourceforge.net/projects/php-qt/
https://github.com/wxphp/wxphp
http://winbinder.org/

Cytuj
- OpenGL (niekoniecznie od razu użyte do gier AAA, ale i tak może być przydatne).

https://github.com/phpopengl

Offline Xender

  • Użytkownik

# Listopad 17, 2015, 08:59:19
Widać Xender na serio Twoje obeznanie z PHP jest na mega niskim poziomie, coś tam widziałeś, coś tam słyszałeś, wyrobiłeś sobie ideologię i tyle.
Nie "ideologię", tylko "opinię", ale racja.
Nie interesowałem się dalej tym językiem po tym, jak zobaczyłem jego "the best of". :P

W Pythonie też mogę sobie wywalić błąd do klienta co mi w tym przeszkadza?
We Flasku, jeśli strona nie chodzi w trybie debug, to musiałbyś ten błąd explicite wyrenderować, tworząc własnego hooka na niezłapane wyjątki. Więc bardzo ciężko byłoby zrobić to nieświadomie.
W PHP-ie domyślnie warningi lecą na właśnie renderowaną stronę, we Flasku - do loggera. I logger nie jest spięty z renderowaną stroną.
Ot, jeden z wielu gwoździ sterczących pionowo z podłogi i czekających na stopę w PHP.

Się linuksowcy skupcie na swoich miliardzie dystrybucji i zróbcie jedną dobrą, a nie każdy swoją i każda tak samo do kitu :P.
Oh doh.
To nie wiesz, że konkurencja jest dobra dla klienta/użytkownika?
A nie "Jeden Prezes, Jeden Windows(Mac), Jeden Microsoft(Apple)".
I każdy tak samo badziewny. :P

sowiecki nginx
https://www.youtube.com/watch?v=NyiEaSzpdMk  ^ ^

Dla mnie sowiecki nginx to kupa, który ma ułomne rewrite urlów i wymaga restartu, żeby je załapał. Wyobrażam to sobie na produkcji "sorry reset, bo dodajemy nową podstronę i musimy regułki rewrite przeładować!" :P.
http://nginx.org/en/docs/control.html
http://nginx.org/en/docs/beginners_guide.html (przeszukaj na "reload")
Nie widzę, żeby trzeba było restartować. Opis metody sugeruje raczej brak downtime.
Może też nie sprawdziłeś aktualności swoich źródeł?

Templatki? Jest Twig, bardzo podobny do tej Twojej Dzińdzi.
Ale za poprawną wymowę nazwy japońskiego pochodzenia masz u mnie +10 do rispektu! :)
« Ostatnia zmiana: Listopad 17, 2015, 09:02:58 wysłana przez Xender »

Offline lukiz1

  • Użytkownik

  • +1
# Listopad 17, 2015, 10:14:07
@Xender
Przestań po prostu hejtować. Nie wiele wiesz o PHP, a wprowadzasz fałszywe przekonanie i nie potrzebne zamieszanie.  Bo zauważyłem, że to nie twój pierwszy post w którym hejtujesz.

Dobry programista ma swoją ulubioną technologię, narzędzie itp. Ale szanuję wybory innych. Może wyrażać swoją opinie i wrażenia, może zasugerować coś jest fajne, ale słucha rad osób które mają większe doświadczenie.Już kilka osób powiedziało ci, że jesteś w błędzie, co więcej dało ci dowody.

Wiec zrób mi i innym przysługę, nie hejtuj więcej innych języków, technologi i narzędzi, zwłaszcza jak ich nie poznałeś.
Wystarczy napisać, że "preferujesz [to] a nie przypadł ci do gustu [to]  ". Żeby wyrażać opinie  trzeba się na czymś dobrze znać. Zauważ, że ani razu nie wypowiedziałem się na temat innej technologi, bo ich dobrze nie znam, mimo, że programowałęm rugby, pythonie.

Albo się zainteresuj bardziej PHP, nabierz doświadczenie PRAKTYCZNE, poznać biblioteki, frameworki i możliwości i wtedy zapraszam do rozmowy.

Bo twoje wypowiedzi, świadczą tylko jakim jesteś programistą i nie chciał bym z tobą współpracować.

Pamiętaj również, że IT rozwija się błyskawicznie. I technologię przemijają, wiec może się okazać, że kiedyś będziesz musiał się przesiąść na inną technologię i może być to nawet ta którą nie nienawidzisz .

@Xender
Zaskoczę cię.
PHP spełnia wszystkie twoje wymogi .

Nie "ideologię", tylko "opinię", ale racja.
Nie interesowałem się dalej tym językiem po tym, jak zobaczyłem jego "the best of". :P
We Flasku, jeśli strona nie chodzi w trybie debug, to musiałbyś ten błąd explicite wyrenderować, tworząc własnego hooka na niezłapane wyjątki. Więc bardzo ciężko byłoby zrobić to nieświadomie.
W PHP-ie domyślnie warningi lecą na właśnie renderowaną stronę, we Flasku - do loggera. I logger nie jest spięty z renderowaną stroną.
Ot, jeden z wielu gwoździ sterczących pionowo z podłogi i czekających na stopę w PHP.
Oh doh.
To nie wiesz, że konkurencja jest dobra dla klienta/użytkownika?
A nie "Jeden Prezes, Jeden Windows(Mac), Jeden Microsoft(Apple)".
I każdy tak samo badziewny. :P
https://www.youtube.com/watch?v=NyiEaSzpdMk  ^ ^
http://nginx.org/en/docs/control.html
http://nginx.org/en/docs/beginners_guide.html (przeszukaj na "reload")
Nie widzę, żeby trzeba było restartować. Opis metody sugeruje raczej brak downtime.
Może też nie sprawdziłeś aktualności swoich źródeł?
Ale za poprawną wymowę nazwy japońskiego pochodzenia masz u mnie +10 do rispektu! :)

Wyjaśnijmy jedno bo mieszasz rzeczy. Porównujemy frameworki czy języki ? Bo porównywanie frameworka i języka nie ma sensu.
Jeśli dobrze zrozumiałem to "Flash" to twój framework w pythonie ?
Natomiast PHP to język programowania wiec co ty chcesz porównywać ?
Możemy np porównać Symfony, Kohane, Zenda z Flashem.
Albo czystego pythona z czystym PHP.

Podsumują:
Język php ma ogromne możliwości, dawno już jest obiektowy, posiada masę bibliotek i frameworków, szablonów, jest w pełni obiektowy, posiada debugery i profilery, posiada kilka dobrych biblotek do obsługi baz danych wraz z orm, obsługa grafiki.
Dodatkowo ma bogate Repozytorium PECL i Repozytorium PEAR
Możesz pisać aplikacje typowo webowe, Możesz pisać aplikacje  desktopowe, Możesz pisać aplikacje typowo na androida.







« Ostatnia zmiana: Listopad 17, 2015, 10:24:01 wysłana przez lukiz1 »

Offline albireo

  • Użytkownik

# Listopad 17, 2015, 11:33:13
Jeśli dobrze zrozumiałem to "Flash" to twój framework w pythonie ?
Natomiast PHP to język programowania wiec co ty chcesz porównywać ?
Możemy np porównać Symfony, Kohane, Zenda z Flashem.
Albo czystego pythona z czystym PHP.
Flask nie Flash, ale to szczegół.
Porównywanie frameworka w pythonie do czystego PHP jak najbardziej ma sens, ponieważ python jest językiem ogólnego zastosowania, a PHP jest sam w sobie frameworkiem webowym (inne zastosowania są wprawdzie możliwe, ale niezwykle rzadko występują), więc sam fakt, że aby sensownie używać go do celu, do którego jest stworzony, trzeba użyć jakiegoś frameworka, wyraźnie mówi, że coś z nim jest nie tak.

Zresztą, nieważne jakie ma biblioteki, jak dla mnie język który nie potrafi poprawnie porównywać stringów, jest z definicji gniotem.

Offline Kos

  • Użytkownik
    • kos.gd

  • +3
# Listopad 17, 2015, 12:11:19
Wyjaśnijmy jedno bo mieszasz rzeczy. Porównujemy frameworki czy języki ? Bo porównywanie frameworka i języka nie ma sensu.

Bzzt. PHP (+ mod_php) to jest dwa w jednym: słaby język zrośnięty z wyjątkowo słabym frameworkiem webowym.

Kluczowa obserwacja: W PHP da się robić webówkę poprawnie, da się frameworkami załatać każdą jego nieudolność w taki sposób by dało się w nim sensownie programować. (Tyle, że coraz mniej osób uważa że warto.)

Offline lukiz1

  • Użytkownik

# Listopad 17, 2015, 13:47:18
Jak przeczytałem ostatnie posty, to aż głowa mnie rozbolała.
PHP jest frameworkiem? Od kiedy, skąd macie takie informacje, jestem bardzo ciekawy .
"Tyle, że coraz mniej osób uważa że warto." Rozumiem, że zrobiłeś ankietę w domu? Bo z mojego doświadczenia jest inaczej.
"nie potrafi poprawnie porównywać stringów" to znaczy?
Porównywanie  frameworka w pythonie do czystego PHP nie ma sensu bo jest różnica miedzy językiem programowania a szkieletem do budowania aplikacji.


« Ostatnia zmiana: Listopad 17, 2015, 13:51:53 wysłana przez lukiz1 »

Offline albireo

  • Użytkownik

# Listopad 17, 2015, 14:13:52
"nie potrafi poprawnie porównywać stringów" to znaczy?
Uważa, że '2'<'10' jest prawdą, a jednocześnie 'a2' < 'a10' jest fałszem (poprawnie oba wyrażenia powinny być fałszem, ewentualnie mniej poprawnie, ale przynajmniej konsekwentnie, oba powinny zwracać taki sam wynik).

Offline koirat

  • Użytkownik

# Listopad 17, 2015, 14:23:04
Jak dla mnie obie opcje są kandydatami do wyjątku ;)

Offline Xion

  • Redaktor
    • xion.log

# Listopad 17, 2015, 18:04:45
Jak dla mnie obie opcje są kandydatami do wyjątku ;)
Czyli alfabetyczne sortowanie listy stringów uważasz za niebezpieczną operację, która powinna być zabroniona? :)

Offline koirat

  • Użytkownik

# Listopad 18, 2015, 09:47:10
Porównywanie stringów za pomocą operatorów matematycznych uważam za nazbyt proszącą się o problemy decyzje projektową języka.

Offline Kos

  • Użytkownik
    • kos.gd

  • +1
# Listopad 18, 2015, 10:59:43
Uhh, lubię sortowanie leksykograficzne po listach, krotkach itp, ale na stringach rzeczywiście jest to stosunkowo kłopotliwa decyzja projektowa, bo można sortować na tysiąc sposobów. Raz że jest inna kolejność case-sensitive i case-insensitive, dwa że dla języków naturalnych każdy język ma swoją...