background image

1

Jak nie u

ż

ywa

ć

 

frameworków?

Paweł Abramowicz

Memory is cheap these days. Go with what will 
make your development easiest (which is usually 
what your team knows best).

~ Jason Baker

odp. na stackoverflow, 2.01.2009

background image

2

I’ve gone down this path already...

Projekty na ZPI i ZTW wykonane w Laravelu.

Własny framework – nawet zanim tamte projekty powstały.

Czy naprawd

ę

potrzebuj

ę

 cho

ć

by połowy z tego, co oferuje mi framework?

PHP: {C, C++, Java}-like web framework 

Społeczno

ść

 programistyczna była ju

ż

 w tym miejscu.

PHP powstał jako framework dla skryptów CGI i zamiennik dla pisania własnych 
rozszerze

ń

 Apache.

background image

3

Dlaczego frameworki?

– szybkie tworzenie skomplikowanych serwisów,

– no-bullshit: nie piszesz ju

ż

 

ż

adnej z funkcjonalno

ś

ci, które “powinny by

ć

” w 

bibliotece standardowej j

ę

zyka,

– zaawansowane mechanizmy cache, które działaj

ą

 zwykle całkiem dobrze out-of-

the-box.

Argument 1: musz

ę

 by

ć

 zbyt rozwlekły (verbose)

Ten argument istnieje głównie w j

ę

zykach bazowanych na rodzinie C (PHP).

Je

ś

li nie obchodzi Ci

ę

 implementacja funkcjonalno

ś

ci, wybierz Ruby lub Python!

We front-endzie: czy na pewno nie mo

ż

esz u

ż

y

ć

 jakiego

ś

 rozwi

ą

zania HTML5?

Kiedy ostatnim razem przejrzałe

ś

 dokumentacj

ę

 swojego j

ę

zyka?

http://caniuse.com
http://bitworking.org/news/2014/05/zero_framework_manifesto

background image

4

Argument 2: nie chc

ę

 implementowa

ć

 wszystkiego 

Ups, leftpad ;)

Na pocz

ą

tku 2016 roku wielu programistów siadaj

ą

c przy swoich biurkach zauwa

ż

yło, 

ż

e ich 

przechodz

ą

ce testy programy z dnia na dzie

ń

 przestały si

ę

 kompilowa

ć

.

Winny był pakiet leftpad, maj

ą

ca par

ę

na

ś

cie linii biblioteka dostarczaj

ą

ca pojedyncz

ą

 

funkcj

ę

, uzupełniaj

ą

c

ą

 ła

ń

cuch znaków od lewej podanym znakiem, a

ż

 do po

żą

danej 

długo

ś

ci znaków. Znikn

ę

ła ona z sieci po zawirowaniach wokół innej biblioteki tego samego 

autora, który usun

ą

ł w przypływie gniewu wszystkie swoje projekty z repozytorium npm.

Nie udawało si

ę

 zbudowa

ć

 kolejnych wersji wielu frameworków Javascriptowych, 

korzystaj

ą

cych z leftpad. Dodatkowo, problemy zanotowano tak

ż

e w zespołach 

deweloperskich du

ż

ych portali, takich jak Facebook.

Argument 3: potrzebuj

ę

 cache, ale bez rozmy

ś

lania

Mechanizmy cache kodu s

ą

 cz

ę

sto wbudowane w j

ę

zyk.

Mechanizmy cache zasobów HTTP s

ą

 wbudowane w HTTP – po prostu 

przeczytaj speck

ę

, dobrze zrobi to Twojej stronie; mo

ż

esz osi

ą

gn

ąć

 du

ż

o wi

ę

cej, 

ni

ż

 to, co robi

ą

 domy

ś

lne ustawienia Twojego frameworka.

Redis is fun!

Czy w ogóle potrzebujesz cache po stronie serwera?

background image

5

Plus cache, plus mailer, plus baza danych, plus ORM...

Cz

ę

sto potrzebujesz tylko podstawowej funkcjonalno

ś

ci bazy danych, wysła

ć

 

maila, zapisa

ć

 plik na chwil

ę

… dlaczego nie u

ż

y

ć

 wbudowanych lub lekkich rozwi

ą

za

ń

?

https://levels.io

Kwestie wydajno

ś

ci

Je

ś

li potrzebujesz wysokiej wydajno

ś

ci, a korzystasz ju

ż

 z frameworka i wszystkich 

dost

ę

pnych przyspiesze

ń

, cz

ę

sto przytaczanym argumentem b

ę

dzie “Je

ś

li 

potrzebujesz wydajno

ś

ci, skorzystaj z kompilowanych rozwi

ą

za

ń

”.

Ale chwila, przecie

ż

 same j

ę

zyki to kompilowane rozwi

ą

zania, dlaczego nie 

skorzysta

ć

 z ich bibliotek standardowych?

J

ę

zyki oferuj

ą

 równie

ż

 mo

ż

liwo

ść

 implementacji funkcji w formie wtyczek – php-ds

1

1

http://tiny.cc/phpds

background image

6

Co zamiast frameworków?

Zero framework manifesto – wcale nie chcemy pisa

ć

 wszystkiego sami.

Zamiast u

ż

ywa

ć

 cało

ś

ci frameworka, mo

ż

e potrzebujesz tylko jednego z jego 

modułów?

Mo

ż

e podstawowe funkcje, z których korzystasz, pokrywa jaki

ś

 microframework?

Mo

ż

e sytuacj

ę

 rozwi

ąż

e mały zestaw wzajemnie rozł

ą

cznych narz

ę

dzi?

(“za moich czasów” u

ż

ywali

ś

my lightboksa do galerii, nie potrzebowali

ś

my całego jQuery)

Case study: zafri

– 21 linii bootstrappingu

1

+ 11 linii routingu

– SQLite – czy dla małego serwisu potrzebny Ci MySQL? Mo

ż

e wystarczy JSON?

– własne biblioteki do obsługi plików .env i infrastruktury do wysyłania maili

1

Bootstrap to nazwa biblioteki, bootstrap to proces “wi

ą

zania sznurówek do biegu”

background image

7

Pami

ę

taj o pami

ę

ci!

Wymagania pami

ę

ciowe frameworków potrafi

ą

 by

ć

 poka

ź

ne: aplikacja Hello World 

napisana w Ruby on Rails pochłania 35 MiB pami

ę

ci RAM. Dla porównania ta 

sama aplikacja w czystym Ruby – poni

ż

ej 10 MiB; w Pythonie – 7,3 MiB.

http://nuald.blogspot.com/2011/08/web-application-framework-comparison-by.html