Python za početnike

Pozdrav!
Mene zanima ako mi netko može preporučiti neki dobar tutorial za python?
:klanjamse

Za početak dovoljno
Python Documentation Index
Learn Python - Free Interactive Python Tutorial

+sa kojim framework-om počet?
Neki jednostavni

Django
https://www.djangoproject.com/

Ja počeo sa edx.org interaktivnim tutorijalima. Imaš nakon svake lekcije probleme koje treba da rešiš. I svi kursevi su im besplatni i sa nekih fancy univerziteta.

sad videh datum postavljanja pitanja, nadam se da mi nećete zameriti a nekom možda i zatreba.

Evo nešto noviji tutorijal (14 sati):

2 Likeova

Ovo je stvarno odlican tutorial i preporucam ga. Edx isto ima odlican tut za python, codeacademy je meni bio malo previse “dosadan”. Za sada mi je ovo najbolji.

Mozilla ima dobar tutorial i pokriva više stvari -

@vuk

Budimo realni, python nije dobar na webu, koliko god da se trudili to prezentirati kako je to super, ali realnost je sasvim nesto drugo.

Django ne bi taknuo, nema tih para na svijetu. Tko voli nek izvoli.

Ima puno boljih stvari od pythona na webu, primjer je sam python za razno razne stvari osim weba naravno.

Predlažem topic PHP za početnike. :blush: :o:

Realnost je da je Instagram na Djangu/Pythonu. Disqus. 24sata.hr, vecernji.hr, poslovni.hr, siol.net su na Djangu. To je valjda zato što nije dobar na webu.

Budimo realni, nije baš da imaš neku realnu sliku o tome. Django je najprikladniji za početnike zato jer po defaultu potiče da upotrebljavaš cijeli niz dobrih developerskih praksi u web developmentu. S druge strane njegov ORM sve ove godine nema nijedan sigurnosni propust dok su neki druga okruženja kao probušena kanta.

2 Likeova

Na svakoj tehnologiji se vrti nesto, uvijek je bilo i uvijek ce biti.

Ne kazem da nije moguce. Recimo odem na jedan od spomenutih site-ova, sporo za popizditi.

Odrzavanje django app, necu komentirati.

Isto tako ti mogu reci, ima site-ova koji su pisani direktno u c++, pa sto , to ne znaci da je c++ dobar za web, a moze se raditi web u njemu i turbo je brzo.

Ljudi previse kompliciraju i onda biraju za web nesto egzoticno, samo da budu drukciji od drugih.

A realno je jako jednostavno uzeti npr. php i deri.

Orm – svi se hvataju za orm, query builder, active record i slicne gluposti. Tko voli nek izvoli.

I onda kad taj pocetnik nauci django, iza njega kasnije imas hrpu smeca od code-a, jer prvo nije naucio programirati kako spada.

Sto su to dobre prakse? Jel znas da se to mijenja iz godine u godinu i dolaze nove stvari?

Koliko si Django aplikacija napravio i održavao? Iz tvojih komentara mogu samo naslutiti da imaš loše iskustvo koje se možda temeljni na nedovoljnom poznavanju?

Spominješ c++ i sporost. Znaš li koja je najsporija komponenta u većini web aplikacija? Baza podataka. Možeš ti napraviti web u asembleru i opet će ti baza biti usko grlo. Bilo koji high-traffic site je neupotrebljiv ukoliko caching strategija nije posložena i napravljena kako treba. Na skoro svim takvim siteovima tek <1-5% zahtjeva (requesta) dolazi do aplikacije, sve ostalo dolazi iz cachea. Pa imaš multi-layer cache, redudanciju i hrpa stvari koje se rade da bi nešto bilo brzo. U takvim oklonostima brzina same aplikacije, da li će se template za neku stranicu izrenderirati za 10 ili 12 ms uopće nije od presudne važnosti. Znaš li da za uspostavljanje veze prema bazi treba dosta vremena, a kod high traffic siteova je izazov i veliki broj konekcija na bazu? Zbog toga se koristi connection pooling, Django je i tu optimiziran i ima rješenje za to.

Ako početnik krene učiti Django veća je vjerojatnost da će pisati manje smeća nego netko tko će uzeti čisti php i spajati stringove da bi kreirao SQL upit.

Baci pogled na https://docs.djangoproject.com/en/2.2/topics/security/ pa mi reci ima li išta od navedenog, a da nije postojalo ili bilo problem i prije 5 ili 10 godina? Za većinu sigurnosnih praksi, koje Django ima po defaultu i koje potriče, programeri u drugim okruženjima nisu ni čuli, a kamoli da ih primjenjuju.

5 Likeova

Ovako, koliko treba starom jaranu koji onak razumije what if else i te komande i moze razmislajti programski da nauci taj Django?

Flertovao sam sa pythonom i odustao sma jer sam sav code trebao tipkat rukom, neki drugi toolovi omogucuju da te simple stvari tipa sto je meni trebalo otvori site i upisi ime u pythonu mi treba da natipkam 5 minuta dok je u nekom toolu to gotovo za 5 sekundi. Pa onda dok se ide sire programirat vjerujem da kodiranje u pythonu ili opcenito oduzima masuuuuu vremena.

No najveci problem mi je bio GUI, ja sma korisito goli python i on nema nikakav gui. Tu sma odustao, jel taj Django ima gui?

HMmm, jel taj Django tool koji povezuje python i web? odnosno korisnik nesto napravi u webu a python to onda odsvira?

Dovoljno.

Kazes uspostava konekcije prema bazi, u php-u sa pdo driverima prvo otvaranje konekcije i query sa limitom od 20 recorda traje 0.8 ms, svaki slijedeci select ispod 0.4 ms.

Naravno da treba cache, bez obzira u cemu je pisana app. Baza je spora samo onima koji ne znaju optimizaciju i pisat pravilan sql query pa uzimaju orm i slicne stvari.

Jedan i drugi su u problemu. Kakvo spajanje stringova? tako rade oni koji ne nauce kako treba. Koristi se prepare + ciscenje podataka itd…


Google, YouTube, Quora, Instagram…

Bullshit prilikom svake konekcije imas i network delay, a pogotovo kad ti je baza na drugom serveru, a to zelis kod svake aplikacije pogotovo kod onih sa high loadom.

1 Like

Realno, to je najgori moguci izbor gotovo uvijek.

A sta fali svemu navedenome, ako znas sta radis i ako koristis ispravno nemas nikakvih problema, za neku optimizaciju na mikro razini jos uvijek mozes koristiti pure SQL. Osim toga ti upiti su kad se jednom izvedu kasnije cachirani na kraju nema razlike. Optimizacija u smislu slozenijih queria je samo nekad neophodna.

To nema veze sa programskim jezikom nego sa osobom, tako da zajeb.

Ne dobre prakse programiranja se mijenjaju skoro nikad ili jako rijetko jer da se mijenja iz godine u godinu onda to nebi bila dobra praksa. DRY, SOLID, Design Patterns to su sve prakse stare koje se ne mijenjaju.

1 Like

Ok, krivo sam se izrazio, dolaze nove stvari uz ove postojece.

Uf, da ja moram pisati takav kod i tako raditi s podacima iz web formi otišao bi čuvati ovce. Čak i u PHP-u sigurno ima elegantnijih načina. Kod mene takav kod nikada ne bi prošao code review.

Pogledaj kako je elegantno raditi s formama u Djangu - https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Forms. Ako si sve dobro podesio i definirao ponekad je dovoljno samo reći if form.is_valid(), podaci su već pripremljni i očišćeni (self.cleaned_data['ime_polja']).

2 Likeova