Jak nie używać frameworków

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


Wyszukiwarka

Podobne podstrony:
Korektor jak go używać
Jak nie płacić podatku celowego ZUS
Jak nie zostałem oficerem artylerii L
Jak nie?ć się naciągać na kosztowne SMS y
Rynny jak o nie?ać
Jak nie zmarnować pieniędzy na początku istnienia firmy
Jak nie zgubić się w hipermarkecie życia doc
jak nie zwariowac w szkole gesicki
Zaćmienie, Jak nie lubisz sagi Zmierzch to sie uśmiejesz
Jak nie przytyć jesienią, DIETY, Diety(1)
sztuka manipulacji czyli jak nie?ć się oszukać reklamie Z7F3IG24ZANNAIASDWR2HUQKVT7VLOJXYU3XR4Q
jak+nie+nale BFy+pisa E6+listu+motywacyjnego RT6UYV3NA4PWJBXUSSE3PY7UEMFE2LABY5M5TRY
Biurowe tajemnice czyli jak nie dać się kryzysowi
Jak nie pać ofiar oszustwa
05 Jak nie należy podchodzić do analizy wywiadów (Kvale)
Pozycjonowanie w Google jak nie dać się prześcignąć konkurencji

więcej podobnych podstron