Soluții

Cum sa gazduiesti mai multe website-uri sau aplicatii web acasa in spatele aceluiasi IP public

De regula, persoanele fizice au abonament de internet care presupune alocarea unui singur ip dinamic, iar din aceasta cauza hostingul acasa a mai multor website-uri sau aplicatii web presupune o aplicatie in plus cu rol de proxy care va forwarda traficul in functie de request. Altfel, ne-ar fi necesar cate un ip public pentru fiecare website sau aplicatie web.

Pentru aceasta solutie este necesar un calculator/server/masina virtuala cu ubuntu server si docker instalat. Programul cu rol de proxy se numeste Nginx Proxy Manager care vine in plus cu interfata grafica fata de Nginx normal si il vom instala intr-un docker container. Pe langa asta vom avea nevoie de un domeniu, daca nu aveti deja, puteti lua unul gratuit. De asemenea, am ales sa pun ns-urile la cloudfare ca sa putem actualiza constant ip-ul nostru public tot cu ajutorul unui docker container. In routerul de acasa trebuie sa deschidem si porturile 443 si 80 catre serverul nostru.

Aplicatia pe care o voi folosi ca exemplu este Plex Media Server instalata tot intr-un docker container. La final o vom putea accesa din internet la https://media.giant.gq Exista o multime de aplicatii care pot rula intr-un docker container (Nextcloud, qBittorrent, MariaDB, Pi-Hole, chiar si solutii complete de mail server), iar prin modul acesta de instalare optimizam resursele sistemului.

[mai mult...]

Cum putem vedea ce drepturi avem pe un folder cu ajutorul programului PowerShell si exportarea acestuia intr-un fisier csv?

De multe ori intr-un folder care este share-uit au mai multe persoane acces si cu diferite drepturi: citire, scriere, modificare si drepturi totale. Metoda clasica prin care putem vedea ce drepturi sunt si cine le are este sa mergem pe folderul respectiv si sa dam click dreapta, apoi Properties – Security – Advanced. Dar prin aceasta varianta nu putem sa exportam un fisier si sa salvam drepturile, avem optiunea doar de vizualizare.
Exista o metoda prin care putem sa facem acelasi lucru ca si cel mai sus mentionat, dar cu oportunitatea de a salva drepturile intr-un csv. Apelam la urmatoare comanda in PowerShell in care trebuie sa intram cu drepturi de administrator:
Get-Childitem -path “folder” | Where-Object {$_.PSIsContainer} | Get-ACL | Select-Object Path -ExpandProperty Access | Export-CSV “unde se doreste salvarea”.

[mai mult...]

Sa se scrie un program care calculeaza valoarea expresiei: P=1*(1/2)*3*(1/4)*5*(1/6)*…n

Operatorii aritmetici binari in C++ sunt reprezentati de multimea formata din caracterele: {+,-,*,/,%}. In tabelul de mai jos putem vedea ce rol indeplineste fiecare din ele:

Operator Denumire Semnificatie
+ adunare determina adunarea a doua variabile sau valori
scadere determina scadere a doua variabile sau valori
* inmultire determina inmultirea a doua variabile sau valori
/ impartire determina impartirea a doua variabile sau valori
% modulo determina restul impartirii a doua variabile sau valori

Cu ajutorul acestor operatori putem face diverse operatii aritmetice in C++. In tabelul de mai jos regasim cateva exemple de operatii realizate cu ajutorul operatorilor aritmetici:

Expresie matematica Rezultat
(presupunem ca avem declarate 2 variabile int a=14 si int b=4)  
a+b 14+4=18
a-b 14-4=10
a*b 14*4=56
a/b 14/4=3
a%b 14%4=2
(b+a)/b 18/4=4
(a+b)%b 18%4=2
(a+b)/3 18/3=6

Observatii:

  1. Impartirea a doua numere returneaza o valoare de tip intreg (catul impartirii) doar daca valorile impartite sunt de tip intreg. Exemplu: int a=10; int b=3; atunci a/b=3 (10/3=10)
  2. In cazul in care impartitorul sau deimpartitul sunt de tipul float sau double (de tip real adica), atunci expresia matematica a/b va intoarce rezultatul impartirii. Exemplu: float a=10; int b=3; atunci a/b=3.33333(3) ( 10.0/3=3.3333(3) )
[mai mult...]

Sa se scrie un program care calculeaza x la puterea y (folosind functia pow)

funcție este un ansamblu de instrucțiuni care prelucrează un set de date de intrare, numite parametri sau argumente și obține un rezultat. Când folosim funcțiile, acestea apar în expresii ca operand, valoarea operandului fiind de fapt rezultatul funcției, obținut în urma prelucrării valorilor curente ale parametrilor.

De exemplu, în C++ nu există nicio operație prin care să calculăm rădăcina pătrată a unui număr real, de exemplu 5–√5. Acest lucru poate fi realizat folosind funcția sqrt, prin apelul sqrt(5); acesta trebuie realizat într-o expresie, de exemplu o afișare:

[mai mult...]

Contorizare consoane si vocale din text

Se citeste un text format din cuvinte ce pot fi despartite prin spatiu sau virgula. Textul citit se termina cu punct sau enter. Sa se contorizeze vocalele si consoanele din acel text. Sa se rezolve problema folosind o bucla repetitiva conditionata posterior.

Forma unei funcții

Despre funcția sqrt (și de fapt despre orice funcții), trebuie cunoscute niște informații specifice, pentru a ști cum și când o putem folosi:

  • numele funcției
  • numărul parametrilor
  • tipul parametrilor
  • tipul rezultatului

Aceste informații sunt precizate printr-un mecanism de declarare a funcției, numit prototip. De exemplu funcția sqrt determină rădăcina pătrată dintr-un număr real (nenegativ) iar rezultatul său este de asemenea număr real. Prototipul său este:

double sqrt(double);

Prototipurile funcțiilor din aceeași categorie sunt grupate într-un fișier header. Acesta trebuie inclus în programul nostru, prin directiva #include. De exemplu, dacă folosim operațiile de de citire/scriere vom include header-ul iostream, iar dacă folosim funcțiile matematice vom include header-ul cmath.

Funcții cu caracter matematic

Denumire Header Prototip Rezultat
abs cstdlib int abs(int x) Valoarea absolută a argumentului, |x||x|, număr întreg
abs, fabs cmath double abs(double x), double fabs(double x) Valoarea absolută a argumentului, |x||x|, număr real
sqrt cmath double sqrt(double x) Rădăcina pătrată a argumentului, x−−√x
pow cmath double pow(double x, double y) Ridicarea la putere, xyxy
sin cmath double sin(double x) Funcția trigonometrică sinus, sinxsin⁡x
cos cmath double cos(double x) Funcția trigonometrică cosinus,cosxcos⁡x
tan cmath double tan(double x) Funcția trigonometrică tangentă,tanxtan⁡x
floor cmath double floor(double x) Cel mai mare întreg mai mic sau egal cu x
ceil cmath double ceil(double x) Cel mai mic întreg mai mare sau egal cu x
[mai mult...]