VIM pradmenys

Pirmoji (ir didžiausia) problema naudojant VIM - žmonės neturi žalio supratimo kaip jį išjungti. Tą puikiai iliustruoja StackOverflow statistika

Užbėgsiu įvykiams už akių, ir pasakysiu, kad norint išeiti reikia įvesti :q. Norint tuo pačiu išsaugot pakeitimus :wq. Norint atversti kitą failą :e <failas> arba :o <failas>.

Grįžtant prie pačių ištakų, tai VIM pasižymi tuo, kad turi rėžimus. Rėžimų yra pakankamai daug, bet svarbiausi turbūt: Normal, Insert ir Visual.

Normal yra skirtas navigavimui po kodą ir tuo ...

pradmenys vim


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


Prisijungimas be slaptažodžio

Intro

Paradoksas, tačiau prisijungimas be slaptažodžio gali, ir dažniausiai yra, saugesnis nei su juo. Kodėl taip yra? Nes tokiu atveju jungiamės su raktu kurį turi tik kompiuterio šeimininkas.

Taigi, jeigu paprastuoju atveju užtenka paleisti Bruteforce ataką žinant serverio adresą, tai esant raktui mums pirma reikia žinoti savininko kompiuterio adresą ir jį nulaužti. Teoriškai tai atlikti gali būti paprasčiau, tačiau zombiams šmirinėjantiems po internetą ir bandantiems nulaužti serverius - neįmanoma užduotis.

Rakto generavimas

(Žemiau pateikti žingsniai skirti ...

pradmenys apsauga unix


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


Argumentas ir parametras

Parametras - abstrakti reikšmė kurią gali atiktikti bet kas, kas tenkina kriterijus (duomenų tipas).

Pvz.:

def mano_funkcija(x, y):
    return x + y

xir y yra parametrai. Į juos galima paduoti visus duomenis. Su dalimi mūsų kodas nuluš, bet esmės nekeičia... :)

Argumentas - konkreti reikšmė tuo metu t.y.

mano_funkcija(3, 5)

šiuo atveju 3 ir 5 - argumentai

pradmenys argumentas parametras


Interfeisai ir klasės

Tarp šių dviejų yra plonytė linija daugumoje kalbų. Kai kurios, pvz.: C++ tokios sąvokos apskritai neturi, tačiau tas galiausiai pasiekiama naudojant tam tikrą programavimo šabloną.

Interfeisas neturi realizacijos

Interfeisas (angliškai "Interface", lietuviškai dažnai verčiama kaip "Sąsaja") neturi realizacijos. Kaip minėta kalbant apie klases (Klasė ir Objektas) klasė pati savaime yra šablonas aprašyti objektui, tačiau Interfeisą būtų galima apibrėžti lygiai taip pat. Taigi koks skirtumas?

a) Interfeise draudžiama realizuoti Metodus.

b) Iš Intefeiso negalima sukurti Objekto ...

pradmenys klasė interfeisas


Klasė ir objektas

Jų skirtumas yra gan aiškus, tačiau labai dažnai painiojamas ir nesuprantamas naujokų.

Klasė - šablonas, taisyklių rinkinys aprašantis Objektą

Objektas - duomenų struktūra sukurta pagal Klasėsaprašymą.

Pavyzdžiui, jeigu turime klasę Asmuo:

class Asmuo(string vardas, int amžius)

Tai ji mums nusako, jog kiekvienas asmuo turės vardą ir amžių, bet tai yra abstraktu, šablonas kitaip sakant. Konkretūs asmenys gali būti:

a = Asmuo("Onutė", 20)
b = Asmuo("Jonas", 14)
...

Šie konkretūs asmenys ir yra objektai

pradmenys klasė objektas


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


Iteratorius vs Generatorius

Kiekvienas generatorius yra iteratorius, bet ne kiekvienas iteratorius yra generatorius.

Iteratorius - objektas, kuris mums gražina reikšmes tol, kol seka išsenka (pasibaigia)

Generatorius - objektas, kuris ne tik gražina, bet ir kuria naujas reikšmes.

Iš vartotojo pusės tai yra vienas ir tas pats, dėl to dažnai šios sąvokos naudojamos (ir aš tai darau) kaip sinonimai,tačiau sąvokos išsiskiria kai pradedama kalbėti apie begalines sekas, tokią seką gali kurti tik generatorius.

pradmenys iteratorius generatorius