Məzmuna keçin
  • Kompüter elmləri əsaslı müzakirə kateqoriyası

    22 27
    22 Mövzu
    27 Yazı
    codexC
    Singleton pattern – proqramlaşdırmada geniş istifadə olunan bir dizayn nümunəsidir. Bu nümunənin əsas məqsədi — bir class-ın yalnız bir nüsxəsinin (instance) yaradılmasını təmin etmək və bu nüsxəyə qlobal səviyyədə çıxış imkanının olmasıdır. Bu pattern, proqram boyu paylaşılan resursların — məsələn, konfiqurasiya məlumatları, verilənlər bazası bağlantısı və s. — mərkəzləşdirilmiş şəkildə idarə olunması üçün çox yararlıdır. Məsələn: Singleton class-ın yaradılması class Singleton { constructor() { if (!Singleton.instance) { Singleton.instance = this; } return Singleton.instance; } someMethod() { console.log("Singleton method called"); } } Qeyd: Singleton.instance: Bu statik dəyişən artıq yaradılmış nüsxəni yadda saxlamaq üçün istifadə olunur. constructor(): Classın yaradılmasında Singleton.instance yoxlanılır. Əgər belə bir instansiya yoxdursa, this (yeni instansiya) dəyişənə təyin olunur və o qaytarılır. someMethod(): Class daxilində sadə bir metoddur, misal üçün konsola mesaj çıxarır. 🧪 İstifadə const instance1 = new Singleton(); const instance2 = new Singleton(); console.log(instance1 === instance2); // true instance1.someMethod(); // "Singleton method called" Hər iki dəyişən eyni instansiyaya işarə edir. İstifadə zamanı artıq mövcud olan nüsxə qaytarılır və yenidən yaradılmır. Nəticə Singleton Pattern aşağıdakı hallarda faydalıdır: Bir obyektin sistem boyu bir dəfə yaradılması lazımdırsa Mərkəzləşdirilmiş idarəetmə (məsələn, Logger, Configuration, Database bağlantısı) Resursların düzgün istifadəsi və davranışın sabitliyini təmin etmək
  • Frontend əsaslı müzakirə kateqoriyası

    18 22
    18 Mövzu
    22 Yazı
    codexC
    Modern veb inkişafında iki vacib anlayış tez-tez qarşımıza çıxır: Shadow DOM və Virtual DOM. Bunlar fərqli məqsədlərə xidmət etsələr də, hər ikisi istifadəçi interfeyslərinin effektiv və strukturlaşdırılmış şəkildə yaradılması üçün istifadə olunur. Bu məqalədə bu iki anlayışı sadə dillə izah edəcəyik və aralarındakı fərqləri göstərəcəyik. DOM nədir? (Qısa xatırlatma) DOM (Document Object Model) – HTML sənədinin JavaScript ilə idarə olunan obyekt formasında təqdim olunmasıdır. DOM vasitəsilə biz səhifədəki elementləri oxuya və dəyişə bilirik. Məsələn: document.querySelector("h1").textContent = "Salam, dünya!"; Bu əmrlə h1 başlığının məzmununu dəyişirik. 1. Shadow DOM nədir? Shadow DOM – DOM-un xüsusi bir hissəsidir ki, digər DOM elementlərindən izolyasiya olunmuşdur. Başqa sözlə, bu DOM strukturunda olan stil və ya funksiyalar əsas DOM-a təsir etməz və əsas DOM da ona təsir edə bilməz. Harada istifadə olunur? Shadow DOM əsasən Web Components texnologiyasının bir hissəsidir. Məsələn, siz öz my-button komponentinizi yaradırsınız və istəmirsiniz ki, başqa CSS qaydaları bu komponentin içini pozsun. O zaman Shadow DOM köməyə gəlir. Nümunə: <my-button></my-button> <script> class MyButton extends HTMLElement { constructor() { super(); const shadow = this.attachShadow({ mode: "open" }); shadow.innerHTML = ` <style> button { background: red; color: white; } </style> <button>Click me</button> `; } } customElements.define("my-button", MyButton); </script> Üstünlükləri: Stil və struktur tam izolyasiyalıdır. Kapsullaşma (encapsulation) verir. Yenidən istifadə edilə bilən komponentlər yaratmaq mümkün olur. 2. Virtual DOM nədir? Virtual DOM – brauzerin real DOM-u ilə birbaşa işləmək əvəzinə, onun yaddaşda olan (virtual) surəti ilə işləmək metodudur. Bu texnika əsasən React, Vue kimi kitabxanalarda istifadə olunur. Niyə lazımdır? Real DOM ilə birbaşa işləmək çox yavaşdır, çünki hər dəyişiklik brauzerin render prosesini işə salır. Virtual DOM isə dəyişiklikləri əvvəlcə yaddaşda simulyasiya edir, sonra isə ən optimal formada real DOM-u yeniləyir. Necə işləyir? Komponentdə dəyişiklik olur. Virtual DOM-da yeni vəziyyət yaranır. Virtual DOM köhnə və yeni halı müqayisə edir (diffing). Yalnız dəyişən hissələr real DOM-a tətbiq olunur (reconciliation). Nümunə (React kontekstində): function App() { const [count, setCount] = useState(0); return ( <div> <p>Sayaç: {count}</p> <button onClick={() => setCount(count + 1)}>Artır</button> </div> ); } Bu halda React virtual DOM üzərində dəyişiklikləri hesablayır və yalnız p elementinin içini yeniləyir. Shadow DOM vs Virtual DOM Özəllik Shadow DOM Virtual DOM Texnologiya Web Components React, Vue və b. UI kitabxanaları Məqsəd Stil və DOM kapsullaşması Performansı artırmaq üçün DOM diffing Brauzer dəstəyi Native (birbaşa dəstəklənir) Kitabxana səviyyəsində tətbiq olunur Əlaqə Real DOM-un bir hissəsidir Real DOM-un surətidir (yaddaşda) Qapsama Bəli (izolyasiya olunmuşdur) Xeyr (ümumi DOM strukturunu təqlid edir) Hansı zaman hansından istifadə etməli? Ssenari Tövsiyə Öz komponentinizi hazırlayırsınız və stil qarışıqlığının qarşısını almaq istəyirsiniz Shadow DOM İnteraktiv və tez dəyişən istifadəçi interfeysi qurursunuz Virtual DOM (React, Vue və s.) Bütün brauzerlərdə işləməli universal komponentlər istəyirsiniz Shadow DOM-un dəstəyini yoxlayın və ya polyfill istifadə edin Nəticə Shadow DOM və Virtual DOM – hər ikisi veb inkişafında güclü texnologiyalardır. Shadow DOM daha çox komponent səviyyəsində təhlükəsizliyi və izolyasiyanı təmin edir. Virtual DOM isə performansı artıraraq böyük və interaktiv tətbiqlərin daha səmərəli işləməsinə şərait yaradır. Əgər Web Components ilə maraqlanırsınızsa – Shadow DOM öyrənməyə dəyər. Əgər React və ya Vue istifadə edirsinizsə – artıq Virtual DOM ilə işləyirsiniz!
  • Back-end

    Backend əsaslı müzakirə kateqoriyası

    12 14
    12 Mövzu
    14 Yazı
    codexC
    extends açar sözü Java-da bir class başqa bir class-dan miras alarkən extends açar sözündən istifadə edilir: class ChildClass extends ParentClass { ... } Metodun üstələnməsi (Overriding) Alt class, üst class-ın metodunu öz versiyası ilə dəyişə bilər: class Animal { void sound() { System.out.println("Some generic sound"); } } class Cat extends Animal { @Override void sound() { System.out.println("Meow"); } } 🧱 İrsiliyin növləri Java-da Single Inheritance – yalnız bir class-dan miras alma Multilevel Inheritance – class-ın başqa bir class-dan miras alması və həmin class-ın da öz növbəsində miras alması Hierarchical Inheritance – bir neçə class-ın eyni class-dan miras alması Java multiple inheritance-i (çoxsaylı irsiliyi) class səviyyəsində dəstəkləmir, lakin interface-lər vasitəsilə bu mümkün olur. Access modifier-lərin təsiri Modifier Subclass daxilində görünür? public ️ protected ️ default ️ (eyni paketdədirsə) private Görünmür
  • Maşın öyrənməsi və Süni intellekt

    Maşın öyrənməsi və intellektual verilənlərin analizi və Suni intelekt ilə bağlı paylaşımlar

    1 1
    1 Mövzu
    1 Yazı
    codexC
    Maşın öyrənməsi (Machine Learning) süni intellektin ən vacib sahələrindən biridir və müxtəlif növ öyrənmə metodlarını əhatə edir. Nəzarətli maşın öyrənməsi (Supervised Learning) bu sahənin ən geniş yayılmış növüdür və real dünyada bir çox tətbiq sahəsinə malikdir. Bu yazıda nəzarətli öyrənmə, onun əsas növləri olan regressiya və klassifikasiya haqqında danışacağıq. Nəzarətli maşın öyrənməsi nədir? Nəzarətli maşın öyrənməsində model etiketlənmiş verilənlər üzərində öyrədilir. Yəni, hər giriş (Input) veriləninə uyğun bir çıxış (Output) dəyəri (etiket) mövcuddur. Modelin məqsədi bu verilənlərdən qaydaları öyrənərək gələcəkdə yeni verilənlər üçün düzgün proqnozlar verməkdir. Məsələn, sizdə avtomobillərin ilinə və gündəlik istifadəsinə əsasən onların satış qiymətini göstərən verilənlər bazası varsa, nəzarətli maşın öyrənməsi modeli bu məlumatlardan istifadə edərək yeni avtomobillərin satış qiymətini proqnozlaşdıra bilər. Nəzarətli öyrənmənin iki əsas növü Nəzarətli öyrənmənin iki əsas növü var: Regressiya (Regression) – Kəmiyyət (rəqəmsal) dəyərləri proqnozlaşdırmaq üçün istifadə olunur. Klassifikasiya (Classification) – Məlumatları müəyyən kateqoriyalara ayırmaq üçün istifadə olunur. Hər iki metod fərqli növ problemlərin həlli üçün istifadə olunur. İndi onların hər birini daha ətraflı araşdıraq. Regressiya (Regression) Regressiya modeli kəmiyyət (rəqəmsal) nəticələri proqnozlaşdırmaq üçün istifadə olunur. Başqa sözlə, bir və ya bir neçə dəyişənin təsiri ilə davamlı (continuous) bir dəyəri təxmin edirik. Regressiyaya aid misallar: Ev qiymətlərinin proqnozlaşdırılması Hava temperaturunun proqnozlaşdırılması Müəssisənin gəlirinin təxmin edilməsi Avtomobilin yanacaq sərfiyyatının hesablanması Regressiya modelləri arasında ən məşhurları: Xətti Regressiya (Linear Regression) Çoxlu Xətti Regressiya (Multiple Linear Regression) Lojistik Regressiya (Logistic Regression) - Klassifikasiya üçün də istifadə olunur Xətti Regressiya (Linear Regression) Xətti regressiya sadə və effektiv bir yanaşmadır. Burada model verilənlər arasındakı xətti münasibəti müəyyən edir. Məsələn, avtomobilin ili artdıqca onun qiymətinin azalması xətti bir münasibətdir. Xətti regresiyanın ümumi tənliyi: [y = mx + b] Burada: ( y ) – proqnozlaşdırılan dəyərdir, ( m ) – dəyişənin təsir əmsalıdır, ( x ) – giriş dəyişənidir, ( b ) – sabit dəyərdir. Məsələn, bir şirkət reklama xərclədiyi məbləğə əsasən satışlarını proqnozlaşdırmaq istəyirsə, xətti regresiya modelindən istifadə edə bilər. Klassifikasiya (Classification) Klassifikasiya modeli məlumatları fərqli kateqoriyalara ayırmaq üçün istifadə olunur. Yəni, nəticə diskret (categorical) dəyərdir. Klassifikasiyaya aid misallar: Email-lərin “spam” və ya “normal” olaraq ayrılması Xəstənin müəyyən bir xəstəliyə malik olub-olmamasının təxmin edilməsi Şəkildə obyektin “pişik” və ya “it” olduğunu müəyyən etmək Müştərinin kredit ala bilib-bilməməsi haqqında qərar vermək Lojistik Regressiya (Logistic Regression) Adı regressiya olsa da, lojistik regressiya əslində klassifikasiya üçün istifadə olunur. Model, nəticəni 0 və 1 arasında ehtimalla proqnozlaşdırır və nəticəni müəyyən bir həddən (threshold) yuxarı və ya aşağı olaraq iki qrupa ayırır. Lojistik funksiyanın tənliyi belədir: [P(y) = \frac{1}{1 + e^{-z}}] Burada: ( P(y) ) – bir hadisənin baş vermə ehtimalıdır, ( e ) – Eyler sabitidir (~2.718), ( z ) – giriş dəyişənlərinin xətti kombinasiyasıdır. Əgər modelin proqnozlaşdırdığı ehtimal 0.5-dən böyükdürsə, model “1” (Məsələn, “spam”) nəticəsini verir, əks halda “0” (Məsələn, “normal email”) nəticəsi alınır. Regressiya və Klassifikasiya Arasındakı Fərqlər Xüsusiyyət Regressiya Klassifikasiya Nəticə tipi Rəqəmsal (continuous) Kateqorial (categorical) Misal Ev qiymətinin proqnozlaşdırılması Email-in spam olub-olmaması Əsas model Xətti Regressiya Lojistik Regressiya Məlumat tipi Dəyişənlər arasında rəqəmsal əlaqə var Məlumat siniflərə bölünür Nəticə Nəzarətli maşın öyrənməsi süni intellektin ən fundamental sahələrindən biridir və iki əsas istiqaməti vardır: regressiya və klassifikasiya. Regressiya rəqəmsal qiymətləri proqnozlaşdırmaq üçün istifadə olunur. Klassifikasiya isə verilənləri müxtəlif kateqoriyalara ayırmaq üçün tətbiq edilir. Bu metodlar maliyyə, səhiyyə, marketinq, mühəndislik və bir çox sahədə istifadə olunur və süni intellektin inkişafında böyük rol oynayır.
  • DevOps

    Devops üçün müzakirə kateqoriyası

    1 1
    1 Mövzu
    1 Yazı
    codexC
    Docker tətbiqləri konteynerlərdə idarə etməyə imkan verən məşhur açıq mənbəli platformadır. Ubuntu 22.04-də Docker-i quraşdırmaq və istifadə etmək üçün aşağıdakı addımları tətbiq edə bilərsiniz. 1. Sistem yeniləməsi Əvvəlcə sistem paketlərini yeniləyin: sudo apt update && sudo apt upgrade -y 2. Lazımi asılılıqları quraşdırın Docker-in işləməsi üçün bəzi vacib paketləri quraşdırın: sudo apt install apt-transport-https ca-certificates curl software-properties-common -y 3. Docker açarlarını əlavə edin və repository-ni qoşun curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 4. Docker-i quraşdırın sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y 5. Docker servisini başladın sudo systemctl start docker sudo systemctl enable docker 6. Docker versiyasını yoxlayın Quraşdırmanın uğurlu olub-olmadığını yoxlamaq üçün: docker --version 7. Docker əmrinin sudo-suz işlətmək İstifadəçinizi docker qrupuna əlavə edin: sudo usermod -aG docker $USER Dəyişikliklərin qüvvəyə minməsi üçün terminalı bağlayıb yenidən açın və ya bu əmri işlədin: su - ${USER}. 8. Test konteynerini işə salın (vacib deyil) docker run hello-world Bu əmrlə Docker mühitinizin düzgün işlədiyini test edə bilərsiniz. Nəticə Bu addımları yerinə yetirərək Ubuntu 22.04-də Docker-i uğurla quraşdıra və istifadə etməyə başlaya bilərsiniz. Docker konteyner texnologiyası inkişaf etdiricilər və sistem administratorları üçün böyük rahatlıq yaradır.
  • Verilənlər bazası

    Verilənlər bazası üzrə müzakirə bölümü

    3 3
    3 Mövzu
    3 Yazı
    codexC
    Agregat funksiyalar, Oracle SQL-də bir və ya bir neçə sətirdən ibarət məlumatları analiz etmək və ümumi nəticə çıxarmaq üçün istifadə olunur. Bu funksiyalar cədvəllərdəki dəyərləri qruplaşdırmaq, hesablamaq və filtrasiya etmək imkanı verir. Aşağıdakı ən çox istifadə olunan agregat funksiyalarla tanış olaq: İlk öncə misalları rahat göstərmək üçün employees adından cədvəl yaradaq və məlumatları ora əlavə edək EMPLOYEE_ID NAME SALARY DEPARTMENT_ID 1 John Smith 3500 10 2 Jane Doe 1600 10 3 Emily Davis 2000 20 4 Michael Brown 2500 30 CREATE TABLE employees ( employee_id NUMBER PRIMARY KEY, name VARCHAR2(100), salary NUMBER, department_id NUMBER ); INSERT INTO employees (employee_id, name, salary, department_id) VALUES (1, 'John Smith', 3500, 10), (2, 'Jane Doe', 1600, NULL), (3, 'Emily Davis', 2000, 20), (4, 'Michael Brown', 2500, 30); COUNT() – Sətirlərin sayını hesablayır Bu funksiya müəyyən bir sütundakı və ya bütün cədvəldəki sətirlərin sayını verir. Sintaksis: SELECT COUNT(*) FROM employees; --4 Bütün işçilərin sayını qaytarır. Sütun səviyyəsində: SELECT COUNT(department_id) FROM employees; --3 NULL olmayan department_id sütunlarının sayını qaytarır. SUM() – Toplam hesablayır Bu funksiya ədədi dəyərləri toplayır. SELECT SUM(salary) FROM employees; --9600 Bütün işçilərin ümumi maaşını qaytarır. AVG() – Orta dəyəri hesablayır Bu funksiya ədədi sütun üzrə orta (average) dəyəri verir. SELECT AVG(salary) FROM employees; --2400 Bütün işçilərin orta maaşını göstərir. MIN() – Ən kiçik dəyəri tapır Ən aşağı ədədi və ya əlifba sıralamasına görə minimum dəyəri qaytarır. SELECT MIN(salary) FROM employees; --1600 Ən az maaşı olan işçinin maaşını qaytarır. SELECT MIN(name) FROM employees; --Emily Davis Əlifba sırasına görə ilk gələn adı göstərir. MAX() – Ən böyük dəyəri tapır Ən yüksək dəyəri qaytarır. SELECT MAX(salary) FROM employees; --3500 Ən yüksək maaşı göstərir. GROUP BY ilə agregat funksiyalar Agregat funksiyaları GROUP BY ilə birlikdə istifadə edərək məlumatları qruplar üzrə analiz etmək mümkündür. SELECT department_id, AVG(salary) FROM employees GROUP BY department_id; Hər şöbə üçün orta maaş göstərilir. HAVING ilə agregat filtr Agregat nəticələri filtrasiya etmək üçün HAVING istifadə olunur. WHERE fərdi sətirlər üçün, HAVING isə GROUP BY nəticələri üçün tətbiq edilir. SELECT department_id, COUNT(*) FROM employees GROUP BY department_id HAVING COUNT(*) > 5; Yalnız 5-dən çox işçisi olan şöbələri göstərir. Nəticə Oracle SQL-də agregat funksiyalar məlumatların xülasəsini çıxarmaq, ümumi mənzərəni görmək və qruplar üzrə analiz aparmaq üçün çox faydalıdır. GROUP BY, HAVING kimi əmr və funksiyalarla birlikdə istifadə olunduqda, çox güclü hesabatlar və analizlər aparmaq mümkündür.
  • Blockchain üzrə müzakirə bölümü

    1 1
    1 Mövzu
    1 Yazı
    codexC
    Blockchain proqramçısı olmaq istəyirsinizsə, aşağıdakı əsas sahələrə diqqət yetirməyiniz tövsiyə olunur: Əsas Blockchain Bilikləri: Blockchain Strukturu və Əməliyyatları: Blockchain-in necə işlədiyini, onun strukturu və əməliyyatlarını öyrənin. Tətbiqlər və İstifadə Sahələri: Blockchain texnologiyasının müxtəlif sahələrdə necə tətbiq edildiyini araşdırın. Ümumi Blockchain Məlumatları: Mədənçilik və Təşviq Modelləri: Mədənçilik prosesini və təşviq modellərini öyrənin. Kriptovalyutalar və Kriptopulqabılar: Fərqli kriptovalyutaları və onların saxlanması üçün kriptocüzdanları araşdırın. Kriptoqrafiya və Konsensus Protokolları: Kriptoqrafiyanın əsaslarını və konsensus protokollarını öyrənin. Platformalar və Alətlər: EVM-əsaslı Blockchain-lər: Ethereum, Polygon, Binance Smart Chain kimi platformaları araşdırın. Oracles və Hibrid Smart Müqavilələr: Chainlink kimi oracle şəbəkələri və hibrid smart müqavilələr haqqında məlumat əldə edin. Proqramlaşdırma və Smart Müqavilələr: Proqramlaşdırma Dilləri: Solidity, Vyper, Rust kimi dilləri öyrənin. Smart Müqavilələrin Testi və Təhlükəsizliyi: Smart müqavilələrin test edilməsi, təhlükəsizlik təcrübələri və hücum vektorları haqqında məlumat əldə edin. Decentralized Tətbiqlər (dApps): dApps-ın Tətbiq Sahələri: DeFi, DAO, NFT-lər kimi sahələrdə dApps inkişaf etdirməyi öyrənin. Frontend Çərçivələri: React, Angular, Vue kimi frontend çərçivələri ilə işləməyi bacarın. Bu sahələrdə bilik və bacarıqlarınızı inkişaf etdirərək, blockchain inkişaf etdiricisi kimi karyeranıza uğurla başlaya bilərsiniz. https://roadmap.sh/blockchain
  • Digər kateqoriyalara aid olmayan müxtəlif mövzular

    7 7
    7 Mövzu
    7 Yazı
    codexC
    Node.js layihələri ilə işləyərkən ən önəmli fayllardan biri package.json faylıdır. Bu fayl layihə haqqında bütün əsas məlumatları, istifadə olunan asılılıqları (paketləri), skriptləri və digər konfiqurasiyaları ehtiva edir. Bir sözlə, layihənin idarəetmə mərkəzidir. 1. Əsas sahələr name Layihənin adıdır. Kiçik hərflərlə yazılmalı və boşluq əvəzinə - (kəsik xətt) istifadə edilməlidir. "name": "my-first-app" version Layihənin versiyası. Bu versiya SemVer (Semantic Versioning) standartına əsaslanır: MAJOR.MINOR.PATCH (məs: 1.2.3) "version": "1.0.0" description Layihənin qısa izahı. "description": "Node.js ilə hazırlanmış API tətbiqi" main Node.js tərəfindən layihənin əsas giriş faylı kimi istifadə edilən yol. "main": "index.js" scripts Terminalda npm run əmri ilə işlədilə bilən skriptlər. Layihənin işə düşməsi, test olunması və s. bu sahədə qeyd olunur. "scripts": { "start": "node index.js", "dev": "nodemon index.js", "test": "jest" } keywords Layihənin axtarışda tapılması üçün açar sözlər siyahısıdır. "keywords": ["nodejs", "api", "express"] author və contributors Layihəni hazırlayan və ya ona töhfə verən şəxslərin siyahısı. "author": "Elvin Huseynov", "contributors": [ { "name": "Aygün Məmmədova", "email": "aygun@example.com" } ] license Layihənin hüquqi istifadəsini müəyyən edən lisenziya tipi (məs: MIT, ISC, GPL-3.0 və s.) "license": "MIT" 2. Asılılıqlar (Dependencies) Node.js layihələrində istifadə etdiyimiz kitabxanalar 3 əsas qrupa bölünür: dependencies Layihənin işləməsi üçün zəruri olan əsas paketlər. "dependencies": { "express": "^4.18.2", "mongoose": "~6.12.1" } devDependencies Yalnız inkişaf zamanı lazım olan paketlər – məsələn, test alətləri, linters, bundlers və s. "devDependencies": { "jest": "^29.7.0", "nodemon": "^3.0.1" } peerDependencies Bu sahədəki paketlər layihəyə daxil edilmir. Əsasən plugin və ya kitabxananın müəyyən versiya ilə işləməsini tələb edir. "peerDependencies": { "react": ">=17.0.0" } optionalDependencies Quraşdırılsa yaxşı olar, amma olmadan da işləyən paketlər. Quraşdırılarkən səhv olarsa, proses dayanmaz. "optionalDependencies": { "fsevents": "^2.3.2" } 3. Versiya simvollarının mənası Versiya nömrələrinin əvvəlində olan bəzi simvollar var ki, onlar versiyanın necə seçildiyini göstərir: Simvol Mənası ^ Eyni əsas versiya daxilində olan ən son versiyanı qəbul et (default) ~ Eyni minor versiya daxilində ən son patch versiyanı qəbul et * Hər hansı versiyanı qəbul et >= Göstərilən versiyadan daha yuxarı olan versiyaları qəbul et <, <= Müvafiq olaraq daha kiçik və ya kiçik bərabər versiyaları göstər 1.2.x 1.2.0 – 1.2.99 aralığında olan versiyalar Nümunə: "lodash": "^4.17.0" Bu halda, 4.17.0-dan başlayaraq 4.x.x aralığında olan ən son versiya quraşdırıla bilər, lakin 5.x.x yox. 4. Digər faydalı sahələr engines Layihənin işləməsi üçün lazım olan Node.js və npm versiyasını göstərir. "engines": { "node": ">=16.0.0", "npm": ">=8.0.0" } type Modul sistemini təyin edir: "module" (ESM) və ya "commonjs". "type": "module" files Layihə npm publish ilə paylaşılarkən daxil ediləcək faylları göstərir. "files": ["dist/", "index.js"] private Layihənin səhvən npm publish ilə yayımlanmasının qarşısını alır. "private": true 5. Tam package.json nümunəsi { "name": "codex-api", "version": "1.0.0", "description": "CodeX üçün REST API backend tətbiqi", "main": "server.js", "scripts": { "start": "node server.js", "dev": "nodemon server.js", "test": "jest" }, "keywords": ["nodejs", "api", "backend"], "author": "Elvin Huseynov", "license": "MIT", "dependencies": { "express": "^4.18.2", "mongoose": "~6.12.1" }, "devDependencies": { "jest": "^29.7.0", "nodemon": "^3.0.1" }, "engines": { "node": ">=16.0.0" }, "private": true } Nəticə package.json – yalnız texniki fayl deyil, sizin layihənizin struktur kitabçasıdır. Onu düzgün qurmaq, həm layihənin idarə olunmasını asanlaşdırır, həm də digərlərinin onu rahat şəkildə başa düşməsini təmin edir. Versiya simvollarının mənasını anlamaq isə asılılıqların stabil və təhlükəsiz olmasında mühüm rol oynayır.

0

Onlayn

7

İstifadəçilər

65

Mövzu

76

Yazı