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


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


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