Neįtikėtinai paprastas deploymentas

Intro

Deploymentas - procesas kurio metu progresas kurį atlikote savo kompiuteryje, galiausiai atsiduria serveryje. Dažnai žmonės (įskaitant ir mane) ignoruoja jį iki pat lemiamo momento.

Žinoma, galima viską atlikti rankomis... Bet taip sukuriame daugiau galimybių klaidoms atsirasti, priedo procesas ilgainiui gali tapti ilgas ir sudėtingas.

Pasiruošimas

Rekomenduotina, jog būtų paruoštas prisijungimas be slaptažodio - tai gerokai supaprastins procesą.

Sekantis žingsnis - instaliuoti nuostabų įrankį: PyInvoke. Jeigu turite pip, tai galite atlikti tiek visoje sistemoje, tiek virtualenv: pip install ...

pradmenys python unix


Django ir AngularJS sąjunga

Kodėl ši sąjunga reikalinga?

Ankščiau ar vėliau susiduriame su situacija, kai norime atlikti veiksmą neperkraunant puslapio. Priežasčių tam gali būti įvairių, tačiau norint atitikti vartotojų lūkesčius, seni geri formų metodai jau nebėra veiksmingi.

Problematika

Tiek Django tiek AngularJS turi labai panašų tikslą - sukurti lengvai prižiūrimą, aiškiai strukturizuotą kodą kuris leis deramai kontroliuoti puslapio vystymąsi. Netgi idealogija panaši - MVC (Model View Controller). Natūralu, jog bandant sulieti du( nors technologiškai skirtingus, bet to paties siekiančius) frameworkus, iškyla ...

python web django javascript angular


Paprasti rikiavimo algoritmai

Šie algoritmai nėra labai praktiški, nes didžioji dalis kalbų turi realizavus savo, optimizuotus algoritmus, taigi prasmės kurti savo - mažai. Bet žinoti jų veikimo principą pravartu, todėl jie yra dažnai naudojami kaip po egzaminių, atsiskaitymų, mokomosios užduotys. Keturi populiariausi algoritmai yra Bubble sort, selection sort, quick sort ir merge sort. Pirmi du algoritmai dažniausiai naudojami pradmenims išdėstyti, o quickir mergetinkamai realizuoti gali būti pakankamai efektyvūs netgi pritaikant rimtiems uždaviniams :) Ši pamoka aprašys pirmus du ...

pradmenys python rikiavimas


DebugList

Siekiant paprasčiau paaiškinti rikiavimo algoritmų veikimą, susikursime klasę kuri praneš kiekvieną pasikeitimą. Tai padaryti nesudėtinga dėka technikos vadinamos Duck-Typing. Terminas atsirado iš angliško posakio ,,If it looks like a duck, quacks like a duck - it is a duck''. Kadangi Python(kaip ir kitos dinaminės kalbos), remiasi dinaminiais tipais, mes galime pateiti klasę kurios nesitiki, tačiau viskas veikia, nes klasė padengia visus būtiniausius metodus.

Pirmas žingsnis - sukuriam klasę

class DebugList(object):
    pass

Dabar prisimenam savo tikslą ...

pradmenys python rikiavimas


Hashable

Terminas naudojamas įvairiose kalbose, tačiau visose gaubia vienodas kiekis mistikos.

Kodėl parašius:

d[[1, 2, 3]] = "test"

arba

key = [1, 2, 3]
d[key] = "test"

Gauname piktą errorą TypeError: unhashable type: 'list'

Tačiau pakeitus kodą į:

key = (1, 2, 3)
d[key] = "test"

Viskas veikia kuo puikiausiai? Dažniausiai tokios situacijos kyla norint panaudoti kompleksinį žodyno raktą. Rečiau - kai bandome serializuoti objektą (cache, multiprocessing, pickle). Ši klaida gali įvaryti į neviltį.

Taigi kaip šios klaidos išvengti ...

python


Minimalistinis Web Puslapis: Flask

Platesnė dokumentacija: Flask

Kodėl Flask?

Flask yra minimalistinė biblioteka. Tai yra tuo pačiu gerai, ir blogai.

Geroji pusė - lengva suvokti kaip tai veikia, iškilusias problemas lengva spręsti. Taip pat, paprastumas leidžia tapti puikiu pagrindu mikroservisų architektūrai vystyti. Greita, lengva biblioteka.

Blogoji - mažai padaro "už tave", padengia esminį funkcionalumą, visa kita - reikia daryti sava galva.

Iš esmės, tai Flask rekomenduočiau pradedantiesiems. Nors ir kažką veikiančio sukurti užtrunka šiek tiek ilgiau, tačiau tokioje mažoje bibliotekoje pasiklysti kur ...

python web flask


SpriteSheet generavimas

Taigi susidūriau su viena, gan dažna problema: reikia vadinamo sprite sheet'o, o gavau krūvą paveikslėlių. Kas yra sprite sheet? į vieną paveikslėlį sutalpinta krūva kitų paveikslėlių (dažniausiai pagal kažkokią prasmę).

Sprendimas ganėtinai paprastas, taigi pasidalinsiu.

Pirmas žingsnis - įsirašyti Pillow biblioteką:

pip install pillow

Dabar mes jau galime užkrauti paveikslėlį ir jį peržiūrėti:

from PIL import Image

def load_img(src):
    return Image.open(src)

img = load_img("img/test.png")
img.show()

Taip pat lengvai galime ...

žaidimai python generavimas generatorius paveikslėliai


Paprasto puslapio sukūrimas

Taigi, šį kartą pabūsiu šiknius, ir pareklamuosiu savo kuriamą frameworką :) Tikiuosi už tai nieks nepyks.

Reikalavimai

  • Python 3.4+ versija
  • pip

Pasiruošimas

Instaliuojame wutu: pip install wutu

Sukuriame bazinį htmlfailą:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    Hello, world!
</body>
</html>

WebServeris

Na va, pagaliau galim pradėti kodinti. Pirmas žingsnis - paleisti servuką:

from wutu import Wutu

app = Wutu(index="index ...

pradmenys python wutu web


Paprasta userio teisių tikrinimo sistema - Python Decorator

Šis straipsnis pusiau skirtas supažindinti su galingu Pythonkalbos įrankiu vadinamu decorator, tuo pačiu parodyt vieną naudingą dizaino sprendimą.

Pradedam palengva - susikuriam primityvią vartotojo klasę, kuri viso labo sugeba pasakyti ar tai administratorius

class User(object):
    admin = false

    def is_admin(self):
        return self.admin

Toliau sukuriame įsivaizduojamą servisą

class Service(object):
    session = User()

    def home(self):
        return "Hello!"

    def restricted(self):
        return "Only admin should be here. Please go away"

Kaip matome, į vieną metodą ...

python decorator


Žodžių išrinkimas iš teksto

Reiktų pradėti nuo to, kad ši problema nėra lengvai išspręndžiama, nėra jokio tikslaus algoritmo kuris tai atliktų. Tačiau yra gan neblogų bandymų :)

Pirmas žingsnis - skaldyti tekstą per tarpus

def get_words(raw):
    return raw.split(" ")

Duodam "Labas rytas", rezultatas => ['labas', 'rytas']. Puiku! Atrodo, kad nieko daugiau daryti nebereikia :) Bet pabandome kiek įdomesnį variantą: "Labas rytas, gerbiamas prof.!" ir gauname => ['labas', 'rytas,', 'gerbiamas', 'prof.!'].

Pašalinti šiems pertekliniams simboliams naudojamas metodas strip (kitose kalbose dažnai vadinamas ...

pradmenys python nlp