GNU/Linux - 4. deo – Shell skripte i automatizacija procesa
Principi funkcionisanja shell skripti za administraciju sistema, watch i crontab (sa primerima iz svakodnevne prakse)
Principi funkcionisanja shell skripti za administraciju sistema, watch i crontab (sa primerima iz svakodnevne prakse)
Korišćenje programa za preciznu obradu teksta u terminalu (grep, sed, awk, sort), uz pajpovanje i redirekciju
Osnove komande za svakodnevnu administraciju GNU/Linux distribucija I drugih UNIX-olikih operativnih sistema.
Šta je slobodni softver - Kako su nastale GNU/Linux distribucije - Da li slobodni softver otvorenog koda može da se nosi sa komercijalnim rešenjima - Osnovne tehnikalije ....
Opis postupka izrade syntax highlighter-a iz "domaće radinosti" (za početak: kraća diskusija o osnovnim mehanizmima za efikasnu podelu teksta na tokene i semantičku analizu tokena).
Principi predstavljanja datuma i vremena na računarima, uz kratak osvrt na uobičajene formate, i detaljan osvrt na format koji se najčešće koristi u programskim jezicima.
Detaljan osvrt na najpopularnije i najčešće korišćene formate za zapis znakova na računarima (istorijat, tehnikalije, oblasti primene).
Teorija i mini-tutorijal za izradu sajta koji koristi Fetch API (koji, u idejnom smislu, možemo shvatiti kao svojevrsnu kombinaciju AJAX-a i promisa).
Pregled tehnika koje (pod određenim okolnostima), omogućavaju paralelno izvršavanje koda u Javascript-u (tako da pomenuta obrada ne "koči" izvršavanje skripte).
Skup tehnika koje omogućavaju komunikaciju između klijenta i servera, između dva učitavanja stranice (uz uticaj na samo određene elemente, bez osvežavanja cele stranice).
Izuzetno popularno radno okruženje za pisanje backend aplikacija, iza koga stoji endžin V8 (JS interpretator iz Google Chrome-a), povezan sa ulazno-izlaznim mogućnostima operativnog sistema na kome je instaliran.
Jedno od najpopularnijih i najčešće korišćenih rešenja za čuvanje podataka za autorizaciju korisnika u računarskim sistemima (bez direktnog skladištenja lozinke i drugih osetljivih podataka).
Nove tehnike koje je donela revizija jezika iz 2015. godine, ECMAScript 6 (const, let, arrow funkcije, šablonske niske, moduli, klase .…)
Detaljan osvrt na koncept predavanja jedne funkciji drugoj u svojstvu argumenta, najčešće uz korišćenje tzv. "lambda izraza" (a usput ćemo napraviti i osvrt na delegate u C#-u i interfejse u Javi).
Diskusija o izboru prvog programskog jezika (C vs. Python), uz osvrt na razlike između mašinskih jezika i programskih jezika visokog nivoa. Koliko programski jezici treba da nam pomažu (i šta treba, a šta ne treba od nas da "skrivaju") ....
Prikaz mehanizama za spajanje niski sa vrednostima promenljivih, preko operatora, funkcija i template literal sintakse (u nekoliko programskih jezika).
Verovatno najpopularniji skriptni jezik današnjice, sa jednostavnom sintaksom i većinom odlika ozbiljnih OOP jezika (vrlo popularan za pisanje skripti za automatizaciju, kao i u oblasti mašinskog učenja).
Nepodržanost promenljivih, duže vreme bila je jedna od većih "boljki" CSS-a, i stoga je pojava pretprocesora za CSS i (na kraju), imenovanih svojstava, bila krajnje dobrodošla .…
Osvrt na lokalna skladišta podataka (koja se mogu koristiti preko Javascript-a, ili preko različitih backend jezika).
Protokol za proizvoljno prosleđivanje podataka između različitih stranica istog sajta.
Pregled različitih tehnika koje omogućavaju povezivanje PHP skripti sa MySql bazama podataka.
Protokol za prosleđivanje zaštićenih podataka između dve stranice, uz korišćenje HTML formulara.
Najosnovniji HTTP protokol, koji se koristi za prosleđivanje podataka preko URL-a.
U većini situacija, PHP je prvi skriptni serverski jezik sa kojim se web developeri upoznaju, pošto su savladali osnove web dizajna i tri osnovna internet jezika (HTML, CSS i JavaScript) ....
Mehanizam koji omogućava da se pravilno odreaguje na nepravilnosti u korisničkom unosu podataka (kao i na druge nepredviđene okolnosti u toku izvršavanja programa).
Detaljan "pretres" postupka implementacije jednostruko ulančane liste u C++-u (uz osvrt na opšti princip preklapanja operatora i izuzetke).
Za razliku od ulančane liste, koju smo implementirali u jeziku koji je jedan od "uobičajenih kandidata" za implementaciju struktura podataka (C++), nekoliko drugih struktura podataka odlučili smo da implementiramo u jeziku koji naizgled nije najbolji izbor za prethodno navedene "zahvate" ....
Kratak osvrt na implementaciju nizova u Javascript-u ("ispod haube", u pitanju je relativno kompleksna implementacija, ali - sasvim funkcionalna i (najčešće) prilično elegantna).
U poslednjem nastavku mini-serijala o implementaciji AVL stabala, bavimo se najkompleksnijom operacijom u AVL stablima - uklanjanjem čvorova.
Detaljna diskusija o načinu predstavljanja algebarskih izraza preko stabla (uz osvrt na to da se sličan pristup koristi i u prevođenju računarskih jezika).
U četvrtom nastavku mini-serijala o implementaciji AVL stabala, bavimo se jednom od dve najuobičajenije operacije u AVL stablima - dodavanjem čvorova.
U drugom delu, bavimo se računanjem vrednosti izraza (u pitanju je postupak koji sledi posle prevođenja izraza iz infiksne notacije, i takođe se obavlja u linearnom vremenu).
Treći nastavak mini-serijala o implementaciji AVL stabala, posvećen je različitim metodama obilaska stabla pretrage.
Kratak osvrt na često korišćene termine kao što su URL, IP adresa i DNS, uz prikaz postupka učitavanja web stranica.
Jedan od nekoliko najznačajnijih algoritama u istoriji informatike, čija je svrha - pretvaranje infiksnih izraza u postfiksne i računanje vrednosti (u prvom delu, bavimo se prevođenjem notacije).
U drugom nastavku mini-serijala o implementaciji AVL stabala, bavimo se pronalaženjem elemenata.
Kako je moguće, uz pomoć operatora lookahead i lookbehind (o kojima do sada nije bilo reči), pristupati unutrašnjem sadržaju HTML elemenata.
Osvrt na različite načine za prikaz UNICODE znakova koji se ne unose preko tastature, već, preko specijalnih kodova.
Kraća diskusija o mehanizmu za proveru podržanosti CSS svojstava u browserima (iako moderni browseri tipično podržavaju sva svojstva, sa starijim verzijama, to najčešće nije slučaj).
Uvodni članak mini-serijala o implementaciji visinski balansiranog AVL stabla u programskom jeziku Java (za početak, bavimo se osnovnom strukturom čvorova i stabla).
Izuzetno popularan programski jezik koji se koristi u izradi HTML stranica i (u novije vreme ), za kreiranje back-end komponenti web sajtova.
Detaljan uvod u relacione baze podataka (tabele, polja, slogovi, ključevi, relacije, SQL upiti ....)
Prikaz postupka pretrage obrazaca u tekstu uz korišćenje posebno formatiranih niski (sa primerima iz svakodnevne prakse).
Osvrt na statusne kodove koje serveri šalju klijentima posle uspešno ili neuspešno obavljene obrade podataka.
Kraća diskusija o tehnikama koje omogućavaju prilagođavanje dizajna web stranice rezoluciji uređaja na kome se sajt prikazuje.
Pregled semantičkih tagova koji su se pojavili sa revizijom HTML5 (main, nav, article, section, aside ....), uz poseban osvrt na značaj koji novi tagovi imaju u pravilnom definisanju strukture modernih web sajtova.
Vizuelna podela stranice na funkcionalne celine uz upotrebu generičkih kontejnera (div) i modula flexbox.
Definisanje vidljivih svojstava HTML elemenata (dimenzije, boja pozadine, bordure, ispuna, margine ....), i upoznavanje sa pseudoklasama u CSS-u.
Pristup elementima preko klase i id-a, interni i linijski CSS, kombinovanje selektora ....
Uvodni članak mini-serijala koji je posvećen samostalnoj izradi web sajtova (za početak, odgovori na pitanja: šta je sve potrebno, koje se tehnologije koriste, kako pristupiti zadatku) .…
Najpopularniji tekstualni format za prenos i razmenu složenih podataka (uz primere pretvaranja objekata iz OOP jezika u JSON objekte).
Osvrt na različite formate zapisa složenih podataka u računarskoj memoriji i značaj pravilnog formatiranja podataka u rešavanju problema u računarskim sistemima.
Prikaz opštih pravila za zapis brojeva, uz poseban osvrt na binarni, dekadni, heksadekadni, oktalni i rimski brojevni sistem.
Kraća diskusija o tome kako količina ulaznih podataka, u različitim programima, utiče na vreme izvršavanja i (dodatno) memorijsko zauzeće.
Odgovor na pitanje čemu služe argumenti argc i argv (u funkciji main), i diskusija o tome šta se sve može uraditi sa podacima koji se programu proslede preko terminala.
Šematski prikaz postupaka preko kojih se algoritmi mogu učiniti efikasnijim.
Detaljan uvod u najrasprostranjeniji metod za projektovanje softverskih sistema.
Postupak za rešavanje problema uz podelu na potprobleme i pamćenje međurešenja (prikazan kroz najpopularniji DP algoritam).
Detaljan osvrt na postupak za kreiranje visinski balansiranog binarno stabla pretrage (iako možda "ne deluje tako", pravilno strukturirana binarna stabla koja omogućavaju efikasnu pretragu – ne nastaju "sama od sebe" :)).
Pristup tekstualnim datotekama često je "bauk" za mlade programere koji se prvi put susreću sa tematikom, ali, uz upotrebu elegantnih mehanizama koje nude programski jezici visokog nivoa, ne mora biti tako .…
Pristup pojedinačnim bitovima, omogućava efikasno rešavanje mnogih računarskih problema (pogotovo kada je u pitanju sistemsko programiranje niskog nivoa) .…
Poreklo nekih od najčešće korišćenih IT termina.
Struktura koja omogućava efikasno pretraživanje većih (uređenih) kolekcija podataka.
Odgovor na (verovatno) "najčuvenije" pitanje koje polaznici kurseva programiranja postavljaju na samom početku.
Sistem grafičkih simbola preko kojih se prikazuje tok izvršavanja programa (linearna struktura, grananja i petlje).
Osvrt na najvažnije odlike efikasnih postupaka koji se zapravo mogu smatrati algoritmima (drugim rečima: ukoliko želimo da budemo dobri i uspešni programeri, moramo shvatiti da se problemi na računarima ne mogu rešavati "bilo kako" :)).
Krenućemo od samog početka i odgovorićemo na naizgled jednostavna pitanja: šta je to što računari zapravo rade, i kako da im u tome pomognemo?
Postupak za rešavanje matematičkih izraza na računarima uz korišćenje tzv. postfiksne notacije (znatno efikasnija metoda u odnosu na uobičajeni postupak tumačenja infiksnih izraza).