We use Plugin Contact Form 7 to create the feedback form
Changes that were made…
Hussein Tahmazov portfolio eng
Junior Software Developer
We use Plugin Contact Form 7 to create the feedback form
Changes that were made…
AB kasutajate rollid:
-AB kasutaja - tavakasutaja, mis saab muuta, lisada, filtreerida ja otsida vastavalt vajadusele
-AB programmerija -loob funktsioonid protseduurid (trigerid)
- DBA - AB administratoor - tagab, et õiged kasutajad saavad oma õigused
- AB projekteerija - loob tabeleid ja AB struktuuri
DBA -AB administratoor liigid:
*süsteemiadmin
*AB arhitekt
*AB analüütik
*Data warehouse admin - админ хранилище данных (admeladu)
DBA kaks peamist eesmärki (ülesanded):
1. kasutajate toetus ja ligipääsu jagamine ja seadistamine
2. AB turvalisus ja jõudluse tagamine
AB turvalisus - 3 põhiaspekti:
*andmete konfidentsiaalsus (confidentiality)
GRANT role to user [identified by pwd] [with grant option];
REVOKE role from user;
*andmete kättesaadavus (availability)- доступность - andmed me samme kätte õigel ajal ja õigel kasutajal
*andmete terviklikkus(integrity) - целостность - usaldusväärne andmeallikad
| Risk | Ohutuse aspekt |
| Inimlikud vead | konfidentsiaalsus, kättesaadavus, terviklikkus |
| füüsilised vead (riistvara – hardware) | kättesaadavus, terviklikkus |
| operatsioonisüsteemi rikked | kättesaadavus, terviklikkus, konfidentsiaalsus |
| andmebaasisüsteemi rikked | kättesaadavus, terviklikkus, konfidentsiaalsus |
-COMMIT -COMMIT-käsku kasutatakse kõigi praeguse tehingu käigus tehtud muudatuste salvestamiseks andmebaasi. Kui tehing on kinnitatud, muutuvad muudatused püsivaks.
-ROLLBACK - Kui tekib viga, näiteks päringu probleem, saate ROLLBACK-i abil tühistada kõik tehingu käigus tehtud muudatused
-ROLLFORWARD - käsk taastab andmebaasi, rakendades andmebaasi logifailidesse salvestatud tehinguid.
-Data mining - väärtuslike mustrite ja järelduste avastamine suurte andmekogumite põhjal, kasutades masinõppe, statistika ja andmebaasisüsteemide meetodeid.
-Data warehouse - on erinevatest allikatest integreeritud andmete keskne hoidla. Need hoiavad praeguseid ja varasemaid andmeid, mis on organiseeritud viisil, mis on optimeeritud andmete analüüsimiseks, aruannete koostamiseks ja integreeritud andmete põhjal järelduste tegemiseks.
GROUP BY - lause rühmitab samade väärtustega read kokkuvõtete ridadeks, näiteks „leia klientide arv igas riigis”
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
UNION ALL - käsk ühendab kahe või enama SELECT-lause tulemusjoukonna (lubab dubleeritud väärtusi)
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
GROUPING - Määrab, kas GROUP BY loendis olev veeruavaldis on agregeeritud või mitte
SELECT SalesQuota, SUM(SalesYTD) 'TotalSalesYTD', GROUPING(SalesQuota) AS 'Grouping'
FROM Sales.SalesPerson
GROUP BY SalesQuota WITH ROLLUP;
GO
- ROLLUP - operaator täiustab GROUP BY-klausli võimekust, võimaldades arvutada veergude kogumi vahe- ja kogusummasid.
select COALESCE(Department, 'Total') as Department SUM(Salary)
from Employee1
Group By ROLLUP (Department);
- CUBE - on GROUP BY-klausli laiendus, mis võimaldab genereerida kõik võimalikud rühmade kombinatsioonid määratud veergude jaoks, sealhulgas vahesummad ja kogusumma.
SELECT state, SUM(salary) AS salary
FROM salary_reports
GROUP BY CUBE(state)
ORDER BY state;
Erunevus ROLLUP and CUBE - ROLLUP teeb kokkuvõtte GROUP BY-klauslis kasutatud veergude hierarhia alusel. CUBE rühmitab kõikide väärtuste kombinatsioonide järgi. / Rollup summerib hierarhiliselt valitud veergud CUBE, arvatub summad igas veerus/kombinatrsioonis
|
|
Vastus: |
|
| Summa: |
|
|
AB kasutajate rollid:
-AB kasutaja - tavakasutaja, mis saab muuta, lisada, filtreerida ja otsida vastavalt vajadusele
-AB programmerija -loob funktsioonid protseduurid (trigerid)
- DBA - AB administratoor - tagab, et õiged kasutajad saavad oma õigused
- AB projekteerija - loob tabeleid ja AB struktuuri
DBA -AB administratoor liigid:
*süsteemiadmin
*AB arhitekt
*AB analüütik
*Data warehouse admin - админ хранилище данных (admeladu)
DBA kaks peamist eesmärki (ülesanded):
1. kasutajate toetus ja ligipääsu jagamine ja seadistamine
2. AB turvalisus ja jõudluse tagamine
AB turvalisus - 3 põhiaspekti:
*andmete konfidentsiaalsus (confidentiality)
GRANT role to user [identified by pwd] [with grant option];
REVOKE role from user;
*andmete kättesaadavus (availability)- доступность - andmed me samme kätte õigel ajal ja õigel kasutajal
*andmete terviklikkus(integrity) - целостность - usaldusväärne andmeallikad
| Risk | Ohutuse aspekt |
| Inimlikud vead | konfidentsiaalsus, kättesaadavus, terviklikkus |
| füüsilised vead (riistvara – hardware) | kättesaadavus, terviklikkus |
| operatsioonisüsteemi rikked | kättesaadavus, terviklikkus, konfidentsiaalsus |
| andmebaasisüsteemi rikked | kättesaadavus, terviklikkus, konfidentsiaalsus |
- COMMIT - tähendab, et praeguses tehingus tehtud muudatused muutuvad püsivaks ja muutuvad nähtavaks teistele sessioonidele - означает, что изменения, внесенные в текущей транзакции, становятся постоянными и видны другим сеансам
- ROLLBACK - tühistab kõik praeguse tehinguga tehtud muudatused - отменяет все изменения, внесенные текущей транзакцией
- ROLLFORWARD - taastab andmebaasi, rakendades andmebaasi logifailidesse salvestatud tehinguid - восстанавливает базу данных путем применения транзакций, которые записаны в файлах журнала базы данных
- Data Mining – поиск скрытых шаблонов – on protsess, mille käigus ekstraktitakse ja leitakse mustreid suurtest andmekogumitest, kasutades selleks masinõppe, statistika ja andmebaasisüsteemide ristumiskohas olevaid meetodeid - это процесс извлечения и поиска закономерностей в огромных массивах данных с использованием методов, лежащих на стыке машинного обучения, статистики и систем баз данных
- Data Warehouse – Хранилище данных - on tsentraliseeritud andmehoidla, mis salvestab struktureeritud andmeid - является централизованным хранилищем, в котором хранятся структурированные данные
Selles näites näete, et LED valgustus (antud olukorras punane) süttib sertan korda. Seda saab kasutada erinevate mustrite loomiseks, täpselt nagu koodis morse!
void setup()
{
// pinMode() määrab töörežim
pinMode(13, OUTPUT); // 13-pini number, INPUT/OUTPUT(Sisend/Väljund).
}
void loop()
{
digitalWrite(13, HIGH); // Lülita sisse
delay(1000); // Ootab 1 sek
digitalWrite(13, LOW); // Lülita välja
delay(3000); // Ootab 3 sek
digitalWrite(13, HIGH); // -... .- .-.. .-.. ...
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH); // -... .- .-.. .-.. ...
delay(1000); // Ootab 1 sek
digitalWrite(13, LOW); // Lülita välja
delay(3000);
}

Sellel pildil on emaplaat, mis on saanud koodi, mis annab edasi leivaplaadi ja RGB-lambi.
Seal on transistorid mille vältida liiga palju võimu läheb lamp, sest me ei taha, et kogu asi põlema minna.
Kasutan Arduino, laendusplaat, juhtmed, 3 transistoridit (220 om) ja 1 RGB lamp
kood:
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100; // värvimuutuse kiirus
void setup()
{
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop()
{
mainColors();
showSpectrum();
}
void mainColors()
{
// Kõik LEDid on välja lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
//Põleb punane
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Põleb roheline
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Sinine on sisse lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
// Kollane.
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(1000);
// Lilla
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
//Roosa
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
//Valge ehk kõik on sisse lülitatud
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(1000);
}
// Vikerkaar.
void showSpectrum()
{
int x;
for (x = 0; x < 768; x++)
{
showRGB(x); //
delay(10); // paus 0,001 sek
}
}
// ShowRGB() põhivärvid:
// 0 = punane
// 255 = roheline
// 511 = sinine
// 767 = jälle punane
void showRGB(int color)
{
int redIntensity;
int greenIntensity;
int blueIntensity;
if (color <= 255)
{
redIntensity = 255 - color; // lülitakse välja punane
greenIntensity = color; // lülitakse sisse roheline
blueIntensity = 0; // sinine on välja lülitatud
}
else if (color <= 511)
{
redIntensity = 0; // punane on välja lülitatud
greenIntensity = 255 - (color - 256);
blueIntensity = (color - 256);
}
else if (color >= 512)
{
redIntensity = (color - 512);
greenIntensity = 0;
blueIntensity = 255 - (color - 512);
}
analogWrite(RED_PIN, redIntensity); // punase LED´i sujuv ümberlülitamine
analogWrite(BLUE_PIN, blueIntensity);
analogWrite(GREEN_PIN, greenIntensity);
}
Põhimõtteliselt toimib see nii, et see silub üleminekuid värvide vahel.
Objektorienteeritud programmeerimises räägitakse klasside kirjeldamisest ja objektide loomisest nende kirjelduste alusel. Objektide käsitlemine toimub klassis määratletud meetodite kaudu (meetodid on põhimõtteliselt funktsioonid).
Klass on kasutaja määratud andmestruktuur, mis seob andmeväljad (muutujad) ja meetodid ühtsesse tervikusse. Klass on nagu plaan, mille järgi saab luua piiramatult objekte.
Näide konstruktorist:
class Dog:
# Klassikonstruktor
def __init__(self, name):
self.name = name
__init__(self)).Objekt on klassi eksemplar ehk tegelik näide. See sisaldab atribuute (muutujaid) ja meetodeid.
Objekti loomise süntaks:
dog_name = Dog("Snoopy")
Objekti omadused:
Omadused jaotatakse hierarhiliselt:
Abstraktseid meetodeid ei saa kasutada enne, kui need on alamklassides implementeeritud.
Inkapsulatsioon eraldab klassi sisemise toimimise selle liidesest (interface). See aitab hoida koodi stabiilsena, isegi kui sisemine toimimine muutub.
Näide inkapsulatsioonist ja privaatsetest muutujatest:
class Computer:
def __init__(self):
self.__sellingprice = 700 # privaatne muutuja
def sell(self):
print("Müügihind: {}".format(self.__sellingprice))
def set_selling_price(self, price):
self.__sellingprice = price
c = Computer()
c.sell()
# Püüame muuta hind otse
c.__sellingprice = 1000
c.sell()
# Muudame hind setter-meetodiga
c.set_selling_price(1000)
c.sell()
Väljund:
Müügihind: 700
Müügihind: 700
Müügihind: 1000
Polümorfism tähendab, et sama meetod käitub erinevates klassides erinevalt.
Näide:
class Circle:
def corners(self):
print("Ringil pole nurki")
def sides(self):
print("Ringil on üks külg")
class Rectangle:
def corners(self):
print("Ristkülikul on neli nurka")
def sides(self):
print("Ristkülikul on neli külge")
# Ühine liides
def corners_test(shape):
shape.corners()
# Objektide loomine
first_shape = Circle()
second_shape = Rectangle()
# Meetodi käivitamine
corners_test(first_shape)
corners_test(second_shape)
Väljund:
Ringil pole nurki
Ristkülikul on neli nurka
Abstraktsioon tähendab keskendumist olulisele ja ebaolulise peitmist. Kasutaja teab, mida funktsioon teeb, aga mitte kuidas see töötab.
Pythoni moodul abc (Abstract Base Class) võimaldab luua abstraktseid klasse.
Näide abstraktsioonist:
from abc import ABC
class Animal(ABC):
def sleep(self):
print("Ma lähen magama.")
def speak(self):
pass # abstraktne meetod
class Human(Animal):
def speak(self):
print("Ma oskan rääkida.")
class Snake(Animal):
def speak(self):
print("Ma oskan sisiseda.")
class Dog(Animal):
def speak(self):
print("Ma oskan haukuda.")
class Lion(Animal):
def speak(self):
print("Ma oskan möirgata.")
# Objektide loomine ja meetodi kutsumine
human = Human()
human.speak()
snake = Snake()
snake.speak()
dog = Dog()
dog.speak()
lion = Lion()
lion.speak()
Väljund:
Ma oskan rääkida.
Ma oskan sisiseda.
Ma oskan haukuda.
Ma oskan möirgata.

Siin olen loonud 2 tabelit nende omadustega (pidin lisama veel, sest triggerile ja nimede muutmiseks ei olnud sellest piisavalt).

see on käivitaja, mis võimaldab näha lisatud logisid

proovin…


meil on andmed!

(kõik andmed)

see on kustutamise põhjus


see töötab nii 😀

õigusid kasutajal

Ja ta ei saa teha SELLECT logi’sse

aga ta saab töötada models’is
— Töö uuede triggeridega —



Lisamine andmed:


— Lisamine triggerid:


Kontroll:


MongoDB on dokument-orienteeritud NoSQL-andmebaas, mis salvestab andmed JSON-sarnases vormis.
Kollektsioon
on dokumentide rühm, mis sarnaneb relaandmebaasi tabelile
ei nõua fikseeritud skeemi, aga tavaliselt hoitakse sees sarnase struktuuriga kirjeid
Dokument
on üks andmeüksus, esitatuna võtme-väärtuse paaridena (näiteks tekst, number, massiiv, sisemine objekt)
käitub nagu JSON-objekt, igaühel unikaalne _id-väli primaarvõtmena
Tabeli loomine
Ülemises osas on mongosh konsool, kus käsk show databases kuvab olemasolevad andmebaasid, seejärel lülitutakse andmebaasi mongo ja käivitatakse db.createCollection(“users”), mis tagastab { ok: 1 } ehk näitab, et users-kollektsioon loodi edukalt. Alumises osas on graafiline kasutajaliides, mis kuvab äsjaloodud users-kollektsiooni kokkuvõtet.


Andmete lisamine
Pildil näidatakse, kuidas MongoDB users kollektsiooni lisatakse uus dokument. Seejärel kuvatakse graafilises kasutajaliideses see äsja lisatud dokument.


Palju andmete lisamine
Pildil näidatakse, kuidas MongoDB users kollektsiooni lisatakse korraga mitu uut dokumenti. Graafilises kasutajaliideses on nüüd näha nii eelmisel pildil dokument kui ka need viis uut dokumenti.

Andmete otsimine kriteeriumi järgi
Pildid illustreerivad andmete otsimist MongoDB users kollektsioonist, kasutades find() käsku. Näidatakse, kuidas leida kasutajaid täpse väärtuse järgi. On toodud näide $or operaatori kasutamisest, et leida dokumente, mis vastavad vähemalt ühele mitmest määratud tingimusest. Veel näidatakse erinevate võrdlusoperaatorite kasutamist vanuse välja puhul: otsitakse, kes on nooremad kui teatud vanus ($lt), teatud vanuses või nooremad ($lte), vanemad kui teatud vanus ($gt), teatud vanuses või vanemad ($gte), ning kasutajaid, kelle vanus ei ole teatud kindel väärtus ($ne).









Sorteerimine
Pildil näidatakse MongoDB users kollektsiooni dokumentide sorteerimist. Vasakul sorteeritakse vanuse järgi kasvavalt ({age: 1}). Paremal sorteeritakse vanuse järgi kahanevalt ({age: -1})


Kirjete piiramine
Pildil näidatakse, kuidas MongoDB-s piirata tagastatavate kirjete arvu. Üleval kasutatakse db.users.find().limit(4), et saada maksimaalselt neli esimest dokumenti. Allpool kasutatakse db.users.findOne() kahel viisil: otsides konkreetse _id järgi ja otsides esimese dokumendi, mille vanus on 19.




Andmete muutmine
See uuendab esimest filtrile vastavat dokumenti, muutes määratud väljad uuteks väärtusteks.
Teie näite puhul:

See uuendab esimest kasutajat, kelle nimi on “aspir”, muutes nime “Dr.Aspirgurg” ja seades vanuseks 45 aastat.

t uuendab kõiki filtrile vastavaid dokumente, nimetades nimevälja ümber täisnimeks.
Teie näite puhul:

See nimetab nimi ümber täisnimeks kõigis kasutajate kollektsiooni dokumentides.

Andmete kustutamine
Saate kasutada meetodit deleteOne(), et eemaldada esimene dokument, mis vastab määratud filtrile.


Mitmekordne taotlus
Meetod, mis võimaldab mitme kirjutamisoperatsiooni (sisestamine, uuendamine, kustutamine, asendamine) teostamist ühe üleskutsega.
Parandab jõudlust, vähendades serverisse pöördumiste arvu.
Filter on päringu objekt, mis määrab MongoDB operatsioonides dokumentide valiku kriteeriumid.


Linkide tüübid
Kui kasutaja nimega „Ivan“ on olemas, siis tema postituste väli kirjutatakse üle selle massiivi.
Kui „Ivanil“ ei ole veel postituste välja, siis luuakse see.
Operatsioon mõjutab vaikimisi ainult esimest sobivat dokumenti (sest update() ilma valikuteta mõjutab ainult ühte).






Mongo ühendamine node jsiga
Kood impordib MongoClienti mongodb paketist.
See loob uue MongoClient’i koos ühendusstringiga MongoDB Atlas klastrile (pilvemongoDB).
Asünkroonne käivitamisfunktsioon:
Funktsioon start on deklareeritud asünkroonsena, et see saaks kasutada await’i asünkroonsete MongoDB operatsioonide jaoks.
Try-bloki sees (vigade püüdmiseks ja logimiseks):
