Indicatori de performanță pentru analitica social media

Sfetcu, Nicolae (2023), Indicatori de performanță pentru analitica social media, IT & C, 2:1, 56-61, DOI: 10.58679/ITIT55807Sfetcu, Nicolae (2023), Indicatori de performanță pentru analitica social media, IT & C, 2:1, 56-61, DOI: 10.58679/IT55807, https://www.internetmobile.ro/indicatori-de-performanta-pentru-analitica-social-media/

 

Performance indicators for social media analytics

Abstract

The algorithms based on social network analytics, natural language processing, complex event processing, and data mining techniques are commonly used by social media analytics software to provide a wide range of analytics capabilities and actionable metrics by managers to obtain critical business information and facilitate effective decision making.

Keywords: analytics, social media, social networks, performance, indicators

Rezumat

Algoritmii bazați pe analitica rețelelor sociale, procesarea limbajului natural, procesarea complexă a evenimentelor și tehnicile de extragere a datelor sunt utilizați în mod obișnuit de software-ul de analitica social media pentru a oferi o gamă largă de capabilități de analiză și valori care pot fi utilizate de manageri pentru obținerea unor informații critice despre afaceri și facilitarea luării deciziilor eficiente

Cuvinte cheie: analitica, social media, rețele sociale, performanță, indicatori

 

IT & C, Volumul 2, Numărul 1, Martie 2023, pp. 56-61
ISSN 2821 – 8469, ISSN – L 2821 – 8469, DOI: 10.58679/ITIT55807
URL: https://www.internetmobile.ro/indicatori-de-performanta-pentru-analitica-social-media/
© 2023 Nicolae Sfetcu. Responsabilitatea conținutului, interpretărilor și opiniilor exprimate revine exclusiv autorilor.

 

Indicatori de performanță pentru analitica social media

Nicolae Sfetcu

nicolae@sfetcu.com

 

Nu există o definiție clară și concisă a termenului de social media cu care toată lumea să fie de acord, iar termenul a fost adesea folosit greșit ca un cuvânt la modă. În ciuda lipsei unei definiții standard, majoritatea academicienilor și practicienilor folosesc termenul de social media pentru a descrie o varietate de canale și platforme online care pot facilita crearea și difuzarea în comun a informațiilor. Caracteristicile descriptive obișnuite ale social media includ social media interactive, generate de utilizatori, colaborative, partajate și diseminarea rapidă a informațiilor. Categoriile de social media definite de Sterne (2010) includ următoarele: forumuri, site-uri de recenzii și opinii, rețele sociale, blogging, microblogging, bookmarking social și partajare media.

În centrul social media, în categoriile enumerate mai sus sunt două concepte care diferențiază aceste canale și platforme de alte tehnologii tradiționale pentru comunicarea mediată de computer – și anume, fluxurile de activitate și grafurile sociale. Comportamentele din rețelele sociale, cum ar fi comunicarea, crearea, partajarea și colaborarea, constituie fluxurile de activitate ale indivizilor. În plus, aceste interacțiuni apar în contextul legăturilor și relațiilor dintre indivizi și rețeaua lor socială de prieteni, adepți și fani – reprezentând graful lor social al conexiunilor.

Aceste idei de fluxuri de activitate și grafuri sociale sunt, de asemenea, semnificative în contextul măsurării rețelelor sociale, deoarece oferă baza pentru cuantificarea și evaluarea acțiunilor și răspunsurilor care generează conținut și conversații pe platformele și canalele de socializare. Aceste valori de bază ale activității la nivel granular pot fi ulterior utilizate pentru a dezvolta modele avansate de măsurare în inițiativele de analitica socială ale unei companii.

Definirea funcțională

Analitica este descoperirea, interpretarea și comunicarea unor tipare semnificative din date. Aceasta implică, de asemenea, aplicarea modelelor de date către o luare eficientă a deciziilor. Cu alte cuvinte, analitica poate fi înțeleasă ca legătura dintre date și luarea eficientă a deciziilor în cadrul unei organizații. Deosebit de valoroasă în domeniile bogate in informații înregistrate, analiza se bazează pe aplicarea simultană a statisticilor, a programării computerului și a cercetărilor operaționale pentru a cuantifica performanța.

Organizațiile pot aplica analitica datelor de afaceri pentru a descrie, prezice și îmbunătăți performanțele afacerii. Concret, domeniile din cadrul analiticii includ analitica predictiva, analitica prescriptiva, managementul deciziilor întreprinderii, analitica descriptiva, analitica cognitiva, analitica Big Data, analitica vânzărilor cu amănuntul, analitica lanțului de aprovizionare, optimizarea aranjării produselor și a unităților de stocare, optimizarea de marketing și modelarea de mix marketing, analitica web, analitica apelurilor, a discursurilor, analize și optimizarea forței de vânzare, modelarea prețurilor și promovării, știința predictivă, analiza riscurilor de credit și analiza fraudelor. Întrucât analiticele pot necesita un calcul extins, algoritmii și software-urile utilizate pentru analitică valorifică cele mai actuale metode în informatică, statistică și matematică.

Analitica social media este procesul de colectare și analiză a datelor din rețelele sociale precum Facebook, Instagram, LinkedIn și Twitter. Este folosită în mod obișnuit de agenții de marketing pentru a urmări conversațiile online despre produse și companii. Un autor a definit-o drept „arta și știința de a extrage informații valoroase ascunse din cantități mari de date semi-structurate și nestructurate de pe rețelele sociale pentru a permite luarea deciziilor informate și perspicace.

Analiza este axată pe înțelegerea trecutului: ce s-a întâmplat și de ce s-a întâmplat. Analitica se concentrează pe motivul pentru care s-a întâmplat și ce se va întâmpla în continuare.

Analitica datelor este un domeniu multidisciplinar. Se utilizează pe scară largă abilități de calculator, matematică, statistici, utilizarea tehnicilor descriptive și a modelelor predictive pentru a obține cunoștințe valoroase din date în timp ce se analizează datele. Informațiile din date sunt utilizate pentru a recomanda acțiuni sau pentru a ghida luarea deciziilor în contextul afacerilor. Astfel, analitica nu are în vedere analize individuale, sau pași de analiză, ci întreaga metodologie. Există o tendință pronunțată de a utiliza termenul de analitică în setările de afaceri, de ex. analitica textului vs. mineritul textului mai generic pentru a sublinia această perspectivă mai largă. Există o utilizare din ce în ce mai mare a termenului de analitică avansată, utilizat de obicei pentru a descrie aspectele tehnice ale analiticii, în special în domeniile emergente, cum ar fi utilizarea tehnicilor de învățare automată, precum rețelele neuronale, arborele de decizii, regresia logistică, analiza regresiei de la liniară la multiplă, clasificarea pentru modelări predictive. De asemenea, include tehnici de învățare automată nesupravegheate, cum ar fi analiza clusterului, analiza componentelor principale, analiza profilului de segmentare și analiza de asociere. (Sfetcu, 2022)

În conformitate cu perspectiva de business intelligence a analiticii social media, adoptăm următoarea definiție de lucru a analiticii social media, așa cum a propus Lovett (Lovett, J. (2011). Social media metrics secrets. Indianapolis, IN: Wiley Publishing, Inc.): „Analitica socială este disciplina care ajută companiile să măsoare, să evalueze și să explice performanța inițiativelor de social media în contextul obiectivelor specifice de afaceri „. Această definiție evidențiază relevanța analiticii social media pentru managementul performanței și obiectivele de afaceri – constructe care definesc însăși noțiunea de business intelligence.

În esență, analitica social media cuprinde practica de definire și adoptare a valorilor adecvate pentru măsurarea succesului inițiativelor de social media în organizații. Este un cadru de măsurare care facilitează un punct de vedere integrat al obiectivelor strategice ale unei organizații, al măsurilor sale de performanță la nivel operațional și a diverselor metrici de social media care pot fi legate de aceste măsuri de performanță.

Putem face diferența între valorile de social media și cele analitice, situându-le pe acestea din urmă ca pe un construct de ordin superior. Acest punct de vedere este în concordanță cu cel al altor cercetători și practicanți. În timp ce metricile sunt în primul rând preocupate de date, tranzacții și informații din trecut, analiticile, pe de altă parte, se bazează și analizează acele valori pentru a genera informații și a informa strategia viitoare. De exemplu, Lovett propune o ierarhie pe mai multe niveluri a măsurilor de social media, de la contorizarea valorilor la valorile fundamentale, rezultatele și valorile afacerii – fiecare nivel construindu-se unul peste celălalt și împreună constituie un program de analitica social media. Trebuie subliniat totuși că analitica acționabilă necesită metrici bine concepute și, fără un set corect de măsurători descriptive la nivel operațional, organizațiile nu vor putea descoperi tipare și obține informații pentru o strategie de afaceri eficientă.

Utilizare și indicatori de performanță

În timp ce caracteristicile și capabilitățile specifice soluțiilor de analitica a rețelelor de socializare variază foarte mult între furnizori, majoritatea software-ului oferă suport pentru cazuri de utilizare standard care se aplică într-o gamă largă de companii.

Algoritmii bazați pe analitica rețelelor sociale, procesarea limbajului natural, procesarea complexă a evenimentelor și tehnicile de extragere a datelor sunt utilizați în mod obișnuit de software-ul de analitica social media pentru a oferi o gamă largă de capabilități de analiză și valori care pot fi utilizate de manageri pentru obținerea unor informații critice despre afaceri și facilitarea luării deciziilor eficiente (Melville și colab., 2009; Luckham, 2011).

Pentru început, mulți analiști sunt de acord că întreprinderile folosesc adesea analitica social media din câteva motive comune. Principalii factori de afaceri pentru analitica social media includ: identificarea avocaților și a influențatorilor; înțelegerea sentimentului; identificarea segmentelor de public; măsurarea reputației mărcii și a ponderii vocii; și determinarea eficacității mesajelor de marketing (Lovett, 2011; Petrocelli, 2013; Stodder, 2012). Mai recent, s-a pus, de asemenea, accentul pe includerea capabilităților de analiză predictivă în software-ul de analitica socială pentru a permite companiilor să descopere tipare și să anticipeze impactul valorilor actuale, cum ar fi sentimentul asupra viitoarelor activități de socializare (Petrocelli, 2013; Stodder, 2012).

Tabelul de mai jos rezumă câteva cazuri de utilizare obișnuite și întrebările subiacente la care întreprinderile doresc să răspundă prin analitica rețelelor sociale, împreună cu tehnici de analiză care permit aceste cazuri de utilizare și mostre de valori care pot fi de interes pentru management.

După cum se evidențiază în Tabel, măsurarea eficientă a rețelelor sociale cuprinde o combinație de valori derivate prin tehnici de analiză multiple și multiple metrici care trebuie să fie întrețesute împreună pentru a extrage semnificația și ideile relevante pentru afacere. De asemenea, complexitatea tehnicilor de analiză variază în funcție de contextul afacerii și de sfera de cunoștințe tactice sau strategice dorite. Un program holistic de analitica rețelelor sociale ar trebui să includă în mod ideal mai multe cazuri de utilizare care să permită monitorizarea, descoperirea și capacitățile predictive care să fie utilizate în procesul de luare a deciziilor.

 

Tabel: Obiective, cerințe și rezultate în analitica social media

Cazuri de utilizare obișnuite pentru analitica social media Perspectivă de afaceri necesare Activarea tehnicilor de analitica rețelelor sociale Valori relevante privind performanța în rețelele sociale
Rețele sociale
Audiența
Segmentare
Ce segmente trebuie vizate pentru achiziție, creștere sau păstrare? Cine sunt susținătorii și influențele pentru marcă sau produs? Analiza rețelelor sociale Avocații activi pledează pentru influență
Rețele sociale
Informație
Descoperire
Care sunt subiectele sau temele relevante pentru afaceri noi sau emergente?
Apar noi comunități de influență?
Prelucrarea limbajului natural
Procesarea complexă a evenimentelor
Tendințele subiectelor
Raportul sentimentelor
Expunere și impact pe rețelele sociale Care sunt percepțiile mărcii în rândul constituenților?
Cum se compară marca cu concurenții?
Ce canale de socializare sunt utilizate pentru discuții?
Analiza rețelelor sociale
Prelucrarea limbajului natural
Conversația atinge viteza de participare a implicării audienței vocale
Rețele sociale
Comportament
Inferențe
Care este relația dintre subiectele și problemele relevante pentru afaceri?
Care sunt cauzele intenției exprimate (cumpărare, agitare, etc.)?
Procesarea limbajului natural
Clustering în mineritul de date
Corelări de interese sau preferințe (temă)
Matrici cu afinitate de subiecte

 

După cum este subliniat în Tabel, există diverse opțiuni disponibile organizațiilor pentru implementarea și instituționalizarea programelor lor de analitica social media. Ceea ce este important este ca analitica social media să fie abordată ca o disciplină care transcende doar instrumentele și aplicațiile tehnologice. Ar trebui să fie considerată o practică și un proces care poate permite întreprinderilor să utilizeze datele sociale ca element de intrare crucial în deciziile și strategia de afaceri. În acest sens, analitica social media trebuie să fie situată și integrată ca parte a practicii generale de business intelligence din organizație.

Bibliografie

  • Lovett, J. (2011). Social media metrics secrets. Indianapolis, IN: Wiley Publishing, Inc.
  • Luckham, D. C. (2011). Event processing for business:    Organizing the real-time enterprise. Hoboken, NJ: Wiley Publishing, Inc.
  • Melville, P., Sindhwani, V., & Lawrence, R. (2009). Social media analytics: Channeling the power of the blogosphere for marketing insight. Proc.of the WIN,
  • Sfetcu, N (2022). Analitica rețelelor sociale. MultiMedia Publishing, ISBN 978-606-033-704-1, DOI: 10.58679/TW12414
  • Sterne, J. (2010). Social media metrics: How to measure and optimize your marketing investment. Hoboken, NJ: John Wiley.
  • Stodder, D. (2012). Customer analytics in the age of social media. ().TDWI Research.

 

Sursa: Umar Ruhi, Social Media Analytics as a Business Intelligence Practice: Current Landscape & Future Prospects, în Journal of Internet Social Networking & Virtual Communities, Vol. 2012 (2012), Article ID 920553, DOI: 10.5171/2012.920553. Copyright © 2014. Umar Ruhi. Licența CC-BY 3.0. Traducere și adaptare Nicolae Sfetcu

 

CC BY SA 4.0

Acesta este un articol cu Acces Deschis (Open Access) distribuit în conformitate cu termenii licenței de atribuire Creative Commons CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/ ).

Funcții PHP definite de utilizator în dezvoltarea WordPress

Sfetcu, Nicolae (2023), Funcții PHP definite de utilizator în dezvoltarea WordPress, IT & C, 2:1, 37-40, DOI: 10.58679/IT37237Sfetcu, Nicolae (2023), Funcții PHP definite de utilizator în dezvoltarea WordPress, IT & C, 2:1, 37-40, DOI: 10.58679/IT37237, https://www.internetmobile.ro/functii-php-definite-de-utilizator-in-dezvoltarea-wordpress/

 

User-defined PHP functions in WordPress development

Abstract

PHP defines a wide range of functions as reusable blocks of statements in the core language, and many are also available in various extensions. These functions are well documented in the online PHP documentation. Custom functions can be defined by the developer. A function will not run automatically when a page loads, it can be called from anywhere and anytime within the program. PHP supports type declarations on function parameters, which are applied at runtime.

Keywords: PHP function, WordPress development, PHP, WordPress

Rezumat

PHP definește o gamă largă de funcții ca blocuri reutilizabile de instrucțiuni în limbajul de bază, și multe sunt, de asemenea, disponibile în diferite extensii. Aceste funcții sunt bine documentate în documentația online PHP. Funcțiile personalizate pot fi definite de dezvoltator. O funcție nu se va executa automat când se încarcă o pagină, ea poate fi apelată de oriunde și oricând în cadrul programului. PHP acceptă declarații de tip privind parametrii funcției, care sunt aplicate în timpul execuției.

Cuvinte cheie: funcții PHP, dezvoltarea WordPress, PHP, WordPress

 

IT & C, Volumul 2, Numărul 1, Martie 2023, pp. 37-40
ISSN 2821 – 8469, ISSN – L 2821 – 8469
URL: https://www.internetmobile.ro/functii-php-definite-de-utilizator-in-dezvoltarea-wordpress/
© 2023 Nicolae Sfetcu. Responsabilitatea conținutului, interpretărilor și opiniilor exprimate revine exclusiv autorilor.

 

Funcții PHP definite de utilizator în dezvoltarea WordPress

Nicolae Sfetcu

nicolae@sfetcu.com

 

O funcție poate fi definită folosind o sintaxă precum următoarea:

Exemplul #1 Pseudocod pentru a demonstra utilizările funcțiilor

 

<?php
function foo($arg_1, $arg_2, /* …, */ $arg_n)
{
echo „Example function.\n”;
return $retval;
}
?>

 

Orice cod PHP valid poate apărea în interiorul unei funcții, chiar și alte funcții și definiții de clasă.

Numele funcțiilor urmează aceleași reguli ca și alte etichete în PHP. Un nume valid de funcție începe cu o literă sau liniuță de subliniere, urmată de orice număr de litere, cifre sau liniuțe de subliniere. Ca expresie regulată, ar fi exprimată astfel: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$.

Sfat: Consultați și Ghidul de denumire a zonei utilizatorului.

Funcțiile nu trebuie definite înainte de a fi referite, cu excepția cazului în care o funcție este definită condiționat, așa cum se arată în cele două exemple de mai jos.

Când o funcție este definită într-o manieră condiționată, cum ar fi cele două exemple prezentate. Definiția sa trebuie procesată înainte de a fi apelată.

Exemplul #2 Funcții condiționate

 

<?php

$makefoo = true;

/* Nu putem a apela foo() de aici
deoarece nu există încă,
dar putem apela bar() */

bar();

if ($makefoo) {
function foo()
{
echo „I don’t exist until program execution reaches me.\n”;
}
}

/* Acum putem a apela în siguranță foo()
deoarece $makefoo a fost evaluat la adevărat */

if ($makefoo) foo();

function bar()
{
echo „I exist immediately upon program start.\n”;
}

?>

 

Exemplul #3 Funcții în cadrul funcțiilor

 

<?php
function foo()
{
function bar()
{
echo „I don’t exist until foo() is called.\n”;
}
}

/*  Nu putem a apela bar() încă
deoarece nu există. */

foo();

/* Acum putem apela bar(),
Procesarea lui foo()
a făcut acest lucru accesibil. */

bar();

?>

 

Toate funcțiile și clasele din PHP au sfera globală – pot fi apelate în afara unei funcții chiar dacă au fost definite în interior și invers.

PHP nu acceptă supraîncărcarea funcțiilor și nici nu este posibilă nedefinirea sau redefinirea funcțiilor declarate anterior.

Notă: Numele de funcții nu țin cont de majuscule și minuscule pentru caracterele ASCII de la A la Z, deși de obicei este o formă bună de a apela funcții așa cum apar în declarația lor.

Atât numărul variabil de argumente, cât și argumentele implicite sunt acceptate în funcții. Consultați și referințele de funcție pentru func_num_args(), func_get_arg() și func_get_args() pentru mai multe informații.

Este posibil să apelați funcții recursive în PHP.

Exemplul #4 Funcții recursive

 

<?php
function recursion($a)
{
if ($a < 20) {
echo „$a\n”;
recursion($a + 1);
}
}
?>

 

Notă: Apelurile recursive de funcții/metode cu peste 100-200 de niveluri de recursivitate pot distruge stiva și pot provoca o terminare a scriptului curent. În special, recursiunea infinită este considerată o eroare de programare.

 

Sursa: PHP Manual, licența CC BY 3.0.

 

CC BY SA 4.0Acesta este un articol cu Acces Deschis (Open Access) distribuit în conformitate cu termenii licenței de atribuire Creative Commons CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/).

Practici comune pentru programarea în C

Sfetcu, Nicolae (2023), Practici comune pentru programarea în C, IT & C, 2:1, 30-36, DOI: 10.58679/IT80750Sfetcu, Nicolae (2023), Practici comune pentru programarea în C, IT & C, 2:1, 30-36, DOI: 10.58679/IT80750, https://www.internetmobile.ro/practici-comune-pentru-programarea-in-c/

 

Common Practices for C Programming

Abstract

With widespread use, a number of common practices and conventions have evolved to help avoid errors in C programming. These are both a demonstration of applying good software engineering principles to a language, and an indication of C’s limitations. Although few are universally used and some are controversial, each enjoys wide use.

Keywords: programming, C programming language, C programming

Rezumat

Odată cu utilizarea pe scară largă, o serie de practici și convenții comune au evoluat pentru a ajuta la evitarea erorilor în programele C. Acestea sunt simultan o demonstrație a aplicării bunelor principii de inginerie software într-un limbaj, și o indicație a limitărilor C. Deși puține sunt utilizate universal, iar unele sunt controversate, fiecare dintre acestea se bucură de o utilizare largă.

Cuvinte cheie: programare, limbajul de programare C, programarea în C

 

IT & C, Volumul 2, Numărul 1, Martie 2023, pp. 30-36
ISSN 2821 – 8469, ISSN – L 2821 – 8469, DOI: 10.58679/IT80750
URL: https://www.internetmobile.ro/practici-comune-pentru-programarea-in-c/
© 2023 Nicolae Sfetcu. Responsabilitatea conținutului, interpretărilor și opiniilor exprimate revine exclusiv autorilor.

 

Practici comune pentru programarea în C

Nicolae Sfetcu

nicolae@sfetcu.com

 

Odată cu utilizarea pe scară largă, o serie de practici și convenții comune au evoluat pentru a ajuta la evitarea erorilor în programele C. Acestea sunt simultan o demonstrație a aplicării bunelor principii de inginerie software într-un limbaj, și o indicație a limitărilor C. Deși puține sunt utilizate universal, iar unele sunt controversate, fiecare dintre acestea se bucură de o utilizare largă.

Matrice multidimensionale dinamice

Deși matricele unidimensionale sunt ușor de creat dinamic folosind malloc, iar matricele multidimensionale cu dimensiuni fixe sunt ușor de creat folosind caracteristica de limbaj încorporată, matricele multidimensionale dinamice sunt mai complicate. Există o serie de moduri diferite de a le crea, fiecare cu compromisuri diferite. Cele mai populare două moduri de a le crea sunt:

  • Ele pot fi alocate ca un singur bloc de memorie, la fel ca matricele multidimensionale statice. Acest lucru necesită ca matricea să fie dreptunghiulară (adică sub-tabele de dimensiuni mai mici sunt statice și au aceeași dimensiune). Dezavantajul este că sintaxa declarației pointerului este puțin complicată pentru programatorii începători. De exemplu, dacă s-ar dori să creeze o matrice de întregi de 3 coloane și rânduri rows, cineva ar scrie

int (*multi_array)[3] = malloc(rows * sizeof(int[3]));

(Rețineți că aici multi_array este un pointer către o matrice de 3 întregi.)

Din cauza interschimbabilității matrice-pointer, puteți indexa acest lucru la fel ca și matricele multidimensionale statice, de ex. multi_array[5][2] este elementul de pe al 6-lea rând și pe a 3-a coloană.

  • Matricele multidimensionale dinamice pot fi alocate prin alocarea mai întâi a unei matrice de pointeri, apoi alocarea submatricelor și stocarea adreselor acestora în matricea de pointeri.[1] (Această abordare este cunoscută și ca vector Iliffe). Sintaxa pentru accesarea elementelor este aceeași ca și pentru tablourile multidimensionale descrise mai sus (chiar dacă sunt stocate foarte diferit). Această abordare are avantajul capacității de a realiza matrice neregulate (adică cu sub-matrice de diferite dimensiuni). Cu toate acestea, de asemenea, utilizează mai mult spațiu și necesită mai multe niveluri de direcționare indirectă pentru a indexa și poate avea performanțe mai slabe ale memoriei cache. De asemenea, necesită multe alocări dinamice, fiecare dintre acestea putând fi costisitoare.

Pentru mai multe informații, consultați întrebările frecvente comp.lang.c, întrebarea 6.16.

În unele cazuri, utilizarea tablourilor multidimensionale poate fi abordată cel mai bine ca o matrice de structuri. Înainte ca structurile de date definite de utilizator să fie disponibile, o tehnică comună a fost definirea unei matrice multidimensionale, în care fiecare coloană conține informații diferite despre rând. Această abordare este folosită frecvent și de programatorii începători. De exemplu, coloanele unei matrice de caractere bidimensionale pot conține nume, prenume, adresă etc.

În astfel de cazuri, este mai bine să definiți o structură care conține informațiile care au fost stocate în coloane și apoi să creați o matrice de pointeri către acea structură. Acest lucru este valabil mai ales atunci când numărul de puncte de date pentru o anumită înregistrare poate varia, cum ar fi melodiile dintr-un album. În aceste cazuri, este mai bine să creați o structură pentru album care să conțină informații despre album, împreună cu o matrice dinamică pentru lista de melodii de pe album. Apoi, o serie de pointeri către structura albumului poate fi folosită pentru a stoca colecția.

  • Un alt mod util de a crea o matrice multidimensională dinamică este aplatizarea și indexarea manuală a matricei. De exemplu, o matrice bidimensională cu dimensiunile x și y are elemente x*y, prin urmare poate fi creată de

int dynamic_multi_array[x*y];

Indexul x este puțin mai complicat decât înainte, dar poate fi obținut totuși prin y*i+j. Apoi accesați matricea cu

static_multi_array[i][j];dynamic_multi_array[y*i+j];

Mai multe exemple cu dimensiuni mai mari:

int dim1[w];int dim2[w*x];int dim3[w*x*y];int dim4[w*x*y*z]; dim1[i]dim2[w*j+i];dim3[w*(x*i+j)+k] // index is k + w*j + w*x*idim4[w*(x*(y*i+j)+k)+l] // index is w*x*y*i + w*x*j + w*k + l

Rețineți că w*(x*(y*i+j)+k)+l este egal cu w*x*y*i + w*x*j + w*k + l, dar utilizează mai puține operații (metoda lui Horner ). Folosește același număr de operații ca și accesarea unei matrice statice prin dim4[i][j][k][l], deci nu ar trebui să fie mai lent de utilizat.

Avantajul utilizării acestei metode este că matricea poate fi trecută liber între funcții fără a cunoaște dimensiunea matricei în momentul compilării (deoarece C o vede ca o matrice unidimensională, deși este încă necesară o modalitate de a trece dimensiunile), iar întreaga matrice este contiguă în memorie, deci accesarea elementelor consecutive ar trebui să fie rapidă. Dezavantajul este că poate fi dificil la început să te obișnuiești cu modul de indexare a elementelor.

Constructori și destructori

În majoritatea limbajelor orientate pe obiecte, obiectele nu pot fi create direct de către un client care dorește să le folosească. În schimb, clientul trebuie să ceară clasei să construiască o instanță a obiectului folosind o rutină specială numită constructor. Constructorii sunt importanți deoarece permit unui obiect să impună invarianți cu privire la starea sa internă pe toată durata de viață. Destructorii, chemați la sfârșitul duratei de viață a unui obiect, sunt importanți în sistemele în care un obiect deține acces exclusiv la o anumită resursă și este de dorit să se asigure că eliberează aceste resurse pentru a fi utilizate de către alte obiecte.

Deoarece C nu este un limbaj orientat pe obiecte, nu are suport încorporat pentru constructori sau destructori. Nu este neobișnuit ca clienții să aloce și să inițializeze în mod explicit înregistrări și alte obiecte. Cu toate acestea, acest lucru duce la un potențial de erori, deoarece operațiunile asupra obiectului pot eșua sau se pot comporta imprevizibil dacă obiectul nu este inițializat corespunzător. O abordare mai bună este să aveți o funcție care creează o instanță a obiectului, eventual luând parametrii de inițializare, ca în acest exemplu:

struct string {    size_t size;    char *data;}; struct string *create_string(const char *initial) {    assert (initial != NULL);    struct string *new_string = malloc(sizeof(*new_string));    if (new_string != NULL) {        new_string->size = strlen(initial);        new_string->data = strdup(initial);    }    return new_string;}

În mod similar, dacă este lăsat la latitudinea clientului să distrugă obiectele corect, acesta poate să nu facă acest lucru, provocând scurgeri de resurse. Este mai bine să aveți un destructor explicit care este întotdeauna folosit, cum ar fi acesta:

void free_string(struct string *s) {    assert (s != NULL);    free(s->data);  ”/* free memory held by the structure */”    free(s);        ”/* free the structure itself */”}

Este adesea util să combinați destructorii cu indicatorii eliberați nuli.

Uneori este util să ascundeți definiția obiectului pentru a vă asigura că clientul nu îl alocă manual. Pentru a face acest lucru, structura este definită în fișierul sursă (sau într-un fișier antet privat care nu este disponibil utilizatorilor) în loc de fișierul antet și o declarație este pusă în fișierul antet:

struct string;struct string *create_string(const char *initial);void free_string(struct string *s);

Pointeri eliberați nuli

După cum s-a discutat mai devreme, după ce free() a fost apelat pe un pointer, acesta devine un pointer suspendat. Mai rău, majoritatea platformelor moderne nu pot detecta când este folosit un astfel de pointer înainte de a fi reatribuit.

O soluție simplă la aceasta este să vă asigurați că orice pointer este setat la un pointer nul imediat după ce a fost eliberat[2]:

free(p);p = NULL;

Spre deosebire de pointerii suspendați, o excepție hardware va apărea pe multe arhitecturi moderne când un pointer nul este dereferențiat. De asemenea, programele pot include verificări de eroare pentru valoarea nulă, dar nu pentru o valoare a pointerului suspendat. Pentru a vă asigura că se face în toate locațiile, poate fi utilizată o macrocomandă:

#define FREE(p)   do { free(p); (p) = NULL; } while(0)

(Pentru a vedea de ce macro-ul este scris în acest fel, se pot folosi convențiile Macro.) De asemenea, atunci când se utilizează această tehnică, destructorii ar trebui să aducă la zero pointerul pe care le-au trecut, iar argumentul lor trebuie să fie transmis prin referință pentru a permite acest lucru. De exemplu, iată destructorul de la Constructori și destructori actualizat:

void free_string(struct string **s) {    assert(s != NULL  &&  *s != NULL);    FREE((*s)->data);  ”/* free memory held by the structure */”    FREE(*s);          ”/* free the structure itself */”    *s=NULL;           ”/* zero the argument */”}

Din păcate, acest idiom nu va face nimic altor pointeri care ar putea indica memoria eliberată. Din acest motiv, unii experți C consideră acest idiom ca fiind periculos din cauza creării unui fals sentiment de securitate.

Convenții macro

Deoarece macrocomenzile preprocesorului din C funcționează folosind înlocuirea simplă a simbolurilor, ele sunt predispuse la o serie de erori de confuzie, dintre care unele pot fi evitate urmând un set simplu de convenții:

  1. Plasarea parantezelor în jurul argumentelor macro ori de câte ori este posibil. Acest lucru asigură că, dacă sunt expresii, ordinea operațiilor nu afectează comportamentul expresiei. De exemplu:
    1. Greșit: #define square(x) x*x
    2. Mai corect: #define square(x) (x)*(x)
  2. Plasarea parantezelor în jurul întregii expresii dacă este o singură expresie. Din nou, acest lucru evită schimbările de sens datorită ordinii operațiilor.
    1. Greșit: #define square(x) (x)*(x)
    2. Mai corect: #define square(x) ((x)*(x))
    3. Periculos, amintiți-vă că înlocuiește cuvintele din text. Să presupunem că codul tău este square (x++), după invocarea macro-ului x va fi incrementat cu 2
  3. Dacă o macrocomandă produce mai multe instrucțiuni sau declară variabile, aceasta poate fi înfășurată într-o buclă do { … } while(0), fără punct și virgulă de sfârșit. Acest lucru permite macrocomenzii să fie folosită ca o singură instrucțiune în orice locație, cum ar fi corpul unei instrucțiuni if, permițând totuși plasarea punctului și virgulă după invocarea macrocomenzii fără a crea o instrucțiune nulă[3][4][5][6][7][8]. Trebuie avut grijă ca orice variabilă nouă să nu mascheze potențial porțiuni din argumentele macrocomenzii.
    1. Greșit: #define FREE(p) free(p); p = NULL;
    2. Mai corect:: #define FREE(p) do { free(p); p = NULL; } while(0)
  4. Evitarea folosirii unui argument macro de două sau mai multe ori în interiorul unei macrocomenzi, dacă este posibil; acest lucru cauzează probleme cu argumentele macro care conțin efecte secundare, cum ar fi atribuirile.
  5. Dacă o macrocomandă poate fi înlocuită cu o funcție în viitor, luați în considerare denumirea acesteia ca o funcție.
  6. Prin convenție, valorile preprocesorului și macrocomenzile definite de #define sunt denumite cu toate literele mari[9][10][11][12][13].

Există un număr mare de instrucțiuni pentru stilul C.

Bibliografie

Note

[1] Adam N. Rosenberg. [http://www.the-adam.com/adam/rantrave/st02.pdf „A Description of One Programmer’s Programming Style Revisited”]. 2001. p. 19-20.

[2] comp.lang.c FAQ list: „Why isn’t a pointer null after calling free?” mentions that „it is often useful to set [pointer variables] to NULL immediately after freeing them”.

[3] „comp.lang.c FAQ: What’s the best way to write a multi-statement macro?”.

[4] „The C Preprocessor: Swallowing the Semicolon”

[5] „Why use apparently meaningless do-while and if-else statements in macros?”

[6] „do {…} while (0) in macros”

[7] „KernelNewbies: FAQ / DoWhile0”.

[8] „PRE10-C. Wrap multistatement macros in a do-while loop”.

[9] „What is the history for naming constants in all uppercase?”

[10] „The Preprocessor”.

[11] „C Language Style Guide”

[12] „non capitalized macros are always evil”

[13] „Exploiting the Preprocessor for Fun and Profit”

 

Sursa: Traducere și adaptare din Wikibooks de Nicolae Sfetcu sub licență CC BY-SA 3.0

 

CC BY SA 4.0Acesta este un articol cu Acces Deschis (Open Access) distribuit în conformitate cu termenii licenței de atribuire Creative Commons CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/).

Performanța și standardele rețelelor de telecomunicații 5G

Sfetcu, Nicolae (2023), Performanța și standardele rețelelor de telecomunicații 5G, IT & C, 2:1, 13-17, DOI: 10.58679/IT52354Sfetcu, Nicolae (2023), Performanța și standardele rețelelor de telecomunicații 5G, IT & C, 2:1, 13-17, DOI: 10.58679/IT52354, https://www.internetmobile.ro/performanta-si-standardele-retelelor-de-telecomunicatii-5g/

 

Performance and standards of 5G telecommunication networks

Abstract

Specific simulators and tests are used to accurately measure 5G performance. Originally, the term was associated with the International Telecommunication Union’s IMT-2020 standard, which required a theoretical maximum download speed of 20 gigabits per second and 10 gigabits per second upload speed, along with other requirements. Then, the 3GPP industry standards group chose the 5G NR (New Radio) standard together with LTE as a proposal for transmission to the IMT-2020 standard.

Keywords: 5G, communications, telecommunications, performance, standards, 3GPP, 5G NR

Rezumat

Pentru măsurarea precisă a performanței 5G se utilizează simulatoare și teste specifice. Inițial, termenul a fost asociat cu standardul IMT-2020 al Uniunii Internaționale de Telecomunicații, care necesita o viteză maximă teoretică de descărcare de 20 gigabiți pe secundă și 10 gigabiți pe secundă viteza de încărcare, împreună cu alte cerințe. Apoi, grupul de standarde industriale 3GPP a ales standardul 5G NR (New Radio) împreună cu LTE ca propunere pentru transmitere la standardul IMT-2020.

Cuvinte cheie: 5G, comunicații, telecomunicații, performanțe, standarde, 3GPP, 5G NR

 

IT & C, Volumul 2, Numărul 1, Martie 2023, pp. 13-17
ISSN 2821 – 8469, ISSN – L 2821 – 8469, DOI: 10.58679/IT52354
URL: https://www.internetmobile.ro/performanta-si-standardele-retelelor-de-telecomunicatii-5g/
© 2023 Nicolae Sfetcu. Responsabilitatea conținutului, interpretărilor și opiniilor exprimate revine exclusiv autorilor.

 

Performanța și standardele rețelelor de telecomunicații 5G

Nicolae Sfetcu

nicolae@sfetcu.com

 

Performanţa

Viteza

Vitezele 5G vor varia de la ~50 Mbps la peste 1 Gbps. Cele mai mari viteze 5G ar fi în benzile mmWave și pot ajunge la 4 Gb/s cu agregarea purtătorului și MIMO.

Sub-6 GHz 5G (banda medie 5G), de departe cea mai comună, va oferi de obicei între 100 și 4400 Mbps, dar va avea o rază mult mai mare decât mmWave, în special în aer liber. C-Band (n77/n78) va fi implementat de diverși operatori americani în 2022. C-Band fusese planificat să fie implementat de Verizon și AT&T la începutul lunii ianuarie 2022, dar a fost amânat din cauza conflictelor ridicate de Administrația Federală a Aviației.[1] [2]

Spectrul de bandă joasă oferă cea mai mare gamă, prin urmare o zonă de acoperire mai mare pentru un anumit site, dar vitezele sale sunt mai mici decât benzile medii și înalte.

Lucrările la tehnologia 5.5G sunt de așteptat să ofere rate de 20 Gbps în aval și 10 Gbps în amonte, posibil între 2025 și 2030.

Latența

În 5G, „latența aerului” este de ordinul 8-12 milisecunde. Latența serverului trebuie adăugată la „latența aerului” pentru majoritatea comparațiilor. Verizon a raportat că latența pentru implementarea sa inițială a 5G este de 30 ms: Serverele Edge din apropierea turnurilor pot reduce latența la 10–20 ms; 1–4 ms vor fi extrem de rare timp de ani de zile în afara laboratorului. Latența este mult mai mare în timpul transferului; variind de la 50–500 milisecunde în funcție de tipul de transfer. Reducerea latenței de transfer este un domeniu continuu de cercetare și dezvoltare.

Rata de eroare

5G utilizează modularea adaptivă și schema de codare (MCS) pentru a menține rata de eroare a biților extrem de scăzută. Ori de câte ori rata de eroare depășește un prag (foarte scăzut), transmițătorul va comuta la un MCS mai scăzut, care va fi mai puțin predispus la erori. În acest fel viteza este sacrificată pentru a asigura o rată de eroare aproape zero.

Gama

Gama 5G depinde de mulți factori; frecvența este cea mai importantă dintre toate. Semnalele mmWave tind să aibă o rază de acțiune de doar câteva sute de metri, în timp ce semnalele de bandă joasă au, în general, o rază de acțiune de câțiva kilometri.

Deoarece există o mulțime de exagerări de marketing cu privire la ceea ce poate oferi 5G, simulatoarele și testele de conducere sunt utilizate pentru măsurarea precisă a performanței 5G.

Standarde

Inițial, termenul a fost asociat cu standardul IMT-2020 al Uniunii Internaționale de Telecomunicații, care necesita o viteză maximă teoretică de descărcare de 20 gigabiți pe secundă și 10 gigabiți pe secundă viteza de încărcare, împreună cu alte cerințe.[3] Apoi, grupul de standarde industriale 3GPP a ales standardul 5G NR (New Radio) împreună cu LTE ca propunere pentru transmitere la standardul IMT-2020.[4][5]

5G NR poate include frecvențe inferioare (FR1), sub 6 GHz, și frecvențe mai mari (FR2), peste 24 GHz. Cu toate acestea, viteza și latența în implementările timpurii FR1, folosind software-ul 5G NR pe hardware 4G (non-autonom), sunt doar puțin mai bune decât noile sisteme 4G, estimate la 15 până la 50% mai bune. [6][7][8]

IEEE acoperă mai multe zone ale 5G, cu un accent central în secțiunile cu fir dintre capul radio la distanță (RRH) și unitatea de bandă de bază (BBU). Standardele 1914.1 se concentrează pe arhitectura de rețea și pe împărțirea conexiunii dintre RRU și BBU în două secțiuni cheie. Unitatea radio (RU) către unitatea de distribuție (DU) fiind NGFI-I (Interfața Fronthaul de generație următoare) și DU către unitatea centrală (CU) fiind interfața NGFI-II permițând o rețea mai diversă și mai rentabilă. NGFI-I și NGFI-II au valori de performanță definite care ar trebui compilate pentru a se asigura că diferite tipuri de trafic definite de ITU pot fi transportate. Standardul IEEE 1914.3 creează un nou format de cadru Ethernet capabil să transporte date IQ într-un mod mult mai eficient în funcție de scindarea funcțională utilizată. Aceasta se bazează pe definiția 3GPP a diviziunilor funcționale. Mai multe standarde de sincronizare a rețelei din cadrul grupurilor IEEE sunt actualizate pentru a se asigura că acuratețea temporizării rețelei la IF este menținută la nivelul necesar pentru traficul transportat.

5G NR

5G NR (New Radio) este o nouă interfață aeriană dezvoltată pentru rețeaua 5G.[9] Se presupune că acesta este standardul global pentru interfața aeriană a rețelelor 3GPP 5G.[10]

Implementări pre-standard

5GTF: Rețeaua 5G implementată de operatorul american Verizon pentru acces wireless fix la sfârșitul anilor 2010 utilizează o specificație pre-standard cunoscută sub numele de 5GTF (Forumul tehnic Verizon 5G). Serviciul 5G oferit clienților în acest standard este incompatibil cu 5G NR. Există planuri de upgrade de la 5GTF la 5G NR „Odată ce [acesta] îndeplinește specificațiile noastre stricte pentru clienții noștri”, conform Verizon.[11]

5G-SIG: specificație pre-standard pentru 5G dezvoltată de KT Corporation. Desfășurat la Jocurile Olimpice de iarnă Pyeongchang 2018.[12]

Internetul Lucrurilor

În Internetul lucrurilor (IoT), 3GPP va prezenta evoluția NB-IoT și eMTC (LTE-M) ca tehnologii 5G pentru cazul de utilizare LPWA (Low Power Wide Area).[13]

Bibliografie

  1. „Visible, US Mobile Also Get Verizon’s New 5G System”. PCMAG.
  2. Lawler, Richard (January 3, 2022). „Verizon and AT&T cut a deal with the FAA, will hit the brakes on 5G C-band rollouts”. The Verge.
  3. „Minimum requirements related to technical performance for IMT-2020 radio interface(s)” (PDF). Arhivat
  4. „The first real 5G specification has officially been completed”. The Verge. Arhivat
  5. Flynn, Kevin. „Workshop on 3GPP submission towards IMT-2020”. 3gpp.org. Arhivat
  6. „5G NR Only 25% to 50% Faster, Not Truly a New Generation”. wirelessone.news. Arhivat
  7. „Factcheck: Large increase of capacity going from LTE to 5G low and mid-band”. wirelessone.news. Arhivat
  8. Teral, Stephane (January 30, 2019). „5G best choice architecture” (PDF). ZTE. Arhivat
  9. „What is 5G New Radio (5G NR)”. 5g.co.uk. Arhivat
  10. „Making 5G New Radio (NR) a Reality – The Global 5G Standard – IEEE Communications Society”. comsoc.org. Arhivat
  11. Kastrenakes, Jacob (October 2, 2018). „Is Verizon’s 5G home internet real 5G?”. The Verge. Arhivat
  12. „Mobile industry eyes 5G devices in early 2019”. telecomasia.net. Arhivat
  13. „With LTE-M and NB-IoT You’re Already on the Path to 5G”. sierrawireless.com. Arhivat

 

Sursa: Sfetcu, Nicolae (2022). Rețele de comunicații 5G, MultiMedia Publishing, ISBN ISBN 978-606-033-633-4, https://www.telework.ro/ro/e-books/retele-de-comunicatii-5g/

 

Creative Commons CC BY 4.0Acesta este un articol cu Acces Deschis (Open Access) distribuit în conformitate cu termenii licenței de atribuire Creative Commons CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/), care permite utilizarea, distribuirea și reproducerea fără restricții pe orice mediu, cu condiția ca lucrarea originală să fie citată corect.

1 32 33 34 35 36 37 38 44